it-swarm.com.de

Sollte eine IP nach so vielen schlechten Anfragen innerhalb einer Minute für einen bestimmten Zeitraum automatisch auf die schwarze Liste gesetzt werden?

Dies schien die beste Seite zu sein, um diese Frage basierend auf der Tour zu stellen. Ich habe eine WordPress Blog-Site, für die ich ein benutzerdefiniertes Design entwickelt habe. Wenn jemand aufgrund einer schlechten Anfrage auf der 404.php-Datei landet, wird eine E-Mail mit der Anfrage, der Remote-Adresse, der Remote-Identität und gesendet Benutzeragent (Benutzeragent ist niemals eine Suchmaschine/ein Bot), der an eine alte Box mit einem Cron gesendet wird, der eine CSV-Datei zur Überprüfung erstellt. Manchmal kann ich innerhalb von zwei Minuten 50-200 Anfragen von derselben IP erhalten. Einige dieser Anfragen sind:

url/wp-content/uploads/bc.php
url/wp-content/themes/THEME/style.php?act=1
url/wp-content/themes/THEME/adodb.class.php
url/wp-content/themes/b374k-2.8.php
url/wp-content/plugins/onleinsfay.php
url/wp-content/plugins/bc.php
url/wp-content/plugins/cache/adodb.class.php
url/wp-content/languages/cache/adodb.class.php
url/templates/_hash.php
url/templates/adodb.class.php
url/SocketIontrol.php
url/wp-content/plugins/hungred-post-thumbnail/js/hpt_ini.js
url/wp-content/plugins/invit0r/lib/php-ofc-library/ofc_upload_image.php
url/wp-content/plugins/mailpress/mp-includes/action.php
url/septii.php
url/wp-content/login.php?login=cmd
url/wp-cache.php
url/wp-content/error-log.php
url/upgrade-network.php

Ich habe keine Plugins auf der Live-Site. Ich habe überprüft, ob auf dem Server ein error_Log generiert wird. Vor jedem WP Update teste ich mein Theme lokal mit der Debug Bar, um sicherzustellen, dass keine PHP Fehler existieren. Ich habe die IP-Adresse mit arin überprüft und der Ort ist manchmal anders. Ich habe gehört, dass es einige Sites gibt, die testen können, welche Themes und Plugins Sie ausführen, aber ich habe noch nie eines verwendet, und ich weiß nicht, wie ich eines identifizieren kann. Daher bin ich mir nicht sicher, ob dies das ist, was sie tun, aber sollten Ich adressiere dies als ein Problem?

Eine Lösung, die ich mit PHP in Betracht gezogen hatte, bestand darin, die IP-Adresse auf eine Variable zu setzen, die aktuelle Zeit abzurufen und zu zählen, wie oft diese IP innerhalb einer Minute die 404.php erreicht. Wenn sie die 404.php-Datei 10-mal treffen, fügen Sie ihre IP zu einer txt-Datei hinzu und lassen Sie die .htaccess Referenz it. Um zu verhindern, dass auf meiner Site Leistungsprobleme auftreten, habe ich alle 24 Stunden ein Skript für ein wiederkehrendes Ereignis erstellt, das zum Löschen der TXT-Datei file_get_content() verwendet.

Ich bin mir jedoch nicht sicher, ob dies ein Problem ist oder ob ich mich dem Problem richtig nähere. Sollte ich irgendetwas gegen diese schlechten Anfragen unternehmen und gibt es eine Möglichkeit, dies zu tun, die besser wäre als meine Lösung?

Vor einiger Zeit habe ich viele Zugriffe auf meine Websites (Drupal) mit Wordpress Pfaden bemerkt, die offensichtlich ignoriert werden können (nichts anderes als eine enorme Zeitverschwendung, die 404 Seiten generiert, die der Hacker sofort wegwirft ...)

Für diese Websites würde ich ein Tool namens iplock ausführen, das ich geschrieben habe (natürlich immer noch habe). Die Quelle ist auf github.com hier .

Die Idee ist, den falschen Pfad mit welchen Mitteln auch immer zu erkennen und dann iplock mit dieser IP aufzurufen, um ihn zu blockieren. iplock kann alle Zugriffe oder bestimmte Ports blockieren (z. B. 80 und 443 für HTTP [S]), Bösewichte können jedoch trotzdem zu 100% ausgeschaltet werden. Warum sollten Sie sie an Ihren Mailserver, DNS usw. weiterleiten? Wenn Sie bereits wissen, dass es sich um Hacker handelt ?!)

Das Apache2-Setup erfordert ein PHP oder ein anderes Skript, das auf bestimmten Pfaden ausgeführt werden kann. Beispielsweise könnten Sie diese Personen auf eine "spezielle Seite" senden, jedoch intern (d. H. Keine tatsächliche 301-Weiterleitung).

RewriteEngine On
RewriteRule "^/wp-" "/iplock.php" [passthrough]

Jetzt kann der iplock.php ein Systemaufruf an die iplock Binärdatei mit den richtigen Parametern sein (bitte testen Sie, um sicherzustellen, dass es korrekt ist, ich teste mich hier nicht ...)

<?php
system("iplock --scheme all --block " . $_SERVER["REMOTE_ADDR"]);

Dadurch wird die IP-Adresse so schnell blockiert, dass Sie wahrscheinlich nicht mehr als 2 Treffer von derselben IP sehen, bevor Ihre iptables -nvx -L -Liste Ihnen einen schnell wachsenden Zähler anzeigt (zumindest ist dies meine Erfahrung mit diesen Leuten).

