Script bzw. Tool zum Echtzeitmonitoring von Logfiles
Ich suche nun seit knapp einer Woche wie ein Irrer durchs Netz und verzweifel so langsam. Ich brauche ein Script oder Tool womit ich die Logs von Snort in Echtzeit nach Alarmen durchsuchen kann. Wenn ein Alarm im Log auftritt soll über die IP via Policy Based Routing der Traffic des vermeintlichen Angreifers anschließend in ein bestehendes Honeynet umgeleitet werden.
Basis des Systems ist Ubuntu Server 14.04 LTS. Wenn jemand ne Antwort oder auch nur einen Tipp hat wäre ich schon dankbar.
Basis des Systems ist Ubuntu Server 14.04 LTS. Wenn jemand ne Antwort oder auch nur einen Tipp hat wäre ich schon dankbar.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294995
Url: https://administrator.de/forum/script-bzw-tool-zum-echtzeitmonitoring-von-logfiles-294995.html
Ausgedruckt am: 24.04.2025 um 22:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo @JackApple,
Idee: Log via
ungetestet:
Gruß,
@Snowman25
Idee: Log via
tail -fn0
(zeigt kontinuierlich nur neue Zeilen an) nach dem entsprechenden Alarm suchen, via grep -q
(-q
beendet den grep
nach dem ersten Fund) durchsuchen, dann die Aktionen durchführen und das Skript neu starten.ungetestet:
#!/bin/bash
tail -fn0 /var/log/snort/alert | grep -q '\[\*\*\]'
if [ $? -eq 0]
\\ Connection auf Honeypot umleiten
\\ danach starten wir neu
exec $0
else
\\ Irgendetwas ist mit der Datei, dem Grep o.ä. passiert, was nicht hätte passieren dürfen, also starten wir neu:
Echo Return code was $?. restarting
exec $0
fi
Gruß,
@Snowman25
Hallo,
In dem Fall brauchst du einen Listener, der ständig das log liest und auch keine Unterbrechungen im Millisekunden-Bereich macht (wie mein Beispiel).
Möchtest du bei der Skript-Form bleiben, musst du die Honeynet-Umleitung in einem anderen Prozess machen. Das geht einfach, indem du die Umleitung in ein anderes Skript auslagerst und dann mit
Ich muss jetzt trotzdem noch kurz anmerken: Der ELSE-Block in meinem Beispiel wird wohl nie ausgeführt. TAIL -F stört sich nicht daran, wenn das File gelöscht wird oder sonst etwas damit passiert. Beim Löschen geht der Deskriptor in einem Zombie-Modus über, in dem er garnichts mehr einliest. Auch nicht bei neu-erstellung der Datei.
Ausserdem: Das TAIL-F | GREP -Konstrukt beendet sich erst nach der nächsten eingelesenen Zeile von tail.
Ich weiß nicht, wieviele Zeilen im Alert-Skript generell so auftauchen und ob nach jeder Zeile mit [**] auch immer noch eine weitere Zeile kommt. Hier KÖNNEN also Verzögerungen auftauchen, muss aber nicht.
Abgesehen davon sollte die Erkennung aber sehr zügig sein.
Gruß,
@Snowman25
In dem Fall brauchst du einen Listener, der ständig das log liest und auch keine Unterbrechungen im Millisekunden-Bereich macht (wie mein Beispiel).
Möchtest du bei der Skript-Form bleiben, musst du die Honeynet-Umleitung in einem anderen Prozess machen. Das geht einfach, indem du die Umleitung in ein anderes Skript auslagerst und dann mit
/path/to/script argument &
aufrufst. Wichtig ist dabei das & am Ende des Aufrufs.Ich muss jetzt trotzdem noch kurz anmerken: Der ELSE-Block in meinem Beispiel wird wohl nie ausgeführt. TAIL -F stört sich nicht daran, wenn das File gelöscht wird oder sonst etwas damit passiert. Beim Löschen geht der Deskriptor in einem Zombie-Modus über, in dem er garnichts mehr einliest. Auch nicht bei neu-erstellung der Datei.
Ausserdem: Das TAIL-F | GREP -Konstrukt beendet sich erst nach der nächsten eingelesenen Zeile von tail.
Ich weiß nicht, wieviele Zeilen im Alert-Skript generell so auftauchen und ob nach jeder Zeile mit [**] auch immer noch eine weitere Zeile kommt. Hier KÖNNEN also Verzögerungen auftauchen, muss aber nicht.
Abgesehen davon sollte die Erkennung aber sehr zügig sein.
Gruß,
@Snowman25
Wenn du nicht über das Skript gehen möchtest ist eine andere Lösung, die ich jetzt schon öfters gelesen habe, dass du SNORT so konfigurierst, dass es nach syslog schreibt und einen syslog-ng Filter einsetzt, welcher dann deine gewünschte Routine ausführt, sobald der Filter zutrifft.
Damit übersiehst du auf jeden Fall keine Pakete, könnte sich aber als wesentlich komplexer erweisen.
Damit übersiehst du auf jeden Fall keine Pakete, könnte sich aber als wesentlich komplexer erweisen.