Inhaltsverzeichnis
Zusammenfassung
Masquerading und Firewall sorgen für einen kontrollierten Datenfluss und -austausch. Die Secure Shell (SSH) gibt Ihnen die Möglichkeit, sich über eine verschlüsselte Verbindung auf entfernten Rechnern anzumelden. Die Verschlüsselung von Dateien oder ganzen Partitionen sichert Ihre Daten ab, wenn Dritte Zugang zu Ihrem System haben. Neben diesen rein technischen Instruktionen finden Sie zum Abschluss einen allgemeinen Abschnitt über Sicherheitsaspekte im Linux-Netzwerk.
Wird Linux in einer vernetzten Umgebung eingesetzt und muss zwischen verschiedenen internen und externen Bereichen getrennt werden, werden die im Linux-Kernel enthaltenen Funktionen zur Verwaltung von Netzwerkpaketen benutzt. Die Netfilter-Infrastruktur bietet alle Hilfsmittel, um ein Linux-System als wirkungsvolle Firewall zwischen verschiedenen Netzen einzusetzen. Mittels iptables – einer generischen Tabellenstruktur zur Definition von Regelwerken – kann präzise gesteuert werden, welche Pakete des Datenverkehrs passieren dürfen und welche nicht. SuSEfirewall2 und das zugehörige YaST-Modul erleichtern Ihnen die Einrichtung eines Paketfilters.
Netfilter und iptables sind für die Filterung, Veränderung und NAT (Network Address Translation) von Netzwerkpaketen zuständig. Filterkriterien und damit verbundene Aktionen werden in Ketten gespeichert und der Reihe nach abgearbeitet, wenn ein Netzwerkpaket eintrifft. Die abzuarbeitenden Regelketten werden in Tabellen gespeichert. Das Kommando iptables dient zur Bearbeitung dieser Tabellen und Regelketten.
Linux kennt drei Tabellen für die verschiedenen Funktionen eines Paketfilters:
In dieser Tabelle befinden sich die meisten Regeln, da hier das
eigentliche Paketfiltern stattfindet. Hier finden
sich die Regeln für das Annehmen (ACCEPT) und
Ablehnen (DROP) von Paketen.
Hier ist die Änderung von Quell- und Zieladressen der Pakete definiert. Masquerading, das Sie zum Anbinden eines privaten Kleinnetzes ans Internet verwenden ist ein Spezialfall von NAT.
Mit Hilfe der hier niedergelegten Regeln, können Werte im IP-Header manipuliert werden (zum Beispiel der Type of Service).
Es gibt in den genannten Tabellen mehrere vordefinierte Ketten, die die Pakete durchlaufen müssen:
Diese Kette ist für Pakete, die gerade am System ankommen.
Diese Kette ist für Pakete, die für systemeigene Prozesse bestimmt sind.
Diese Kette ist für Pakete bestimmt, die einfach durch das System durchgereicht werden.
Diese Kette ist für solche Pakete bestimmt, die im System selbst erzeugt wurden.
Diese Kette ist für alle Pakete, die das System verlassen.
Abbildung 34.1, „iptables: Wege eines Pakets durch das System“ gibt den Weg eines Netzwerkpakets durch das System wieder. Aus Gründen der Übersichtlichkeit werden die Tabellen nach Ketten gruppiert, obwohl in der Realität die Ketten eigentlich innerhalb der Tabellen organisiert sind.
Im einfachsten Fall trifft auf der eth0-Schnittstelle des
Systems ein Paket ein, dass für das System selbst bestimmt ist. Zunächst
wird dieses Paket in die Kette PREROUTING der Tabelle
mangle geleitet, anschließend wird es in die Kette
PREROUTING der nat Tabelle geleitet.
Im angeschlossenen Routingschritt wird festgestellt, dass das Paket für
einen Prozess im eigenen System bestimmt ist. Nach Passieren der
INPUT Ketten in den beiden Tabellen
mangle und filter gelangt das Paket an
seinen Bestimmungsort; vorausgesetzt, die Filterregeln in der
filter Tabelle verhindern dies nicht.
Masquerading ist der Linux-Spezialfall von NAT (engl. Network Address
Translation), der Übersetzung von Netzwerkadressen. Zum Einsatz kommt es,
wenn ein kleines LAN mit IP-Adressen aus dem privaten Bereich (siehe Abschnitt 22.1.2, „Netzmasken und Routing“) an das
Internet mit seinen offiziellen IP-Adressen angebunden wird. Damit die
Rechner im LAN Verbindungen ins Internet aufbauen können, werden die
Verbindungen von privaten Adressen auf die offiziellen abgebildet. Dieser
Vorgang geschieht auf dem Router, der zwischen LAN und Internet vermittelt.
Das Prinzip dahinter ist einfach: Der Router hat mehr als ein
Netzwerkinterface, typischerweise sind das eine Netzkarte und eine
Schnittstelle zum Internet. Eines dieser Interfaces wird Sie nach außen
anbinden, eines oder mehrere andere verbinden Ihren Rechner mit den weiteren
Rechnern in Ihrem Netz. Sie haben mehrere Rechner im lokalen Netz mit der
Netzwerkkarte Ihres Linux-Routers verbunden, die in diesem Beispiel
eth0 heißt. Die Rechner im Netz senden alle Pakete, die
nicht für das eigene Netz bestimmt sind, an den Default-Router oder das
Default-Gateway.
![]() | Einheitliche Netzwerkmasken |
|---|---|
Achten Sie beim Konfigurieren Ihres Netzwerks immer auf übereinstimmende broadcast-Adressen und Netzwerkmasken. Andernfalls wird Ihr Netz nicht korrekt arbeiten, da Netzwerkpakete nicht geroutet werden können. | |
Wird nun einer der Rechner in Ihrem Netz ein Paket für das Internet
versenden, dann landet es beim Default-Router. Dieser muss so konfiguriert
sein, dass er solche Pakete auch weiterleitet. Aus Sicherheitsgründen wird
eine SUSE LINUX Installation dies in der Voreinstellung nicht tun! Ändern
Sie die Variable IP_FORWARD in der Datei
/etc/sysconfig/sysctl auf
IP_FORWARD=yes.
Der Zielrechner der Verbindung kennt nur Ihren Router, nicht aber den eigentlichen Absender-Rechner in Ihrem inneren Netzwerk, der hinter Ihrem Router versteckt ist. Daher kommt der Begriff Masquerading. Die Ziel-Adresse für Anwortpakete ist wegen der Adressübersetzung wieder unser Router. Dieser muss die Pakete erkennen und die Zieladresse so umschreiben, dass sie zum richtigen Rechner im lokalen Netz gelangen.
Da der Weg der Pakete von außen nach innen von der Masquerading-Tabelle abhängt, gibt es keine Möglichkeit, von außen eine Verbindung nach innen zu öffnen. Für diese Verbindung gäbe es keinen Eintrag in der Tabelle. Eine etablierte Verbindung hat darüber hinaus in der Tabelle einen zugeordneten Status, so dass dieser Tabelleneintrag nicht von einer zweiten Verbindung genutzt werden kann.
In der Folge ergeben sich nun Probleme mit manchen Anwendungen, zum Beispiel ICQ, cucme, IRC (DCC, CTCP) und FTP (im PORT-Mode). Netscape, das Standard-FTP-Programm und viele andere benutzen den PASSV-Modus, der im Zusammenhang mit Paketfiltern und Masquerading weit weniger problembehaftet ist.
Firewall ist wohl der am weitesten verbreitete Begriff für einen Mechanismus, der zwei Netze miteinander verbindet, aber für möglichst kontrollierten Datenverkehr sorgt. Der Typ Firewall, den wir hier vorstellen, müsste sich eigentlich genauer Paketfilter nennen. Ein Paketfilter regelt den Durchlass anhand von Kriterien wie Protokoll, Port und IP-Adresse. Auf diese Weise können Sie also Pakete abfangen, die aufgrund ihrer Adressierung nicht in Ihr Netz durchdringen sollen. Wenn Sie beispielsweise Zugriffe auf Ihren Webserver zulassen wollen, müssen Sie den dazugehörigen Port freischalten. Der Inhalt dieser Pakete, falls sie legitim adressiert sind (also beispielsweise mit Ihrem Webserver als Ziel), wird nicht untersucht. Das Paket könnte insofern einen Angriff auf ein CGI-Programm auf Ihrem Webserver enthalten und wird vom Paketfilter durchgelassen.
Ein wirksameres — wenn auch komplexeres — Konstrukt ist die
Kombination von mehreren Bauarten, beispielsweise ein Paketfilter mit
zusätzlichem Application Gateway/Proxy. Der Paketfilter wehrt Pakete ab, die
zum Beispiel an nicht freigeschaltete Ports gerichtet sind. Nur Pakete für
ein Application Gateway sollen durchgelassen werden. Dieser Proxy tut nun
so, als wäre es der eigentliche Kommunikationspartner des Servers, der mit
uns eine Verbindung herstellt. In diesem Sinne kann ein solches Proxy als
eine Masquerading-Maschine auf der Ebene des Protokolls der jeweiligen
Anwendung angesehen werden. Ein Beispiel für solch ein Proxy ist Squid, ein
HTTP Proxy Server, für den Sie Ihren Browser so konfigurieren müssen, dass
Anfragen für HTML-Seiten zuerst an den Speicher des Proxy gehen und nur,
wenn dort die Seite nicht zu finden ist, vom Proxy in das Internet geschickt
werden. Die SUSE proxy-suite (das Paket proxy-suite) enthält übrigens einen
Proxy-Server für das FTP-Protokoll.
Im Folgenden wollen wir uns auf das Paketfilter-Paket bei SUSE LINUX
konzentrieren. Für mehr Informationen und weitere Links zum Thema Firewall
lesen Sie bitte das Firewall-HOWTO, enthalten im Paket howto. Es lässt sich mit dem Kommando
less /usr/share/doc/howto/en/txt/Firewall-HOWTO.gz
lesen, wenn das Paket howto
installiert ist.
SuSEfirewall2 ist ein Skript, das die in
/etc/sysconfig/SuSEfirewall2 konfigurierten Variablen
in ein iptables Regelwerk umsetzt.
SuSEfirewall2 kennt drei Sicherheitszonen (von
denen allerdings nur die ersten beiden in der nachfolgenden
Beispielkonfiguration berücksichtigt werden):
Der Rechner muss vor dem externen Netz geschützt werden, da dieses nicht unter der eigenen Kontrolle steht. Üblicherweise meint man hier das Internet, es können aber ebensogut andere ungeschützte Netze gemeint sein (z.B. WLAN).
Hier ist das eigene Netz, meist das LAN gemeint. Wenn innerhalb dieses Netzwerks IP-Adressen aus dem privaten Bereich verwendet werden (siehe Abschnitt 22.1.2, „Netzmasken und Routing“), muss Network Address Translation (NAT) durchgeführt werden, damit vom internen Netz auf das externe zugegriffen werden kann.
Die hier stehenden Rechner sind sowohl aus dem externen als auch dem internen Netz erreichbar, haben jedoch keinen Zugriff auf das Intranet. Diese Art der Konfiguration sichert das interne Netz zusätzlich vor dem externen Netz, da von DMZ-Rechnern keine Zugriffsmöglichkeit auf interne Rechner verfügbar ist.
Jeder Netzwerkverkehr, der nicht explizit mit dem Regelwerk erlaubt wurde, wird von iptables unterbunden. Deshalb muss jede einzelne Schnittstelle , über die Pakete ins Netz gelangen, einer der drei Zonen zugeordnet werden und für jede einzelne Zone definiert werden, welche Dienste oder Protokolle erlaubt werden sollen. Das Regelwerk greift allerdings nur für Pakete von entfernten Rechnern. Lokal erzeugte Pakete können immer gesendet werden.
Die Konfiguration lässt sich entweder mit YaST vornehmen (siehe
Abschnitt 34.1.4.1, „Konfiguration mit YaST“) oder
kann direkt in der Datei /etc/sysconfig/SuSEfirewall2
erfolgen, die ausführliche englische Kommentare enthält. Einige
Beispielszenarios finden Sie außerdem in
/usr/share/doc/packages/SuSEfirewall2/EXAMPLES.
Die grafisch geführte Konfiguration mit YaST erreichen Sie über das YaST-Kontrollzentrum. Wählen Sie aus der Kategorie den Unterpunkt . Die Konfiguration ist in sieben Teilabschnitte gegliedert, auf die Sie über die Baumstruktur auf der linken Bildschirmseite direkten Zugriff haben (siehe folgende Liste):
![]() | Automatische Konfiguration der Firewall |
|---|---|
YaST startet nach der Installation automatisch auf allen von Ihnen konfigurierten Schnittstellen eine Firewall. Die automatisch generierte Konfiguration passt YaST über die oder Optionen in den Modulen zur Serverkonfiguration an, sobald ein Dienst auf Ihrem System konfiguriert und aktiviert wird. Wenn in den Servermoduldialogen zusätzlich ein Button vorhanden ist, können Sie weitergehende Dienste und Ports zusätzlich freischalten. Das YaST-Modul zur Firewallkonfiguration dient der Aktivierung oder Deaktivierung der Firewall oder der eigenständigen Umkonfiguration. | |
Das Startverhalten wird in diesem Dialog eingestellt. Bei einer Standardinstallation läuft SuSEfirewall2 bereits in einem frisch installierten System. Die Firewall kann in diesem Dialog gestartet und gestoppt werden. Die aktuellen Einstellungen der Firewall können mit dem Button getestet werden.
Alle bekannten Netzwerkschnittstellen werden hier aufgeführt. Um eine Schnittstelle von einer Zone zu entfernen, wählen Sie die Schnittstelle, klicken auf und wählen . Um einer Zone eine Schnittstelle hinzuzufügen, wählen Sie die Schnittstelle, klicken auf und wählen eine der verfügbaren Zonen. Unter können Sie eine spezielle Schnittstelle mit Ihren eigenen Einstellungen definieren.
Diese Option wird benötigt, um von Ihrem System aus einer geschützten Zone Dienste anzubieten. Standardmäßig ist nur die externe Zone geschützt. In diesem Fall müssen Sie die Dienste explizit erlauben, die externe Rechner sehen sollen. Aktivieren Sie den entsprechenden Dienst, nachdem Sie die jeweilige Zone unter ausgewählt haben.
Masquerading ermöglicht Ihnen, Ihr internes Netzwerk vor externen Netzwerken wie dem Internet zu verbergen. Es ermöglicht außerdem dem internen Netzwerk, in transparenter Weise auf das externe Netzwerk zuzugreifen. Zugriffe vom externen Netzwerk an das interne Netzwerk werden geblockt. Zugriffe vom internen Netzwerk erscheinen von außen so, als kämen Sie vom Masquerading-Server.
Falls besondere Dienste eines internen Rechners für das externe Netzwerk verfügbar sein sollen, können Sie für den jeweiligen Dienst spezielle Umleitungsregeln setzen.
In diesem Dialog werden die UDP-Ports konfiguriert,
die Broadcasts erlauben. Die erforderlichen Portnummern
oder Dienste müssen der entsprechenden Zone hinzugefügt
werden (durch Leerzeichen getrennt). Siehe auch
die Datei /etc/services.
Die Protokollierung von nicht erlaubten Broadcasts kann hier aktiviert werden. Dies kann problematisch sein, da Windows-Rechner Broadcasts benutzen, um einander kennenzulernen, weshalb sie sehr viele nicht erlaubte Pakete generieren.
In diesem Dialog kann konfiguriert werden, ob der IPsec-Dienst aus dem externen Netzwerk erlaubt ist. Die Konfiguration der vertrauenswürdigen Pakete wird unter vorgenommen.
Es gibt für die Protokollierung zwei Regeln: Erlaubte und nicht erlaubte Pakete. Erlaubte Pakete werden angenommen (ACCEPTED), nicht erlaubte werden verworfen (DROPPED) oder abgelehnt (REJECTED). Wählen Sie für beide Regeln , oder
Nach Fertigstellung der Firewall-Konfiguration verlassen Sie diesen Dialog mit . Abschließend wird eine zonenbezogene Zusammenfassung Ihrer Firewall-Konfiguration angezeigt, in der Sie nochmals alle Einstellungen überprüfen sollten. Sämtliche erlaubte Dienste, Ports und Protokolle werden in dieser Zusammenfassung aufgeführt. Klicken Sie auf , um zur Konfiguration zurückzugelangen, oder auf , um Ihre Konfiguration zu speichern.
Wir werden Ihnen nun Schritt für Schritt eine erfolgreiche Konfiguration vorführen. Es ist bei jedem Punkt angeführt, ob er für Masquerading oder Firewall gilt. In der Konfigurationsdatei ist auch von einer DMZ („Demilitarisierte Zone“) die Rede, auf die an dieser Stelle aber nicht näher eingegangen wird, da sie ausschließlich in komplexen Netzwerkszenarien größerer Institutionen (Firmen etc.) zum Einsatz kommt. Die Konfiguration einer DMZ ist aufwändig und erfordert einen hohen Sachverstand.
Aktivieren Sie zunächst mit dem YaST-Modul System Services (Runlevel) die SuSEfirewall2
für Ihren Runlevel (wahrscheinlich 3 oder 5). Dadurch werden symbolische
Links für die SuSEfirewall2_* Skripte in den Verzeichnissen
/etc/init.d/rc?.d/ angelegt.
FW_DEV_EXT (Firewall, Masquerading)
Die Schnittstelle, die ins Internet führt. Für die Modemverbindung
verwenden Sie ppp0, für ISDN
ippp0, für DSL dsl0
und mit auto verwenden Sie
das Interface der Defaultroute.
FW_DEV_INT (Firewall, Masquerading)
Geben Sie hier die Schnittstelle an, die ins innere,
„private“ Netz führt (beispielsweise
eth0). Falls kein inneres Netz vorhanden ist, einfach
leer lassen.
FW_ROUTE (Firewall, Masquerading)
Wenn Sie Masquerading brauchen, müssen Sie hier auf jeden Fall
yes eintragen. Ihre internen Rechner sind nicht von
außen sichtbar, da diese private Netzwerkadressen (zum Beispiel
192.168.x.x) haben, die im Internet gar nicht
geroutet werden.
Bei einer Firewall ohne Masquerading wählen Sie hier nur dann
yes, wenn Sie Zugang zum internen Netz erlauben
wollen. Dazu müssen die internen Rechner offiziell zugewiesene
IP-Adressen haben. Im Normalfall sollten Sie allerdings den Zugang von
außen auf die internen Rechner nicht erlauben!
FW_MASQUERADE (Masquerading)
Wenn Sie Masquerading brauchen, müssen Sie hier yes
eintragen.
Dies ermöglicht den internen Rechnern
eine virtuelle direkte Verbindung zum Internet.
Beachten Sie, dass es sicherer ist, wenn die Rechner des
internen Netzes über Proxy-Server auf das Internet zugreifen.
Masquerading wird für die vom Proxy-Server erbrachten Dienste
nicht benötigt.
FW_MASQ_NETS (Masquerading)Tragen Sie hier die Rechner oder Netzwerke ein, für die Masquerading vorgenommen werden soll. Trennen Sie die einzelnen Einträge durch Leerzeichen. Zum Beispiel:
FW_MASQ_NETS="192.168.0.0/24 192.168.10.1"
FW_PROTECT_FROM_INT (Firewall)
Tragen Sie hier yes ein, wenn Sie den
Firewall-Rechner auch durch Angriffe vom inneren Netz schützen wollen.
Dann müssen Sie die Services, die für das innere Netz verfügbar sind,
explizit freigeben. Siehe auch
FW_SERVICES_INT_TCP und
FW_SERVICES_INT_UDP.
FW_SERVICES_EXT_TCP (Firewall)Tragen Sie hier die TCP-Ports ein, auf die zugegriffen werden soll. Für einen einfachen Arbeitsplatz zu Hause, der keine Dienste anbieten soll, tragen Sie meist nichts ein.
FW_SERVICES_EXT_UDP (Firewall)Wenn Sie nicht einen UDP-Dienst betreiben, auf den von außen zugegriffen werden soll, lassen Sie dieses Feld leer. UDP-Dienste umfassen DNS-Server, IPSec, TFTP, DHCP usw. Wenn Sie diese Dienste anbieten möchten, fügen Sie hier die benötigten UDP-Ports ein.
FW_SERVICES_INT_TCP (Firewall)
Hier werden die für das innere Netz zur Verfügung stehenden Dienste
festgelegt. Die Angaben sind analog zu denen unter
FW_SERVICES_EXT_TCP, beziehen sich hier aber
auf das interne Netz. Diese Variable muss lediglich
dann konfiguriert werden, wenn
FW_PROTECT_FROM_INT aktiviert wurde.
FW_SERVICES_INT_UDP (Firewall)Siehe FW_SERVICES_INT_TCP.
Damit ist die Konfiguration abgeschlossen. Vergessen Sie
nicht, die Firewall zu testen. Rufen Sie als Benutzer root SuSEfirewall2 start
auf, um die Regeln zu erzeugen. Mit beispielsweise einem
telnet von außen, sehen Sie, ob diese Verbindung auch
tatsächlich abgelehnt wird; Sie sollten dann in
/var/log/messages in etwa folgende Einträge sehen:
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 Ihrer Firewall sind
nmap oder nessus. Nach der Installation der jeweiligen
Pakete befindet sich die Dokumentation von nmap
unter /usr/share/doc/packages/nmap
und die Dokumentation von nessus in
/usr/share/doc/packages/nessus-core.
Aktuelle und für das Paket SuSEfirewall2 relevante
Dokumentation finden Sie unter
/usr/share/doc/packages/SuSEfirewall2.
Die Folgende Bücher, Artikel und Webseiten helfen Ihnen beim Verständnis von
iptables und netfilter:
Barth, Wolfgang: Das Firewall-Buch 2., überarbeitete Auflage SUSEPRESS, 2003 - (ISBN 3-899900-44-8)
Die Homepage des netfilter/iptables Projekts. Hier steht eine Fülle von Dokumentationen in vielen Sprachen bereit.