Vorherige Seite | Nächste Seite | Inhalt |
Die Standard Firewall Software in NetBSD ist ipfilter
.
ipf.conf
Datei
(zurück)
Die Firewall Regeln die ipfilter
befolgt, stehen in der Datei
/etc/ipf.conf
für IPv4 und in /etc/ipf6.conf
for IPv6. In diesem Teil werden wir veranschaulichen, welche Regeln
ausgewählt wurden und warum. Es sei jedoch darauf hingewiesen, dass die
bei Weitem beste Dokumentation von ipfilter
in vielen Formaten
von http://www.obfuscation.org/ipf/
heruntergeladen werden kann.
Im Grunde genommen folgt ipfilter
zwei Grundprinzipien:
Eine rudimentäre Konfiguration sähe dann so aus:
pass in on any all block in on any all
Die erste Zeile besagt, dass jegliche Packets auf allen Interfaces hereingelassen werden. In der zweiten Zeile jedoch werden jegliche Packets auf allen Interfaces blockiert. Dies überschreibt also die erste Zeile, und Netzwerk-Traffic wird blockiert.
Die Syntax von ipfilter
ist im Allgemeinen recht einfach zu
verstehen: um Traffic hereinzulassen benutzt man 'pass in', um in
rauszulassen, 'pass out'. Das Interface kann entweder speziell
bestimmt werden, oder alle Interfaces werden beeinflusst:
pass out on all . . .
Sollten Sie das Interface 'ep0' bestimmen wollen, so sähe das dann so aus:
pass out on ep0 . . .
So weit, so gut. Nun wollen wir uns überlegen, wie die Konfiguration für den Firewall in unserem Fallbeispiel aussehen soll. Zuerst einmal wollen wir sicher gehen, dass SSH Traffic hereingelassen wird:
# SSH Verbindungen werden von überall erlaubt pass in quick on ep0 proto tcp from any to 216.68.250.60/32 port = 22 keep state
Hier haben Sie wahrscheinlich bereits einige neue Aspekte der Syntax bemerkt. Darum lassen Sie uns diese erstmal näher erläutern, bevor wir neue Regeln hinzufügen.
Durch das Keyword 'quick' werden vorherige Regeln überschrieben. Es gibt Ihnen eine einfache Möglichkeit, grosse und komplexe Firewalls mit über 100 Regeln zu konfigurieren. In unserem Beispiel nutzen wir es jedoch lediglich, um sicher zu gehen, dass diese Regel sofort befolgt wird.
Wie Sie sicher bereits erraten haben, bestimmt das 'proto' Keyword das Protokoll. In unserem Beispiel ist dies TCP.
Durch das 'port' Keyword kann entweder eine Port Nummer oder der Name eines Ports aus /etc/services
bestimmt werden. In diesen Beispielen verwenden wir beide Möglichkeiten.
Durch den Gebrauch der 'keep state' Keywords wird sichergestellt, dass alle Packets innerhalb des Firewalls von einer Seite zur anderen überprüft werden. Wenn Sie sich unser Beispiel genauer ansehen, werden Sie entdecken, dass alle Regeln das 'quick' verwenden, wodurch nicht unbedingt beide Seiten des Firewalls gecheckt werden.
Nun, da wir ein besseres Verständnis für die allgemeine Syntax haben, wollen wir uns einige Beispiele anschauen.
Von vorneherein kennen wir bereits einige Adressen Klassen, die eigentlich
nie durch unseren Firewall kommen sollten. Diese Adressen beinhalten die
für interne Netzwerke vorbestimmte Adressen so wie die
localhost
Adresse (nicht zu verwechseln mit der Adresse des
Interfaces):
Hier ist es wichtig darauf hinzuweisen, dass wir durchaus Traffic aus dem 127.16.0.0 Netzwerk (unser eigenes lokales Netzwerk, wie es im Fallbeispiel bestimmt wurde) auf einem Interface, fxp0, durchlassen wollen. Um dies zu erreichen, nutzen wir die folgenden Regeln:
block in quick on any from 192.168.0.0/16 to any block in quick on any from 10.0.0.0/8 to any block in quick on any from 127.0.0.0/8 to any block in quick on any from 0.0.0.0/8 to any block in quick on any from 169.254.0.0/16 to any block in quick on any from 192.0.2.0/24 to any block in quick on any from 204.152.64.0/23 to any block in quick on any from 224.0.0.0/3 to any
Sie werden bemerkt haben, dass hier '172.16.0.0/12' fehlt (obwohl es wenigstens auf dem ep0-Interface blockiert werden sollte); Sie werden im nächsten Teil sehen, warum.
Als nächstes blockieren wir jegliche Art von Traffic auf ep0, so dass wir 127.16.0.0 nicht explizit blockieren müssen.
# alles wird blockiert block in quick on ep0 all
Als nächstes wollen wir den Firewall so konfigurieren, dass er wie ein normaler Internet Client erscheint. Dies ist recht einfach:
# Benimm Dich als wärst Du ein normaler Internet Client pass out quick on ep0 proto tcp from 216.68.250.60/32 to any keep state pass out quick on ep0 proto udp from 216.68.250.60/32 to any keep state pass out quick on ep0 proto icmp from 216.68.250.60/32 to any keep state
Nun wollen wir all die Protokolle zu unserer Konfiguration fügen, die
wir durchlassen wollen. Achtung: wenn Sie irgendwelche dieser Services auf
dem Firewall laufen haben, so ist dieser Port dann auch auf dem
Firewall zugänglich. Es ist daher im Allgemeinen sicherer, auf
dem Firewall nichts anderes als ssh
, ipfilter
und
ipnat
laufen zu lassen. Eine Ausnahme wäre z. B., wenn
Sie nicht genug Hardware haben und DNS und/oder andere Server Prozesse laufen
lassen müssen.
# DNS pass in log proto tcp from any to any port = 53 keep state pass in log proto udp from any to any port = 53 keep state # WWW und FTP lassen wir rein pass in log proto tcp from any to any port = www keep state pass in proto tcp from any to any port = ftp keep state pass in proto tcp from any to any port = ftp-data keep state pass in proto tcp from any port = ftp-data to any port > 1023 keep state pass in log proto icmp all keep state
Dial-up Verbindungen sind normalerweise eine Herausforderung für
ipfilter
, da die meisten Dial-Up Interfaces bei jedem
Verbindungsaufbau eine andere IP Adresse zugewiesen bekommen.
In einer solchen oder ähnlichen Situation mit Dynamic Addresses müssen die Regeln etwas weniger sicher geschrieben werden. Mit anderen Worten, die Regeln können die IP Adresse nicht selber verwenden, doch reicht es normalerweise aus, das Interface zu bestimmen. Hier ein Beispiel mit IP Adresse:
# Benimm Dich als w&aouml;rst Du ein normaler Internet Client pass out quick on ep0 proto tcp from 216.68.250.60/32 to any keep state pass out quick on ep0 proto udp from 216.68.250.60/32 to any keep state pass out quick on ep0 proto icmp from 216.68.250.60/32 to any keep state
Für unsere Dial-Up Verbindung ändern wir diese Regeln nun wie folgt:
# Benimm Dich als w&aouml;rst Du ein normaler Internet Client pass out quick on ep0 proto tcp from any to any keep state pass out quick on ep0 proto udp from any to any keep state pass out quick on ep0 proto icmp from any to any keep state
Was bringt uns das? Nun, zuerst einmal sind immernoch alle blockierten Ports unerreichbar. Zweitens, sofern ein Service nicht eingeschaltet ist und kein hereinkommendes Traffic-Proxy genutzt wird, so wird dieser ganze Traffic einfach durchgelassen. Es besteht ausser SSH keinerlei Möglichkeit, eine Verbindung mit dem Firewall zu erstellen.
Bitte lesen Sie das IPF HOWTO für detaillierte Informationen und verschiedene Filter-Strategien.
Vorherige Seite | Nächste Seite | Inhalt |
|
|