Ein Sophos Firewall reverseproxy.log Analyse Script welches bei der Analyse der Fehler und beim Finden von Thread ID's in der reverseproxy.log Datei unterstützt. Die gefundenen Thread ID's werden schnell lesbar dargestellt.
Einleitung
Wer schon einmal eine WAF auf der Sophos Firewall eingerichtet hat wird es kennen, dass das Finden von Thread ID's extrem mühsam ist. Da ich regelmäßig bei meinen Kunden die Konfigurationen von WAF's vornehme, wurde die Sammlung an Shell Kommandos in meiner Sammlung immer länger. Eine praktischere Lösung musste her. Zumal die Ausgabe weiterhin schlecht lesbar war. Daraus ist das hier angebotenen Sophos Firewall reverseproxy.log Analyse Script geboren.
Lest weiter und findet heraus was das Script kann - oder auch nicht.
Viel Spaß beim analysieren! 😀
Voraussetzungen
Für die Nutzung des Scripts gibt es folgende Voraussetzungen:
- SFOS 19.5.0 bis 20.0.x (frühere und spätere Versionen müssen ggf. getestet werden)
- Shellzugang zur Firewall
- Grundkenntnisse in der Nutzung der Shell
Was kann das Script (nicht)?
Was geht?
Folgende Informationen kann das Script auswerten und lesbar(er) darstellen:
- Thread ID's auflisten für aktuelle Ereignisse
- Thread ID's auflisten für vergangene Ereignisse
- Auflisten wie häufig Threads ID's geloggt wurde
- Filtern nach FQDN und/oder Quell IP
- Auflisten aller Einträge mit Fehler oder Warnung mit Leerzeile zwischen den Einträgen
- Kombinationen aus den aufgelisteten Funktionen
Was geht nicht?
Folgendes kann das Script nicht:
- Alle Felder eines Logeintrages lesbar darstellen
- Alle Fehler auswerten. Der Fokus liegt auf den Thread ID's
- Garantieren, dass die Ausgabe immer lesbar ist. Da die Variationen der Einträge sehr vielfältig sind, kann ggf. nicht jede Zeile lesbar dargestellt werden.
- Garantieren, dass die Ausgabe der Thread ID's vollständig ist
- Garantieren, dass es nicht noch andere Fehler gibt. welche einfach nicht dargestellt werden
Nutzung / Parameter
Das Script kann über mehrere Parameter gesteuert werden. Generell wird das Script wie folgt gestartet, wenn es im /tmp
Verzeichnis liegt.
sh /tmp/waf_analyzer.sh
Ohne Parameter wird die Datei "/log/reverseproxy.log
" ausgewertet und die Thread ID's werden live dargestellt. Es findet keine Filterung nach der Client IP oder dem Server FQDN statt.
Parameter
-h
Zeigt eine Hilfe zu den Parametern an.
-c 169.254.254.254
Filtert nach der Quell IP Adresse und gibt nur passende Zeilen aus.
Der Parameter ist optional.
-d demo.it-tech.wiki
Filtert nach FQDN der WAF und gibt nur passende Zeilen aus..
Groß- und Kleinschreibung ist egal.
Es kann auch nur nach Teilen des FQDN gesucht werden. Z.B.: -d it-tech
Der Parameter ist optional - bei "-s" aber Pflicht.
-q history
Anstatt neuer Daten (live) können hiermit die alten angezeigt werden.
Der Parameter ist optional und kann mit "-t" kombiniert werden. Wird "-t" nicht angegeben wird "-t lasthour
" gesetzt.
-t lasthour
Mögliche Werte sind:
- "lasthour" = die letzten 60-120 Minuten (je nach aktueller Uhrzeit)
- "today" = alles vom aktuellen Tag
- "yesterday" = alles vom gestrigen Tag
- "all" = alle Daten die das Logfile enthält
Der Parameter ist bei "-q history" notwendig. Wird er nicht gesetzt wird "lasthour" gesetzt.
Kann mit allen Parametern kombiniert werden.
-s
Zeigt die Häufigkeit des Vorkommens von Thread ID's im Zeitraum vom Parameter "-t" an. Ist -t nicht gesetzt wird hier "lasthour gesetzt".
Es wird zusätzlich der Parameter "-d domain" benötigt.
Der Parameter ist optional.
-e
Mit diesem Parameter werden nicht die Thread ID's ausgewertet. Es werden alle Zeilen ausgegeben die das Wort "error" oder "warning" beinhalten. Zwischen den Einträgen wird eine Leerzeile zur besseren Lesbarkeit ausgegeben.
Kombinierbar mit -c, -d, -q, -t
Der Parameter ist optional.
-f /tmp/otherlog.log
Soll ein anderes Logfile als "/log/reverseproxy.log" verwendet werden, kann dies mit diesem Parameter gesetzt werden.
Der Parameter ist optional.
-r
Im Standard gibt das Script vor der Ausführung noch eine kleine Zusammenfassung der Parameter und die auszuführende Befehlszeile aus und startet dann nach 5 Sekunden.
Mit -r wird dies übersprungen und die Ausgabe startet direkt.
Der Parameter ist optional.
Screenshots
Installation
Direkter Download
Der einfachste Weg ist das Aufrufen des folgenden Befehls auf der advanced Shell. Der "Installer" läd die aktuelle Version in das /tmp Verzeichnis und benennt evtl alte Versionen des Scripts um. Danach kann das Script direkt genutzt werden.
curl -L -s -o /tmp/install_waf_analyzer.sh https://it-tech.wiki/wafinstaller && sh /tmp/install_waf_analyzer.sh && rm /tmp/install_waf_analyzer.sh
Manueller Upload
Wenn Ihr lieber das Script manuell auf die Firewall laden wollt, könnt Ihr es hier herunterladen und selber auf der Firewall ablegen.
Zum Upload auf die Sophos Firewall können zum Beipspiel Tools wie WinSCP genutzt werden.
Fragen
- Führt das Script Veränderungen an der Firewall durch?
Nein, das Script liest nur die Zeilen des Logfiles aus und gibt die Ergebnisse direkt auf der Shell aus. Es werden keine Datein im System verändert.
Da das Script im Klartext zu lesen ist, kann dies gerne überprüft werden. - Ich habe einen Fehler gefunden. Wo kann ich den melden?
Fehler könnt Ihr gerne über das Kontaktformular oder in den Kommentaren melden. - Wie entfernt man das Script vom System?
Dazu einfach die Datei waf_analyzer_X.X.sh im Verzeichnis /tmp löschen. Zum Beispiel:rm /tmp/waf_analyzer_0.7.sh
- Ich habe einen Wunsch für das Script. Wo kann ich das melden?
Fehler könnt Ihr gerne über das Kontaktformular oder in den Kommentaren melden.