Spamzugriffe unterbinden

  • Joomla Version
    3.10.12
    PHP Version
    PHP 7.4.x
    Hoster
    eigener

    Hallo!


    Bei einer Joomla-Site, die ich nebenbei betreue, gibt es seit zwei Monaten einen massiven Anstieg des Traffics. Laut Statistik ist das allerdings "not viewed traffic". Nun hab ich mal die Protokolle studiert und festgestellt, dass regelmäßig (verschiedene) IPs dabei sind, die die Domain im 2-Sekundentakt aufrufen. Dummerweise scheinen das dynamische IPs zu sein. Sieht also nach automatisiertem Spam aus oder nach manipulierten Aufrufen, um die Hits zu pushen. Die Anzahl der Aufrufe ist zu gering, um direkt als DDoS-Attacke aufzufallen, aber genug, um zumindest eine Warnmeldung wegen ungewöhnlich hohem Traffic zu erzeugen.


    Meine Idee wäre nun, genau das zu unterbinden: Also eine IP, die die Domain innerhalb einer Minute mehr als 10x aufruft wird bspw. für eine Stunde blockiert. Wie könnte ich das am besten anstellen bzw. wo einstellen? Gibt es dafür ggf. ein nützliches Plugin für Joomla?

    Cheers Vanbrugg

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    AlmaLinux 8.9 | MariaDB 10.11.x | PHP 8.3.x

  • Eventuell hilfreich (bitte Forensuche verwenden):

  • Eventuell hilfreich (bitte Forensuche verwenden):

    Na ja ... das geht aber nur wenn du den Bot kennst. In meinem Fall steht da nur "unbekannt" und das ist kein "Name" eines Bots, sondern nur die interne Mitteilung, DASS der Bot unbekannt ist und keinen Namen mitliefert. Wie kann ich denn eine htaccess-Rule erstellen, die "unbekannte" Bots/Zugriffe killt?

    Cheers Vanbrugg

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    AlmaLinux 8.9 | MariaDB 10.11.x | PHP 8.3.x

  • z.B so:

    Apache Configuration
    # BEGIN Unbekannte Bots blockieren
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTP_USER_AGENT} ^.*(agent1|agent2|agent3).*$ [NC,OR]
        RewriteCond %{HTTP_REFERER} ^.*example\.com.*$ [NC,OR]
        RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.89$ [OR]
        RewriteCond %{HTTP_USER_AGENT} ^$
        RewriteRule ^.* - [F,L]
    </IfModule>
    # END Unbekannte Bots blockieren

    Hier ist eine Erläuterung der Regeln:

    • RewriteEngine On: Aktiviert das Modul mod_rewrite.
    • RewriteCond %{HTTP_USER_AGENT} ^.*(agent1|agent2|agent3).*$ [NC,OR]: Diese Zeile prüft den User-Agent-String der Anfrage und blockiert den Zugriff, wenn er einen der angegebenen Werte enthält. NC steht für "nicht beachten der Groß-/Kleinschreibung", und OR bedeutet, dass eine der Bedingungen erfüllt sein muss.
    • RewriteCond %{HTTP_REFERER} ^.*example\.com.*$ [NC,OR]: Blockiert Zugriffe, die als Referrer "example.com" enthalten. Auch hier bedeutet NC, dass die Groß-/Kleinschreibung ignoriert wird.
    • RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.89$ [OR]: Blockiert Zugriffe von der angegebenen IP-Adresse.
    • RewriteCond %{HTTP_USER_AGENT} ^$: Blockiert Zugriffe ohne User-Agent-Header.
    • RewriteRule ^.* - [F,L]: Für alle Anfragen, die den vorherigen Bedingungen entsprechen, wird ein HTTP-403-Verbot-Status zurückgegeben ([F]) und die Verarbeitung der Regeln wird beendet ([L]).

    Du musst sicherstellen, dass Sie die Platzhalter wie "agent1", "agent2" usw. durch die tatsächlichen User-Agent-Strings der Bots ersetzen, die du blockieren möchtest. Außerdem solltest du die IP-Adresse und den Referrer entsprechend anpassen. Du musst dir aber bewußt sein, dass diese Methode keine vollständige Sicherheit bietet und legitime Bots möglicherweise ebenfalls blockiert werden könnten.


    BTW: du solltest jetzt eher mal auf J4 bzw.5 migrieren.

  • Code
    Hier ist eine Erläuterung der Regeln:


    Danke für die Infos!

    Das hier hab ich dann gesucht:

    Code
    RewriteCond %{HTTP_USER_AGENT} ^$: Blockiert Zugriffe ohne User-Agent-Header.


    Mal eine praktische Frage: Ist es nicht - möglicherweise - kontraproduktiv, IPs zu sperren? Wenn ich dynamische IPs sperre, könnte es ja passieren, dass ich echte Benutzer sperre. Bots werden die IPs ja ohnehin regelmäßig wechseln. Wäre eine IP-Sperre dann nicht eigentlich zwecklos?


    z.B so:

    Code
        RewriteCond %{HTTP_USER_AGENT} ^$
    • RewriteCond %{HTTP_USER_AGENT} ^$: Blockiert Zugriffe ohne User-Agent-Header.

    Ich hatte jetzt nur diese eine Zeile geplant. Allerdings sperrt sie auch einfache Browserzugriffe aus.


    Nachtrag: Fehler gefunden. Vor dem % muss ein Leerzeichen rein. Ist mir beim Kopieren irgendwie abhanden gekommen. ;)

    Cheers Vanbrugg

    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    AlmaLinux 8.9 | MariaDB 10.11.x | PHP 8.3.x

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von Vanbrugg mit diesem Beitrag zusammengefügt.