Die SUSE-Firewall

28.04.2005 von STEFAN RUBNER 
Eine Firewall schützt lokale Rechner und ganze Netzwerke. Sie von Hand zu konfigurieren, ist allerdings nicht immer einfach. Die Firewall-Verwaltung von SUSE 9.2 hilft bei der Aufgabe.

Um sich vor Viren oder anderen bösartigen Attacken zu schützen, ist eine Firewall unerlässlich. Das gilt selbst dann, wenn eine Hardware-Firewall den eigentlichen Internet-Zugang schützt. Schließlich weiß man nie, welche digitale Pest andere Mitarbeiter oder auch der Filius ins Firmen- oder Privatnetz einschleppen.

Die unterschiedlichen Einsatzgebiete erfordern eine jeweils andere Konfiguration der Firewall - je nachdem, wovor oder vor wem, und selbstverständlich auch, wen Sie schützen wollen. Außerdem sind selbst bei einem reinen Privateinsatz Modifikationen an der Firewall vorzunehmen, um beispielsweise Anwendungen wie Instant Messaging (IM) oder Voice over IP (VoIP) nutzen zu können.

Firewall für Netzwerk-Client

Nach der Erstinstallation von SUSE Linux 9.2 auf einem als Netzwerk-Client genutzten Rechner arbeitet die integrierte Firewall quasi als so genannte Personal Firewall. Das bedeutet: Sie erlaubt jeden ausgehenden Datenverkehr, blockiert jedoch eingehende Datenströme, sofern diese nicht zuvor explizit angefordert wurden. Zusätzlich sorgt sie durch spezielle Einstellungen dafür, dass wichtige Übertragungen mit besonderen Flags im TCP-Header versehen werden. Unterstützt Ihr Netzwerk diese Type-of-Service-Informationen, dann werden FTP- und HTTP-Transfers auf Datendurchsatz optimiert, andere Protokolle wie SNMP auf Sicherheit der Daten. Bei DNS-Abfragen sorgen die Einstellungen für möglichst kurze Antwortzeiten.

Allerdings soll nicht verschwiegen werden, dass eine echte Personal Firewall noch mehr leistet als die SUSE Firewall 2. So ist die Firewall unter Linux nicht in der Lage, zusätzlich zu den reinen Datenströmen auch die Applikationen zu prüfen, die Verursacher einer bestimmten Übertragung sind. Sollte sich also der unwahrscheinliche Fall einstellen, dass sich auf Ihrem Linux-Rechner ein Trojaner einnistet, so kann dieser unbehelligt von der Firewall Daten mit Zielen im lokalen Netz oder dem Internet austauschen.

Samba frei schalten

Die auf den kompletten Schutz vor von außen gestarteten Angriffen ausgelegte Grundeinstellung der SUSE Firewall hat aber auch Nachteile. So verhindert das Standard-Setup nicht nur Attacken, sondern macht auch das Bereitstellen von Netzlaufwerken per Samba - also das Äquivalent einer Windows-Freigabe - unmöglich. Der Grund dafür ist, dass Samba seine Dienste zwar aktiv im Netz ankündigt, Verbindungsanfragen aber trotzdem als unaufgefordert eingehende Kommunikation abgelehnt werden. Gleiches gilt für einen auf dem Rechner betriebenen Webserver. Diese Dienste für andere Anwender erreichbar zu machen, ist jedoch recht einfach. Sie müssen dazu im Firewall-Setup lediglich die entsprechenden Punkte aktivieren.

Was aber, wenn Sie auf dem Rechner einen Dienst betreiben, für den noch keine vorgefertigte Definition existiert? Ein Beispiel dafür ist FTP zum einfachen Transfer von Daten auf den Rechner. Dieses benötigt den Port 21, der sich über die von YaST angebotenen Funktionen nicht freischalten lässt. Um diesen Port - und damit den lokalen FTP-Server - von anderen Rechnern aus erreichbar zu machen, müssen Sie ihn in die Liste der zusätzlichen Dienste aufnehmen. Dies erreichen Sie durch einen Klick auf die Schaltfläche "Experten" im Konfigurationsdialog der Firewall-Dienste.

