Wichtige Befehle in der Advanced Shell der Sophos Firewall (XG/XGS)
Bei der Sophos Firewall (XGS-Serie) ist das Log der Web-Ansicht nicht immer das beste zum debuggen. Außerdem können manche Dinge schlicht nicht über die Web-Oberfläche verwaltet oder eingesehen werden. Hier bietet die Firewall Abhilfe über die CLI, welche zum einen Sophos Shell als auch eine vollwertige Unix Shell („Advanced Shell“ genannt).
Diese Advanced Shell bietet einige wichtige Tools zum verwalten und Debuggen der Firewall, wleche ich im Folgenden kurz vorstelle.
Wie gelange ich in die Advanced Shell?
Sobald man sich via SSH auf die Shell der Sophos verbindet begrüßt einen folgendes Menü:
Über den Menüpunkt 5 & anschließend 3 gelangt man in die Advanced Shell.
Wichtige Befehle in der Advanced Shell
Administration
In der Advanced Shell kann man mit folgendem Befehl die Stati aller Dienste auf der Firewall anschauen:
service -S
Diese Dienste können wie folgt verwaltet werden.
Zum Stoppen eines Dienstes kann folgender Befehl verwendet werden:
service SERVICENAME:stop -ds nosync
Zum Starten eines Dienstes kann der folgende Befehl verwendet werden:
service SERVICENAME:start -ds nosync
Zum direkten Neustarten eines Dienstes kann folgender Befehl verwendet werden:
service SERVICENAME:restart -ds nosync
Sollte beispielsweise die Weboberfläche nicht mehr erreichbar sein können dessen Dienste mit folgenden beiden Befehlen neugestartet werden, wodurch der Webserver der Firewall in den meisten Fällen nochmal funktionieren sollte:
service tomcat:restart -ds nosync
service apache:restart -ds nosync
Logging
Alle Log-Dateien befinden Sich im Verzeichnis „/log/“. Um diese anzuzeigen kann folgender Befehl genutzt werden:
ls /log/
Diese einzelnen Log-Dateien können mit dem folgenden Befehl ausgegeben werden, sodass man den Inhalt dieser Dateien einsehen kann (Dabei wird die gesamte Datei ausgegeben!):
cat /log/LOGDATEINAME.log
Die Datei kann auch direkt Zeile-für-Zeile innerhalb eines Editors angesehen werden über folgenden Befehl:
vim /log/LOGDATEINAME.log
Um aus der Datei wieder herauszukommen muss „:q“ eingegeben werden und mit Enter bestätigt werden.
Um in einer Log-Datei nach Einträgen mit einem bestimmten Wort zu suchen kann folgender Befehl verwendet werden:
Grep „SUCHBEGRIFF“ /log/LOGDATEINAME.log
Auch hierbei werden ALLE Zeilen im Dokument ausgegeben, die den gesuchten String enthalten!
Eine Log-Datei kann auch als Live-Log verwendet werden. Mit folgendem Befehl werden nur die neuen Zeilen, die dem Dokument hinzugefügt werden angezeigt:
tail -f /log/LOGDATEINAME.log
Die Beiden Befehle („tail“ & „grep“) können auch kombiniert werden, sodass eine Live-Anzeige des angegebenen Log-Files angezeigt wird, welche nur das ausgibt, was dem definierten Suchbegriff entspricht, bzw. diesen entält.
tail -f /log/LOGDATEINAME.log | grep -f -i „SUCHBEGRIFF“
Ein sehr ausführliches Log bietet das Connection Tracking mit dem Onboard-Tool „conntrack“. Es trackt alle logischen Netzwerk Verbindungen und wie sie von der Firewall prozessiert werden. Der Befehl dazu sieht wie folgt aus:
Conntrack -E -s QUELLIP -d ZIELIP -p PROTOKOLL
Als Ausgabe werden Quelle, Ziel, Protokoll, Port, Status der Verbindung, IPS, VPN-Ids, WebFilter, Firewallregeln, Nat-Regeln, Mac-Adressen und vieles Mehr.
Auch der Conntrack-Befehl kann mit „grep“ kombiniert werden, dass die Ausgabe beispielsweise nur Einträge anzeigt, die über ein bestimmtes Interface der Firewall gehen. Dieser Befehl könnte wie folgt aussehen:
Conntrack -E -s QUELLIP -d ZIELIP -p PROTOKOLL | grep -i “Port2”
System-Tools
Mit dem nachfolgenden Befehl kann man sich alle Filesysteme, sowie die Mountingpoints und Ihre aktuelle Größe und Auslastung anschauen.
df -h
Mit einem weiteren befehl lässt sich die aktuelle Auslastung des Arbeitsspeichers, sowie der Auslagerungsdatei anzeigen:
free
Mit dem nächsten Befehl lässt sich der aktuelle Durchsatz aller Interfaces überprüfen (auch VLAN-Interfaces):
bwmon
Eine solche Analyse kann auch für ein einzelnes Interface durchgeführt werden, welche auch die aktiven Verbindungen und deren Durchsätze (pro Verbindung) anzeigt. Zudem wrden die IP-Adressen und verwendeten Ports der einzelnen verbindungen, des ausgwählten Interfaces angezeigt:
iftop -i INTERFACE -P -N -n
Auch eine Art Speedtest lässt sich mit der Advanced Shell durchführen. Im Prinzip wird dabei eine 1GB-Datei auf die Firewall Heruntergeladen (nicht dauerhaft gespeichert) wobei die Durchsatzgeschwindigkeit gemessen wird.
curl -O https://speed.hetzner.de/1GB.bin
Die durchschnittliche Geschwindigkeit beim Download ist dann in der Spalte „Average Speed“ unter „Dload“ zu sehen. Ganz rechts in der Spalte „Current Speed“ kann man während dem Download der Date sehen, mit welcher Geschwindigkeit der Download voranschreitet.
Angezeigt wird die Geschwindigkeit in „M“, was für Megabyte pro Sekunde steht. Zum Umrechnen in Mbit/s muss dieser Wert mit 8 multipliziert werden. In diesem Beispiel wäre die Downloadgeschwindigkeit also bei 363,2 Mbit/s.
Man sollte hierbei aber immer im Anschluss auch das heruntergeladene File „1GB.bin“ löschen. Dies geht (in diesem Beispiel) mit folgendem Befehl:
rm 1GB.bin