Home / LinuxUser / 2002 / 05 / Paketfilter-Firewall

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Private Feuerwände

Paketfilter-Firewall

Abschluss

Die vorletzten Regeln, die wir in unsere Firewall schreiben, sorgen für eine Protokollierung auffälliger Ereignisse. Von manchen Paketen möchten wir gar nichts wissen: Verbindungsversuche zu NetBIOS-Ports für die Windows-Netzwerkumgebung schicken wir kommentarlos ins Nirwana (-j DROP). Alle anderen unerlaubten Pakete zeichnen wir erst einmal auf (-j LOG).

iptables -A INPUT -p udp --dport netbios-ns  -j DROP
iptables -A INPUT -p udp --dport netbios-dgm -j DROP
iptables -A INPUT -p tcp --dport netbios-ssn -j DROP
iptables -A INPUT  -j LOG
iptables -A OUTPUT -j LOG

Zum Schluss verwerfen wir alle Pakete, die noch nicht als erlaubt erkannt und so explizit angenommen wurden. Dabei stehen in INPUT- und OUTPUT-Chain unterschiedliche Regeln: Unerwünschte ankommende Pakete ignorieren wir stillschweigend: Wenn uns jemand angreift, wollen wir ihm möglichst wenig Informationen über unser System zukommen lassen. Einzige Ausnahme sind Pakete für den Auth-Port: Dieser dient z. B. FTP-Servern zu einem legitimen Identifikationsversuch. Wir erlauben ihn zwar nicht, wollen aber auch nicht lange warten, bis der fremde Rechner entnervt aufgibt:

iptables -A INPUT -p tcp --dport auth -j REJECT --reject-with tcp-reset
iptables -A INPUT -j DROP

Bei abgehenden Paketen liegt eine andere Situation vor: Egal, ob es sich um einen Fehler in der Firewall oder in der Anwendersoftware handelt, wir sind es selbst, die vor dem Computer sitzen und das gesperrte Paket verursacht haben. Über diese Situation soll der Computer uns sofort informieren. Deshalb werden abgehende TCP- und UDP-Pakete mit einer Fehlermeldung an das Anwenderprogramm zurückgewiesen:

iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p udp -j REJECT
iptables -A OUTPUT -j DROP

Zusammensetzen

Und wie kommen Sie jetzt zu Ihrer fertigen Firewall? Suchen Sie sich alle Regeln heraus, die für Ihren Computer passen, und schreiben Sie sie in eine Datei, beispielsweise /etc/rc.d/rc.firewall.

Nun sorgen Sie dafür, dass Ihr Computer dieses Skript automatisch aufruft. Wenn Sie exakt arbeiten möchten, erstellen Sie dafür ein eigenes Init-Skript in /etc/rc.d/rc*.d, das noch vor der Initialisierung Ihrer Netzwerkschnittstellen abgearbeitet wird, etwa /etc/rc.d/rc3.d/S01firewall. Wenn Sie es nicht ganz so genau nehmen oder ohnehin keine ständige Internet-Anbindung besitzen, hängen Sie eine Zeile . /etc/rc.d/rc.firewall an die Datei /etc/rc.d/rc.local o. ä. an.

Deaktivieren Sie die Firewall-Automatik Ihrer Distribution, wenn Sie eine eigene Firewall installieren! Bei Red Hat und verwandten Distributionen löschen Sie die beiden Konfigurationsdateien ipchains und iptables im Verzeichnis /etc/sysconfig.

Theoretisch können Sie beim Testen einzelne Regeln per Hand setzen und auch wieder löschen. Da es vor allem am Anfang schwer ist, dabei den Überblick zu behalten, korrigieren Sie lieber Ihr Skript und rufen es neu auf, wenn Sie eine Änderung vornehmen.

Bei einer etwaigen Fehlersuche hilft Ihnen am besten das syslog; Meldungen der Firewall über abgewiesene Datenpakete landen bei den meisten Distributionen in der Datei /var/log/messages.

Weitere Einblicke in die Firewall-Konfiguration bietet z. B. [2]. Dort erfahren Sie auch mehr über benutzerdefinierte Ketten, mit denen Sie Ihre Firewall optimieren und beschleunigen können.

Abbildung 3

Abbildung 3: Die Firewall-Chains für einen Router

Kasten 3: Firewalls und lokale Netze

Viele Linux-Anwender betreiben zu Hause ein eigenes lokales Netzwerk. Oft dient dabei ein Linux-Rechner als zentraler Router für den Internet-Zugang, den mehrere Computer mit verschiedenen Betriebssystemen benutzen.

Die Firewall muss in dieser Situation etwas anders konfiguriert werden. Für Pakete, die aus dem LAN ins Internet (und umgekehrt) weitergeleitet werden, existiert eine eigene Firewall-Chain namens FORWARD. Abbildung 3 zeigt die neue Architektur.

Wenn ein Paket – egal ob aus dem Internet oder aus dem LAN – direkt an den Computer mit der Firewall geschickt wird, durchläuft es die INPUT-Chain. Wird eines auf dem Firewall-Rechner generiert, muss es die OUTPUT-Chain passieren. Für Pakete, die lediglich zwischen LAN und Internet weitergeleitet werden, ist hingegen ausschließlich die FORWARD-Chain zuständig. Dies ist ein wichtiger Unterschied zu den Firewall-Implementationen älterer Kernel-Serien!

