Sprungmarken

Die letzten Meldungen

Kein Zugang zum 2. Stock für Rollstuhlfahrer

15. Juli 2014

Hinweis: Aufgrund aktuell laufender Baumaßnahmen besteht zur Zeit kein Zugang für Rollstuhlfahrer in den zweiten Stock des RRZE.
Weiterlesen...

Wartungsarbeiten am Videoportal der FAU – 15.07.2014, 10.00 – 16.00 Uhr

15. Juli 2014

Zeitraum: Dienstag, 15.07.2014, 10:00 – 16:00 Uhr
Weiterlesen...

Ausfall Kälteversorgung / HPC-Systeme down

24. Juni 2014

Am 24. Juni ist es kurz nach 21 Uhr zu einem (teilweisen) Ausfall der Kälteversorgung des RRZE-Rechnerraums gekommen. Insbesondere die HPC-Systeme Emmy, LiMa, TinyFAT sowie Teile des Woody-Clusters waren massiv betroffen. Die IT-Systeme haben sich z.T. wegen Überhitzung selbst abgeschaltet bzw. konnten noch administrativ heruntergefahren werden. Es ist derzeit nicht absehbar, welche Hardwarekomponenten alles Schaden genommen haben.
Weiterlesen...

Meldungen nach Thema

 

Firewall mit Shorewall

Seit Version 2.4 des Linux Kernels gehört Iptables zum Standardumfang. Mittels Iptables besteht die Möglichkeit Netzwerkpakete abzufangen und zu manipulieren. Es bildet damit das Herzstück einer Firewall auf Basis von Linux. Weitere Informationen zu Iptables finden Sie auf der Externer Link:  netfilter Webseite.

Iptables ist äußerst mächtig, aber das fordert unglücklicherweise seinen Preis. Zum Verhängnis wird die, selbst für erfahrene User, meist sehr komplexe Konfiguration. Glücklicherweise, gibt es eine relativ einfache (relativ einfach im Bezug auf Firewallkonfigurationen im Allgemeinen) Möglichkeit um mittels Iptables ein Firewallkonzept zu implementieren: Shorewall.

Shorewall selbst ist keine Firewall, sondern ein Firewall-Konfigurator für das oben besprochene Iptables. Das heißt, dass Shorewall kein Programm per se ist, da es nicht beständig läuft, sondern sich nach der Erstellung der Regeln beendet.

Grundvoraussetzungen

Bevor man sich Gedanken über ein Firewallkonzept oder die Implementierung eines solchen macht, sollte natürlich ein gewisses Verständnis für Netzwerke im Allgemeinen, sowie Firewalls (wie Netfilter/Iptables) im Speziellen vorhanden sei.

An dieser Stelle sei auf zahlreiche Fachbücher, wie bspw. Externer Link:  Building Internet Firewalls sowie unzählige Seiten im Externer Link:  Netz verwiesen.

Installation

Als erstes muss natürlich das Shorewall-Paket auf dem entsprechenden System installiert werden. Die Shorewall-Pakete sind für verschiedene Distributionen verfügbar. Beispielsweise in den Externer Link:  Repository des RRZE für die gängigen openSUSE- und SLES-Distributionen. Nutzen Sie dabei ihre bevorzugte Paketverwaltung (z.B. zypper) um die Pakete zu installieren.

Die Installation könnte folgendermaßen erfolgen:

linux # zypper install shorewall-common shorewall-perl shorewall-shell

Benötigt man noch ip6tables-Support (iptables für ipv6) müssen noch folgende Pakete nachinstalliert werden:

linux # zypper install shorewall6

Hinweis: Standardmäßig wird in den Paketen des RRZE ipv6 geblockt, da es andernfalls zu Sicherheitslücken kommen kann. Folgendes Szenario soll den Sachverhalt näherbringen:

Man hat eine zugewiesene ipv4 und ipv6-Adresse. Installiert man nun Shorewall und konfiguriert ipv4, jedoch aber ipv6 nicht, so kann nachwievor ungeschützt auf den Server zugegriffen werden. Daher werden die Pakete standardmäßig mit einer geblockten ipv6-Adresse konfiguriert.

Konfiguration

