Inhaltsverzeichnis

Allgemein

Beim Betrieb eines Remote-Servers, also eines Servers zu dem man selbst keinen direkten physikalischen Zugang hat, ist bei einigen Dingen spezielle Vorsicht geboten. Da der Zugang zu einem solchen System ausschließlich per Netzwerkzugriff erfolgen kann sind alle Systemeingriffe die den Bootprozess, die Netzwerkkonfiguration, den SSH-Zugang und die Firewall betreffen mit spezieller Vorsicht zu genießen. Geht bei einem dieser Aspekte etwas schief kann man sich selbst vom System aussperren und erlangt ohne Rettungssystem (was glücklicherweise die meisten Hoster anbieten) keinen Zugriff mehr auf das System.

Da eine Firewall dazu dient Netzwerkverkehr zu überwachen und ungewollten Netzwerkverkehr aus zu sperren ist hier wie erwähnt besondere Vorsicht geboten. IPFW, eine der in FreeBSD enthaltenen Firewalls, ist standardmäßig eine einschließend Firewall, was bedeutet, dass die Firewall jeden Datenverkehr der nicht explizit zugelassen wird blockiert. Ohne den SSH-Zugang explizit zu erlauben hat man sich somit z.B. direkt nach Start der Firewall ausgesperrt.

Hinweis: Dies sind nur Gedankenstützen. Die Verwendung dieser Informationen erfolgt auf eigenes Risiko!

Sicheres starten der Firewall

Im Folgenden wird davon ausgegangen, dass IPFW zur Paketfilterung genutzt werden soll und die notwendigen Variablen zum Start und der Konfiguration von IPFW in /etc/rc.conf gesetzt sind. Die Arbeit erfolgt per ssh auf dem zu konfigurierenden Server.

tmux starten

Arbeiten über eine Remote-Verbindung sollten nach Möglichkeit immer über tmux (sysutils/tmux) oder screen (sysutils/screen) erfolgen um bei einer abbrechenden Verbindung nicht seine aktuelle Arbeit zu verlieren. Im Folgenden wird mit tmux gearbeitet.

# tmux

Nach dem Start von tmux hat man ein gegen Verbindungsabbrüche geschütztes Terminal. Bei Abbruch der Netzwerkverbindung, z.B. weil die Firewall den Datenverkehr kappt, wird die tmux-session detached und läuft im Hintergrund weiter.

Notbremse starten

Im geöffneten tmux-Terminal wird der folgende Befehl abgesetzt.

# sleep 300 ; /etc/rc.d/ipfw stop

Die Shell wartet nun 300 Sekunden (5 Minuten) und führt dann /etc/rc.d/ipfw stop aus um damit die Firewall zu stoppen. Es stehen also 5 Minuten zur Verfügung um die Änderungen an der Firewall zu aktivieren und zu testen.

Das tmux-Terminal kann nun per strg+b d detached und die Änderungen an der Firewall durchgeführt werden.

Wichtig:: Der Aufruf /etc/rc.d/ipfw stop funktioniert nur wenn in der /etc/rc.conf die Zeile firewall_enable=„YES“ steht! Es kann sicherer sein dies vorher zu testen!

Es ging etwas schief

Wenn man sich nun mit der neuen Firewallkonfiguration ausgesperrt hat muss man lediglich die 300 Sekunden abwarten bis die Firewall wieder gestoppt wird.

Es hat alles geklappt die Firewall läuft

Wunderbar, die Firewall läuft und es wurde bereits getestet ob es noch möglich ist neue Verbindungen per ssh aufzubauen (!!).

Um die Notbremse abzubrechen muss lediglich der detachte tmux-Terminal wieder geholt

# tmux attach

und die noch wartende sleep-Anweisung mit strg+c abgebrochen werden.

Wichtig

Wenn die 300 Sekunden abgelaufen sind ist die Firewall deaktiviert. Ein Starten der Firewall nach den 300 Sekunden ist nicht mehr per Notbremse geschützt!

Die sleep-Anweisung ohne den Verbindungsschutz von tmux zu verwenden bietet im Fehlerfall keinen Schutz. Das Abbrechen der Verbindung würde die sleep-Anweisung (und das dadurch verzögerte Beenden der Firewall) abbrechen.