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