Hallo wertes Publikum,

nachdem ich nicht der einzige bin, dem die ständigen Mails vom logchecker 
aus der auth.log nerven und weil man halt doch nie alle Eventualitäten 
ausschließen kann, hatte ich mir gedacht, ich schreib' ein kleines 
Scriptlein, das die INPUT-Chain um eine weitere "denyall" chain erweitert.

In diese "denyall" Chain kommen dann alle Einträge die in der auth.log 
durch ein "Illegal user ... from ..." auffällig werden. Eine momentan noch 
fest verdrahtete Whitelist sorgt dafür, daß ein Spoof-DOSen der eigenen 
Maschine nicht so ohne weiteres funktioniert.

Die Deny-Chain hat eine gewisse Länge und bei Überschreiten der Länge wird 
der jeweils älteste Eintrag herausgelöscht, bevor der neue Eintrag 
hinzugefügt wird. Performance: Auf einem PII-166 mit 64 MB keine 
Auswirkungen bei einem 1000er-DSL feststellbar. Von dem Cel1200 ganz zu 
schweigen.

Da die auth.log in Echtzeit gelesen wird, wird auch eine nahezu sofortige 
Reaktion auf das "böse(tm)  Pattern" gewährleistet. 

Wer's probieren mag: "ssh [EMAIL PROTECTED]"  ;-)


Soweit die Theorie: In der Praxis tut sich dann aber folgendes Problem 
auf: Wenn irgendeine Instanz auf dem Rechner das Logfile weglöscht, dann 
hängt das Script - klar - ist ja mit dem Script auch noch ein inode dran, 
der aber nie mehr mit Daten versorgt wird. Wie kann man nun in PERL 
erkennen, ob irgendein Prozess gerade die im <> befindliche Datei 
umbenannt oder gelöscht hat? Timer setzen und Signal senden? Oder wie wird 
das in der Praxis gelöst?

Momentan löse ich das über den Aufruf von "tail -n 2 -f ..." aber das 
scheint mir sehr sehr holterdipolter zu sein.


        t++


P.S.: Das Script liegt bei: http://212.227.20.60/debian/denyssh.pl

Antwort per Email an