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: 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 …

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Iptables-GUIs im Vergleich
    Mit dem richtigen Werkzeug ist das Einrichten einer Desktop-Firewall keine Kunst. Wo die distributionseigenen Tools schwächeln, helfen clevere Alternativen weiter.
  • Grafische Firewall-Administration mit FWBuilder 2.0
    Linux bringt eine leistungsfähige Firewall mit. Sie manuell zu konfigurieren, bringt jedoch selbst Profis ins Schwitzen. Mit dem grafischen Firewall Builder dagegen behalten Sie sogar komplexe Regelwerke bequem im Griff.
  • Iptables-Grundlagen für Desktop-Nutzer
    Nicht jeder Linux-Desktop braucht eine Firewall. Mit grafischen Werkzeugen lässt sie sich aber bei Bedarf im Handumdrehen einrichten.
  • Sicher und zuverlässig
    Funktioniert Ihr Netzwerk wie gewünscht? Ist es sicher? Mit den passenden Werkzeugen überprüfen Sie jeden Aspekt des Netzes und sichern es mit einfachen Maßnahmen gegen den Großteil möglicher Angriffe ab.
  • Feuerfest
    Steht dem PC das Tor zum Internet offen, sollte man einen Wächter engagieren, der unerwünschte Gäste draußen hält. Iptables ist solch ein qualifizierter Türsteher.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...