Hlavní navigace

Vše o iptables: úvod

Csaba Botoš 10. 1. 2006

Iptables je mocný nástroj, který umožňuje linuxovému nebo unixovému systému plně pracovat se síťovou komunikací. Pomocí něj si můžeme snadno postavit různé druhy firewallů (stavový, transparentní…) nebo sdílet internet, zkrátka snadno řídit velkou síťovou dopravní křižovatku na serveru.

V dávných dobách, kdy jsem ještě začínal na konzolovém linuxu, jsem se si chtěl postavit server jakožto bránu do internetu. A asi jako většina začátečníků jsem poctivě googlil, až jsem narazil na sérii článků na Root.cz Linux jako internetová gateway nebo Stavíme firewall a tak dále … Poctivě jsem opisoval každý řádek z iptables (bez logiky, proč tomu tak je) a čirou náhodou mi to napoprvé i fungovalo.

Ptal jsem se známých, jestli neví o jiných článcích, které se iptables zaobírají trochu hlouběji, ale většinou jsem dostal záporné odpovědi. Ať si to přečtu v man iptables, ale že to prý nemá cenu, je to neuvěřitelně rozsáhlé, a jiné bláboly. Samozřejmě že tomu tak ve skutečnosti není, jenom já jakožto začínající uživatel jsem v tom měl více či méně problémy. Proto jsem se rozhodl napsat kompletní seriál o všech vymoženostech iptables i s některými praktickými ukázkami. Dnešní díl je jen jakýmsi lehkým úvodem do problematiky.

Co je to vlastně iptables a k čemu slouží?

Iptables je mocný nástroj, který umožňuje linuxovému nebo unixovému systému plně pracovat se síťovou komunikací. Pomocí něj si můžeme snadno postavit různé druhy firewallů (stavový, transparentní …) nebo sdílení internetu, zkrátka snadno řídit velkou síťovou dopravní křižovatku na serveru.

Tak konec úvodu a pusťme se do základní syntaxe:

iptables [tabulka] [akce] [chain] [ip_část] [match] [target] [target_info] 

Všemi těmito částmi se do detailů budeme zabývat v tomto seriálu. Jak je vidět, zas tak mnoho parametrů to není a začátečníci by se neměli lekat tohoto zdánlivě složitého příkazu. A aby se nám psala pravidla dobře, zkusme při jejich psaní trochu myslet jako paket. Kam letím? Co mám potom udělat? Mějte na paměti, že zde velice záleží na pořadí, neboť paket, který vyhoví (ať už zahozením či povolením) prvnímu možnému pravidlu, už nepokračuje dál a není kontrolován ostatními pravidly.

Dnes bychom začali první částí, a tou jsou tabulky. Existují pouze 3 základní: filter (výchozí), nat a mangle. Poznáme je podle přepínače -t v příkazu. Tabulky si můžeme představit jako 3 katalogy, každý z nich má svoje položky – řetězce (anglicky chain, ale o nich si povíme trošku později.)

Pokud nedefinujeme žádnou tabulku, tak se automaticky použije filter. Takže v této tabulce se defaultně nachází řetězce INPUT, FORWARD a OUTPUT. Jak již jejich názvy napovídají, pokud paket letí dovnitř, aplikují se na něj pravidla z řetězce INPUT. Pokud mají být pravidla pro odchozí pakety, použije se OUTPUT. A nakonec je zde FORWARD, ten použijeme, když náš server funguje jako router a přeposílá pakety mezi sítěmi. Důležité upozornění: To, co jde přes FORWARD, neprochází pravidly INPUT ani OUTPUT!.

Tabulka nat má opět výchozí 3 položky, a to PREROUTING, POSTROUTING a OUTPUT. První je řetěz pravidel, které se použijí na příchozí pakety, pomocí nich můžeme modifikovat cílovou adresu Destination NAT (DNAT). To se hodí hlavně tehdy, když chceme forwardovat porty (nebo celý rozsah) do neveřejné místní sítě. Opakem je POSTROUTING, s ním modifikujeme odchozí spojení Source NAT (SNAT),masquerade. Toho zase můžeme využít, pokud máme například jednu veřejnou IP adresu a chceme za ní skrýt více počítačů. Poslední položkou je OUTPUT, to je řetěz pravidel, které se uplatňují ještě před modifikací odchozích paketů (než je předáme dále).