Sonstige Dienste frei schalten

Im daraufhin angezeigten Dialog erfassen Sie die von der Firewall durchzulassenden Dienste über deren Portnummer oder die in der Datei /etc/services hinterlegten Namen, getrennt nach TCP und UDP.

Dabei stellt sich natürlich gleich die Frage, woher man die Information bekommt, ob das gewünschte Protokoll nun TCP oder UDP verwendet. Am einfachsten ist es, in der Datei /etc/services nachzusehen. Hier finden sich die meisten bekannten Dienste sowie die von ihnen verwendeten Ports und Protokolle, aufsteigend nach Portnummer sortiert und aufgelistet.

Firewall für Internet-Router

Ist Ihr Rechner nicht über ein lokales Netz oder einen Router, sondern direkt - beispielsweise per DSL-Modem - mit dem Internet verbunden, sind ein paar zusätzliche Einstellungen zu beachten. In diesem Fall macht es nämlich keinen Sinn, die Ethernet-Schnittstelle eth0 zu schützen. Im Fall von DSL ist die PPP-Verbindung ppp0 zum Internet die potenzielle Gefahrenquelle, beim Einsatz von ISDN analog dazu ippp0. Sollten Sie noch per Modem ins Netz gehen, dann ist modem0 die richtige Wahl.

Je nach Verbindungstyp müssen Sie diese Schnittstelle entweder aus der Dropdown-Liste der externen Schnittstellen bei der Firewall-Konfiguration auswählen oder diese manuell in das Feld eintragen.

Zusätzlich ist jetzt auch eine interne Schnittstelle anzugeben. Dies kann durchaus eth0, also die Ethernet-Schnittstelle sein. Linux erlaubt es schließlich, auf einem physikalischen Interface mehrere virtuelle Netzwerkgeräte zu betreiben. Besser ist jedoch der Einsatz einer zusätzlichen Netzwerkkarte, die dann entsprechend als eth1 die Verbindung zum internen Netz herstellt.

Darüber hinaus sollte der als Router verwendete Rechner besonderen Schutz erfahren. Dazu gehört, dass die auf ihm laufenden Dienste vor jeglichem Zugriff - auch aus dem internen Netz heraus - geschützt werden. Ein als Router arbeitender Rechner sollte im Idealfall überhaupt keine Dienste außer der Paketvermittlung zwischen lokalem Netz und Internet zur Verfügung stellen. Wollen Sie dennoch einige Dienste wie beispielsweise einen DHCP- und einen DNS-Server auf dem Rechner betreiben, dann müssen Sie diese zunächst explizit über den bekannten Konfigurationsdialog für Dienste frei schalten.

Masquerading/NAT einschalten

Zusätzlich müssen Sie dafür sorgen, dass die Pakete zwischen lokalem Netz und Internet auch wirklich weitergeleitet werden. Standardmäßig ist diese Funktion unter Linux deaktiviert. Um sie einzuschalten, setzen Sie im Einstellungsdialog der Firewall-Features das Häkchen bei der Option "Daten weiterleiten und Masquerading durchführen". Dadurch aktivieren Sie auch gleich die Network Address Translation (NAT). Sie sorgt dafür, dass vom Rechner im lokalen Netz versendete Datenpakete für das Zielsystem im Internet so aussehen, als kämen Sie von der IP-Adresse, die Ihr Provider Ihnen beim Verbindungsaufbau zugeteilt hat.