Die Minimalregeln für weitergeleitete Pakete sehen etwa so aus:

# Abgehende Pakete
iptables -A FORWARD -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Ankommende Pakete
iptables -A FORWARD -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Die FORWARD-Chain kann im Prinzip ganz ähnliche (oder manchmal sogar identische) Regeln enthalten wie INPUT- und OUTPUT-Chains. Tatsächlich lege ich Ihnen auch dringend ans Herz, hier einen entsprechenden Aufwand zu treiben: Nur so können Sie das Maximum an Sicherheit für Ihr LAN herausholen. Besonders Windows-Maschinen werden es Ihnen zu danken wissen. Ein Minimalsystem wie die zwei hier gezeigten Regeln ist heute nicht mehr ausreichend!

Sofern sich Ihr lokales Netz eine gemeinsame IP-Adresse teilen muss, erfüllt die Firewall noch eine weitere Funktion. Sie befördert nicht nur Pakete zwischen LAN und Internet, sondern korrigiert auch die IP-Adressen auf unserer Seite. Diese Funktionalität heißt NAT oder "Network Address Translation" (Netzadressübersetzung).

Dank NAT sieht es für die Computer im LAN so aus, als hätten sie eine direkte Internet-Anbindung ohne Komplikationen. Für Rechner im Internet hingegen wirkt das gesamte LAN wie ein einziger, besonders aktiver Computer mit einer einzigen IP-Adresse.

Statt der lokalen Netzwerkadresse eines angeschlossenen Computers wird in abgehenden Paketen die offiziell zugewiesene IP-Adresse des Routers eingetragen, die zum Beispiel über PPP ausgehandelt wurde. Gleichzeitig wechselt die Firewall die Port-Nummer aus und ersetzt sie durch einen freien Port auf dem Firewall-Computer.

Bei ankommenden Paketen geschieht das Umgekehrte: Diese Pakete sind an die IP-Adresse der Firewall adressiert und tragen auch eine entsprechende Port-Nummer im Header. Anhand dieser erkennt die NAT-Implementation, welchem Computer im LAN die entsprechende Verbindung gehört. Sie trägt wieder seine IP-Adresse und die ursprüngliche Port-Nummer als Empfänger ein und schickt das Paket weiter.

Das Schönste an NAT ist die Einfachheit, mit der man es einschaltet. Dafür reicht nämlich – zusätzlich zu den normalen Weiterleitungsregeln - eine einzige Zeile im Firewall-Skript:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Statt ppp0 tragen Sie natürlich das Netzwerk-Interface ein, über das Sie Ihre Internet-Verbindung herstellen: ppp0 für Modemverbindungen, ippp0 für ISDN oder eth0 beziehungsweise ein anderes Ethernet-Interface für DSL.

Glossar

IP

Das paketbasierte "Internet Protocol" bildet die Grundlage jeder Kommunikation über das Internet. Jedes IP-Paket enthält u. a. die numerischen Adressen von Absender und Empfänger. Verschiedenste Protokolle setzen auf IP auf und bieten zusätzliche Features.

Port-Nummern

Sie kennzeichnet Programme eindeutig, sowohl Server- als auch Client-Software. Wenn ein Client eine Verbindung aufbaut, weist ihm der Kernel automatisch eine Port-Nummer zu. Dabei gilt unter Unix die Grundregel, dass alle normalen Programme Ports im Bereich ab 1024 erhalten. Die darunterliegenden bleiben für Server reserviert, die root startet. Jedes TCP- und UDP-Paket enthält also zwei Port-Nummern, einen für den Absender und einen für den Empfänger.

Policies

Jede Firewall-Regel kann direkt angeben, dass mit einem Paket etwas geschehen soll. Wird für ein Paket keine passende Regel gefunden, entscheidet die Policy über seinen Verbleib.

Routing-Tabellen

Sie legt fest, über welche Netzwerkverbindungen Ihr Computer Pakete an andere Systeme schickt. Ein Einzelplatzsystem kennt meist nur zwei Verbindungen: lo führt zum eigenen Rechner, ppp0, ippp0 oder eth0 ins Internet. Viele Router oder größere Server besitzen mehrere Netzwerk-Interfaces und damit auch kompliziertere Routing-Tabellen.

Flags

Einzelne Bits im Kopf eines Pakets, die zusätzliche Informationen darüber enthalten, was das Paket erreichen möchte bzw. wofür es gut ist. Flags sagen zum Beispiel "hier beginnt eine neue Verbindung" oder "dieses Paket darf nicht in kleinere Stücke zerlegt werden".

Infos

[1] Robert L. Ziegler: "Linux Firewalls", Markt und Technik München, 2002 (2. Auflage)

[2] "Linux 2.4 Packet Filtering HOWTO" und "Linux 2.4 NAT HOWTO": http://netfilter.samba.org/unreliable-guides/

[3] Das Firewall-Skript aus diesem Artikel zum Download: http://www.seligma.com/linux-user/firewalls/

Der Autor

Marc André Selig hat Humanmedizin studiert. Er arbeitet als wissenschaftlicher Angestellter an der Universität Trier und ist parallel als selbstständiger EDV-Berater und Schriftsteller tätig. Momentan beschäftigt er sich vor allem mit Datenbankprogrammierung für Web-Services auf diversen Unix-Plattformen. Gleichzeitig ist er auf der Suche nach einer AiP-Stelle, die sich für Unix-Fans eignet …

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 136 Punkte (11 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...