firewall home |
Einleitung |
Architektur |
Syntax |
Stateful Inspection |
NAT/Masquerading |
logging |
BeispielScripts |
Quellen/Links |
|
Die Architektur von 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!!.