Zusätzlich sollten Sie die Option "Alle laufenden Dienste schützen" einschalten. Das mag zunächst verwirrend klingen, insbesondere dann, wenn der Router Dienste wie DHCP und DNS zur Verfügung stellt. Da diese Option aber nur für diejenigen Dienste gilt, die nicht im vorangegangenen Dialog explizit erlaubt wurden, können Anwender im LAN freigeschaltete Dienste auch nach dem Aktivieren dieser Einstellung weiterhin nutzen.

Damit erschöpfen sich allerdings schon die Optionen, die über das YaST-Modul zur Konfiguration der Firewall erreichbar sind. Wer weiter gehende Funktionen benötigt, beispielsweise die Weiterleitung von eintreffenden Paketen an spezielle Dienste-Server im lokalen Netz, kommt um eine manuelle Konfiguration der Firewall nicht herum.

Port-Weiterleitung

Immerhin: Dank der Arbeit der SUSE-Entwickler muss zur Konfiguration der Firewall kein vorheriges Studium der Dokumentation zu Iptables, dem Firewall-System von Linux, mehr erfolgen. Alle Einstellungen lassen sich recht komfortabel über die Datei /etc/sysconfig/SuSEfirewall2 vornehmen. Bevor Sie beginnen, diese Datei zu bearbeiten, sollten Sie zur Sicherheit auf jeden Fall eine Backup-Kopie anlegen.

Im Folgenden gehen wir von einem Szenario aus, wie es in vielen Unternehmen üblich ist: Zusätzlich zur reinen Internet-Anbindung für die Mitarbeiter im Firmengebäude wird ein im LAN partizipierender Rechner als Webserver genutzt, der auch aus dem Internet heraus erreichbar sein soll. Als Schnittstelle zum Internet dient ein DSL-Modem an der ersten Netzwerkkarte eth0, die Anbindung an das lokale Netz stellt der über eth1 ansprechbare Adapter her. Im LAN werden Adressen aus dem Bereich 192.168.10.x verwendet, die Netzmaske ist daher 255.255.255.0. Der Webserver im lokalen Netz hat die Adresse 192.168.10.123.

WICHTIG: Im Folgenden geben wir nur die Parameter an, die in der Konfigurationsdatei der Firewall zu ändern sind. Alle anderen Einstellungen lassen Sie bitte so, wie sie sind. Auf keinen Fall dürfen Sie nicht erwähnte Settings löschen, dies hätte eine funktionsuntüchtige Firewall zur Folge.

Interner Web-Server

Die für das erste Beispiel notwendigen Einstellungen lauten:

FW_DEV_EXT=„ppp0„
FW_DEV_INT=„eth1„
FW_ROUTE=„yes„
FW_MASQUERADE=„yes„
FW_MASQ_NETS=„192.168.10.0/24„
FW_FORWARD_MASQ=„0/0,192.168.10.123,tcp,80„

Ihre Bedeutung ist schnell erklärt: Über FW_DEV_EXT legen Sie das externe Interface fest, über FW_DEV_INT die Schnittstelle zum internen Netz. Die Einstellung FW_ROUTE="yes" aktiviert das Routing zwischen den Schnittstellen. Die Network Address Translation zwischen Internet und lokalem Netz schaltet FW_MASQUERADE="yes" ein. Der Parameter FW_MASQ_NETS legt fest, für welche lokalen IP-Adressbereiche NAT verwendet wird. Die Umleitung eintreffender Anfragen für den im LAN befindlichen Webserver richtet der letzte Befehl, FW_FORWARD_MASQ, ein. Dieser verdient eine etwas genauere Betrachtung. In der Parameterliste zwischen den Anführungszeichen erfassen Sie hier die gewünschte Umleitung in der generellen Form

<quelladresse>,<zieladresse>,<protokoll>,<port>

Dabei können Sie auch Abkürzungen verwenden, wie oben geschehen. Der Parameter 0/0 ist die Kurzform von 0.0.0.0/0.0.0.0, was einer beliebigen Quelladresse entspricht.

WICHTIG: Nach jeder Änderung der Datei /etc/sysconfig/SuSEfirewall2 ist das Kommando SuSEfirewall2 auszuführen, um die Änderungen zu aktivieren.

Zugriff auf Web-Server einschränken

Wollen Sie den Zugriff auf den lokalen Webserver beispielsweise auf IP-Adressen einschränken, die einem bestimmten Provider zugeordnet sind, so lässt sich das recht einfach erreichen. Nehmen wir an, alle Ihre externen Mitarbeiter verwenden den Provider "SuperDSL", der IP-Adressen aus dem Bereich 123.123.x.y vergibt. Dann können Sie über folgenden Befehl zumindest alle Internet-Nutzer von Ihrem lokalen Webserver fern halten, die nicht über SuperDSL mit dem Internet verbunden sind:

FW_FORWARD_MASQ=„123.123.0.0/16,192.168.10.123,tcp,80„

Ebenso einfach lässt sich der Umleiter für zusätzliche Dienste und Server einrichten. Dazu genügt es, weitere Umleiter durch eine Leerstelle vom Vorgänger getrennt zu erfassen. Bietet Ihr interner Webserver zum Beispiel zusätzlich einen per SSL geschützten Übertragungsmodus auf Port 443, und ist zudem noch ein FTP-Server im LAN unter der IP-Adresse 192.168.10.234 erreichbar, sieht die Konfiguration dafür so aus:

FW_FORWARD_MASQ=„0/0,192.168.10.123,tcp,80 0/0,192.168.10.123,tcp,443 0/0,192.168.10.234,tcp,21 0/0,192.168.10.234,udp,21„

DMZ einrichten

Nun ist es nicht wirklich sicher, aus dem Internet erreichbare Server im lokalen Netz zu platzieren. Es empfiehlt sich, eine so genannte entmilitarisierte Zone (DMZ) einzurichten. Diese ist über eine eigene Netzwerkkarte und damit über einen eigenen, vom LAN verschiedenen Adressbereich erreichbar. Für unser Beispiel verwenden wir den Bereich 10.x.y.z. Die zum Aufsetzen einer einfachen DMZ mit lediglich einem Webserver notwendigen Befehle sind:

FW_DEV_EXT=„ppp0„
FW_DEV_INT=„eth1 eth2„
FW_ROUTE=„yes„
FW_MASQUERADE=„yes„
FW_MASQ_NETS=„192.168.10.0/24 10.0.0.0/8„
FW_FORWARD_MASQ=„0/0,10.0.0.1,tcp,80„

Dienste-Server erzwingen

Eine weitere Funktion, die sich über die SUSE-Firewall realisieren lässt, ist die zwangsweise Umleitung bestimmter Dienste auf Server im lokalen Netz oder im Internet. Wollen Sie beispielsweise, dass DNS-Anfragen immer an den auf dem Router installierten DNS-Server weitergeleitet werden, tragen Sie folgende Zeile in die Firewall-Konfiguration ein:

FW_REDIRECT=„192.168.10.0/24,0/0,tcp,53,53 192.168.10.0/24,0/0,udp,53,53„

Auf diese Weise können Sie verhindern, dass andere als der auf dem Router laufende Mail-Server für Clients im lokalen Netz erreichbar sind. Es genügt, dafür die Ports 25 (SMTP), 110 (POP3) und 143 (IMAP) auf den Router umzuleiten:

FW_REDIRECT=„192.168.10.0/24,0/0,tcp,25,25 192.168.10.0/24,0/0,udp,25,25„
FW_REDIRECT=„192.168.10.0/24,0/0,tcp,110,110 192.168.10.0/24,0/0,udp,110,110„
FW_REDIRECT=„192.168.10.0/24,0/0,tcp,143,143 192.168.10.0/24,0/0,udp,143,143„

