Home

 

 

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.