Für die reibungslose Konfiguration von Shorewall, werden noch ein paar zusätzliche Tools benötigt, die, jedoch zumeist, auf jeder gängigen Linux-Distributionen zu finden sind. Dies sind:

  • Editor (bspw. Externer Link:  nano oder Externer Link:  vim), um die Konfigurationsdateien zu bearbeiten
  • iproute/iproute2: (Shorewall benötigt dieses Paket, da das enthaltene Programm ip Informationen über Interfaces, Routing, Policies, etc. auslesen kann. (Ip ersetzt die Programme ifconfig und route in modernen Linux-Distributionen.) Sollten Sie beim Ausführen des Befehls keine oder keine ähnliche Rückmeldung erhalten, müssen Sie iproute/iproute2 nachinstallieren.
linux # which ip 
/sbin/ip
  • iptables: Ohne iptables funktioniert Shorewall natürlich nicht, da sie lediglich ein Firewall-Konfigurator ist und eine installierte Firewall benötigt. Auch hier müssen Sie iptables nachinstallieren, falls Sie keine ähnliche Rückmeldung erhalten.
linux # which iptables
/usr/sbin/iptables

Ein Firewallkonzept überlegen

Zu allererst, muss man sich natürlich Gedanken über ein Firewallkonzept machen, um dieses überhaupt umsetzten zu können. Weiterhin sollte bekannt sein, wie die Infrastruktur (Interfaces, Router, ... ) in Ihrem Netz aufgebaut ist.

In diesem Beispiel wird ein relativ einfaches Konzept mit einem Interface realisiert. Dabei wird die Firewall auf einem Desktoprechner installiert und diese soll anderen Rechnern im lokalen Netzwerk Zugriff gewähren und vereinzelt Rechnern im Internet per ssh Zugriff erlauben. Alles andere soll ein REJECT erhalten.

Das Netzwerk in Zonen aufteilen

Ein wesentliches Konzept von Shorewall, ist die Unterteilung des Netzwerks in Zonen. Dabei ist eine Zone ein Verbund aus ein oder mehrere Host(s). Diese werden als individuelle(r) Host(s) oder als gesamtes Netzwerk in /etc/shorewall/hosts eingetragen.

   linux # cat /etc/shorewall/hosts
   #ZONE   HOST(S)                                 		OPTIONS
   nzone   eth0:192.168.77.247,131.188.78.240,131.188.78.241

Dabei wird unterhalb von ZONE der neue Zonenname definiert. Unterhalb von HOST(S) werden die Hosts (mittels Kommata getrennt) nach dem dazugehörigen Interface eingetragen. Natürlich ist es auch möglich komplette Adressbereiche a la "131.188.3.1-131.188.3.9" zu definieren bzw. festzulegen.

Hier werden die Zonen fw (Firewallsystem), net (öffentliche Internet) und loc (lokales, privates Netzwerk) verwendet, die in die Datei /etc/shorewall/zones eingetragen werden.

   linux # cat /etc/shorewall/zones
   #ZONE   TYPE            OPTIONS         IN                      OUT
   fw      firewall
   net     ipv4
   loc     ipv4

Dabei muss sowohl der Zonenname unterhalb von ZONE, als auch der Typ unterhalb von TYPE, in diesem Fall das Protokoll, eingetragen werden. Die Ausnahme stellt dabei die Spezialzone fw dar, ihr TYPE ist firewall. Das ist immer so und muss nicht weiter beachtet werden.

Die Zonen mit dem Interface assoziieren

Als nächstes müssen die definierten Zonen mit dem/den Interface(s) assoziiert bzw. diesem zugewiesen werden. Dies erfolgt in der Datei /etc/shorewall/interfaces.

   linux # cat /etc/shorewall/interfaces
   #ZONE   INTERFACE       BROADCAST       OPTIONS
   net     eth0            detect          dhcp,tcpflags

Dabei wird zuerst die Zone angeben und danach das Interface, das dieser zugewiesen werden soll. Verwendet man bei BROADCAST den speziellen Wert detect, versucht Shorewall die Broadcastadresse selbständig zu erfassen (Interface muss vor der Firewall gestartet werden). Alternativ kann die Broadcastadresse auch manuell eingetragen werden.

   linux # cat /etc/shorewall/interfaces
   #ZONE   INTERFACE       BROADCAST       OPTIONS
   net     eth0            131.188.78.239  tcpflags

Standardpolicies erstellen

Nun werden die sehr wichtigen Standardpolicies der Firewall in der Datei /etc/shorewall/policy erstellt. Die Policy ist die Basis, wie Netzwerkverkehr im Netzwerk gehandhabt werden soll.

   linux # cat /etc/shorewall/policy
   #SOURCE DEST    POLICY          LOG     LIMIT:          CONNLIMIT: 
   #                               LEVEL   BURST           MASK
   $FW     net     ACCEPT
   loc     net     ACCEPT
   net     all     DROP            info
   all     all     REJECT          info

Die oben aufgeführte Standardpolicy wird:

  • Alle Verbindungsanfragen des lokalen Netzwerks an das Internet erlauben
  • Alle Verbindungsanfragen des Internets an die Firewall oder das lokale Netz ignorieren (drop)
  • Alle Verbindunganfragen der Firewall an das Internet erlauben
  • Alle weiteren Verbindungsanfragen verwerfen (reject)

WICHTIG: Die letzte Zeile sollte immer mit einem "all all REJECT" enden. In dem Fall, dass man irgendwelche Zonen vergessen haben sollte, werden diese über die letzte Policy abgesichert.

Firewallregeln erstellen

Zum Erstellen der Firewallregeln ist die Datei /etc/shorewall/rules vorgesehen, in die erlaubte Verbindungen eingetragen werden müssen, wobei gewisse vordefinierte Macros (anzeigbar über shorewall show macros) äußerst hilfreich.

Eine Regel, die allen externen ssh-Verbindungen Zugriff auf den konfigurierten Rechner gewährt, kann mit diversen Optionen (z.B. Externer Link:  Rate Limit(s)) erweitert werden.

   linux # cat /etc/shorewall/rules
   #ACTION      SOURCE   DEST   PROTO   DEST    SOURCE    ORIGINAL   RATE    USER/   MARK  CONNLIMIT   TIME
   #                                    PORT    PORT(S)   DEST       LIMIT   GROUP
   SSH/ACCEPT   net      $FW    

Da es sich bei SSH um ein Macro handelt, definiert dieses das Protokoll (tcp) sowie den Eingangsport (22) automatisch.

Letzte Schritte

Starten der Konfiguration

Shorewall bringt eine sehr nützliche Methode mit, um die Konfiguration auf syntaktische Fehler zu überprüfen (shorewall check).

Das erste Mal sollte die erstellte Konfiguration über shorewall safe-start gestartet werden, wobei man am Ende gefragt wird, ob alles in Ordnung ist und erst danach die Firewall wirklich scharf geschalten wird.

   linux # shorewall safe-start
   ...
   Do you want to accept the new firewall configuration? [y/n] n
   ...

Verändert man eine bereits existierende Firewallkonfiguration ist es ratsam shorewall safe-restart verwenden.

Tipp: Sollte widererwartend nichts funktionieren, gehen Sie bitte wie folgt vor

Logdateien auswerten

Es seien die drei relevanten Befehle zur Auswertung der Logdateien zu nennen:

  • "shorewall show log" - Zeigt die letzten 20 netfilter/iptables Log-Nachrichten
  • "shorewall logwatch" - Gibt den Log in festlegbaren Zeitintervallen aus
  • "shorewall dump" - Gibt einen sehr ausführlichen Bericht aus

Konfigurationsdateien

Dies stellt eine kurze Liste der wichtigsten Konfigurationsdateien dar.

  • /etc/shorewall/shorewall.conf - um globale Firewallparameter zu setzen
  • /etc/shorewall/zones - Konfigurationsdatei um Zonen zu definieren
  • /etc/shorewall/policy - Konfigurationsdatei um Standardpolicies zu implementieren
  • /etc/shorewall/rules - legt die Regeln fest, die eine Ausnahme zu /etc/shorewall/policy darstellen
  • /etc/shorewall/interfaces - beschreibt die Interfaces des Firewallsystems
  • /etc/shorewall/hosts - erlaubt Zonen in Form von individuellen Hosts oder Subnetwerken zu definieren
  • /etc/shorewall/nat - definiert one-to-one NAT Regeln
  • /etc/shorewall/routestopped - enthält Hosts die Zugriff haben, wenn Shorewall gestoppet wurde
  • /usr/share/shorewall/macro.* - Details über die Macros die standardmäßig unter Shorewall zur Verfügung stehen

Weiterführende Links

Letzte Änderung: 13. Maerz 2012, Historie

zum Seitenanfang

Startseite | Kontakt | Impressum

RRZE - Regionales RechenZentrum Erlangen, Martensstraße 1, D-91058 Erlangen | Tel.: +49 9131 8527031 | Fax: +49 9131 302941

Inhaltenavigation

Zielgruppennavigation

  1. Studierende
  2. Beschäftigte
  3. Einrichtungen
  4. IT-Beauftragte
  5. Presse & Öffentlichkeit