Home

 

 

Die Architektur von iptables

 

iptables
Bild 1 (geklaut vom linux magazin)

Bild 1 zeigt wie die Pakete den Filter durchlaufen. Kommt ein Paket an einer Schnittstelle an wird zuerst eine Routing-Entscheidung getroffen. Ist das Päcken für den lokalen Rechner bestimmt wird es an die INPUT-Regel weitergereicht, ansonsten geht es zur FORWARD-Regel. Erzeugt ein lokaler Prozess das Paket wird es zur OUTPUT-Regel geschickt. Der Kernel startet also mit drei Regellisten, auch chains (Ketten) genannt.

Wenn nun ein Paket eine chain erreicht, wird anhand der aufgestellten Regeln entschieden was mit ihm passiert. Sagt die chain DROP, wird das Päckchen verworfen, sagt sie ACCEPT darf es passieren. Eine chain besteht also normalerweise aus mehreren Regeln.
Jede Regel schaut sich den Header des Päckchens an und entscheidet ob es auf die Regel passt und wenn, was dann damit zu tun ist. Passt es nicht, wird es an die nächste Regel weitergeleitet. Passt es auf keine Regel der chain, tritt die default policy der chain in Kraft.
Die sollte aus Sicherheitsgründen DROP heissen und das Paket wird verworfen.

Ein Beispiel für die INPUT chain die vorher genanntes verdeutlichen soll :
Nehmen wir an das Interface zum Internet ist eine EthernetKarte (eth0) und aus dem bösen Internet kommt ein Päckchen auf den localen tcp--Port 80 (z.B. der Apache Webserver).Wir erstellen folgende Regeln:

iptables -A INPUT -i eth0 -p udp -j ACCEPT
iptables -A INPUT -i eth0 -p tcp  -j DROP

Die erste Regel besagt -A (append oder anhängen) an die INPUT chain, das in-interface -i ist eth0 das Protokoll -p ist udp, jump -j zu akzeptieren ACCEPT. Analog dazu die zweite Regel, nur dass es sich um tcp handelt und das Packet gedropt wird.

Kommt nun das besagte Päckchen an, wird es von der ersten Regel nicht betroffen, von der zweiten Regel jedoch verworfen.

Zweites Beispiel (von Rusty Russels iptables Howto) :

iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

Also wieder die INPUT-chain. Protokoll diesmal icmp -s 127.0.0.1 bedeutet
source-Adresse 127.0.0.1 also localhost (eigener Rechner). Macht nichts anderes als das man sich selber nicht mehr anpingen kann.
Nur zur Anmerkung. DROP heißt, daß der Rechner von außen nicht sichtbar ist, also im stealth (heimlich) -mode arbeitet. Zu testen z.B. bei Shields UP!!.