iptables
Umožňuje manipulaci pravidel v jednotlivých řetězech (což jsou seznamy
pravidel), např. měnit, vkládat na určitou pozici (záleží totiž na pořadí,
pravidla se vyhodnocují postupně) atd. Pravidlo uvádí podmínky, které má
paket splňovat a cíl, který se má vykonat. Nesplňuje-li paket podmínky
určitého pravidla, zkouší se další pravidlo, dokud nedojdeme na konec
seznamu (pak se uplatní implicitní cíl tohoto řetězce (viz
-P
)).
Obecná syntax příkazu iptables je:
iptables [table] <command> <match> <target/jump>
table
- tabulka
command
- co chceme s tabulkou/pravidlem udělat
match
- popis paketu, pro který pravidlo vyhovuje
target
- co se má udělat s paketem
Tables
Tabulka se volí přepínáčem -t
, implicitně je tam
tabulka filter
Commands
Příkazy definují, ci se má s daným pravidlem udělat (přidat, smazat atd.)
Příklady:
-A, --append
- přidává pravidla
-D, --delete
- maže pravidla
-R, --replace
- mění již definovaná pravidla
-L, --list
- vypisuje všechna pravidla zvoleného řetězu
-N, --new-chain
- nový řetěz
- ...
Matches
Příklady přepínačů popisující pakety, které budou vyhovovat:
-p
- protokol (tcp, udp, icmp) (+ další rozšiřující přepínače k jednotlivým protokolům)
-s
- zdrojová IP adresa
-d
- cílová IP adresa
-i
- vstupní zařízení
-j
- co udělat, když paket vyhovuje (viz dále)
- ...
Targets
Akce, které se mají vykonat, např.
ACCEPT
- akceptuje a nechá jít dál
DROP
- zahodí
REJECT
- jako DROP, ale navíc vyšle ICMP chybovou zprávu
REDIRECT
- přesměruje
QUEUE
- poskytne paket pro zpracování v uživatelském
prostoru
SNAT, DNAT
- překlad zdrojových/cílových adres
MASQUERADE
- maškaráda
LOG
- loguje pomocí syslog démona
Nějaké příklady
iptables -A INPUT --dport 80 -j DROP
iptables -D OUTPUT 2
iptables -L FORWARD
iptables -P INPUT DROP
(nastavení implicitní politiky ACCEPT nebo DROP)
... a další možnosti viz manuálové stránky
Ukázky chování filtru na paketech
Forwardovaný paket
paket přichází z Internetu
paket přichází na interface
mangle PREROUTING
nat PREROUTING
rozhodnutí směrování (localhost/forwading)
filter FORWARD
nat POSTROUTING
paket odchází na interface
paket odchází zpět do Internetu
Paket určený pro localhost