Poslední tabulkou je mangle, ta má všech pět položek, které mají filter i nat. (INPUT, OUTPUT, FORWARD, PREROUTING a POSTROUTING). V nich jsou řetěze pravidel, které slouží pro úpravy hlavičky paketů, manipulace s TTL, TOS, značkování …

Akce:

Akcí, které můžeme dělat, je poměrně dost. Toto je počeštěný výtažek z manuálu některých nejpoužívanějších:

-A, --append - Přidání nového pravidla na konec řetězce
-D, --delete - Smaže pravidlo (buď ho zadáte ve tvaru, v němž jste ho přidávali, nebo
                  použijete jeho číslo, to získáte rozšířenou volbou --lin. Viz. dole).
-R, --replace - Nahradí číslo pravidla jiným pravidlem
-I, --insert  - Vložení nového pravidla na začátek řetězce
-L, --list    - Vypsání všech pravidel v řetězci. Pokud není zadán řetězec, vypíšou se všechny řetězce + jejich pravidla
-F, --flush   - Vyprázdní všechna pravidla v řetězci (to samé, jako kdybyste to dělali po
                  jednom)
-N, --new-chain      - Vytvoříme si vlastní řetěz
-X, --delete-chain   - Smažeme si vlastní řetěz (nejde smazat výchozí)
-P, --policy         - Výchozí politika řetězce
-E, --rename-chain   - Přejmenování vlastního řetězce 

Rozšířené volby:

-v, --verbose  - Podrobnější výpis (více ukecaný)
--lin, --line-numbers   - Zobrazí čísla pravidel
-n, --numeric  - u IP adres nebude zjišťovat reverzní DNS, ale vypíše ji číselně
                  (vhodné, když máte mnoho pravidel, abyste měli rychlejší výpis) 

Výchozí politika (policy) v iptables při výchozí konfiguraci je „povolit všechno“. Je to pochopitelné, pokud bychom totiž neměli žádný firewall a implicitně by se zahodilo všechno, tak bychom si v síti moc neužili. Ale pokud chceme dělat FW, měli bychom se řídit pravidlem „co vysloveně není povoleno, to je zakázáno“. Jak je již zmíněno výše, používá se přepínače -P. A volby jsou buď povolit (ACCEPT) nebo zahodit (DROP).

Příklad výchozího zahození všech příchozích paketů:

iptables -P INPUT DROP 

Toto je prozatím z dnešního dílu vše, příště bychom se podívali IP část a match (rozšíření).

Našli jste v článku chybu?

10. 1. 2006 1:10

Podle mne je nejdulezitejsi pochopit, jak je navazovana a jak nasledne probiha sitova komunikace, kudy paket v ruznych okamzicich prochazi a rovnez na ktere vrstve OSI modelu se to v ktery okamzik vlastne pohybujeme. Nesnazil bych se tohle ani v clanku pro zacatecniky nijak ukryt, naopak, tohle prave zacatecnici hledaji - jak sam autor rekl: pochopeni. Vlastni syntaxe iptables je uz podruzna. Podle me se to neobejde bez obrazku (diagramu).

Takze drzim palce autorovi - necht co nejsrozumitelneji…

10. 1. 2006 10:09

Phill (neregistrovaný)
Zarazi me, ze autor nepouzil zadny obrazek ci diagram, ktery velice usnadni pochopeni problematiky retezcu.

Vim, ze google jich je plny, ale obcas je obrazek lepsi nez pul stranky textu ve kterem se novacek stejne nevyzna.

Proto tedy:
http://images.google.com/images?q=netfilter

A namatkou jeden docela pekny:
http://www.csh.rit.edu/~mattw/proj/nf/netfilter.jpg







Vitalia.cz: I život bez cukru může být sladký

I život bez cukru může být sladký

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu