Hlavní navigace

Vše o iptables: Match extensions

Csaba Botoš

V předchozím díle jsme nakousli match extensions a dnes je dokončíme s tím, že se podíváme na nejpoužívanější prvky. Povíme si také o patch-o-matic, pomocí kterého můžeme určovat pravidla na základě času/data.

Pokud bychom chtěli použít pravidla na nějaký rozsah adres, určitě bychom použili rozšíření iprange, kterým určíme zdrojový či cílový rozsah ( --src-range, --dst-range). Počáteční a cílová adresa se odděluje pomlčkou. Možná jsem se v minulém díle zapomněl zmínit o tom, že můžeme v případě --dport (ale i v multiportu) zadávat rozsah portů oddělených dvojtečkou. Takže se v následujícím příkladu se podíváme, jak z IP adres 192.168.0.1 až 192.168.0.10 po­volit porty 50 až 55.

iptables -A INPUT -p tcp --dport 50:55 -m iprange --dst-range 192.168.0.1-192.168.0.10 -j ACCEPT 

Rozšíření mac má jediný parametr --mac-source. Jak už název napovídá, slouží k definování příchozí MAC adresy. Využít to můžeme například tehdy, pokud nechceme, aby v naší síti měnili uživatelé svoji IP adresu, a tak jim ji dáme napevno podle MAC. Neříkám, že to je dokonalá ochrana, protože si ji můžou taky změnit, ale na druhou stranu většina normálních lidí se měněním IP adresy obtěžovat nebude.

iptables -A INPUT -m mac –mac-source 00:01:02:03:04:05 -i eth0 -s 192.168.0.2 -j ACCEPT

Pro ICMP protokol existuje stejnojmenné rozšíření, které nám specifikuje druh icmp paketu --icmp-type. Je to celkem dlouhý seznam, a tak uvedu jenom ty nejpoužívanější echo-request (ping) či echo-reply (pong). Pokud potřebujete definovat jiné, použijte help  iptables -p icmp -h.

Další velmi důležitou částí, kterou při stavbě firewallu určitě použijete, je limit. Docela nepříjemnou situací může být, pokud někdo zahltí váš server příliš mnoha požadavky o odpověď. V praxi si to můžete ověřit: Vezměte si nějakou starší mašinu na 100 Mbps síti, a třeba ze 2 počítačů pusťte ping flood ( ping -f 192.168.0.1). A uvidíte, nakolik se z těch 100 Mbps rychlost srazila dolů … Jako parametry uvádíme --limit, což je časová jednotka: sekunda, minuta, hodina nebo den. A další --limit-burst, kde definujeme počet paketů. Takže příklad, jak omezíme 10 odpovědí na ping za sekundu (což je pro běžné potřeby víc jak dost), by byl:

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 10 -j ACCEPT 

Pomocí STATE definujeme stav spojení, můžeme zadávat více voleb oddělených čárkou. Hodí se to zejména při použití stavového firewallu, např. máme povolené FTP port 21, ale ostatní jsou zakázané implicitně ve fw, a tak abychom ho vůbec mohli používat, povolíme stav RELATED, který existující konexi umožní použít i jiné porty, na kterých se „dohodli”, přestože nemusí být zrovna otevřené, viz případ FTP. ESTABLISHED zase umožní komunikovat na již navázaném spojení, tak, jak si to řídí obě strany. INVALID je stav, kdy paket nemůže být identifikován nebo je vadný, či není známá žádná konexe, ke které patří. NEW je, když paket začal novou konexi. Příklad takového stavové firewallu:

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT 

Docela zajímavé může být, když použijeme patch „patch-o-matic”, který nám například umožní použití rozšíření TIME, pomocí něhož můžeme určovat pravidla na základě času/data. Použití už zůstává na fantazii administrátora, jestli chce třeba v denní špičce dělat s pakety něco jiného než v noci, či přes týden počítat traffic a o víkendu ne, atd …

Zkrátka tento modul, který musíte v jádře přidat CONFIG_IP_NF_MAT­CH_TIME, vám umožní tyto volby:

--timestart  – Čas, odkdy začne pravidlo vyhovovat (formát: HH:MM), výchozí je 00:00.
--timestop  – Čas, kdy přestane vyhovovat (formát: HH:MM), výchozí 23:59.
--days  – Seznam dnů oddělených mezerou (Mon,Tue,Wed,Thu,Fr­i,Sat,Sun), výchozí nastavení je pro každý den.
--datestart date  – Datum, kdy začne pravidlo vyhovovat (formát:YYYY[:MM[:DD[:h­h[:mm[:ss]]]]] hodiny, minuty a sekundy začínají nulou 0), výchozí je rok 1970
--datestop  – To samé jako datestart, ale pro konec. Výchozí je rok 2037.

Příklad povolení paketů v pracovní dny od 8:00 do 18:00:

iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri -j ACCEPT 

Počítat traffic lze určitě mnoha lepšími programy, ale poslední rozšíření, které zde uvedu, bude právě ta tento účel account z balíku „patch-o-matic”. Dělá statistiky podle ip adres, a je k nim celkem pohodlný přístup, takže když si na to uděláte skript, lze celkem jednoduše s mrtg vytvářet grafy.

Vlastnosti:

  • dlouhé (počítadla zvlášť pro každý protokol TCP/UDP/IMCP/Other + celkem) and krátké statistiky
  • pomocí jednoho můžeme sledovat traffic všech klientů v síti
  • načítání/ukládání čítačů

Příklad:

Chceme uložit traffic každé IP z místní sítě, která komunikuje s naším web serverem.

iptables -A INPUT -p tcp --dport 80  -m account --aname www --aaddr 192.168.0.0/24 --ashort
iptables -A OUTPUT -p tcp --sport 80 -m account --aname www --aaddr 192.168.0.0/24 --ashort 

Hodnoty můžeme přečíst:

cat /proc/net/ipt_account/www 

Můžeme je i změnit:

echo "ip = 192.168.0.1 packets_src = 0" > /proc/net/ipt_account/ww 

Stránka projektu: www.barbara.e­u.org/~quaker/ip­t_account/

Iptables má rozšíření celkem slušnou sbírku, která se neustále mění, a to nemluvím o různých patchích. Podívejte se třeba na aktuální manuál, kde najdete takové legrácky jako kvóty jednotlivých paketů, limit spojení na IP či ipp2p, který zjistí, jestli paket nenáleží nějakému známému p2p protokolu. Příště se podíváme na TARGET EXTENSIONS, kde se mimo jiné podíváme na NAT a úpravu paketů …

Našli jste v článku chybu?

3. 2. 2006 14:25

Já se také přimlouvám za přísný zákaz scrollovacích rámečků. Nastavení "white-space:pre" pro .urs-code CSS je IMHO pro zlost, a ne k užitku.
Rychlý hack pro uživatele Firefoxu a Stylish extension: code { white-space:normal !important; }
Článek je ale dobrý, je tak dál :)

26. 2. 2006 16:22

Ve vetsine pripadu to dava dobry smysl - pro programy skutecne neni jedno, jestli se radka zlomi nebo ne. Ale zrovna v pripade iptables (kde je radka takrka vzdy prilis dlouha a vzhledem k tomu, ze vzdy zacina "iptables" jde rozpoznat ze se zlomila) je to nesmysl ...
Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

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

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

Vitalia.cz: 7 druhů hotových těst na vánoční cukroví

7 druhů hotových těst na vánoční cukroví

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

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

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: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

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

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

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

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

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

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

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

Jsou čajové sáčky toxické?

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

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

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

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

Mondelez stahuje rizikovou čokoládu Milka