webentwicklung-frage-antwort-db.com.de

Wie erfasse ich eingehende HTTP-Anfragen zur Analyse?

Ich habe eine Site, die von einem Bot-Skript ziemlich hart getroffen wird, das denkt, dass es möglich ist, das Admin -Passwort brutal durch "Ausprobieren" verschiedener Passwörter mit dem Benutzernamen "Admin" zu erzwingen. Hier ist ein Auszug aus meinem Log:

uname   password     IP-address
-------+--------+-------------------
'Admin' '300283' IP: 220.250.61.78
'Admin' '300284' IP: 94.255.35.226
'Admin' '300281' IP: 176.108.152.178
'Admin' '300191' IP: 109.162.54.139
'Admin' '300280' IP: 213.87.138.83
'Admin' '300193' IP: 2.242.0.165

Eine typische Anfrage des Bots wird wie folgt in Apaches access_log protokolliert, und da es POST ist, befindet sich das interessante Bit (d. H. Der Versuch, sich beim Administrator anzumelden) nicht im Header.

 109.162.54.139 - - [08/Sep/2013:17:52:44 +0200] "POST /user HTTP/1.1" 200 20571 "http://example.org/user" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36"

Der 'bot führt ungefähr 8 Anmeldeanforderungen pro Sekunde durch, und das seit vier Tagen.

Die angegriffene Seite gehört einer völlig unumstrittenen NGO. Ich führe es auf einem kleinen gemeinsam genutzten Host kostenlos aus. Die Konfiguration lässt sich für diese Art von Dingen nicht wirklich gut skalieren, sodass die Leistung darunter leidet. Es ist offensichtlich ein ziemlich dummes Skript, denn als ich Apache so einrichtete, dass es auf jede Anfrage von jedem außer meiner IP-Adresse antwortet, ging es einfach weiter, da sich nichts geändert hatte. (Auf diese Weise wurde die Leistung wiederhergestellt. Wenn ich dies von Apache blockieren lassen kann, habe ich gewonnen.)

Wie Sie dem Protokollauszug entnehmen können, verfügt jeder, der dies tut, über ein Botnetz mit einer Vielzahl von IP-Adressen. Beim Durchgehen der Protokolle stelle ich fest, dass eine IP-Adresse nur sehr selten wiederverwendet wird, sodass die IP-Adressen blockiert werden, wie in der oben gestellten Antwort auf diese Frage vorgeschlagen: Vorgehensweisen im Umgang mit sich schlecht benehmenden Robotern ist nicht ​​eine Option.

Übrigens: Es gibt kein Konto mit dem Benutzernamen "Admin" auf dem System und es gibt auch keine vertraulichen oder wertvollen Informationen auf dem System. Deshalb wundert es mich, warum dies jemand tut.

Eine Sache, die ich ausprobieren möchte, ist die Analyse der eingehenden Anfragen. Ich hoffe, ich kann ein Muster entdecken. Und wenn ich ein Muster gefunden habe, richten Sie in Apache eine Regel ein, um Anforderungen zu blockieren, die mit dem Muster übereinstimmen. Ich habe jedoch keine Ahnung, wie die eingehenden Anforderungen für die Analyse erfasst werden sollen. Daher lautet meine Frage: Wie erfasse ich den Teil POST der eingehenden HTTP-Anforderungen für die Analyse?

6
Free Radical

Wie erfasse ich den POST -Teil eingehender HTTP-Anfragen zur Analyse?

Versuchen Sie es mit ModSecurity - aus der Dokumentation zu HTTP Traffic Logging :

Webserver sind in der Regel gut ausgestattet, um den Datenverkehr in einer Form zu protokollieren, die für Marketinganalysen nützlich ist. Der Protokolldatenverkehr für Webanwendungen ist jedoch unzureichend. Insbesondere sind die meisten nicht in der Lage, die Anfragetexte zu protokollieren. Ihre Gegner wissen das, und deshalb werden die meisten Angriffe jetzt über POST Requests ausgeführt, wodurch Ihre Systeme blind werden. ModSecurity ermöglicht die vollständige HTTP-Transaktionsprotokollierung, sodass vollständige Anforderungen und Antworten protokolliert werden können. Dank der Protokollierungsfunktionen können präzise Entscheidungen darüber getroffen werden, was und wann genau protokolliert wird, und es werden nur die relevanten Daten aufgezeichnet.

Wenn Sie ARGS_POST wie unter ARGS beschrieben verwenden, können Sie den POST -Teil eingehender HTTP-Anforderungen für die Analyse erfassen:

ARGS ist eine Auflistung und kann einzeln (dh mit allen Argumenten einschließlich der Payload POST), mit einem statischen Parameter (vergleicht Argumente mit diesem Namen) oder mit einem regulären Ausdruck (vergleicht alle Argumente mit dem Namen) verwendet werden das entspricht dem regulären Ausdruck). Informationen zum Anzeigen nur der Abfragezeichenfolge oder der Textargumente finden Sie in den Auflistungen ARGS_GET und ARGS_POST.

Sehen Sie sich die anderen ModSecurity-Funktionen an hier , wie: Echtzeitüberwachung, Angriffserkennung und Angriffsverhütung ...


... wer dies tut, befiehlt ein Botnetz mit einer Vielzahl von IP-Adressen. Beim Durchgehen der Protokolle stelle ich fest, dass eine IP-Adresse nur sehr selten wiederverwendet wird

Böswillige Bots können sich über offene Proxies auf der ganzen Welt verbinden (normalerweise ohne Erlaubnis ), wobei jeder eine andere IP-Adresse hat. Sie können auch Trojaner und Viren auf entführten Client-Computern/Servern verwenden, um ihre Arbeit zu erledigen. Sie haben also Recht, dass das Blockieren von IP-Adressen keine Option ist, um dies zu verhindern, obwohl es Honey Pot-Projekte wie this gibt, die versuchen, eine Datenbank mit missbräuchlichen IP-Adressen bereitzustellen.

4
dan