You are on page 1of 10

Linux 2.

4 Csomagszr HOWTO: Az iptables hasznlata Kvetkez Elz Tartalom

1. oldal

7. Az iptables hasznlata
Az iptables aprlkosan rszletezett manual oldalakkal rendelkezik (man iptables) arra az esetre, ha tovbbi rszletezsre vagy sajtossgokra lennl kivncsi. Ha az ipchains-szel llsz bizalmasabb kapcsolatban, elg egy pillantst vetned a Klnbsgek az iptables s az ipchains kztt rszre; nagyon hasonlak. Az iptables egy sor klnbz funkcival rendelkezik. Hrom beptett lnccal indul, az INPUT, OUTPUT s FORWARD lncokkal, melyeket nem tudsz trlni. Nzzk a lehetsges mveleteket a lncokkal: 1. 2. 3. 4. 5. 6. j lnc alkotsa (-N). res lnc trlse (-X). Irnyelv megvltoztatsa beptett lncon (-P). Egy lnc szablyainak listzsa (-L). A lnc sszes szablynak trlse (-F). A csomag s byte-szmllk nullzsa a lnc valamennyi szablyban (-Z).

A szablyok mdostsra is tbb lehetsges md van: 1. 2. 3. 4. 5. j szably hozzfzse a lnchoz (-A). j szably beszrsa a lncba adott pozcin (-I). Az adott pozcin lev szably cserje jjal (-R). Adott pozcij szably trlse a lncbl (-D). Az els, erre illeszked szably trlse a lncbl (-D).

7.1 Mit fogsz ltni, ha bekapcsolod a szmtgpet?


