PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl Script zur überwachung fon logfils.



rabadag
21.05.2005, 21:40
Hallo Forum.

Zuerst mal bin neu hier und freue mich auf eure
hilfe und hoffe ihr könnt mir behilflich sein.


Leider kenn ich mich mit Scripten oder perl nicht aus und versuche ein script zu bauen aber ohne hilfe werde ich das nie hinkriegen.


Also was ist sache. :hilfe2:

1. logs auswerten auf merere bestimmte erreignisse Live Graping (tail) überwachen z.b auth.log, ftp.log, mainlog, ereignis "Failet Password"
oder merere definierbare Zeichenfolgen.

2. Stimmt ein Erreignis überrein, "IP" oder frei devinierbar in ein log schreiben.
da muss ein zähler miteingebaut sein der dan die versuche raufzahlt 0-xx

3. ist der Zähler höcher als z.b 10 Eintrag mit anderem Log vergleichen.
z.b "IP" auth.log "IP" auth.log Server2 via NFS oder Logsys.
oder das logfile von desem server Agenten


4. Ist das errgebnis des vergleichs = true dan mache.. Ban IP für bestimmte Zeit.

5. Wen Ban Zeit abläuft einträge wieder entfernen.


nun der clue der ganzen sache.

Das script soll auf jedem Server Funktioniren und seine ergebnisse mit deren anderen vergleichen. (Mit Schwellwerten)

Wenn eine IP oder bestimmte Zeichenfolge übereinstimmt soll dementsprechend gehandelt werden.

Das Heist, das Script muss via Externen Postgress Server einen bestimmten Eintrag vornehmen, den er auch wider löschen kann.

Meine sorge gilt den ständig wachsenden angriffen auf diverse dienste der server. Sicher ist alles noch ok und man verwendet auch sichere passwörter.
aber wie mann ja weis giebt es immer irgenwo ein loch das erst gefunden werden muss. deshalb will ich da einen rigel vorschiben und angriffe sofort netzwerkweit blocken. Es werden 3 Zentralle Firewall verwendet und intern kann ich keine IPSEC oder IPTABLES verwenden. Und da das Ganze Zentrall wäre ist auch das überwachen einfach falls mal ne falsche IP geblockt wird.


Eventuel giebt es ja schon was fertiges hab aber leider nichts passendes gefunden.


Kann mir da jemand unter die arme greifen ?

Wolfgang
23.05.2005, 11:09
Hallo
Du könntest das natürlich über Perl realisieren, aber da du ja wie du selbst sagst nicht so viel Erfahrung mit diversen Scriptsprachen hast wird es wohl besser sein du schaust dir mal portsentry (http://www.linuxfocus.org/Deutsch/September2001/article214.shtml) an.
Das dürfte deinen Vorstellungen entsprechen.
Für bestimmte kleinere Einträge habe ich sowas mal mit einer kleinen Hash-table per tie (Modul DB_File) realisiert.
Das ist weit weniger serverlastig, als eine komplette Datenbak anzuwerfen.
Im Groben sind die Schritte so:
- Logfile nach bestimmten Pattern auswerten
- Bei match Eintrag mit IP als Hash-key und Timestamp als Hash-var in die Table
- IP-Tableeintrag erzeugen wenn nicht schon vorhanden
- in einem zweiten Hash jede Regel mit Wert true und Timestamp festhalten.
ein zweites Script liest aus diesem Hash alles was einen Timestamp-Wert kleiner XX hat und löscht die Regel für iptable.

Die relevanten Probleme dabei sind:
- die richtigen Pattern für diverse Intrusionsversuche aktuell zu halten
- Die Performance, da das Script ja ständig laufen muss. Minutenweises starten per cron ist zu wenig, da ein Scan innerhalb von Sekunden etliche Einträge erzeugt.
- dann musst du sehr flink auch die entsprechenden Remotehostname in ihre Ip auflösen...
Deshalb habe ich das dann auch lieber per portsentry gelöst.

Gruß Wolfgang

rabadag
23.05.2005, 11:55
Wolfgang.

Danke mal für die Infos.

Das mit Portsentry klingt sehr intresannt aber damit kann man alfällige ereignisse nicht in eine DB schreiben.

Ich habe ein intresantes Perl script gefunden.
http://www.pettingers.org/code/sshblack.html

Damit wird mit Tail die ereignisse überwacht..

Leider ist das script für ein locale IPCHANGE wenn man das nun umbauen könnte, das das script die IP in ein 2 Logfile schreibt und dan an den Postgress server in eine bestimmte tabelle einträgt ware das schon der erste schritt der dan fertig ist.

mit Portsentry lässt sich sowas sicherlich auch bewältigen.
muss das teil mal studieren.