Zum Thema lange Pipes habe ich ja schon mal einen Beitrag geschrieben, hier kommt mal eine richtig sinnvolle Anwendung dafür.
Diese scheiß Script Attacks gehen mir nämlich auf den Sack, aber wirklich!
Aber demnächst wird zurück geschiossen!Â
# Original Logfile Auschnitt:(IP Adressen verfremdet)
localhost||||286||||4.35.446.66 - - [14/Jun/2008:10:59:22 +0200] "GET /phpMyAdmin-2.5.6/main.php HTTP/1.0" 404 286 "-" "-"
localhost||||286||||4.35.446.66 - - [14/Jun/2008:10:59:22 +0200] "GET /phpMyAdmin-2.6.3/main.php HTTP/1.0" 404 286 "-" "-"
localhost||||286||||4.35.446.66 - - [14/Jun/2008:10:59:23 +0200] "GET /phpMyAdmin-2.6.0/main.php HTTP/1.0" 404 286 "-" "-"
localhost||||285||||23.133.432.54 - - [14/Jun/2008:13:59:59 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 285 "-" "-"
localhost||||285||||23.133.432.54 - - [14/Jun/2008:14:10:14 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 285 "-" "-"
localhost||||285||||23.133.432.54 - - [14/Jun/2008:14:10:14 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 285 "-" "-"
localhost||||285||||23.133.432.54 - - [14/Jun/2008:14:10:14 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 285 "-" "-"
# Diese Pipe liefert die Angreifer sortiert nach Häufigkeit( Alles in einer Zeile!)
grep '\''localhost||||'\'' /var/log/httpd/ispconfig_access_log|grep '"-" "-"'|
cut -d'|' -f9|awk '{if ($1==old){ sum +=1 } else {print sum " " IP;sum=0 };old=$1;IP=$1;}'
Meine Pipe liefert folgenden Output (wiederum ein Ausschnitt)
223 4.35.446.66
5 23.133.432.54
Soll also heissen, die IP 4.35.446.66 hat 223 mal Seiten auf dem Server aufgerufen, die alle nur dem Zweck dienen eine Lücke in dem System zu finden. Das wohlgemerkt im täglichen Log, nicht das jemand denkt, das ist ein Monatslog. Nun fehlt eigentlich nur noch eine whois Abfrage, das detailierte Log und eine Beschwerde mail an den Provider. Ich sollte das automatisieren... Dieses Mini Script in einer Shell ist ja schon mal mehr als die halbe Miete.
So, nach ein wenig Bastelei ist das Script fertig, ich werde es mal ein paar Tage lang manuell starten (mit Dry run, bevor ich es richtig starte und dann täglich starten. Wenn ich ein paar mehr whois DB dabei habe, werde ich es hier zum download freigeben.
Auf meinen gestrigen Incident habe ich bereits ein Ticket bekommen, gerade eben habe ich einen Angriff (3209 Zugriffe) aus .cz gemeldet. Mal sehen. Dabei noch einen Mangel im Script entdeckt, da muss ich noch schrauben
Abuse Abteilungen mögen keine automatisierten Beschwerde-E-Mails. Das führt dann nur dazu, dass deine E-Mails direkt in /dev/null landen. Zur eigenen Information ist das Skript in Ordnung, automatisierte E-Mails an die Provider solltest du allerdings unterlassen.
Da hast du bestimmt Recht. Angenommen, in der Mail sind keine sachlichen Fehler, dann können sie das allerdings nicht merken. Es sei denn daran, das der Absernder root ist. Aber meine Güte das machen ja viele, weil sie mit mutt den Systemaccount lesen. Allerdings könnte ich mein Script natürlich auch so umbauen, das es erst mir die Mail sendet, mit bereits mundgerecht aufgebautem Anhang. hhm, Gut wäre auch, ein Ausschnitt des Logs direkt in die Mail zu setzen...
Den entsprechenden Ausschnitt der Logs solltest Du auf jeden Fall mit in die Mail nehmen. Wobei in dem oberen Fall 223 Zeilen vielleicht nicht notwendig sind.
Habe ich bereits angepasst, die ersten fünf Zeilen werden in die Mail direkt eingefügt. Dient mir auch dazu zu beurteilen, ob das Script keinen Blödsinn gemacht hat und um welche Art Angriff es sich handelt.
Bernd super sache das Script
Danke für die schnellen Antworten. Hoffentlich hört das irgendwann mal auf, aber dann kommt schon das nächste :/
Grüße