IPTables - Schnelleinstieg
Iptables Funktionsweise
Iptables besteht aus:
- Tabellen (tables)
- Ketten (chains)
- Filterregeln (rules)
Chains
filter
Die Tabelle filter prüft alle für die Firewall ankommenden Pakete und entscheidet ob sie durchgelassen oder geblockt werden.
nat
NAT wird benutzt um IP-Adressen oder Ports zu übersetzen/ändern (= Network Adress Translation).
mangle
Die Tabelle mangle (übersetzt: zerhauen) ermöglicht es dem Kernel, Daten im Paket-Header zu verändern.
Die filter Kette
Die Tabellen der filter Kette
- FORWARD: für Pakte die über eine Schnittstelle hereinkommen, den Rechner auch wieder verlassen.
- INPUT: für Pakete die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen
- OUTPUT: für die über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst
Die Filter Regeln der filter Kette
Regeln werden mit iptables erstellt und an Ziele geschickt.
Ziele der filter Kette
- ACCEPT: das Paket kann passieren
- REJECT: das Paket wird zurückgewiesen und ein Fehlerpaket wird gesendet
- LOG: schreibt einen Eintrag in die syslog
- DROP: das Paket wird ignoriert und keine Antwort gesendet
Syntax Allgemein
Die Momentan in der filter Tabelle gesetzten Ketten und Regeln sieht man mit
- iptables -nvL -t filter
-L # Listing -t filter # anzeigen der filter Kette -n # numerical -v # verbose
Da -t filter Default ist, kann man es auch weglassen,
- iptables -nvL -t filter
Funktionsweise
Die Regeln werden nacheinander abgearbeitet wenn eine Regel greift hört der Verarbeitungsprozess auf. Wenn keine greift wird die Default Policy angewandt.
| filter table | |||||
|---|---|---|---|---|---|
| INPUT | OUTPUT | FORWARD | |||
| rule 1 | rule 1 | rule 1 | |||
| rule 2 | rule 2 | rule 2 | |||
| rule 3 | rule 3 | rule 3 | |||
| rule 4 | rule 4 | rule 4 | |||
| rule 5 | rule 5 | rule 5 | |||
| rule 6 | rule 6 | rule 6 | |||
| POLICY | POLICY | POLICY | |||
Firewallscript
Der Rumpf
Zuerst wird in dem firewall-Skript ein case start - stop Block angelegt:
- cd /usr/local/sbin/
- vi firewall
#!/bin/bash case $1 in start) echo "start firewall" ;; stop) echo "stop firewall" ;; *) echo "usage: $0 start|stop" ;; esac
Script ausführbar machen
- chmod firewall
Testen des Scripts
- firewall start
- firewall stop
- firewall
Flushen aller vorhergehenden Regeln
#!/bin/bash
case $1 in
start)
echo "starte firewall"
iptables -F
;;
stop)
echo "stoppe firewall"
iptables -F
;;
esac
Setzen der Default Policys
#!/bin/bash case $1 in start) echo "starte firewall" iptables -F iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ;; stop) echo "stoppe firewall" iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT ;; esac