Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Testen einer Firewall-Konfiguration

Nachdem Sie eine angemessene Firewall-Konfiguration entworfen haben, ist es wichtig zu prüfen, ob sie sich tatsächlich so verhält, wie Sie es beabsichtigt haben. Eine Möglichkeit dafür ist, mit einem Host außerhalb Ihres Netzwerks zu versuchen, Ihre Firewall zu durchbrechen. Das kann eine ziemlich mühselige Angelegenheit werden und erfordert zudem viel Zeit. Außerdem können Sie nur die IP-Adressen testen, die Ihnen zur Verfügung stehen.

Eine schnellere und einfachere Methode bietet die Linux-Firewall-Software selbst. Sie gestattet Ihnen, Tests von Hand zu erzeugen und sie durch die Firewall-Konfiguration laufen zu lassen, als ob Sie mit echten Datagrammen arbeiten würden. Alle Firewall-Software-Varianten, sei es ipfwadm, ipchains oder iptables, bieten Unterstützung für diese Art von Tests. Die Umsetzung der Tests baut auf dem jeweiligen check-Befehl auf.

Das grundsätzliche Testverfahren funktioniert so:

  1. Gestalten und konfigurieren Sie Ihre Firewall mit ipfwadm, ipchains oder iptables.

  2. Entwerfen Sie eine Reihe von Tests, die feststellen, ob Ihre Firewall nach Ihren Vorstellungen funktioniert. Für diese Tests können Sie beliebige Quell- und Zieladressen verwenden; wählen Sie also einige Adreßkombinationen, die akzeptiert werden sollten, und andere, die abgewiesen werden sollten. Wollen Sie bestimmte Adreßbereiche gewähren oder aussperren, ist es eine gute Idee, gerade solche Adressen zu testen, die nah an der Grenze liegen — eine Adresse knapp innerhalb des Bereichs und eine Adresse knapp außerhalb. Das hilft Ihnen sicherzustellen, daß Sie die Grenzen korrekt konfiguriert haben, da es durchaus passieren kann, daß Sie in Ihrer Konfiguration manchmal die Netzmasken falsch angeben. Führen Sie auch Filterungen nach Protokollen und Portnummern durch, sollten Sie in Ihren Tests auch alle wichtigen Kombinationsmöglichkeiten dieser Parameter durchspielen. Wollen Sie beispielsweise unter gewissen Umständen nur TCP-Pakete durchgehen lassen, testen Sie, ob die UDP-Datagramme abgewiesen werden.

  3. Formulieren Sie Regeln für ipfwadm, ipchains oder iptables, um die Tests zu implementieren. Es lohnt sich vielleicht, alle diese Regeln in ein Skript zu schreiben, so daß Sie die Regeln leicht wiederholt testen können, nachdem Sie die notwendigen Korrekturen oder Änderungen durchgeführt haben. Die Tests benutzen fast dieselbe Syntax wie die Regelspezifikationen, nur die Argumente haben eine etwas andere Bedeutung. Zum Beispiel gibt die Quelladresse in einer Regelspezifikation die Quelladresse an, die die Datagramme haben müssen, um von der Regel verarbeitet zu werden. Bei der Quelladresse in der Testsyntax hingegen handelt es sich um die Quelladresse, die für das zu testende Datagramm erzeugt wird. Bei ipfwadm müssen Sie die Option –c angeben, damit dieser Befehl zu einem Test wird. Bei ipchains und iptables dagegen müssen Sie dafür die Option –C nehmen. Wie auch immer, in allen Fällen müssen Sie immer die Quelladresse, die Zieladresse, das Protokoll sowie die Schnittstelle angeben, die für den Test benutzt werden sollen. Weitere Argumente, wie Portnummern und TOS-Bit-Einstellungen, sind optional.

  4. Führen Sie jeden Testbefehl aus, und notieren Sie sich die Ausgaben. Die Ausgabe jedes Tests besteht aus einem einzigen Wort, nämlich der endgültigen Zieladresse der für das Datagramm auszuführenden Aktion, nachdem es die gesamte Firewall-Konfiguration durchlaufen hat. Bei ipchains und iptables werden außer den fest installierten Ketten auch die benutzerdefinierten Ketten getestet.

  5. Vergleichen Sie die Ausgaben jedes Tests mit den gewünschten Resultaten. Gibt es da irgendwelche Diskrepanzen, müssen Sie Ihren Regelsatz nochmals analysieren, um festzustellen, wo Sie einen Fehler gemacht haben. Wenn Sie Ihre Testanweisungen in ein Skript geschrieben haben, können Sie die ganzen Testläufe nach den Korrekturen sehr leicht wiederholen. Es ist eine gute Idee, immer erst alle vorhandenen Regelsätze zu verwerfen und die benötigten Regelsätze immer wieder neu zu bilden, statt die Änderungen dynamisch durchzuführen. Das hilft Ihnen sicherzustellen, daß die aktive Konfiguration, die Sie gerade testen, tatsächlich die Befehlsmenge in Ihrem Konfigurationsskript widerspiegelt.

Werfen wir einen schnellen Blick darauf, wie ein einfaches Testskript für unser simples Beispiel mit ipchains aussehen könnte. Sie erinnern sich sicher daran, daß unser lokales Beispielnetzwerk die Adresse 172.16.1.0 mit der Netzmaske 255.255.255.0 hatte und wir nur TCP-Verbindungen zu netzwerkfremden Webservern gestatten wollten. Wir beginnen unseren Test mit einer Übertragung, von der wir wissen, daß sie funktionieren sollte, und zwar mit einer Verbindung von einem lokalen Host zu einem Webserver außerhalb:

# ipchains -C forward -p tcp -s 172.16.1.0 1025 -d 44.136.8.2 80 -i eth0 
accepted

Beachten Sie die angegebenen Argumente und die Art und Weise, wie sie benutzt werden, um ein Datagramm zu beschreiben. Die Ausgabe dieses Befehls zeigt an, daß das Datagramm zur Weitergabe akzeptiert wurde, was wir auch erwartet hatten.

Versuchen Sie nun einen anderen Host, diesmal mit einer Hostadresse, die nicht zu unserem Netzwerk gehört. Dies sollte abgewiesen werden:

# ipchains -C forward -p tcp -s 172.16.2.0 1025 -d 44.136.8.2 80 -i eth0 
denied

Versuchen Sie einige weitere Tests, diesmal mit denselben Details wie beim ersten Test, aber mit anderen Protokollen. Sie sollten ebenfalls alle abgewiesen werden:

# ipchains -C forward -p udp -s 172.16.1.0 1025 -d 44.136.8.2 80 -i eth0 
denied 
# ipchains -C forward -p icmp -s 172.16.1.0 1025 -d 44.136.8.2 80 -i eth0 
denied

Nehmen Sie einen anderen Ziel-Port, der erneut abgewiesen werden sollte:

# ipchains -C forward -p tcp -s 172.16.1.0 1025 -d 44.136.8.2 23 -i eth0 
denied

Sie haben nun vielleicht einen langen Weg mit umfassenden Tests vor sich, bis Sie sich endlich sicher fühlen. Obwohl das Ganze manchmal genauso schwierig sein kann wie das Design der Firewall-Konfiguration selbst, ist es nichtsdestotrotz der beste Weg, um festzustellen, ob Ihr Design Ihnen das Maß an Sicherheit bietet, das Sie sich versprochen haben.





vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag