Um Regeln einer Tabelle hinzuzufügen oder eine Regel zu ändern benötigt man das iptables ,,userspace`` Programm.
Eine iptables Regel in einer chain hat folgende Eigenschaften:
- match(es) - bestimmt Ziel-/Quelladresse, Ziel-/Quellport ...
- target - Ziel oder Aktion wenn das Paket passt
Ein iptables Kommando muss folgende Informationen enthalten:
- welche Tabelle soll bearbeitet werden
- welche chain soll bearbeitet werden
- eine mögliche Operation anfügen, löschen, ersetzen ...
- match(es)
- höchstens ein target
Eine Regel immer zumindest ein target oder ein match enthalten.
Mögliche targets:
- ACCEPT = erlaube das Paket
- DROP = verwerfe das Paket (silently)
- QUEUE = Paket in eine Liste einfügen (s.u.)
- RETURN = Rücksprung zur aufrufenden chain
- foobar = springe zu einem sebstdefinierten target
- REJECT = verwerfe das Paket und informiere den Sender
- LOG = Logge den Vorgang mit syslog und lasse das Paket passieren
- ULOG = sende das Paket an einen ,,userspace`` Log-Prozess
- MIRROR = ändere Quell- und Zieladresse und verschicke das Paket erneut (zu Testzwecken)
Eine Auswahl von möglichen matches:
- -p protocol (tcp/udp/icmp/...)
- -s source address
- -d destination address
- -i incoming interface
- -o outgoing interface
- -dport destination port
- -sport source port
- -state (NEW,ESTABLISHED,RELATED,INVALID)
- -mac-source source MAC address
- -mark nfmark value
- -tos TOS value of the packet
- -ttl ttl value of the packet
- -limit (limit the rate of this packet to a certain amount of pkts/timeframe)
Die Syntax eines iptables Befehls sieht wie folgt aus:
iptables -t table -operation chain -j target match(es)
Ein paar einfache Beispiele:
iptables -t filter -A INPUT -j ACCEPT -p tcp --dport ssh
iptables -t filter -A INPUT -j DROP
iptables -t filter -A OUTPUT -m owner --pid 741
iptables -L -v
Der erste Befehl fügt eine neue Regel (-A (append)) an die INPUT chain in die filter
Tabelle ein. Die Regel erlaubt alle eingehenden TCP Pakete mit Zielport ssh (22).
Die zweite Regel stell Beispiel einer Regel ohne match dar. Hier werden alle Pakete, die lokal zugestellt werden sollen verworfen.
Die dritte Regel ist ein Beispiel für eine Regel ohne ein target. Diese Regel ist sinnvoll um den ausgehenden Netzwerkverkehr der Anwendung mit der Prozess ID 741 zu zählen.
Die vierte Regel listet alle Tabellen, deren Regeln und die Anzahl der Pakete (bzw. deren Größe), die auf die jeweilige Regel gepasst haben.
Klaus Rechert
2004-03-09