firewall home |
Einleitung |
Architektur |
Syntax |
Stateful Inspection |
NAT/Masquerading |
logging |
BeispielScripts |
Quellen/Links |
|
Einleitung
Etwas im voraus :
Da es mir zur Zeit zur mühsam ist den ganzen TCP/IP-Kram zu erklären und es dazu auch haufenweise Infos im Netz gibt z.B. auch hier, setzte ich eine gewisse Grundkenntnis einfach mal voraus. Weiterhin kann ich natürlich über die Richtigkeit der folgenden Ausführungen keine Garantien übernehmen. Nun denn:
Erstmal etwas allgemeines über iptables/Netfilter.
Iptables/Netfilter (hauptsächlich geschrieben von Rusty Russel) ist
eine Firewallarchitektur, die in den Linux-Kernel seit der 2.4 Version (von
Entwicklerkerneln mal abgesehen) integriert ist. Wobei es sich bei Netfilter
um den Kernel-Teil und bei iptables um das userspace Programm handelt, welches
man sich von der Netfilter
Homepage besorgen kann. Im folgenden werde ich jetzt der Einfachheit halber
nur noch von iptables sprechen.
iptables ist der Nachfolger der früheren ipwfadm bzw. ipchains und erweitert
diese
um einige beachtenswerte Fähigkeiten. Als da in erster Linie das connection
tracking also stateful inspection wäre.
Diese zuerst von checkpoint (Firewall1) entwickelte Art der Paketfilterung
erlaubt anhand von Tabellen den Zustand einer Verbindung zu bestimmen.
Das heißt man kann bestimmen ob ein ankommendes Paket zu einer vorher
gestarteten Verbindung gehört oder nicht. Dies funktioniert nicht nur
für tcp sondern auch für udp und icmp Verbindungen. Als Beispiel
kann man ein icmp echo-reply nur dann erlauben, wenn man vorher auch ein echo-request
geschickt hat. Jetzt könnte man ja sagen, daß reply's ja sowieso
nur ankommen, wenn man vorher einen request geschickt hat. eheh. Es gibt Attacken
die mit ungewollten echoreply arbeiten.
Zusätzlich bietet iptables eine Verbesserung von NAT (Network Adress
Translation)
bzw. masquerading. Doch dazu dann später.
Sinn dieses kleinen Tutorials soll es sein ein (erstmal einfaches) Firewallscript
unter Linux mit Hilfe von iptables aufzubauen und die einzelnen Regeln näher
zu erklären.
Später sollen dann detaillierte Möglichkeiten auch im Zusammenhang
mit einem
Proxy (Squid) erläutert werden.
Ich benutze dazu RedHat 7.3. aber es sollte auch bei den anderen aktuellen
Linux-Distributionen funktionieren.
RedHat ISO's gibt es z.B. hier
für 7.3 und hier
für 8.0 zum Download.
Vorbereitung :
So, jetzt kurz zur Vorbereitung. Nach der Installation von RedHat ist eigentlich
schon alles wichtige vorhanden. Die iptables-Module und das Programm selbst.
Standardmäßig aktiviert RedHat mittels der Startscripte jedoch
das ältere ipchains (und komischerweise auch iptables, was dann natürlich
nicht funktioniert). Also zuerst ipchains aus den Startscripten rauswerfen.
Entweder von Hand /etc/init.d/rc3.d/S**ipchains löschen oder mit
setup am Prompt
die zu startenden Dienste einstellen (oder auch irgendwie anders).
Dann mit /etc/init.d/iptables start iptables starten. So, nun hat man
im Prinzip schon alles was man dazu braucht, außer natürlich die
Regeln. Hat man diese eingerichtet, so kann man mit /etc/init.d/iptables
save die Regeln permanent speichern. Diese werden dann in /etc/sysconfig/iptables
eingetragen.
Die nötigen Module die sich bei Redhat unter /lib/iptables/ befinden
werden vom Kernel je nach Bedarf automatisch geladen.