SuSEfirewall2

SuSEfirewall2 ist ein Skript, das die in /etc/sysconfig/SuSEfirewall2 gesetzten Variablen ausliest, um mehrere iptables-Regeln zu generieren. Es definiert drei Sicherheitszonen, obwohl nur die erste und die zweite Zone in der folgenden Beispielkonfiguration berücksichtigt werden:

Externe Zone

Davon ausgehend, dass es keine Möglichkeit gibt, Vorgänge im externen Netzwerk zu steuern, muss der Host vor diesem geschützt werden. In den meisten Fällen handelt es sich bei dem externen Netzwerk um das Internet, es könnte aber auch ein anderes unsicheres Netzwerk sein, z. B. ein WLAN.

Interne Zone

Diese Zone bezieht sich auf das private Netzwerk, wobei es sich in den meisten Fällen um ein LAN handelt. Wenn die Hosts in diesem Netzwerk IP-Adressen aus dem privaten Bereich (siehe Abschnitt 20.1.2, „Netzmasken und Routing“) verwenden, müssen Sie NAT (Network Address Translation) aktivieren, damit Hosts im internen Netzwerk auf externe Hosts zugreifen können.

Demilitarisierte Zone (DMZ)

Während Hosts, die sich in dieser Zone befinden, sowohl vom externen als auch vom internen Netzwerk aus erreicht werden können, können sie selbst nicht auf das interne Netzwerk zugreifen. Diese Konfiguration kann als zusätzliche Verteidigungslinie vor das interne Netzwerk gesetzt werden, da die DMZ-Systeme vom internen Netzwerk isoliert sind.

Jegliche Art von Netzwerkverkehr, der gemäß der Filterregel nicht explizit erlaubt ist, wird durch iptables unterdrückt. Daher muss jede Schnittstelle mit eingehendem Verkehr einer der drei Zonen zugeordnet werden. Legen Sie für alle Zonen die zulässigen Dienste und Protokolle fest. Diese Regelsätze gelten jedoch nur für Pakete, die von entfernten Hosts stammen. Lokal generierte Pakete werden von der Firewall nicht erfasst.

Die Konfiguration kann mit YaST ausgeführt werden (siehe Abschnitt 33.4.1, „Konfigurieren der Firewall mit YaST“). Sie lässt sich jedoch auch manuell in der Datei /etc/sysconfig/SuSEfirewall2 vornehmen, die sehr gut kommentiert ist. Zudem stehen weitere Beispielszenarien in /usr/share/doc/packages/SuSEfirewall2/EXAMPLES zur Verfügung.

Konfigurieren der Firewall mit YaST

[Important]Automatische Firewall-Konfiguration

Im Anschluss an die Installation startet YaST automatisch eine Firewall für alle konfigurierten Schnittstellen. Wenn ein Server auf dem System konfiguriert und aktiviert ist, kann YaST die automatisch generierte Firewall-Konfiguration mit den Optionen Firewall-Ports auf ausgewählten Schnittstellen öffnen oder Firewall-Port öffnen in den Serverkonfigurationsmodulen ändern. Einige Servermodul-Dialogfelder enthalten die Schaltfläche Firewall-Details zum Aktivieren zusätzlicher Dienste und Ports. Die Firewall kann mit dem YaST-Firewall-Konfigurationsmodul aktiviert, deaktiviert oder neu konfiguriert werden.

Der Zugriff auf die YaST-Dialogfelder für die grafische Konfiguration erfolgt über das YaST-Kontrollzentrum. Wählen Sie Sicherheit und Benutzer+Firewall. Die Konfiguration ist in sieben Abschnitte aufgeteilt, auf die Sie über die Baumstruktur auf der linken Seite direkt zugreifen können.

Start

In diesem Dialogfeld legen Sie das Startverhalten fest. In einer Standardinstallation wird SuSEfirewall2 automatisch gestartet. Außerdem können Sie in diesem Dialogfeld die Firewall starten und stoppen. Um die neuen Einstellungen für eine aktive Firewall zu übernehmen, wählen Sie Einstellungen speichern und Firewall nun neu starten.

Abbildung 33.2. Die YaST-Firewall-Konfiguration

Die YaST-Firewall-Konfiguration

Schnittstellen

Hier werden alle bekannten Netzwerkschnittstellen aufgelistet. Um eine Schnittstelle aus einer Zone zu entfernen, markieren Sie sie, klicken Sie auf Bearbeiten und wählen Sie Keine Zone zugewiesen. Um eine Schnittstelle zu einer Zone hinzuzufügen, markieren Sie sie, klicken Sie auf Bearbeiten und wählen Sie anschließend eine der verfügbaren Zonen. Mit der Option Benutzerdefiniert können Sie auch eine spezielle Schnittstelle mit eigenen Einstellungen erstellen.

Erlaubte Dienste

Diese Option benötigen Sie, um einer Zone Dienste Ihres Systems zur Verfügung zu stellen, vor der es geschützt ist. Das System ist standardmäßig nur vor externen Zonen geschützt. Sie müssen alle Dienste explizit zulassen, die den externen Hosts zur Verfügung stehen sollen. Aktivieren Sie nach der Auswahl der gewünschten Zone die Dienste unter Erlaubte Dienste für gewählte Zone.

Masquerading

Mit der Masquerading-Funktionalität verbergen Sie das interne Netzwerk vor externen Netzwerken, z. B. dem Internet, und ermöglichen den Hosts im internen Netzwerk gleichzeitig den transparenten Zugriff auf das externe Netzwerk. Anforderungen vom externen an das interne Netzwerk werden blockiert. Anforderungen aus dem internen Netzwerk werden scheinbar vom Masquerading-Server ausgegeben, der extern sichtbar ist. Wenn dem externen Netzwerk spezielle Dienste eines internen Computers zur Verfügung gestellt werden sollen, fügen Sie für den Dienst eine spezielle Umadressierungsregel hinzu.

Broadcast

In diesem Dialogfeld konfigurieren Sie die UDP-Ports, die Broadcasts zulassen sollen. Fügen Sie die erforderlichen Nummern der Ports oder Dienste getrennt durch Leerzeichen für die entsprechende Zone hinzu. Weitere Informationen hierzu finden Sie in der Datei /etc/services.

Hier können Sie auch das Protokollieren von Broadcasts aktivieren, die nicht akzeptiert werden. Dies kann problematisch sein, da sich Windows-Hosts über Broadcasts miteinander bekannt machen und daher viele Pakete generieren, die nicht akzeptiert werden.

IPsec-Unterstützung

In diesem Dialogfeld konfigurieren Sie, ob dem externen Netzwerk der IPsec-Dienst zur Verfügung stehen soll. Unter Details konfigurieren Sie, welche Pakete als vertrauenswürdig angesehen werden sollen.

Protokollierumfang

Es gibt zwei Regeln für die Protokollierung: akzeptierte und nicht akzeptierte Pakete. Nicht akzeptierte Pakete werden verworfen (DROPPED) oder abgelehnt (REJECTED). Wählen Sie die Option Alles protokollieren, Nur kritische protokollieren oder Keine protokollieren für beide Regeln.

Benutzerdefinierte Regeln

Legen Sie hier spezielle Firewall-Regeln fest, die Verbindungen nach angegebenen Kriterien wie einem Ausgangsnetzwerk, Protokoll, Zielport und Ausgangsport entsprechen. Konfigurieren Sie solche Regeln für externe, interne und entmilitarisierte Zonen.

Wenn Sie die Firewall-Konfiguration abgeschlossen haben, wählen Sie Weiter, um dieses Dialogfeld zu schließen. Anschließend wird eine zonenbezogene Zusammenfassung der Firewall-Konfiguration geöffnet. Aktivieren Sie darin alle Einstellungen. In dieser Zusammenfassung sind alle zulässigen Dienste, Ports und Protokolle sowie alle benutzerdefinierten Regeln aufgelistet. Mit der Option Zurück können Sie die Konfiguration ändern. Wählen Sie Übernehmen, um die Konfiguration zu speichern.