Diese Beispiele zeigen zwei weitere Feinheiten: Zum einen lässt sich zusätzlich zu dem von den Anfragen adressierten Port ein alternativer Port auf dem Zielrechner angeben. Zum anderen zeigt das letzte Beispiel, dass sich innerhalb der Konfiguration die Angaben für FW_REDIRECT, FW_FORWARD sowie für FW_FORWARD_MASQ mehrfach eintragen lassen.

"Unlösbare" Firewall-Probleme

Trotz der diversen Möglichkeiten, die Arbeit einer Firewall zu beeinflussen, gibt es durchaus Problembereiche. Dazu gehört zum Beispiel das sich zunehmender Beliebtheit erfreuende Instant Messaging per ICQ, AIM oder den Messengern von MSN, Yahoo oder auch Jabber. Zwar lässt sich in der Regel über eine Firewall hinweg recht gut kommunizieren, die Nutzung der erweiterten Funktionen wie Dateitransfer oder gar Video-Chat steht jedoch meist nicht zur Verfügung. Schuld daran ist häufig nicht etwa die Firewall, sondern die verwendete Software. Um das zu verstehen, ist eine genauere Betrachtung der Vorgänge notwendig.

Beim seinem Start kontaktiert ein Instant-Messaging-Client einen oder mehrere zentrale Server und ruft von diesen diverse Informationen ab. Dazu gehört beispielsweise der Online-Status von dem Anwender bekannten Nutzern des IM-Dienstes, Daten über verpasste Nachrichten und vieles andere mehr. Da diese Übertragung vom Client ausgeht, passieren sowohl dessen Anfragen wie auch die vom Server gesendeten Antworten die Firewall problemlos.

Nimmt der lokale Nutzer nun mit einem entfernten Anwender Kontakt auf, läuft auch dieser Datenverkehr über einen oder mehrere Server des IM-Anbieters. Aus Sicht der beteiligten Firewalls ist auch das kein Problem, da zur Übertragung die bereits seit der ersten Kontaktaufnahme bekannte Verbindung zwischen Client und Server genutzt wird.

Kritisch wird es allerdings, wenn die beiden Gesprächspartner Daten nicht mehr über die beteiligten Server, sondern direkt miteinander austauschen wollen. Genau das ist bei Dateitransfers oder Video-Übertragungen der Fall. Die überwiegende Mehrheit der aktuell erhältlichen IM-Clients ist so programmiert, dass der sendende Client einfach mit der Übertragung der Daten beginnt. Dazu sendet er die Pakete an einen Port des Zielsystems, auf dem eigentlich der empfangende Client auf Daten lauschen müsste. Da es sich aus Sicht der Firewall auf der empfangenden Seite bei diesen Paketen um unaufgefordert gesendete Daten handelt, verwirft sie sie einfach. Als Folge davon lassen sich Dateiübertragungen und Video-Chats meist nicht erfolgreich durchführen.

Ist im Netz jeweils nur ein Anwender aktiv, lässt sich dieses Problem durch eine Port-Weiterleitung lösen. Die eintreffenden Pakete werden dann von der Firewall direkt an den als Forwarding-Ziel angegebenen Rechner gesendet. In Office-Umgebungen ist diese Lösung aber nicht einsetzbar, da dort mehrere mögliche Empfänger existieren. Mittels Port-Forwarding lässt sich jedoch stets nur ein Zielsystem spezifizieren.

Zur Lösung des Problems gibt es zwei Möglichkeiten. Die aufwendige Variante besteht im Einsatz eines Proxy-Servers. Entsprechende Software existiert beispielsweise für das von vielen VoIP-Systemen verwendete Session Initiation Protocol sowie einige Instant-Messaging-Systeme. Die andere Variante wäre, Software einzusetzen, die das Problem von sich aus behebt. Dazu ist es lediglich notwendig, dass die beiden Clients vorab klären, auf welchen Ports sie direkt Daten austauschen wollen. Im Anschluss daran beginnen beide Seiten gleichzeitig, Übertragungen zu starten und öffnen damit beide Firewalls. (mha)