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