Manuelle Konfiguration

In den folgenden Abschnitten sind detaillierte Anweisungen für eine erfolgreiche Konfiguration enthalten. Für jeden Konfigurationsschritt wird angegeben, ob er sich auf die Firewall- oder Masquerading-Konfiguration bezieht. Verwenden Sie einen Portbereich (z. B. 500:510), wann immer möglich. Die in der Konfigurationsdatei erwähnten Aspekte, die mit der DMZ (Demilitarisierte Zone) in Zusammenhang stehen, werden hier nicht näher erläutert. Sie sind nur für komplexere Netzwerkinfrastrukturen größerer Unternehmen (Corporate Networks) relevant, die eine aufwändige Konfiguration und umfassende Kenntnisse erfordern.

Aktivieren Sie zunächst mit dem YaST-Runlevel-Editor SuSEfirewall2 für Ihr Runlevel (wahrscheinlich 3 oder 5). Dadurch werden symbolische Links für die SuSEfirewall2_*-Skripten in den Verzeichnissen unter /etc/init.d/rc?.d/ angelegt.

FW_DEV_EXT (Firewall, Masquerading)

Das mit dem Internet verbundene Gerät. Geben Sie für eine Modemverbindung ppp0 ein. Verwenden Sie für eine ISDN-Verbindung ippp0. DSL-Verbindungen verwenden dsl0. Um die der Standardroute entsprechende Schnittstelle zu verwenden, geben Sie auto an.

FW_DEV_INT (Firewall, Masquerading)

Das mit dem internen, privaten Netzwerk verbundene Gerät (z. B. eth0). Wenn es kein internes Netzwerk gibt und die Firewall nur den Host schützt, auf dem sie ausgeführt wird, machen Sie keine Angaben.

FW_ROUTE (Firewall, Masquerading)

Wenn Sie die Masquerading-Funktion benötigen, setzen Sie diese Variable auf yes. Die internen Hosts sind von außen nicht sichtbar, da ihre private Netzwerkadressen (z. B. 192.168.x.x) von Internetroutern ignoriert werden.

Setzen Sie diese Variable für Firewalls ohne Masquerading auf yes, wenn der Zugriff auf das interne Netzwerk zugelassen werden soll. In diesem Fall müssen die internen Computer offiziell registrierte IP-Adressen verwenden. Sie sollten den externen Zugriff auf das interne Netzwerk in der Regel jedoch nicht zulassen.

FW_MASQUERADE (Masquerading)

Setzen Sie diese Variable auf yes, wenn Sie die Masquerading-Funktion benötigen. Dadurch wird den internen Hosts eine virtuelle direkte Verbindung zum Internet zur Verfügung gestellt. Es ist jedoch weitaus sicherer, wenn zwischen den Hosts des internen Netzwerks und dem Internet ein Proxyserver geschaltet ist. Für die von einem Proxyserver zur Verfügung gestellten Dienste ist das Masquerading nicht erforderlich.

FW_MASQ_NETS (Masquerading)

Geben Sie die Hosts oder Netzwerke, für die die Masquerading-Funktion aktiviert werden soll, durch Leerzeichen getrennt an. Beispiel:

FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INT (Firewall)

Setzen Sie diese Variable auf yes, um den Firewall-Host vor Angriffen aus dem internen Netzwerk zu schützen. Dem internen Netzwerk stehen nur die explizit aktivierten Dienste zur Verfügung. Weitere Informationen hierzu finden Sie auch unter FW_SERVICES_INT_TCP und FW_SERVICES_INT_UDP.

FW_SERVICES_EXT_TCP (Firewall)

Geben Sie die zu öffnenden TCP-Ports an. Für eine normale Arbeitsstation, die in der Regel keine Dienste benötigt, müssen Sie hier keine Angaben machen.

