Firewall

Ansprechpartner

sabine
Mathias

1. Allgemeines

Shorewall bzw. Shorewall6 ist ein super Frontend für iptables bzw. ip6tables. Damit kann man sich sehr einfach mit ein paar Textdateien eine Firewall für die komplexesten Szenarien konfigurieren.

Beschreibungen und eine sehr gute Dokumentation findet man auf der Webseite, in den Manpages für die einzelnen Konfigurationsdateien und im Paket shorewall-doc.

Installiert werden die Pakete shorewall-init, shorewall und shorewall6.

Shorewall trennt die Firewalls nach IPv4 und IPv6, so dass man faktisch zwei verschiedene Firewalls wartet. Die Konfigurationen können dann auch entsprechend voneinander abweichen, bis auf ein paar Überschneidungen wie z. B. Traffic Shaping. Daher werden wir hier auch die Firewalls getrennt nach IPv4 und IPv6 dokumentieren. Dennoch werden wir versuchen, die Konfigurationen für IPv4 und IPv6 so ähnlich wie möglich zu halten.

Die Konfigurationsdateien wurden aus /usr/share/doc/shorewall{,6}/examples/one-interface kopiert und angepasst. Sämtliche Anpassungen sind unten dokumentiert.

Sobald Daemonen installiert werden, die Dienste im Internet anbieten, muss die Firewall entsprechend angepasst werden. Vergesst nicht, sowohl Shorewall als auch Shorewall6 anzupassen, oder mir Bescheid zu geben, damit ich die Firewall anpassen kann.

2. TODO

3. shorewall-init

Zwei Probleme:

Die nötigen Einstellungen für shorewall-init legen wir in /etc/default/shorewall-init fest.

3.1. /etc/default/shorewall-init (IPv4 und IPv6)

4. Shorewall (IPv4)

4.1. /etc/default/shorewall

4.2. /etc/shorewall/shorewall.conf - Allgemeine Optionen

Außer den hier aufgelisteten Optionen bitte alles unverändert lassen!

Einige Optionen betreffen die Protokollierung von bestimmten Paketen. Details dazu siehe im Abschnitt Logging.

4.3. /etc/shorewall/params - Variablen

4.4. /etc/shorewall/zones - Liste der Netzwerk-Zonen

Weitere Zonen brauchen wir nicht, da der Rechner kein Router ist.

4.5. /etc/shorewall/interfaces - Liste der Netzwerkschnittstellen

4.6. /etc/shorewall/policy - Standardpolicy für den Datenverkehr zwischen den Zonen

4.7. /etc/shorewall/rules - Regeln, die von der Policy abweichen

Von Zone net nach Zone fw:

Von Zone fw nach Zone net:

Bemerkungen:

4.8. /etc/shorewall/conntrack - Tracking von Verbindungen

5. Shorewall6 (IPv6)

5.1. /etc/default/shorewall6

5.2. /etc/shorewall6/shorewall6.conf - Allgemeine Optionen

5.3. /etc/shorewall6/params - Variablen

5.4. /etc/shorewall6/zones - Liste der Netzwerk-Zonen

5.5. /etc/shorewall6/interfaces - Liste der Netzwerkschnittstellen

5.6. /etc/shorewall6/policy - Standardpolicy für den Datenverkehr zwischen den Zonen

5.7. /etc/shorewall6/rules - Regeln, die von der Policy abweichen

Von Zone net nach Zone fw:

Von Zone fw nach Zone net:

Bemerkungen:

5.8. /etc/shorewall6/conntrack - Tracking von Verbindungen

6. Logging

Shorewall bzw. Shorewall6 protokollieren normalerweise über syslog, was dann aber dazu führt, dass /var/log/messages und dmesg mit Meldungen ziemlich geflutet werden. Außerdem werden diese Meldungen, die in der Regel die syslog facility kern und dem Level info besitzen, mit allen anderen der gleichen facility.level-Kombination zusammen geworfen.

Um diese recht zahlreichen Meldungen gesondert zu behandeln (Datenmenge!), gehen wir den folgenden Weg:

Der Linux Kernel unterstützt allerdings speziell für Netfilter, das eigentliche Back-End der Firewall im Kernel, die speziellen Logging Back-Ends ULOG und NFLOG. ULOG kann leider nur IPv4, NFLOG kann IPv4 und IPv6. ULOG ist inzwischen veraltet, das Logging Back-End der Wahl ist NFLOG. Das bedeutet, dass Netfilter die Meldungen - an syslog und journald (systemd) vorbei! - per NFLOG direkt abliefern kann.

Angenommen werden diese durch den ulogd2-Daemon aus dem gleichnamigen Debian-Paket, der sie in /var/log/ulog/syslogemu.log schreibt. Darüber hinaus bietet ulogd2 auch noch andere Ziele für die Netfilter-Meldungen an, etwa Datenbanken.

Um Shorewall bzw. Shorewall6 auf NFLOG umzustellen, muss man in allen Konfigurationsdateien das Log Level info durch NFLOG ersetzen. Weitere Details sind auf der Webseite von Shorewall beschrieben. Um den Aufwand zu beschränken und damit wir flexibel bleiben, definieren wir in den Dateien /etc/shorewall{,6}/params einfach eine Variable

#LOG="info"
LOG="NFLOG"

und verweisen in den anderen Konfigurationsdateien dann auf $LOG. Das betrifft die Dateien shorewall{,6}.conf und policy.

Die Dateien in /var/log/ulog werden ganz regulär durch logrotate rotiert und weggepackt.


CategoryDocumentation

Dokumentation/Firewall (last edited 2015-03-16 18:46:55 by Mathias)