IAPM 3 - Shorewall 1 Shorewall Shoreline Firewall Version 2.0.9 Internet APM 3 WS04/05 Christian Beyerle Robert Tullius
IAPM 3 - Shorewall 2 Inhaltsverzeichnis 1 Vorwort 3 2 Installation 4 2.1 Systemvoraussetzungen....................... 4 2.2 Shorewall installieren......................... 4 2.2.1 Installation per apt...................... 4 2.2.2 Installation per tarball.................... 4 3 Das Konzept von Shorewall 5 3.1 Der Aufbau.............................. 5 3.2 Die Zustände............................. 5 3.3 Die Zonen............................... 5 3.4 Die Konfigurationsdateien...................... 6 3.5 Die action-files............................ 6 4 Konfiguration 7 4.1 Grundsätzliches............................ 7 4.2 Allgemeine Konfiguration...................... 7 4.2.1 Zonen............................. 7 4.2.2 interfaces........................... 7 4.2.3 rules.............................. 8 4.2.4 policy............................. 8 4.2.5 masq.............................. 8 4.2.6 nat............................... 9 4.2.7 proxyarp........................... 9 4.2.8 action-files.......................... 9 4.2.9 shorewall.conf......................... 9 4.2.10 routestopped......................... 10 4.2.11 maclist............................ 10 4.2.12 blacklist............................ 10 4.2.13 messages........................... 10 5 Bespielkonfiguration 11 5.1 Bespiel Standalone-Lösung...................... 11 5.1.1 /etc/shorwall/interfaces................... 11 5.1.2 /etc/shorewall/policy.................... 11 5.1.3 /etc/shorewall/zones..................... 11 5.1.4 /etc/shorewall/rules..................... 11 5.2 Bespiel Router-Lösung........................ 12 5.2.1 Grundsätzliches........................ 12 5.2.2 /etc/shorewall/masq..................... 12 5.2.3 /etc/shorewall/nat...................... 12 5.2.4 /etc/shorewall/proxyarp................... 12 5.2.5 /etc/shorewall/rules..................... 13
IAPM 3 - Shorewall 3 6 Kommandos 14 6.1 Kommandos während der Laufzeit................. 14 6.2 Konfiguration während der Laufzeit................ 14
IAPM 3 - Shorewall 4 1 Vorwort Shorewall heißt eigentlich Shoreline Firewall und ist ein Open-Source Projekt. Im Grund genommen kann man Shorewall als eine Art bequemes Frontend für iptables sehen. Shorewall ist sowohl als Stand-Alone Lösung sowie als Router konfigurierbar. Für diese Dokumentation wurde Shorewall in der Version 2.0.9 auf einem Debian System mit Kernel 2.6.9 aufgesetzt.
IAPM 3 - Shorewall 5 2 Installation 2.1 Systemvoraussetzungen Shorewall setzt folgende Voraussetzungen an ein Linux-System: Kernel ab Version 2.4 iptables iproute netfilter Es ist empfehlenswert die aktuellsten Versionen der vorausgesetzten Packages zu benutzen, um Kompatibilitätsproblemen vorzubeugen. 2.2 Shorewall installieren Es gibt mehrere Möglichkeiten Shorewall zu installieren, davon werden hier zwei beschrieben. 2.2.1 Installation per apt (für Debianpakete) Der folgende Aufruf führt alle nötigen Kommandos zur Installation von Shorewall aus: apt-get install shorewall 2.2.2 Installation per tarball Zuerst muss man sich das entsprechende.tar.gz-file herunterladen, z.b. von http://www.shorewall.net. Danach folgende Kommandos zur Installation auf dem System ausführen: tar zxf shorewall-2.0.9.tgz cd shorewall-2.0.9./install.sh Shorewall befindet sich nach der Installation im Verzeichnis /etc/shorewall.
IAPM 3 - Shorewall 6 3 Das Konzept von Shorewall 3.1 Der Aufbau Shorewall teilt die ihr bekannte Netzwerke in verschiedene Zonen auf. Es kann nun definiert werden, wie Shorewall mit Paketen umgehen soll, die von einer Zone zu einer anderen geschickt werden. Dabei können die Regeln sehr grob (z.b. für jeglichen Verkehr aus einer Zone), aber auch sehr fein (z.b. bei einer Zone viele verschiedene Ports unterscheiden) definiert werden. Shorewall hat zudem mehrere Zustände, die festlegen, ob die Firewall nach den Regeln filtert, jeglichen Verkehr sperrt oder alle Pakete durch lässt. 3.2 Die Zustände Shorewall hat verschiedene Zustände. Die Firewall befindet sich immer in genau einem dieser Zustände. Zustand start stop clear Bedeutung Normaler Betrieb der Firewall. Die Firewall filtert die Pakete nach den vorgegebenen Regeln. Die Firewall blockiert. Es werden nur noch als sicher befundene Verbindungen zugelassen. Diese kann der Benutzer festlegen. Allerdings sollte man aufpassen, weil Shorewall im stop-zustand von außen keinen Verkehr, außer den zuvor konfigurierten, Ausnahmen mehr zulässt Die Firewall lässt alle Pakete durch. 3.3 Die Zonen Shorewall unterteilt alle ihr bekannten Netze in Zonen. In den Regeln wird dann festgelegt, wie mit Paketen von bestimmten Zonen umgegangen wird. Je nach Verwendung von Shorewall definiert man mehr oder weniger Zonen. Man sollte neben der standardmäßig existierenden Zone fw noch weitere definieren. Üblicherweise wird die folgende Konfiguration verwendet.: Zone fw net loc dmz Bedeutung Die Firewall selbst Die Welt außerhalb des zu schützenden Bereich, idr. das Internet Das zu schützende (lokale) Netz Eine demilitarisierte Zone, z.b. für Mail- oder Fileserver Eine weitere vordefinierte Zone ist all, mit der Regeln für alle Zonen erstellt werden können.
IAPM 3 - Shorewall 7 3.4 Die Konfigurationsdateien Alle nachfolgend aufgelisteten Konfigurationsdateien findet man im Ordner /etc/shorewall. Sofern sie für die Konfiguration als Stand-Alone oder Router-Lösung interessant sind, wird im Kapitel 4 - Konfiguration weiter darauf eingegangen. Datei Funktion blacklist Auflistung von IP Adressen, die immer geblockt werden common.def Allgemeine Definitionen hosts Definition der Hosts icmp.def Beschreibt, wie mit ICMP-Paketen umgegangen wird interfaces Zuordnung Interface - Zone maclist Zuordnung Interfaces - MAC Adressen masq Masquerading konfigurieren net NAT konfigurieren params Definition von Parametern policy Hier können Basisregeln erstellt werden proxyarp Proxyarp konfigurieren routestopped Ausnahmen, die im Zustand stop weiter zugreifen dürfen rules Definition von Regeln (spezifischer als policy) shorewall.conf Allgemeine Konfiguration tcrules Shaping / Control tos Macht Type-Of-Service Veränderungen möglich (IP) tunnels Hier können Tunnel definiert werden version Hier findet man einfach nur die Versionsnummer zones Defition der Zonen 3.5 Die action-files Ab Version 2.0 gibt es schon einige vordefinierte Aktionen, mit denen man die Firewall sehr einfach konfigurieren kann. So ist es nicht mehr nötig genau die Ports der verschiedenen Dienste zu kennen, sondern man muss nur eine bestimmte Regel einbinden, um einen bestimmen Dienst zuzulassen. Wenn man zum Beispiel einen Http-Server auf dem System einrichtet, muss man nur noch die Regel AllowHTTP einbinden um den Dienst auf dem Server freizugeben. Um eine solche Action einzubinden, muss sie als Action in der Konfigurationdatei /etc/shorewall/rules aufgeführt werden. Dazu mehr im Kapitel 4 - Konfiguration.
IAPM 3 - Shorewall 8 4 Konfiguration 4.1 Grundsätzliches Um Shorewall beim Starten des Systems zu aktivieren, muss in der Datei /etc/default/shorewall die Variable startup = 1 gesetzt werden. Es kann vorkommen, dass ein Interface, das von Shorewall benutzt wird noch nicht initialisiert ist, wenn Shorewall startet. Deshalb kann es sinnvoll sein die Option wait_interface = eth1 zu setzen. 4.2 Allgemeine Konfiguration 4.2.1 Zonen Datei: /etc/shorewall/zones Definiert die Zonen der Firewall. Die Zone fw wurde schon in /etc/shorewall/shorewall.conf festgelegt. #ZONE DISPLAY COMMENTS net Net Internet loc Local Local networks (Gateway) fw FW Firewall dmz DMZ Demilitarized zone Außerdem existiert auch noch die Zone all. 4.2.2 interfaces Datei: /etc/shorewall/interfaces In dieser Datei ordnet man die Interfaces den entsprechenden Zonen zu. #ZONE INTERFACE BROADCAST OPTIONS net eth1 detect dhcp,routefilter loc eth0 192.168.0.255 routefilter Optionen dhcp norfc1918 routefilter Blacklist Adresse wird dynamisch vom ISP zugewiesen Private Adressbereich werden nicht angesprochen Kernel-Route Filter Eingehende Pakete werden mit der Blacklist verglichen Die privaten Adressbereiche finden sich in /usr/share/shorewall/rfc1918.
IAPM 3 - Shorewall 9 4.2.3 rules Datei: /etc/shorewall/rules In dieser Datei werden alle Portfreigaben gespeichert. #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT PORT(S) DEST ACCEPT net fw tcp 443,20,21,25,110 - ACCEPT net fw udp 53 - DROP net fw tcp 135,139 REJECT net fw tcp 80,8080 DNAT net loc:192.168.1.13 tcp 21 4.2.4 policy Datei: /etc/shorewall/policy In dieser Datei sind Basisregeln definiert, die dann greifen, wenn keine feinere Regel zutrifft. #SOURCE DEST POLICY LOG LIMIT:BURST # LEVEL fw net ACCEPT net all DROP info # # THE FOLLOWING POLICY MUST BE LAST # all all REJECT info Zudem sollte man hier die Logging-Optionen einstellen. Es ist üblich DROP und REJECT zu loggen. 4.2.5 masq Datei: /etc/shorewall/masq (SNAT) Werden im internen Netz Adressen aus dem privaten Adressbereich benutzt, so ersetzt die Firewall diese privaten Adressen mit einer öffentlichen Adresse. #INTERFACE SUBNET ADDRESS PROTO PORT(S) eth0 192.168.0.0/24 oder eth0 oder eth1 eth0 eth1 206.124.146.177 tcp smtp eth0 eth1 206.124.146.176
IAPM 3 - Shorewall 10 4.2.6 nat Datei: /etc/shorewall/nat Interne IP-Adressen werden durch öffentliche ersetzt, wobei jeder internen auch eine eigene externe Adresse zugewiesen wird. #EXTERNAL INTERFACE INTERNAL ALL INTERFACES LOCAL 130.252.100.18 eth0 10.1.1.2 no no 130.252.100.19 eth0 10.1.1.3 no no 4.2.7 proxyarp Datei: /etc/shorewall/proxyarp Existiert bereits ein Server im Netz, kann man diesen nachträglich noch mit der Firewall schützen, ohne die IP-Adresse des Servers zu ändern. Die Firewall beantwortet dann anstelle des Servers die Anfragen. #ADDRESS INTERFACE EXTERNAL HAVEROUTE PERSISTENT 130.252.100.18 eth1 eth0 no yes 130.252.100.19 eth1 eth0 no yes Die hier angegebenen IP-Adressen sollten nicht in den Konfigurationsdateien /etc/shorwall/nat und /etc/shorewall/masq vorkommen. 4.2.8 action-files Die action-files stehen im Verzeichnis /usr/share/shorewall/. Das Layout der action-dateien wird hier am Beispiel der Datei /usr/share/shorewall/action.allowicq gezeigt: #TARGET SOURC DEST PROTO DEST SOURCE RATE # PORT PORT(S) LIMIT ACCEPT - - tcp 5190 Beim Starten der Shorewall wird beim Durchlaufen der rules überprüft, ob eine entsprechende action-datei in der Datei /etc/shorewall/actions.std gelistet ist. Wird die Datei hier gefunden, so werden die in ihr abgelegten Regeln aufgenommen. 4.2.9 shorewall.conf Datei: /etc/shorewall/shorewall.conf Allgemeine Einstellungen von shorewall. z. B. Einstellungen für Routing: NAT_ENABLE = YES IP_FORWADING = ON
IAPM 3 - Shorewall 11 4.2.10 routestopped Datei: /etc/shorewall/routestopped Wenn Shorewall im Zustand stop ist, kann von diesen IP-Adressen weiterhin von außen zugegriffen werden. 4.2.11 maclist Datei: /etc/shorewall/maclist Zuordnung von Interfaces, MAC- und optional IP-Adressen. 4.2.12 blacklist Datei: /etc/shorewall/blacklist Host, IP-Adressen oder MAC-Adressen die von Shorewall geblockt werden sollen. 4.2.13 messages Datei: /var/log/messages In dieser Datei werden die Logging-Einträge gespeichert
IAPM 3 - Shorewall 12 5 Bespielkonfiguration 5.1 Bespiel Standalone-Lösung 5.1.1 /etc/shorwall/interfaces Hier werden zwei Interfaces für die Zone net deklariert, einmal für die Wlan- Karte und das normale Netzwerk. Interfaces können z.b. auch ppp0 oder ippp0 sein. #ZONE INTERFACE BROADCAST OPTIONS net eth1 detect dhcp,routefilter net eth0 detect dhcp,routefilter 5.1.2 /etc/shorewall/policy Alle Pakete nach außen werden zuglassen, alle eingehenden Pakete werden verworfen, falls keine Regel auf sie zutrifft. #SOURCE DEST POLICY LOG fw net ACCEPT net all DROP info all all REJECT info 5.1.3 /etc/shorewall/zones Zonen Firewall und Net definiert. #ZONE DISPLAY COMMENTS net Net Internet fw FW Der Rechner auf dem die Firewall läuft 5.1.4 /etc/shorewall/rules Webserver, SSH und POP3 Zugriffe auf der Firewall werden zugelassen. Anfragen auf Windows Dienste werden verworfen. #ACTION SOURCE DESTINATION PROTO DEST PORT(S) AllowWeb net fw AllowSSH net fw AllowPOP3 net fw DROP net fw tcp 135,139
IAPM 3 - Shorewall 13 5.2 Bespiel Router-Lösung 5.2.1 Grundsätzliches Um NAT und Masquerading zu aktivieren, müssen in /etc/shorewall/shorewall.conf die Variablen NAT_ENABLE = YES IP_FORWADING = ON geändert werden. 5.2.2 /etc/shorewall/masq Damit das lokale Subnet 192.168.201.0/29 nach außen zugreifen kann, wird Masquerading verwendet. #INTERFACE SUBNET ADDRESS eth0 192.168.201.0/29 192.0.2.176 5.2.3 /etc/shorewall/nat Auf dem Rechner mit der internen IP-Adresse 192.168.201.4 soll zusätzlich mit der öffentlichen IP-Adresse 192.0.2.179 ein Webserver erreichbar sein. #EXTERNAL INTERFACE INTERNAL ALL INTERFACES LOCAL 192.0.2.179 eth0 192.168.201.4 No No In der /etc/shorewall/rules muss nun noch der folgende Eintrag hinzugefügt werden: ACCEPT net loc:192.168.201.4 tcp www 5.2.4 /etc/shorewall/proxyarp Die Rechner in der DMZ haben jeweils eine externe IP-Adresse, sollen aber trotzdem durch die Firewall geschützt werden. Dazu wird der folgende Eintrag benötigt: #ADDRESS EXTERNAL INTERFACE HAVE ROUTE 192.0.2.177 eth2 eth0 No 192.0.2.178 eth2 eth0 No
IAPM 3 - Shorewall 14 5.2.5 /etc/shorewall/rules Der Rechner 192.0.2.178 soll als Mail-Server arbeiten, dazu sind folgende Einträge zusätzlich vorzunehmen: #ACTION SOURCE DEST PROTO DEST COMMENTS # PORT(S) [...] ACCEPT net dmz:192.0.2.178 tcp smtp ACCEPT net dmz:192.0.2.178 tcp pop3 ACCEPT loc dmz:192.0.2.178 tcp smtp ACCEPT loc dmz:192.0.2.178 tcp pop3 ACCEPT fw dmz:192.0.2.178 tcp smtp ACCEPT dmz:192.0.2.178 net tcp smtp
IAPM 3 - Shorewall 15 6 Kommandos 6.1 Kommandos während der Laufzeit shorewall start shorewall stop shorewall restart shorewall reset shorewall clear shorewall refresh shorewall status shorewall monitor [x sec] shorewall version shorewall check shorewall try (dir) [x sec] shorewall logwatch [x sec] startet die Firewall Firewall blockiert alle Pakete entspricht shorewall stop, shorewall start löscht die Paketzähler löscht alle Regeln der Firewall, Firewall ist offen liest alle Regeln neu ein Gibt den aktuellen Status der Firewall aus Zeigt alle x Sekunden den Status der Firewall an zeigt die installierte shorewall-version aktuelle Konfiguration ausgeben die Konfiguration im angegebenen Verzeichnis wird geladen und getestet, bis ein optionaler timeout von x sec. erreicht ist Zeigt den Inhalt des Logfiles im x sec.-intervall an 6.2 Konfiguration während der Laufzeit shorewall drop (adresse) shorewall reject (adresse) Shorewall allow (allow) shorewall save dropt die Pakete der angegebene Adresse rejectet die Pakete der angegebene Adresse erlaubt Pakete der angegebene Adresse speichert diese dynamische Konfiguration