FW_SERVICES_EXT_UDP (Firewall)

Lassen Sie dieses Feld leer, es sei denn, Sie möchten einen aktiven UDP-Dienst verfügbar machen. UDP wird von Diensten wie DNS-Servern, IPSec, TFTP, DHCP und anderen verwendet. Geben Sie in diesem Fall die zu verwendenden UDP-Ports an.

FW_SERVICES_ACCEPT_EXT (Firewall)

Listen Sie die Services auf, die über das Internet erlaubt sein sollen. Dies ist eine allgemeinere Form der Einstellungen FW_SERVICES_EXT_TCP und FW_SERVICES_EXT_UDP und spezifischer als FW_TRUSTED_NETS. Die Notation erfolgt in einer durch Leerzeichen getrennten Liste von net,protocol[,dport][,sport], z. B. 0/0,tcp,22.

FW_SERVICES_INT_TCP (Firewall)

Mit dieser Variablen legen Sie die für das interne Netzwerk verfügbaren Dienste fest. Die Notation ist dieselbe wie für FW_SERVICES_EXT_TCP, aber die Einstellungen werden auf das interne Netzwerk angewendet. Diese Variable muss nur gesetzt werden, wenn FW_PROTECT_FROM_INT auf yes gesetzt ist.

FW_SERVICES_INT_UDP (Firewall)

Siehe FW_SERVICES_INT_TCP.

FW_SERVICES_ACCEPT_INT (Firewall)

Listen Sie Services auf, die von internen Hosts aus erlaubt sein sollen. Siehe FW_SERVICES_ACCEPT_EXT.

FW_SERVICES_ACCEPT_RELATED_* (Firewall)

SuSEfirewall2 führt nun eine kleine Änderung ein hinsichtlich der Pakete, die vom Netzfilter als RELATED betrachtet werden.

Um beispielsweise eine feinere Filterung der Samba Broadcast-Pakete zu erlauben, werden RELATED-Pakete nicht mehr bedingungslos akzeptiert. Die neuen Variablen, die mit FW_SERVICES_ACCEPT_RELATED_ beginnen, wurden eingeführt, um die Verarbeitung von RELATED-Paketen auf bestimmte Netzwerke, Protokolle und Ports zu beschränken.

Das bedeutet, dass ein Hinzufügen von Modulen zur Verbindungsverfolgung (conntrack-Modulen) zu FW_LOAD_MODULES nicht mehr automatisch dazu führt, dass die Pakete, die durch diese Module markiert werden, übernommen werden. Zusätzlich müssen Sie Variablen, die mit FW_SERVICES_ACCEPT_RELATED_ beginnen, auf einen passenden Wert festlegen.

Testen Sie ihre Einrichtung, nachdem Sie die Firewall konfiguriert haben. Die Firewall-Regelsätze werden erstellt, indem Sie SuSEfirewall2 start als root eingeben. Testen Sie auf einem externen Host anschließend beispielsweise mit telnet, ob die Verbindung tatsächlich abgelehnt wird. Prüfen Sie anschließend /var/log/messages, wo Sie ähnliche Einträge wie die folgenden sehen sollten:

Mar 15 13:21:38 linux kernel: SFW2-INext-DROP-DEFLT IN=eth0 
OUT= MAC=00:80:c8:94:c3:e7:00:a0:c9:4d:27:56:08:00 SRC=192.168.10.0 
DST=192.168.10.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=15330 DF PROTO=TCP 
SPT=48091 DPT=23 WINDOW=5840 RES=0x00 SYN URGP=0 
OPT (020405B40402080A061AFEBC0000000001030300)

Weitere Pakete zum Testen der Firewall-Konfiguration sind "nmap" oder "nessus". Die Dokumentation von nmap befindet sich im Verzeichnis /usr/share/doc/packages/nmap und die Dokumentation von nessus ist nach der Installation des entsprechenden Pakets im Verzeichnis /usr/share/doc/packages/nessus-core enthalten.