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

Designfragen

Beim Design sicherheitsrelevanter Algorithmen – also auch einer Firewall – gibt es immer zwei diametral entgegengesetzte Ansätze: Beim ersten versucht man, unerwünschte Ereignisse zu erkennen und auszuschalten, und erlaubt alles andere.

Diese Methode ist nicht nur ziemlich weit verbreitet, sondern auch außerordentlich gefährlich: Vergisst man ein unerwünschtes Ereignis, ist es durch die Voreinstellung erlaubt. Das gilt auch für Angriffe, die man zum Zeitpunkt des Firewall-Designs noch gar nicht kennt, und das sind schließlich die eigentlich gefürchteten! (Bekannte Sicherheitslücken sollte man so möglich ohnehin korrigieren.)

Jede sinnvolle und sichere Sicherheitslösung folgt daher dem zweiten Weg: Ein unbekanntes Ereignis ist immer verboten; ein unbekanntes Paket wird nicht angenommen. Alles, was erlaubt ist, muss explizit definiert werden.

Das bringt einen riesigen Nachteil mit sich: Solange eine neu entwickelte Firewall unvollständig oder fehlerhaft ist, funktioniert der Netzwerkzugriff nicht vernünftig. Jedes neue Anwendungsprogramm, das ein neues Netzwerkprotokoll verwendet, muss in der Firewall erst einmal aktiviert werden. Für diese Mühen erhält man jedoch ein recht zuverlässig abgeschirmtes System.

Bei Linux-Firewalls werden diesen beiden Prinzipien durch Policies umgesetzt. Die im Folgenden vorzustellende Lösung verwendet eine DROP-Policy und verwirft somit alle unbekannten Pakete. Firewall-Regeln definieren wir für alle von uns verwendeten Protokolle so, dass die entsprechenden Pakete durch eine ACCEPT-Regel angenommen werden.

Kernel-Tuning

Eine ganze Reihe von Kernel-Parametern beeinflusst das Verhalten Ihres Linux-Systems im Umgang mit IP-Paketen. Streng genommen gehört das zwar nicht zur Firewall-Funktionalität; trotzdem passt es ganz gut hierher.

Diese Variablen sind über das so genannte sysctl-Interface zugänglich: Besondere Dateien in /proc/sys/net/ipv4 zeigen die aktuelle Konfiguration beziehungsweise erlauben Modifikationen. Zum Auslesen der momentan gültigen Einstellungen lassen Sie sich die Dateien mit cat anzeigen. Neue Werte speichern Sie einfach in der entsprechenden Datei ab. Im Allgemeinen aktivieren Sie ein Feature, indem Sie eine 1 in die entsprechende Datei schreiben; 0 schaltet es wieder aus.

Für uns sind folgende Einstellungen besonders wichtig:

conf/*/accept_source_route regelt den Umgang mit Paketen, deren Routing-Weg vom Absender festgelegt wurde. Diese IP-Option ist im Allgemeinen unerwünscht. (Der * steht für die einzelnen Verzeichnisse unterhalb von /proc/sys/net/ipv4/conf. Sie steuern die verschiedenen Netzwerk-Interfaces Ihres Computers und setzen Voreinstellungen. Soll eine Änderung für alle Interfaces gelten, schreiben Sie sie in alle gleichnamigen Dateien.)

  • conf/*/accept_redirects legt fest, ob Linux fremden Systemen die Änderung der eigenen Routing-Tabellen gestattet.
  • icmp_echo_ignore_broadcasts unterbindet die Reaktion auf pings, die an alle Rechner in einem Netzwerk verschickt werden. Einen Schritt weiter geht icmp_echo_ignore_all, das alle ping-Pakete ignoriert. Natürlich ließe sich ein ähnliches Verhalten erreichen, indem man entsprechende Firewall-Regeln definiert.
  • tcp_syncookies schaltet einen Schutzmechanismus ein, der einen Angriff durch unzählige gefälschte Verbindungsanfragen erschwert. * ip_forward entscheidet, ob der Kernel Pakete an andere Rechner weiterleitet oder nur als Endknoten agiert. Diese Option ist für den Aufbau eines privaten LANs mit Linux als Router wichtig.
  • icmp_ratelimit, tcp_fin_timeout, tcp_max_orphans und tcp_max_syn_backlog sind Beispiele für zusätzliche Schutzmechanismen, die in erster Linie Denial-of-Service-Angriffe erschweren, also einem Angreifer die Erschöpfung unserer Systemressourcen verwehren. Das Tuning dieser Parameter kann auch für große Serversysteme hilfreich sein.

In der Firewall könnte man die Kernel-Parameter beispielsweise mit folgendem Fragment setzen:

for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,send_redirects}; do
  echo 0 >$i
done
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 >/proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/tcp_syncookies

Die Netfilter-Firewall in Linux 2.4

Die folgenden Erklärungen beziehen sich ausdrücklich auf den so genannten Netfilter aus Linux 2.4. Die Kernel der 2.0- und 2.2-Serien benutzen mit IPFW (ipfwadm beziehungsweise ipchains) einen teilweise deutlich anderen Firewall-Mechanismus.

Eine Netfilter-Firewall kann drei verschiedene Tabellen verwenden: filter enthält die eigentlichen Firewall-Regeln; nat kann Absender und Empfänger von Paketen ändern; mangle erlaubt zusätzliche Modifikationen für Spezialzwecke. Praktisch alle für uns interessanten Regeln gehören in die filter-Tabelle. Da diese voreingestellt ist, werden wir sie nicht jedesmal extra angeben.

Innerhalb jeder Tabelle gibt es verschiedene Chains oder Ketten. Je nachdem, woher ein Paket kommt und wohin es geht, wird nur eine davon darauf angewendet. Abbildung 2 zeigt die Chains der filter-Tabelle, die für ein Einzelplatzsystem relevant sind. (Kasten 3 behandelt die Besonderheiten eines lokalen Netzwerks.)

Abbildung 2

Abbildung 2: Die Firewall-Chains für ein Einzelplatzsystem

Dabei durchlaufen alle Netzwerkpakete, die für den Linux-Rechner bestimmt sind, die Regeln der INPUT-Chain. IP-Pakete, die ein Programm auf dem Linux-Rechner erzeugt hat, müssen die OUTPUT-Chain passieren.

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...