Firewall Handbuch für LINUX 2.0 und 2.2 - zurück
Firewall Handbuch für LINUX 2.0 und 2.2 - zurück
Firewall Handbuch für LINUX 2.0 und 2.2 - zurück
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
notification level 10:<br />
let pingcount:sourcehost := pingcount:sourcehost + 1 timeout 2;<br />
if pingcount:sourcehost > 100 then<br />
block all from sourcehost notification_level 0 timeout 600<br />
endif;<br />
Das Aufstellen von Filterregeln<br />
In diesem Abschnitt werden alle oben nur definierten Filterregeln genauer abgehandelt. Es<br />
wird ausdrücklich das Buch von Bellovin <strong>und</strong> Cheswick als "Bibel" <strong>für</strong> das Erstellen von<br />
Filterregeln empfohlen. Im Kapitel firewallregeln sind aber auch die meisten dieser<br />
Filterregeln noch einmal genauestens aufgelistet. Meiner Meinung nach ist die "Bibel" von<br />
Bellovin <strong>und</strong> Cheswick inzwischen völlig veraltet, da sie sich ohnehin nur auf Probleme auf<br />
Circuit-Level bezieht.<br />
Die erste Frage die hier geklärt werden soll ist die Frage nach block oder reject von<br />
Paketen.<br />
In der Praxis ist diese Frage oft schwieriger zu beantworten, als es den Anschein hat.<br />
Wenn ein Paket geblockt wird, also der Sender keine Fehlermeldung erhält, dann könnte<br />
es sein, daß der Host meint, daß das Paket während der Übermittlung verloren gegangen<br />
ist. Ein normaler Algorithmus in einem Programm oder Protokoll besitzt einen Timeout<br />
Mechanismus, der nach einigen Versuchen abbricht. Wenn dieser eine ICMP Meldung<br />
<strong>zurück</strong>erhält, in welcher der Host darüber informiert wird, daß ein Paket nicht ausgeliefert<br />
werden kann (no route to host!), dann wird er sofort damit aufhören, welche zu senden.<br />
Man sollte aber niemals Pakete unbedacht mit einer Angabe einer Fehlermeldung (reject)<br />
ablehnen. Es könnte schließlich sein, daß die Anwendung, die die Pakete sendet, ICMP<br />
Fehlermeldungen nicht interpretieren kann. In diesem Fall würde eine Flut von<br />
Fehlermeldungen die freie Bandbreite der Leitungen unnötig belasten. Außerdem würde<br />
von der <strong>Firewall</strong> eine Unzahl von Fehlermeldungen gesendet werden. Die gängigen<br />
Implementierungen von TCP beachten sehr wohl ICMP Fehlermeldungen, aber in<br />
Abhängigkeit der Meldung (host unreachable), könnte der Sender meinen, daß der Host<br />
nur vorübergehend überlastet ist, <strong>und</strong> würde ständig die Pakete neu senden. Um also<br />
wirklich eine Verbindung <strong>zurück</strong>zuweisen, ist es notwendig, im TCP Paket noch ein Flag<br />
zu setzen, beispielsweise das RST Bit, welches das Ende einer TCP Verbindung<br />
einleitet.(reset)<br />
Viele Programme unterscheiden nicht zwischen den verschiedenen ICMP unreachable<br />
Mitteilungen. Somit kann es passieren, daß ein Host völlig unerreichbar wird, was sicher<br />
nicht so beabsichtigt ist. ICMP Fehlermeldungen sollten also niemals einfach mit einem<br />
reject beantwortet werden. Um dieses Problem zu umgehen, benutzt die SINUS <strong>Firewall</strong><br />
die Option reject with best, was bedeutet, daß die TCP Pakete mit einem RST Flag<br />
<strong>zurück</strong>gesandt werden. Eine ICMP port unreachable Nachricht wird <strong>für</strong> UDP <strong>und</strong> alle<br />
sonstigen Pakete erzeugt.<br />
Filtern von TCP Verbindungen<br />
Wenn man die Regeln <strong>für</strong> TCP Pakete aufsetzt, gibt die from Adresse den Initiator der<br />
Verbindung an. Antwortpakete aus dem Internet, z.B. sofern sie von innen initiiert worden<br />
sind, dürfen die <strong>Firewall</strong> passieren. Sie haben alle das ACK Bit gesetzt. Ist der notification<br />
level größer 0, dann wird nur zu Begin des Verbindungsaufbaues, also wenn das SYN Bit<br />
gesetzt ist, ein Logeintrag erzeugt. Alle weiteren Antwortpakete werden nicht mehr<br />
mitgeloggt.<br />
Das FTP Protokoll erfordert eine spezielle Behandlung, da hier ein zweiter Datenkanal<br />
geöffnet wird, welcher vom Server initiiert wird. Die erste Verbindung, die von innerhalb<br />
geöffnet wurde enthält den PORT Befehl, der vom Server zum Client intern übermittelt<br />
wird. Dieser Port ist derjenige, den der Server zwecks Datenaustasch mit dem Client zu<br />
benutzen gedenkt. Eine normaler, dynamischer Paketfilter würde diesen PORT Befehl<br />
Erstellt von Doc Gonzo - http://kickme.to/plugins