Rýchlokurz IPtables
IPtables je nástroj pre konfiguráciu linuxového firewallu netfilter, ktorý je súčasťou jadier série 2.4 a 2.6. V slovenčine (češtine) je dostupných dostatok návodov, ktoré popisujú možnosti a spôsoby ich nastavenia. Základné iptables je možné rozšíriť o mnohé ďalšie možnosti. Tento článok si nekladie za cieľ byť vyčerpávajúcim návodom, ale len poskytnúť slovenský popis syntaxe zadávania pravidiel,
Len pre istotu spomeniem, že tento článok nie je určený tým, ktorí s linuxovým firewallom pracovať nevedia.
Základná syntax
iptables [-t tabuľka] príkaz [podmienky] [voľby...]
Len podotýkam, že príkaz obsahuje viac častí.
Tabuľky
Pakety prechádzajú prechádzajú pri svojej ceste v jadre tabuľkami. Aktuálne sú dostupné štyri tabuľky:
-
filter – je východzia tabuľka určená na uchovávanie pravidiel filtrovania paketov, ktorá obsahuje tri reťaze:
- INPUT (pakety cielené do lokálneho stroja),
- FORWARD (pakety smerované cez stroj) a
- OUTPUT (lokálne generované pakety);
-
nat – je tabuľka používaná len paketmi vytvárajúcimi nové spojenie a pozostáva tiež z troch reťazí:
- PREROUTING (úprava paketov hneď po vstupe),
- OUTPUT (úprava lokálne generovaných paketov) a
- POSTROUTING (úprava paketov tesne pred výstupom);
-
mangle – je tabuľke na špeciálnu manipuláciu s paketmi a má päť reťazí:
- PREROUTING (úprava prichádzajúcich paketov pred smerovaním),
- OUTPUT (úprava lokálne generovaných paketov pred smerovaním),
- INPUT (úprava paketov cielených do lokálneho stroja),
- FORWARD (úprava paketov smerovaných cez stroj) a
- POSTROUTING (úprava paketov tesne pred výstupom);
-
raw – je tabuľka na výnimky so sledovania stavu a je spracovaná ako celkom prvá. V tabuľke sú dve reťaze:
- PREROUTING (pakety vstupujúce cez NIC) a
- OUTPUT (lokálne generované pakety).
Tabuľku, použitú pre dané pravidlo, je možné určiť pomocou voľby -t nasledovanej menom tabuľky. Pričom východziu tabuľku (filter) netreba určovať a je použitá vždy, ak nie je voľbou -t stanovené inak.
Príkazy
Príkaz určuje akciu, ktorú má iptables vykonať. Rozpoznávané akcie sú:
-
-A, --append reťaz pravidlo
pridá pravidlo na koniec zvolenej reťaze; -
-D, --delete reťaz pravidlo
-D, --delete reťaz číslo_pravidla
Delete one or more rules from the selected chain. -
-I, --insert reťaz [číslo_pravidla] pravidlo
Insert one or more rules in the selected chain as the given rule number. -
-R, --replace reťaz číslo_pravidla pravidlo
Replace a rule in the selected chain. -
-L, --list [reťaz]
List all rules in the selected chain. -
-S, --list-rules [reťaz]
Print all rules in the selected chain. -
-F, --flush [reťaz]
Flush the selected chain (all the chains in the table if none is given). -
-Z, --zero [reťaz]
Zero the packet and byte counters in all chains. -
-N, --new-chain reťaz
Create a new user-defined chain by the given name. -
-X, --delete-chain [reťaz ]
Delete the optional user-defined chain specified. -
-P, --policy reťaz cieľ
Set the policy for the chain to the given target. -
-E, --rename-chain stará-reťaz nová-reťaz
Rename the user specified chain to the user supplied name.
Podmienky
Pomocou podmienok je možné špecifikovať, pre ktorý paket dané pravidlo platí alebo neplatí. Voliteľný výkričník pred parametrom obracia (neguje) význam podmienky pravidla:
-
[!] -p, --protocol protokol
Protokol, pre ktorý platí pravidlo (tcp, udp, udplite, icmp, esp, ah, sctp alebo all). Dovolené sú aj mená protokolov z /etc/protocols. -
[!] -s, --source adresa[/maska]
Zdrojová adresa paketu, pre ktorú platí pravidlo (sieťové meno, hostname, sieťová IP adresa alebo prostá IP adresa). Maska môže byť v tvare sieťovej masky (napr. 255.255.255.0) alebo v podobe čísla (24). -
[!] -d, --destination adresa[/maska]
Cieľová adresa paketu, pre ktorú platí pravidlo. Platia rovnaké pravidlá ako pre -s (source). -
-j, --jump cieľ
Cieľ pravidla, teda čo urobiť s paketom, ktorý vyhovuje pravidlu. Cieľ môže byť používateľská reťaz, zabudované ciele alebo rozšírenie. Ak je tento parameter vynechaný a nie je definované pravidlo -g (goto), potom pravidlo nemá vplyv na paket, len je zvyšované počítadlo. -
-g, --goto reťaz
Určuje, kde má pokračovať spracovanie. Na rozdiel od --jump sa po spracovaní zadanej nevráti späť do tejto reťaze, ale pokračuje v nadradenej reťazi. -
[!] -i, --in-interface meno_rozhrania
Meno rozhrania, cez ktoré bol paket prijatý (len v reťaziach INPUT, FORWARD a PREROUTING). Ak meno rozhrania končí "+", potom vyhovujú všetky rozhrania, ktoré začínajú daným menom. -
[!] -o, --out-interface meno_rozhrania
Meno rozhrania, cez ktoré bude paket odoslaný (len v reťaziach FORWARD, OUTPUT a POSTROUTING). Aj tu môže byť použité "+" na konci. -
[!] -f, --fragment
Pravidlo platí len pre druhý a ďalšie fragmenty fragmentovaného paketu. -
-c, --set-counters packets bytes
Umožňuje nastaviť stav počítadiel pravidla (pri operáciách INSERT, APPEND a REPLACE). -
-v, --verbose
Podrobný výstup príkazu list. Takto sú je zobrazené aj meno rozhrania, voľby pravidla, masky TOS a počítadlá paketov a bytov (s príponami "K" (násobky 1000) "M" (násobky 1000K) alebo "G" (násobky 1000M).’K’, ’M’ alebo ’G’ pre podiely 1000, 1 000 000 a 1 000 000 000). -
-n, --numeric
IP adresy a čísla portov vypisuje v číselnej podobe, predvolene sa ich snaží zobraziť ako hostname, sieťové menáalebo služby. -
-x, --exact
Zobraziť výstup príkazu list s presnými hodnotami počítadiel paketov a bytov a nie zaokrúhlené s príponou. -
--line-numbers
Čísluje riadky s pravidlami výpisu pravidiel, pričom číslo zodpovedá poradiu pravidla v reťazi. -
--modprobe=príkaz
Umožňuje v pravidle definovať príkaz pre načítanie potrebných modulov.
Príklady
Pridanie reťaze
iptables -N fromINT
Pridanie pravidla
iptables -A fromINT -j ACCEPT
Vloženie pravidla
iptables -I fromINT -j fromINT
Odstránenie reťaze
iptables -X fromINT
Odstránenie pravidla
iptables -D fromINT -j fromINT
Vyprázdnenie reťaze
iptables -F fromINT
Výpis reťaze
Príklady výpisov pravidiel, a to s dodatočnými voľbami i bez nich.
iptables -L fromINT iptables -vnL fromINT iptables -S fromINT iptables -vS fromINT
Nulovanie počítadiel
iptables -vnL fromINT -Z