Az iptables lehet modulban (`iptable_filter.o'), ez automatikusan betltdik az iptables els futsakor. s lehet llandan a kernelbe ptve. A szmtgp indulsakor, mieltt brmilyen iptables parancsot lefuttattunk volna (ne feledd: nhny disztribci incializl scriptbl indtja ket), a hrom beptett lncban nincsenek szablyok, s valamennyi beptett lnc irnyelve ACCEPT. A FORWARD lnc irnyelvt meg tudod vltoztatni a "forward=0" opci hasznlatval az iptable_filter modulon.

7.2 Mveletek egy egyszer szablyon


Ez a csomagszrs sava-borsa: a szablyok alkotsa s mdostsa. A leggyakrabban a szably hozzfzse (-A) s a szably trlse (-D) parancsokat fogod hasznlni. A tbbi parancs (-I a beszrsra s -R a cserre) egyszer kiterjesztse ezeknek. Minden szably meghatroz bizonyos tulajdonsgokat, melyeknek illeszkednik kell a csomagra, s persze meghatrozza azt is, hogy mit kell tenni a csomaggal, ha a tulajdonsg illeszkedik (ez a szably "clpontja"). Pldul ttelezzk fel, hogy minden, a 127.0.0.1 cmrl rkez ICMP csomagot el akarsz dobni. Ez esetben a tulajdonsgok kzl kettnek kell illeszkednie: a protokollnak ICMP-nek kell lennie, a csomag forrscmnek pedig 127.0.0.1-nek. A szably clpontja pedig "DROP" lesz. A 127.0.0.1 a visszacsatolt interfsz, mely akkor is mkdik, ha nincs tnyleges hlzati kapcsolatod. Adatcsomagok generlsra a "ping" parancsot tudod hasznlni (ez egy 8-as tpus ICMP csomagot kld (echo request) melyre az ellenlloms egy 0-s tpus ICMP csomaggal vlaszol (echo reply)). Ezrt igen alkalmas hlzati kapcsolatok tesztelsre.
#pingc1127.0.0.1 PING127.0.0.1(127.0.0.1):56databytes 64bytesfrom127.0.0.1:icmp_seq=0ttl=64time=0.2ms 127.0.0.1pingstatistics 1packetstransmitted,1packetsreceived,0%packetloss roundtripmin/avg/max=0.2/0.2/0.2ms iptablesAINPUTs127.0.0.1picmpjDROP #pingc1127.0.0.1 PING127.0.0.1(127.0.0.1):56databytes 127.0.0.1pingstatistics 1packetstransmitted,0packetsreceived,100%packetloss #

Lthattuk, hogy az els ping eredmnyes volt (a "-c 1" azt jelenti, hogy a ping csak 1 csomagot kld). Aztn hozzfztnk (-A) az "INPUT" lnchoz egy szablyt, mely azt mondta, hogy a 127.0.0.1 cmrl rkez ("-s 127.0.0.1") ICMP protokollal rendelkez ("-p icmp") csomagokat el akarjuk dobni ("-j DROP").

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata

2. oldal

Ezek utn leteszteltk a szablyt a msodik ping hasznlatval. Itt mg egy kis sznetet is kaptunk, mert a ping egy darabig mg vrt a csomagra, mieltt feladta volna a prblkozst. Kt mdon tudjuk a szablyokat trlni a lncbl. Elszr is, mivel tudjuk, hogy ez az egyetlen szably az INPUT lncban, hasznlhatunk szmozott trlst, mgpedig:
#iptablesDINPUT1 #

Ezzel az INPUT lnc 1. szablyt trltk. A msodik md az -A (hozzfzs) parancs tkrkpe, de az -A parancsot -D -re cserltk. Ezt akkor hasznljuk, ha egy komplexebb lncunk van s nem akarjuk egyesvel megszmolni benne a szablyokat hogy kitalljuk, hanyadik szably ez. Ez esetben hasznlhatjuk a
#iptablesDINPUTs127.0.0.1picmpjDROP #

parancsot a szably trlsre. A -D szintaxisnak pontosan egyeznie kell az -A (vagy -I, vagy -R) szintaxisval. Ha tbb erre a szablyra illeszked szably van a lncban, csak az els fog trldni.

7.3 Szrsi belltsok


Lthattuk, hogy a "-p" kapcsol hatrozza meg a protokollt, s az "-s" val a forrscm meghatrozsra. Vannak azonban tovbbi opcik, melyekkel pontosabban meghatrozhatjuk a csomagokat. Ez most kvetkezik sszefoglalva:

Forrscm s clcm meghatrozsa


A forrs ("-s", "--source" vagy "--src") s cl ("-d", "--destination" vagy "--dst") IP cmeit 4 mdon hatrozhatjuk meg. A legnpszerbb a teljes nv hasznlata, mint pldul a "localhost" vagy "www.linuxhq.com". A msodik md az IP cm meghatrozsa, pl. "127.0.0.1". A harmadik s negyedik mddal IP cmek csoporjait tudjuk meghatrozni, mint pldul "199.95.207.0/24" vagy "199.95.207.0/255.255.255.0". Mindkett meghatrozs 199.95.207.0 tl 199.95.207.255-ig terjed IP cmeket hatroz meg; a "/" jel utni szmok azt mutatjk, hogy mekkora rszt kell az IP-cmnek figyelembe venni (bitben). (a TCP-csomagok fejlcben szerepl IP-cm 32 bites, azaz 4 byte-os - a ford.) "/32" vagy "/255.255.255.255" azt jelenti, hogy csak az az egy IP-cm rvnyes (mind a 32 bitet figyelembe vettk). Ha minden IP-cmre rvnyes szablyt akarunk, hasznljuk a "/0" meghatrozst, mint pl.:
[MEGJEGYZS:a"s0/0"epldbanfelesleges] #iptablesAINPUTs0/0jDROP #

Ezt ritkn hasznljuk, mivel a fenti plda ugynaz, mintha a szablyt "-s 0/0" nlkl alkottuk volna meg.

Inverzi meghatrozsa
Nhny kapcsol, kzttk a "-s" (vagy "--source") s a "-d" ("--destination") flagek tartalmazhatjk argumentumukat "!" eltaggal is. (ez a logikai "nem"-nek felel meg) azon csomagok meghatrozsra, melyek egy adott tulajdonsgnak NEM felelnek meg. Plda. "-s ! localhost" minden csomagra illeszkedik, melyek nem a helyi gprl szrmaznak.

Protokoll meghatrozsa
A protokollt a "-p" (vagy "--protocol") kapcsolval hatrozzuk meg. A protokoll lehet egy szm (ha ismered a szmszer protokoll-rtket) vagy nvvel, mint pldul "TCP", "UDP" vagy "ICMP". A kis- s nagybet nem szmt, a "-tcp" ugyangy mkdik, mint a "-TCP". A protokoll neve el tehetsz "!"-t is, ami az illeszkedst megfordtja. Teht egy "-p ! TCP" opci minden olyan csomagra illeszkedni fog, melynek protokollja nem TCP.

Interfsz meghatrozsa
Az "-i" (vagy "--in-interface") s az "-o" (vagy "--out-interface") kapcsolk egy interfsz nevvel val egyezst hatroznak meg. Az interfsz a fizikai eszkz, melyen keresztl a csomag bejn ("-i") vagy kimegy ("-o"). "Fent" lev interfsz megtekintsre az ifconfig parancs hasznlhat ("fent" levnek a pillanatnyilag mkd interfszt tekintjk). Az INPUT lncra rkez csomagoknak nincs kimeneti interfszk ("-o"), ezrt az INPUT lncon ilyen szably semmilyen csomagra nem fog illeszkedni. s hasonlkpp, az OUTPUT lncon kimen csomagok bemeneti interfsszel nem rendelkeznek ("-i"), ezrt ezen a lncon az "-i" kapcsolkkal meghatrozott szablyokra nem fog illeszkedni csomag. Csak a FORWARD lncon tfut csomagok rendelkeznek mind kimeneti, mind bemeneti interfsszel.

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata Ha jelenleg nem mkd interfszt hatrozunk meg egy szablyban, az nem hibs szably, viszont csak akkor lp letbe, ha az interfszt felhzzuk, addig a szably semmilyen csomagra nem fog illeszkedni. Ez igen jl hasznlhat PPP-s interfszek esetn. (ltalban ppp0 vagy hasonl).

3. oldal

Egy specilis opci: ha az interfsz nv utn "+"-et tesznk, az valamennyi interfszre illeszkedni fog (fggetlenl attl, hogy az interfsz fent van-e, vagy sem), melynek a neve a "+" eltti szveggel kezddik. Pldul egy olyan szablyt, mely az sszes ppp interfszre illeszkedni fog, az i ppp+ kapcsolval hasznljuk. Az interfsz neve egy "!"-vel maga eltt azokra a csomagokra fog illeszkedni, melyek nem az adott interfszre rkeznek vagy nem az adott interfszrl tvoznak.

Tredkek meghatrozsa
Nha egy csomag tl nagy ahhoz, hogy egyszerre tovbbtsuk. Ez esetben a csomagot tredkekre bontjuk, s tbb, klnll csomagban kldjk el. A vgponton ezek sszellnak, s jbl rendelkezsnkre ll az eredeti csomag. Ezekkel a tredkekkel az a baj, hogy csak az els csomag tartalmazza a komplett fejlcmezket (IP + TCP, UDP s ICMP) a tbbi csomag pedig csak egy "kivonatt" a fejlcnek (IP a hozzadott protokoll-mezk nlkl). Ezrt ezeknek a csomagoknak a fejlct nem tudjuk protokollszempontbl megvizsglni. Ha NAT (Network Address Translation) hasznlatval kapcsoldsz fel az Internetre, a csomagok jbl sszellnak, mieltt elrnk a csomagszrt. Ez esetben teht nem kell a tredkektl tartanod. Minden ms esetben fontos megrtened, hogy hogy bnnak a csomagszrk a tredkekkel. Minden olyan szably, mely nem ltez tulajdonsgot vizsgl, nem illeszkednek tekintend. Ez azt jelenti, hogy - mivel az els csomagot ugyangy kezeli a csomagszr, mint a tbbit - a msodik s tovbbi tredkeket a csomagszr nem tudja vizsglni. gy a szably (p TCP sport www) (forrs port meghatrozsa wwwknt a "--sport www" segtsgvel) sosem fog illeszkedni egy tredkre (legalbbis az elstl klnbzre). Csakgy, mint az ellenttes szably (p TCP sport ! www) sem. Mgis meg tudunk hatrozni szablyt a msodik s azt kvet tredkekre, az "-f" (vagy "--fragment") kapcsolval. Az is j, ha olyan szablyt hatrozunk meg, amely nem a msodik s azt kvet tredkekre illeszkedik, ez esetben a "-f" kapcsolt "!"-vel egytt hasznljuk. ltalban biztonsgosnak tekinthetjk a msodik s tovbbi tredkek tengedst a csomagszrn, mivel a szrs az els tredk alapjn is egyrtelmen meghatrozza a csomag sorst. Ennek ellenre vannak olyan hibk, melyek kihasznlsval a tredkek alkalmasak lehetnek szmtgpek feltrsre. Mindenesetre ez a te dntsed. Megjegyzs rendszergazdknak: az elformzott csomagokat (TCP, UDP s ICMP csomagok, melyek tl rvidek ahhoz hogy a tzfal elolvassa a portokat vagy ICMP kdot s tpust) a kernel eldobja ahogy vizsglatokat ksrelne meg rajtuk. gy a TCP tredkek a 8-as pozcitl kezddnek. Pldnk szerint, a kvetkez szably valamennyi 192.168.1.1 IP-cmre rkez tredket eldob:
#iptablesAOUTPUTfd192.168.1.1jDROP #

Kiterjesztsek az iptableshez: j Illeszkedsek


Az iptables kiterjeszthet, azaz mind a kernel, mind az iptables alkalmazs alkalmass tehet jabb tulajdonsgok vizsglatnak elltsra. Ezek nmelyike szokvnyos (vannak kzttk olyanok, melyeket mr az ipchains-ben is hasznltunk, csak nem kiterjesztsknt), a tbbi pedig egzotikus. A kiterjesztseket msok rtk, s klnllan terjesztik a felhasznlk fel. A kernel kiterjesztsek ltalban a kernel modulok alknyvtrban tallhatk, mint pldul a /lib/modules/2.3.15/net. Ezek maguktl betltdnek, ha a kernelt a CONFIG_KMOD belltssal konfigurltad, gy nem kell kzzel betltened ket. Az iptables program kiterjesztsei megosztott knyvtrfileok (libraryk), melyek ltalban az /usr/local/lib/iptables/ knyvtrban vannak, br nhny disztribcinl a /lib/iptables vagy a /usr/lib/iptables knyvtrban tallhatk meg. A kiterjesztseknek kt tpusa van: j clpontok, s j illeszkedsek (az j clpontokrl kicsit ksbb mi is fogunk beszlni). Nhny protokoll kiterjesztseit kln is megvizsgljuk majd, jelenleg ezek a TCP, az UDP s az ICMP, ahogy azt lejjebb is ltni fogjuk. Ezrt kpes leszel arra, hogy j vizsglatokat vgezz parancssorbl, a "-p" kapcsol utn, mely betlti a kiterjesztst. Hogy vilgos legyen, hasznld az "-m" kapcsolt a kiterjeszts betltshez, minek kvetkeztben a kiterjesztett opcik elrhetv vlnak. Kiterjesztshez segtsget gy kaphatsz, hogy betltd a kiterjesztst a "-p", "-j" vagy "-m" kapcsolk egyikvel, mgpedig "-h" vagy "--help" kapcsolval utna. Pldul:
#iptablesptcphelp #

TCP Kiterjesztsek

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata A tcp kiterjesztsek automatikusan betltdnek, amint a "-p tcp" kapcsol ezt meghatrozza. Ez a kvetkez opcikat teszi lehetv: (a tredkek kezelsnek kivtelvel) --tcp-flags

4. oldal

esetleg "!"-vel utna, majd kt szveg a flagekrl lehetv teszi, hogy specilis vizsglatokat vgezz egy TCP csomagon. Az els szveg a flagekrl a maszk: egy lista azokrl a flagekrl, melyeket vizsglni akarsz. A msodik szveg a flegekrl megmondja, melyik hogy legyen belltva. Pldul,
#iptablesAINPUTprotocoltcptcpflagsALLSYN,ACKjDROP

Ez azt jelenti, hogy valamennyi flaget vizsgljuk ("ALL" ugyanaz, mint a "SYN,ACK,FIN,RST,URG,PSH"), de csak a SYN s az ACK flag lehet belltva. Van itt mg egy belltsi lehetsg, a "NONE" azt jelenti hogy egy flag sincs belltva. --syn esetleg "!"-vel eltte, ez a rvidts ugyanazt jelenti, mint a "--tcp-flags SYN,RST,ACK SYN". --source-port esetleg "!"-vel utna, majd vagy egy port, vagy egy TCP port tartomny. A portok megadhatk szmmal vagy nvvel, ahogy az az /etc/ services fileban le van rva. A tartomny kt portnv vagy portszm, egy ":"-vel elvlasztva, vagy (ha a porttal egyenl vagy annl nagyobb portokat akarjuk meghatrozni) a port neve ":"-vel utna, vagy (ha a porttal egyenl vagy annl kisebb portokat akarjuk meghatrozni) a port neve ":"-vel eltte. --sport ugyanaz, mint a "--source-port". --destination-port s --dport ugyanazt jelenti mint feljebb, csak ezek nem a csomag forrst, hanem cljt hatrozzk meg porttal egytt. --tcp-option esetleg egy "!"-val s egy szmmal utna, egy erre a szmra illeszked TCP opcit hatroz meg. A nem teljes TCP fejlccel rendelkez csomagok automatikusan eldobsra kerlnek, amint ksrlet trtnik TCP tulajdonsgaik vizsglatra.

A TCP flagek magyarzata


Nha hasznos, ha egyik irnyban engedlyezzk a TCP forgalmat, a msik irnyban pedig nem. Pldul, ha el akarunk fogadni csomagokat egy kls www szerver fel, de nem akarjuk, hogy a szerverrl hozznk kapcsoldjanak. Elsre azt gondolnnk, elg blokkolni a szerverrl felnk rkez TCP csomagokat. Azonban sajnos a TCP kapcsolatok a mkdshez mindkt irnyban adatforgalmat ignyelnek. A megolds az, ha csak azokat a csomagokat blokkoljuk, melyek kapcsolat ignylsre szolglnak. Ezeket a csomagokat SYN csomagoknak hvjuk (OK, technikailag k olyan csomagok, melyeknl a SYN flag belltott, s a FIN s ACK flagek nem, de a rvidsg kedvrt ezeket SYN csomagoknak hvjuk). Ezen csomagok tiltsval meg tudjuk lltani a gpnkre val kapcsoldst. A "--syn" kapcsolt a kvetkezkre hasznljuk: csak olyan szablyokban rvnyes, ahol a protokollt TCP-knt hatroztuk meg. Pldul olyan TCP kapcsolat meghatrozsra mely a 192.168.1.1 IP-cmrl jn,
pTCPs192.168.1.1syn

Ez a flag invertlhat, ha "!"-t tesznk el, ez minden olyan csomagra rvnyes lesz, mely nem kapcsolat kezdemnyezsre irnyul.

UDP Kiterjesztsek
Ezek a kiterjesztsek automatikusan betltdnek, ha a "-p udp" kapcsolt meghatroztuk. Lehetv teszi a "--source-port", "--sport", "-destination-port" s "--dport" hasznlatt, ahogy azt a TCP protokollnl taglaltuk.

ICMP Kiterjesztsek
Ezek a kiterjesztsek automatikusan betltdnek, ha a "-p icmp" kapcsolt meghatroztuk. Csak egy j opcival szolgl: --icmp-type

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata

5. oldal

esetleg "!"-vel utna, majd egy ICMP tpus nevvel (pl. "host-unreachable"), vagy szmmal (pl. "3"), vagy szmmal s kddal, melyeket "/"-vel vlasztunk el. Az elrhet ICMP tpusok neveit a "-p icmp --help" paranccsal tudhatjuk meg.

Egyb illeszkedsek kiterjesztsei


A netfilter csomag tbbi kiterjesztse demonstrcis clokat szolgl, ezeket (amennyiben installlva vannak) az "-m" kapcsolval hvhatod segtsgl. mac Ezt a modult nllan kell betlteni a "-m mac" vagy a "--match mac" kapcsolkkal. Azt jelenti, hogy a bejv csomag cmt nem IP alapjn vizsgljuk, hanem az Ethernet (MAC) cmk alapjn s csak azokon a csomagokon hasznljuk, melyek a PREROUTING s INPUT lncokat rintik. Egy j opcival szolgl: --mac-source esetleg "!"-vel utna, majd egy ethernet cmmel (kettsponttal elvlasztott hexabyte formban), pl.: "--mac-source 00:60:08:91:CC:B7". limit Ezt a modult nllan kell betlteni a "-m limit" vagy a "--match limit" kapcsolkkal. Az illeszkedsek szmnak korltozsra hasznljuk, pldul naplzs elnyomsra. Csak egy adott idt fog megfeleltetni adott gyakorisggal (alapesetben 3 megfelels rnknt, 5 csomagra). Kt j opcit tesz elrhetv: --limit s utna egy szm; meghatrozza a msodpercenknti maximlis illeszkedsek szmt. A szm meghatrozhat kifejezsekkel, a "/ second", "/minute", "/hour" s "/day" hasznlatval, vagy rszeikkel (pldul a "5/second" ugyanazt jelenti, mint a "5/s"). --limit-burst s utna egy szm, meghatrozza a maximlis csomagszmot mieltt a fels limit korltozna. Ezt a megfelelst a LOG clponttal egytt hasznljuk, hogy arny-korltolt naplzst hasznljunk. Hogy megrtsk, hogy is mkdik ez, vessnk egy pillantst a kvetkez szablyra, mely az alaprtk szerinti belltsokkal naplzza a csomagokat:
#iptablesAFORWARDmlimitjLOG

Elszr, mikor e szablyt alkalmazzuk, a csomag naplzsra kerl s az alaprtelmezett csomagszmot a kernel egyel cskkenti. Valjbban, mivel az alaprtelmezett csomagszm 5, az els 5 csomag kerl naplzsra. Ezutn 20 perc fog eltelni, mg a kvetkez csomag naplzsra kerl e szably alapjn, tekintet nlkl arra, hogy hny csomag illeszkedett e szablyra. Ezen tl minden 20 percben, mely anlkl telik el, hogy illeszked csomagot kapnnk, az alaprtelmezett csomagszm visszanyer egyet rtkbl, s gy ha 100 percig nincs olyan csomag, mely a szablyra illeszkedne, a csomagszm visszanyeri eredeti rtkt, s visszatr oda, ahonnan indultunk. (ide taln kell mg egy kis magyarzat: vezessnk be hrom vltozt, a "t", a "p" s a "b" vltozkat. A "t" s a "p" vltozt a --limit kapcsolval lltjuk be, a "b" vltozt a --limit-burst kapcsolval. A "t" szm gyakorlatilag akrmennyi lehet, a "p" lehet msodperc, perc, ra vagy nap, a "b" pedig megint csak akrmennyi. A csomagok szp sorban rkeznek a csomagszrre. Ha egy csomagra illeszkedik a szably, a szably clpontjra kldi a kernel a csomagot, egyben a "b" vltoz rtkt egyel cskkenti. Ezzel egyidben elindt egy szmllt, mely a "p"/"t" rtknl egyel megnveli a "b" rtkt. Ez a gyakorlatban annyit jelent, hogy ha folyamatosan illeszked csomagok rkeznek a kernelhez, akkor az els "b" szm csomara illeszkedni fog az adott szably, ezek utn minden "p"/"t" idintervallum letelte utn 1 csomagra. Ha nem jnnek illeszked csomagok, minden "p"/"t" id eltelte utn egyel nagyobb lesz az az rtk, ahny csomagra a szably illeszkedni fog. - a ford.) Megjegyzs: jelenleg nem tudsz olyan szablyt generlni, melynek visszatltsi ideje nagyobb lenne 59 rnl, gy ha az tlag rtt napi egyre lltod, a csomagszm mindenkpp kisebb kell, hogy legyen 3-nl. Ezen kvl arra is hasznlhatod ezt a modult, hogy szmtgpedet megvdd a Denial of Service (DoS) tmadsoktl. Ehhez gyorsabb visszatltst kell alkalmaznunk. Syn-flood vdelem:
#iptablesAFORWARDptcpsynmlimitlimit1/sjACCEPT

Alattomos portscan elleni vdelem:


#iptablesAFORWARDptcptcpflagsSYN,ACK,FIN,RSTRSTmlimitlimit1/sjACCEPT

A hall pingje elleni vdelem:


#iptablesAFORWARDpicmpicmptypeechorequestmlimitlimit1/sjACCEPT

Ez a modul gy mkdik, mint egy hiszterzis ajt, ahogy azt az albbi grafikonon meg is mutatjuk:

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata


rate(pkt/s) ^.. |/DoS\ |/\ EdgeofDoS|.....:.........\....................... =(limit*|/:\ limitburst)|/:\.. |/:\/\ |/:\/\ EndofDoS|/....:..............:.../.......\..../. =limit|::`'`' +++>time(s) LOGIC=>Match|Didn'tMatch|Match

6. oldal

Mondjuk azt, hogy msodpercenknt egy csomag illeszkedhet ts csomagszmllval, de a csomagok msodpercenknt ngyesvel rkeznek hrom msodpercig, majd jabb hrom msodperc sznet utn az egsz folyamat ismtldik.

<Flood1><Flood2> Total^Line__YNNN Packets|Rate__YNNN |mum__YNNN 10|Maxi__Y |__Y |__Y |__YNNN |YNNN 5|Y |YKey:Y>Illeszkedszably |YN>Nemilleszkedszably |Y |Y 0+>Time(seconds) 0123456789101112

Lthatod, hogy az els t csomagra illeszkedik a szably, azutn a kernel korltoz (itt ri el "b" vltoz rtke a 0-t. - a ford). Ha itt van egy kis sznet, utna jabb csomagokra fog a szably illeszkedni, de itt sem haladhatjuk meg a csomagszmll rtkt (1 csomag msodpercenknt, ha ezt a szmllst alkalmazzuk). owner Ez a modul a helyileg generlt csomagok esetn megprbl illeszkedni a csomag alkotjnak bizonyos tulajdonsgaira. Csak az OUTPUT lncon rvnyes, s ott is ppen akkor, ha bizonyos csomagoknak (pldul ICMP visszajelzseknek) nincs tulajdonosuk s ezrt az illeszkeds nem lenne megllapthat. --uid-owner userid Akkor illeszkedik, ha a csomagot egy, ezen opci utn (User ID) megjellt tulajdonsggal rendelkez process generlja. --gid-owner groupid Akkor illeszkedik, ha a csomagot egy, ezen opci utn (Group ID) megjellt tulajdonsggal rendelkez process generlja. --pid-owner processid Akkor illeszkedik, ha a csomagot a megadott PID-del rendelkez process generlta. --sid-owner sessionid Akkor illeszkedik, ha a megadott session groupban lev process generlta. unclean Ez a ksrleti modul kzzel, a "-m unclean" vagy a "-match unclean" opcikkal tltend be. Klnbz "egszsgi" (sanity) teszteket hajt vgre a csomagokon. Ez a modul mg nincs bevizsglva, s nem ajnljuk biztonsgi eszkzknt val alkalmazst (lehet hogy elront valamit, tekintve hogy lehetnek mg benne bugok). Nem tmogat semmilyen tovbbi opcit.

A sttusz-illeszkeds (State Match)


A leghasznosabb illeszkedsi kritriumot a "state" kiterjeszts szolgltatja, mely az "ip_conntrack" modul kapcsolat-kvet analzist interpretlja. Melegen ajnljuk. Az "-m state" bejegyzse egy tovbbi "--state" opcit engedlyez, mely vesszvel elvlasztott listja az illeszked llapotoknak (a "!" flag a nem megfelelst jelzi ezekre az llapotokra). Ezek az llapotok lehetnek:

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata NEW j kapcsolatot ltest csomag. ESTABLISHED Egy csomag, mely ltez kapcsolatot jelez (egy visszajelz csomag, vagy egy visszajelzett kapcsolaton kimen csomag). RELATED

7. oldal

Egy ltez kapcsolathoz tartoz, de annak rszt nem kpez csomag, mint pldul egy ICMP hibazenet, vagy (beptett FTP modullal) egy ftp adatkapcsolatot ltest csomag. INVALID Egy valamilyen okbl nem azonosthat csomag: ez magban foglalja a memria tlcsordulsokat s az ICMP hibazeneteket, melyek nem felelnek meg egyetlen ismert kapcsolatnak sem. ltalban ezek a csomagok eldobandk.

7.4 Clpont meghatrozsok


Most mr tudjuk, milyen vizsglatokat vgezhetnk egy csomagon, de tudnunk kell azt is, hogy mit csinljunk azokkal a csomagokkal, melyek a szablyainkra illeszkednek. Ez a szably clpontja. Kt nagyon egyszer beptett clpontunk van: a DROP s az ACCEPT. Mr megismertnk mindkettejket. Ha egy szably illeszkedik egy csomagra s a szably clpontja e kt clpont valamelyike, tovbbi hajcihk nlkl a csomag sorsa eldntetett. Kt tpusa van a beptetteken tlmen clpontoknak: a kiterjesztsek s a felhasznl ltal definilt lncok.

A sajt lncok
A hrom beptett lncon (INPUT, FORWARD, OUTPUT) tl a felhasznlnak lehetsge van arra, hogy sajt lncot vagy lncokat definiljon. Ez egyike azon erssgeknek, melyeket az iptables tvett az ipchains-tl. Hagyomnyok szerint a sajt lncok neveit kisbetvel rjuk, hogy megklnbztessk ket a beptett lncoktl. (hamarosan megmutatjuk az j lncok definilst, a Mveletek egy beptett lncon rszben). Ha egy csomag illeszkedik egy olyan szablyra, melynek clpontja egy sajt lnc, a csomag elkezd sorban vndorolni a sajt lnc szablyain. Ha a sajt lnc nem dnti el a csomag sorst, a csomag visszakerl az eredeti lncra s a kvetkez szabllyal folytatja a vndorlst.
test lncot

Itt az id mg egy kis ASCII mvszetre. Kt (meglehetsen leszktett) lncot vesznk figyelembe: az INPUT lncot (ez a beptett lnc) s a (ez egy sajt lnc).
`INPUT'`test' |Rule1:pICMPjDROP||Rule1:s192.168.1.1| |||| |Rule2:pTCPjtest||Rule2:d192.168.1.1| || |Rule3:pUDPjDROP|

Nzznk egy TCP csomagot, mely a 192.168.1.1 cmrl utazna a 1.2.3.4 cmre. Ez a csomag keresztezi az INPUT lncot, s annak els szablyra nem illeszkedik. A msodik szably illeszkedik, s annak clpontja a test lnc, gy a kvetkez vizsglatot a test lnc vgzi. Itt, a test lnc els szablya illeszkedik, de nincs a szablynak clpontja, gy a csomag a msodik szablyra kerl. A msodik szably viszont nem illeszkedik, s mr el is rtk a lnc vgt. Visszatrnk teht az INPUT lncra, ahol a 2. szably kldte el a csomagot, most teht a kvetkez, 3. szabllyal folytatjuk. Ez szintn nem illeszkedik. gy a csomag tja a kvetkezkpp alakul:
v__________________________ `INPUT'|/`test'v |/| |Rule1|/||Rule1|| ||/|||| |Rule2/||Rule2|| ||v |Rule3/+___________________________/ | v

A sajt lncokrl tovbbi sajt lncokra ugorhatunk (de ne tegynk a konstrukciba hurkot, mert ha a kernel ezt rzkeli, a hurokban kering csomagot eldobja).

Az iptables kiterjesztsei: j clpontok

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata

8. oldal

A clpontok msik tpusa egy kiterjeszts. Egy clpont-kiterjeszts kernel-modulknt ltezik, s egy tovbbi, parancssorbl vezrelhet opcikat ellt kiterjesztse az iptablesnek. Az alap netfilter disztribciban klnbz kiterjesztseket tallunk: LOG Ez a modul az illeszked csomagok kernelszint naplzst ltja el. Tovbbi hozzadott opcikkal is szolgl: --log-level Egy szmmal vagy nvvel kvetve. A hasznlhat nevek (kis- vagy nagybetsek egyarnt): "debug", "info", "notice", "warning", "err", "crit", "alert" s "emerg", a szmok az elbbi felsorols szmai 7-0-ig. Ha ezen naplzsi szintek rszleteire vagy kivncsi, tekintsd meg a syslog.conf manual oldalait. --log-prefix Egy maximum 29 karakteres szveggel kvetve, ez az zenet a log zenetek elejre kerl az egyedi azonosts rdekben. Ez a modul leghasznlhatbb bizonyos hatrok tllpsnek naplzsra. Vigyzz, hogy ne szemeteld tele a logfjljaidat. REJECT Ez a modul ugyanazt eredmnyezi mind a "DROP" clpont, annyi klnbsggel, hogy a csomag kldje "port unreachable" hibazenetet kap. Gondolj arra is, hogy bizonyos esetekben ez az ICMP hibazenet nem kerl elkldsre (lsd: RFC 1122): A kiszrt csomag egy ICMP hibazenet, vagy ismeretlen ICMP tpus volt. A kiszrt csomag egy fejlc nkli tredk volt. Tl sok ICMP hibazenetet kldtnk erre a cmre mostanban. A "REJECT" egy "--reject-with" opcival is szolgl, mely vltoztatja a hasznlt visszajelzs-csomagot is: tovbbi rszleteket a manual oldalakban tallsz.

Specilis beptett clpontok


Kt specilis beptett clpontot klnbztetnk meg: a RETURN s QUEUE clpontokat. A RETURN ugyanazt jtsza el, mintha a csomag illeszkeds nlkl vgigvndorolt volna az egsz lncon: beptett lnc esetn a lnc irnyelve (policy) kerl alkalmazsra, sajt lnc esetn a csomag visszkerl az elz lncra s annak kvetkez szablyaival folytatja tjt. A QUEUE egy klnleges clpont, mely a felhasznli trbe sorolja a csomagot. Hogy ez az opci hasznlhat is legyen, kt tovbbi sszetevre van szksgnk: egy "queue kezel", mely megosztja az thalad csomag aktulis szerkezett a kernel s a felhasznli tr kztt, s egy felhasznli alkalmazs, mely megkapja, esetleg megvltoztatja a csomagot vagy killt rla egy fajta bizonytvnyt. A standard queue kezel az IPv4 iptables-hez az ip_queue modul, melyet a kernel forrsval egytt szlltanak s ksrleti modulknt van megjellve. Lssunk egy gyors pldt arra, hogy irnytja az iptables a csomagokat a felhasznli trbe:
#modprobeiptable_filter #modprobeip_queue #iptablesAOUTPUTpicmpjQUEUE

Ezzel a szabllyal a helyben generlt ICMP csomagok eljutnak az ip_queue modulig, mely ezutn megprblja eljutatni azokat egy felhasznli alkalmazshoz. Ha felhasznli alkalmazs nem vrakozik, a csomagot eldobja. Felhasznli alkalmazs rshoz hasznld a libipq API-t. Ezt az iptables-szel egytt forgalmazzk. Egy pldakd megtallhat a ksreszkzk kztt (pl. redirect.c) a CVS-ben. Az ip_queue llapota lekrdezhet a kvetkez fjlon:
/proc/net/ip_queue

A queue maximlis hossza (a felhasznli trbe utasts nlkl visszatr csomagok szma) llthat a kvetkez fjlon:
/proc/sys/net/ipv4/ip_queue_maxlen

A queue hossznak alapbellts szerinti rtke 1024. Az ez utn kvetkez csomagok eldobsra kerlnek egszen addig, mg a queue hossza ismt a limit al csken.A jobb protokollok, mint a TCP torldsknt kezelik az eldobott csomagokat, s a queue feltltse utn remnyteljesen httrbe vonulnak. Szval ignyel nmi ksrletezgetst a queue idelis hossznak belltsa egy adott szitucira, ha az alapbellts szerinti hossza rvidnek bizonyulna.

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata

9. oldal

7.5 Mveletek egy beptett lncon


Az iptables egyik igen hasznos tulajdonsga, hogy a fontosabb szablyokat lncba szedjk. gy kereszteled el ezeket a lncokat, ahogy akarod, n a kisbets elnevezst ajnlom, nehogy sszekeverd ket a beptett lncokkal vagy a clpontokkal. A lncok nevei maximum 31 karakter hosszak lehetnek.

j lnc alkotsa
Nosza, alkossunk j lncot! Mivel rendkvl tallkonyak vagyunk, test-nek fogjuk hvni. Hasznljuk a "-N" vagy a "--new-chain" parancsok egyikt:
#iptablesNtest #

Ilyen egyszer ez. Most mr szablyokat fzhetnk ebbe a lncba, ahogy azt feljebb megtanultuk.

Lnc trlse
Egy lnc trlse ugyanilyen egyszer, csak a "-X" vagy a "--delete-chain" parancsot kell hasznlni. De mirt pont az "-X"? Nos azrt, mert az sszes tbbi j bett mr elbb felhasznltuk.
#iptablesXtest #

Van egy pr szably lncok trlsre: a lncnak resnek kell lennie (lsd a Lnc kirtse pontot lejjebb) s nem lehet semmilyen ltez szably clpontja. A hrom beptett lnc nem trlhet. Ha nem hatrozod meg a trlend lncot, az sszes sajt lncod trldni fog (mr amennyiben ez lehetsges)

Lnc kirtse
Legegyszerbben a "-F" vagy a "--flush" paranccsal rthetnk ki egy lncot.
#iptablesFFORWARD #

Ha nem hatrozod meg a kirtend lncot, az sszes lnc sszes szablya trldni fog..

Lnc szablyainak listzsa


Egy lnc sszes szablyt kilistzhatod a "-L" vagy a "--list" paranccsal. A "refcnt" minden sajt lncra kilistzza azoknak a szablyoknak a szmt, melyeknek clpontja az adott sajt lnc. Ennek 0-nak kell lennie a lnc trlse eltt. A lnc nevnek elhagysval az sszes lnc sszes szablyt kilistzzuk. Az "-L" paranccsal 3 opcit hasznlhatsz: az "-n" (numeric) opci megvja az iptablest attl, hogy a szablyokban szerepl IP-cmek feloldsa rdekben esetleg kls nvszerverhez forduljon, ezzel megakadlyozza a hossz vrakozsokat. Termszetesen ez az opci azt is jelenti, hogy a TCP s UDP portok is inkbb szmokknt jelennek meg mint nevekknt. A "-v" opci megmutatja neked a szablyokhoz tartoz valamennyi adatot (pldul a szablyra illeszked csomagok szma s ezek egyttes mrete, az interfszek, a TOS sszehasonlts). Egybknt ezek nem kerlnnek listzsra. Jegyezd meg, hogy a csomag s byteszmllk kapcsol nlkl a "K", "M" vagy "G" uttaggal mutatjk meg rtkket, jelezve annak 1000szeres, 1 000 000-szoros vagy 1 000 000 000-szoros voltt. Az "-x" (expand numbers) kapcsolval az rtkek teljes szmokknt lesznek megmutatva.

Szmllk nullzsa
Hasznos, ha kpes vagy a szmllk lenullzsra bizonyos idkznknt. Erre a "-Z" parancsot alkalmazhatod. Ttelezzk fel a kvetkezt:
#iptablesLFORWARD #iptablesZFORWARD #

A fenti pldban a csomagok tgyalogoltak az "-L" s a "-Z" parancsokon is. Hogy ezt elkerld, s lehetv tedd a szmllk olvass kzbeni nullzst, hasznld a kt parancsot egytt.

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

Linux 2.4 Csomagszr HOWTO: Az iptables hasznlata

10. oldal

Irnyelv (policy) lltsa


A csomagoknak lncok kztti vndorlsa kapcsn mr emltettk, mi trtnik, ha a csomag elri egy beptett lnc vgt. Ez esetben a lnc irnyelve hatrozza meg a csomag sorst. Csak a beptett lncoknak (INPUT, OUTPUT and FORWARD) van irnyelvk, mivel ha a csomag egy beptett lnc vgt ri el, nincs lehetsge r, hogy az elz lnc kvetkez szablyra ugorjon, mint ahogy errl feljebb beszltnk. Az irnyelv lehet: ACCEPT vagy DROP, pldul:
#iptablesPFORWARDDROP #

Kvetkez Elz Tartalom

http://www.szabilinux.hu/iptables/chapter7.html

2013.09.23. 22:15:55

You might also like