Shorewall
Vorgeschichte
Kommerzielle Firewall-Lösungen beherrschen den Markt.
Viele verwenden "unter der Haube" abgespeckte oder angepasste Linux-Betriebssysteme.
Aufgrund so mancher negativer Erfahrungen mit kommerziellen Lösungen wie z.B.
- Mangelhafter Support
- Kosten für Fehlerkorrekturen trotz aufwendiger Fehlerdokumentation
- Mangelhafte Skalierbarkeit und Flexibilität wegen lizenzbedingter Einschränkungen
Diese negativen Erfahrungen musste ich im Rahmen meiner Anstellung bei einem IT-Dienstleister machen.
Bis 2007 hatte ich ausschließlich Shorewall im Einsatz und daher kannte ich keine solchen Probleme. Nach kurzen Ausflügen in die kommerzielle Welt der Firewall-Anbieter habe ich ab 2008 wieder voll auf Shorewall weiter konfiguriert, weil es einfach funktioniert :-)
Die Konfiguration
Shorewall ist eine Opensource Lösung (wie sonst auch alles, was ich an Software zum Einsatz bringe). Im Prinzip ist es eine ausgefeilte Skript-Sammlung zur Konfiguration von iptables.
Durch die saubere Strukturierung der Konfigurationsdateien lässt sich eine komplexe Firewall in kurzer Zeit aufbauen.
Es gibt zwar grafische Oberflächen für die Konfiguration von Shorewall über Webmin, aber ich würde empfehlen, direkt die Konfigurationsdateien zu bearbeiten.
Wer schon einmal mit dem Smartphone über Secure Shell eine Firewall oder einen Cluster administriert hat, weiß, wie einfach, schnell und effizient diese Art zu arbeiten ist - also ohne grafische Oberfläche ("Maus-Junk").
Beim Bearbeiten setze ich auf Versionierung des Konfigurations-Ordners:
- vimdiff: zur detaillierten Darstellung der Unterschiede zwischen Konfigurationsdateien
- Versionierung des gesamten Konfigurations-Ordners VOR jeder Anpassung (z.B. cp -a shorewall shorewall_YYYYMMDD)
Das Prinzip
Shorewall hält Konfigurationsdateien für alle relevanten Bereiche
- zones
- Definition von Bereichen wie z.B. "das Lokale Netzwerk" (LOC), "die Firewall selber" (FW) oder "das Internet" (NET)
- interfaces
- Alle Netzwerkschnittstellen, die durch die Konfiguration betroffen werden, werden einer Zone zugewiesen
- hosts
- Bei größeren Netzwerken kombiniert man diese Konfiguration mit "interfaces"
- policy
- Hier wird festgelegt, was grundsätzlich erlaubt oder verboten ist. z.B. NET -> LOC wird verboten, LOC -> NET wird auch verboten, FW -> ALL wird erlaubt
- rules
- Damit werden die Feinheiten eingestellt.
- z.B. Außnahmen für die Policy LOC->NET wie eine Freischaltung für FTP
Shorewall hat noch einige weitere Konfigurations-Dateien, die ich hier nicht erklären will, weil die Anleitungen auf der Homepage http://shorewall.net ohnehin optimal sind.
Fallstricke
REJECT PROTO=4
Strongswan IPCOMP = YES verändert das Verhalten von Strongswan. IPIP PROTO=4 kommt zum Einsatz.
SSH über VPN-Tunnel bleibt stecken
MSS in Shorewall zones File reduzieren.