====== 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.**