Bot Spam-Flut im Log ignorieren oder jemand eine andere Idee?!

  • Hallo zusammen,


    ich hab mal eine Frage wie da so Eure Erfahrungen / Vorgehensweisen sind.

    Auf meiner Webhosting 4000 SE WordPress-Installation ärgert mich ein Spam-Bot, der sich entweder auf mich eingeschossen oder sich aufgehangen hat....


    Dieser sendet über das Kontakt-Formular im Minuten-Takt eine dusselige "Werden Sie reich" (Genau: "The Secret Way of Earning! Earn 1579 Dollars....) Anfrage.

    Nein, ich nutze kein Captcha - bisher ging das auch ohne und nur mit einem "hidden" Key zum anwählen.. egal.


    Ich habe die IP in der .htaccess geblockt und somit erstmal Ruhe.
    Allerdings sehe ich dies natürlich in den LogFiles:


    2021-04-11 12:18:00 Error 151.80.xx.xx AH01797: client denied by server configuration: /var/www/vhosts/... referer: ... Apache-Fehler

    2021-04-11 12:19:00 Error 151.80.xx.xx AH01797: client denied by server configuration: /var/www/vhosts/... referer: ... Apache-Fehler


    Ignorieren? Oder gibt es für ein Webhosting noch eine andere Alternative?

    Was macht ihr mit solchen Bots? Jede Minute hatte ich bisher auch tatsächlich noch nicht....


    Danke Euch


    lg

    Dark Wolf

  • Bei einer von mir betreuten Site setze ich per JavaScript nach zwei Sekunden verzögert eine individuellen Wert in ein verstecktes Feld im Formular. Das empfangende PHP-Script ignoriert alle Anfragen, in denen das Feld nicht passend gefüllt ist. Das ist transparent für den User und wehrt recht viele Bots ab.


    LG Andreas

  • So in etwa:

    Code
    <!-- Verstecken von Eingabefeldern -->
    <style>input[id=later] { position: absolute; left: -32100px; }</style>
    <!-- Das folgende unsichtbare Feld muss leer bleiben. -->
    <!-- Das folgende unsichtbare Feld ändert seinen Wert nach 3 Sekunden. Der neue Wert wird erwartet. -->
    <input id='later' name="later" value="start"/>
    <!-- Wert nach 3s neu setzen. -->
    <script>setTimeout(() => document.getElementById('later').value = 'later42', 3000);</script>
    Code
    $ip = $_SERVER['REMOTE_ADDR'];
    # muss Wert 'later42' haben - also war Seite lange genug geladen
    if (!isset($_POST['later']) || $_POST['later'] <> 'later42') {
      error_log("CATCH: BOT catched by later field IP: $ip");
      exit;
    }
  • Hi Andreas,


    Vielen Dank. Werde ich mir mal genauer anschauen und mal testen.


    Ist für die Zukunft bestimmt auch noch hilfreich (hidden Field habe ich auch, und wenn das ausgefüllt ist, wird Anfrage verworfen.)

    Mir geht es jetzt aber auch generell ob ich noch irgendwas anderes unternehmen könnte damit die besagte IP nicht mehr in meinen Logs auftaucht....
    Bei nem Server würde ich ja fail2ban nutzen, aber auf dem Webhosting wird das ja wohl nix. (Ja schon klar das auch mit fail2ban die IP in Logs auftauchen würde..).

    Nur wird mir hier gerade die error.log und acces_ssl zugespammt. Jede Minute versucht der ver**** bot meine Kontaktseite aufzurufen..


    Ich habe zwar eine Abuse-Meldung an den Hoster der IP abgesetzt, aber nunja...da setzte ich nicht viel Hoffnung rein.

  • Rickrolling für Spammer ;)

    Apache Configuration: .htaccess
    RewriteCond %{REMOTE_ADDR} ^10\.1\.2\.3$
    RewriteRule ^ https://www.youtube.com/watch?v=dQw4w9WgXcQ [L,R=302]

    Statt 10.1.2.3 einfach die IP-Adresse vom Bot eintragen, aber bitte mit \. (Escapesequenz) bei Punkten!


    Wenn Du mehrere IP-Adressen umleiten willst, einfach ein [OR] verwenden:

    Apache Configuration: .htaccess
    RewriteCond %{REMOTE_ADDR} ^10\.1\.2\.3$ [OR]
    RewriteCond %{REMOTE_ADDR} ^10\.2\.3\.4$ [OR]
    RewriteCond %{REMOTE_ADDR} ^10\.3\.4\.5$
    RewriteRule ^ https://www.youtube.com/watch?v=dQw4w9WgXcQ [L,R=302]

    Dabei landen die Requests zwar trotzdem noch im Accesslog, aber nicht mehr im Errorlog. Und ich denke darum geht es Dir ja bei der genannten Logzeile.


    EDIT: Oder alternativ einfach einen Status 204 (No Content) zurücksenden, das sollte auch reichen…

    Apache Configuration
    RewriteCond %{REMOTE_ADDR} ^10\.1\.2\.3$
    RewriteRule ^(.*)$ $1 [L,R=204]

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Hehe :P

    Danke auf jeden Fall. Ja ich hatte das jetzt auch schon eingebaut, aber auf "seinen" localhost.

    Andere Seiten können da ja auch nix für.... :P


    So sind die errors weg, die Requests sehe ich natürlich immer noch. Aber egal.

    Der wird ja irgendwann wieder aufhören, hoffe ich...