Beachten Sie, dass das Tool iplocknichts weiter ist als ein Aufruf von iptables, um dort eine Regel hinzuzufügen. Sie könnten einfach iptables verwenden, es ist nur ein bisschen komplizierter und verwaltet nicht so viele Möglichkeiten und es erfordert, dass Sie root sind, um es auszuführen. Viele Dinge können kompliziert sein, abhängig von Ihrem Kompetenzniveau.

Der Befehl iptables sieht in all.conf von iplock so aus:

block=[command] -I [chain] [num] -i [interface] -p tcp -m tcp -s [ip] -j DROP
  • [command] ist iptables
  • [chain] ist INPUT oder eine Kette, die Sie nur für diesen Zweck erstellen
  • [num] ist die Position, an der die neue Regel eingefügt wird. In den meisten Fällen möchten wir neue Regeln zu Beginn hinzufügen. Das Hinzufügen ist langsamer, das Blockieren des aktuellen Benutzers erfolgt jedoch erheblich schneller (dies wird zuerst angezeigt) es blockiert die IP schnell
  • [interface] ist so etwas wie eth0
  • [ip] ist die $_SERVER["REMOTE_ADDR"] Adresse

Denken Sie aus Sicherheitsgründen daran, dass es eine wirklich schlechte Idee ist, Apache die Erlaubnis zu geben, iptables direkt auszuführen. Das Tool iplock verbirgt diesen Teil und das liegt daran, dass es sichere Dateien verwendet, um die Befehle auszuführen, die es sicher macht.

Nun ... Wenn Ihre Site eine Wordpress Site ist, funktioniert das Blockieren aller /wp-* Pfade nicht für Sie. Wenn Sie jedoch eine statische IP-Adresse haben, können Sie Ihre IP-Adresse zulassen Tun Sie dies und blockieren Sie andere Personen wie hier gezeigt. Dies bedeutet eine zusätzliche Regel in Ihrem Apache-Setup:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4$
RewriteRule "^/wp-" "/iplock.php" [passthrough]

Diese RewriteCond Regel besagt: Führen Sie den folgenden Rewrite... Befehl nur dann aus, wenn der REMOTE_ADDR NICHT mit dem 1.2.3.4 übereinstimmt. Wenn Sie also 1.2.3.4 zu Ihrer statischen IP-Adresse machen, werden Sie es tun nicht blockiert werden, aber alle anderen werden.

Sie können dies auch für Kunden tun, aber das kann dann kompliziert werden, da diese möglicherweise von der Arbeit, von zu Hause oder auf Reisen auf ihre Website zugreifen möchten. Wenn Sie jedoch ein Entwickler sind, können Sie dies umgehen, indem Sie sie auffordern, die IP zu registrieren zuerst auf irgendeine automatische Weise adressieren (dh auf Seite blah.com gehen und das öffnet die Tür für deine aktuelle IP-Adresse, du könntest diese offene Tür sogar temporär machen, nach etwa 8h, schließe sie wieder ...)

WARNUNG: Personen müssen Zugriff auf /wp-content und /wp-plugins haben, daher muss das obige Muster möglicherweise restriktiver sein, z. B. ^/wp-admin.

Schließlich könnte es /wp-... Pfade geben, die Sie nicht verwenden (d. H. Sie benötigen ein Plugin, das Sie nicht installiert haben). Diese können auch ohne den obigen Trick mit der statischen IP-Adresse blockiert werden. So könnten Sie etwas haben wie:

RewriteEngine On
RewriteRule "^/wp-(language|remote)" "/iplock.php" [passthrough]

das würde "/ wp-language" und "/ wp-remote" blockieren. Ich glaube jedoch nicht, dass so etwas sehr häufig vorkommt. Es kann sich auch um kompliziertere Pfade handeln, z. B. einen bestimmten Inhaltspfad oder einen Plugin-Pfad.

1
Alexis Wilke

Diese sehen aus wie Schwachstellenprofile. Grundsätzlich suchen sie nach Schwachstellen, die sie ausnutzen können.

Wenn Sie diese blockieren können, sollten Sie.

Diese kommen wahrscheinlich von offenen Proxies. Anstatt Ihre "Hacker" -Protokolldatei auszublenden, empfehle ich die Verwendung eines Vergebungsmodells. Dies bedeutet, dass jede IP-Adresse, die sich über einen längeren Zeitraum (Tage) verhält, dann aus der Datei gelöscht werden kann. Die übrigen bleiben so lange aktiv, wie sie innerhalb der Vergebungsfrist aktiv sind. Denken Sie daran, dass Sie IP-Adressen nicht in Benutzerblöcken blockieren. Dies sind gefährdete Computer, die sich wahrscheinlich in Host-Netzwerken befinden. Es besteht also keine Gefahr, Benutzer zu blockieren. Hacker verwenden keine Benutzerblöcke mehr. Es ist zu einfach, erwischt zu werden, und mit automatisierten Skripten (script kiddie) ist es zu einfach, den Hack abzufeuern und von selbst loszulassen, ohne auf den Hacker zurückzugreifen.

Ich mache etwas ausgefeilteres, aber es hört sich so an, als hättest du eine solide Lösung.

4
closetnoc

Sie können eine Textdatei basierend auf den IP-Adressen verwenden oder erstellen, die Sie mit Hilfe einer beliebigen Back-End-Sprache wie PHP abrufen können, und dann überprüfen, ob eine Anfrage mit einer bestimmten IP-Adresse auch in sehr kurzer Zeit eingeht Sie können den Zeitraum auf 300 Millisekunden einstellen und dann die Site sperren, um sie für eine bestimmte IP-Adresse zu verwenden

Sie können dies tun, indem Sie dem Benutzer oder dem Bot, der Ihre Anfrage sendet, innerhalb kürzester Zeit eine Warnmeldung senden

1
Saurabh Sharma