Nástroj iptables

linux_server.jpg V pred­chád­za­jú­cej čas­ti sme sa ve­no­va­li ta­buľ­kám a re­ťa­ziam. Vy­svet­li­li sme si, čo sú to pra­vid­lá, po­dmien­ky a ak­cie, na­ko­niec sme uká­za­li jed­no­duc­hý prík­lad ta­ké­ho pra­vid­la. Ten­to­raz sa bu­de­me pra­vid­la­mi za­obe­rať po­drob­nej­šie.

Prec­hod pa­ke­tu net­filtrom
Už te­da vie­me, že pa­ke­ty sa v pros­tre­dí net­filtra vy­hod­no­cu­jú na zá­kla­de ur­či­tých pra­vi­diel, kto­ré po­zos­tá­va­jú z po­dmien­ky a nás­led­nej ak­cie. Pra­vid­lá sa za­pi­su­jú do tak­zva­ných re­ťa­zí, kto­ré sú ulo­že­né v jed­not­li­vých ta­buľ­kách, ulo­že­ných v pros­tre­dí net­filtra. Pra­vid­lá sa tvo­ria po­mo­cou nás­tro­ja ip­tab­les. Ako vy­ze­rá ulo­že­nie ta­bu­liek, re­ťa­zí a pra­vi­diel v pros­tre­dí net­filtra, to zná­zor­ňu­je ob­rá­zok č. 1.

linux_prakticky OBR.bmp
Obr. 1

A ako to fun­gu­je?
Mô­žu nas­tať dva prí­pa­dy – pa­ket pric­hád­za do fi­rewal­lu zo sie­te ale­bo po­chád­za z lo­kál­ne­ho sys­té­mu (te­da pria­mo z fi­rewal­lu).

Pric­hád­za­jú­ce pa­ke­ty
Pr­vý prí­pad je, že dá­to­vý pa­ket pric­hád­za (vstu­pu­je) do fi­rewal­lu zo sie­te (network). Naj­prv prej­de ta­buľ­kou mang­le, v kto­rej je re­ťaz PRE­ROU­TING, po­tom ta­buľ­kou nat a jej re­ťa­zou PRE­ROU­TING.

Po­znám­ka:
Po­zor, nie sú to tie is­té re­ťa­ze, aj keď ma­jú rov­na­ké náz­vy. Kaž­dá z nich je ulo­že­ná v inej ta­buľ­ke.

Ak v týc­hto re­ťa­ziach ne­bo­li nas­ta­ve­né ni­ja­ké pra­vid­lá, pa­ket ni­mi prec­hád­za bez zme­ny. Po­tom doc­hád­za k rou­to­va­niu, te­da k roz­hod­nu­tiu, čo s pa­ke­tom ďa­lej. Po­dľa cie­ľo­vej ad­re­sy pa­ke­tu mô­žu nas­tať dve mož­nos­ti:
- ak je pa­ket ur­če­ný pre fi­rewall, te­da sme­ru­je dov­nút­ra lo­kál­ne­ho sys­té­mu, prej­de ta­buľ­ka­mi mang­le a fil­ter a ich re­ťa­za­mi IN­PUT a na­ko­niec sa spra­cu­je v lo­kál­nom pro­ce­se
- ak pa­ket nie je ur­če­ný pre lo­kál­ny sys­tém, zna­me­ná to, že iba prec­hád­za fi­rewallom a mu­sí byť pre­pos­la­ný ďa­lej, te­da sme­ru­je do sie­te (nap­rík­lad inou sie­ťo­vou kar­tou ale­bo iným roz­hra­ním), prec­hád­za pa­ket ta­buľ­ka­mi a re­ťa­za­mi (v zá­tvor­kách) mang­le (FORWARD, PO­STROU­TING), fil­ter (FORWARD) a nat (PO­STROU­TING)

Lo­kál­ne pa­ke­ty
Dru­hý prí­pad je, ak dá­to­vý pa­ket je vy­tvo­re­ný lo­kál­nym sys­té­mom. Tak­to vy­tvo­re­né pa­ke­ty prec­hád­za­jú ta­buľ­ka­mi mang­le, nat a fil­ter a ich re­ťa­za­mi OUT­PUT a PO­STROU­TING.

Štan­dar­dná po­li­ti­ka
Tre­ba si uve­do­miť, že v kaž­dej re­ťa­zi – aj keď je eš­te práz­dna – je pred­nas­ta­ve­ná tak­zva­ná štan­dar­dná po­li­ti­ka. To zna­me­ná, že ak sa pre žiad­ne pra­vid­lo v re­ťa­zi ne­náj­de adek­vát­na ak­cia a pa­ket prej­de všet­ký­mi pra­vid­la­mi bez „úho­ny“ až na ko­niec re­ťa­ze, vy­ko­ná sa ak­cia, kto­rá je štan­dar­dne nas­ta­ve­ná – štan­dar­dná po­li­ti­ka. Tá je vo všet­kých re­ťa­ziach de­faul­tne pred­nas­ta­ve­ná na ak­ciu AC­CEPT, te­da pa­ket ňou po­koj­ne prej­de bez zmien. Štan­dar­dnú po­li­ti­ku mô­že­me zme­niť (a aj to čas­to tre­ba, ako si uká­že­me nes­kôr).

Štruk­tú­ra nás­tro­ja ip­tab­les
Ako vie­me, pra­vid­lá sa do pros­tre­dia net­filtra za­dá­va­jú po­mo­cou nás­tro­ja ip­tab­les. Ten má pres­ne pred­pí­sa­nú štruk­tú­ru pre jed­not­li­vé čin­nos­ti.

Syn­tak­tic­ký zá­pis je:

ip­tab­les --prí­kaz (ná­zov ta­buľ­ky ná­zov re­ťa­ze...) po­dmien­ka ak­cia

Prí­kaz
Prí­kaz sa VŽDY za­čí­na kľú­čo­vým slo­vom ip­tab­les, za kto­rým nas­le­du­je kon­krét­ny prí­kaz (com­mand) a os­tat­né pa­ra­met­re (nie všet­ky sa po­uží­va­jú na­raz, zá­le­ží na prí­ka­ze). Prí­kaz mô­že mať dve for­my, úpl­nú a skrá­te­nú (po­zná­me aj z iných nás­tro­jov v Li­nuxe). Obe for­my sú ek­vi­va­len­tné a zá­le­ží len na nás, kto­rú bu­de­me po­uží­vať. Pa­ra­met­re de­fi­nu­jú čin­nosť prí­ka­zu. Naj­čas­tej­šie po­uží­va­né prí­ka­zy sú (na za­čiat­ku je úpl­ný tvar, v zá­tvor­ke je skrá­te­ná for­ma):

--ap­pend (-A): pri­dá pra­vid­lo na ko­niec re­ťa­ze
--de­le­te (-D): od­strá­ni pra­vid­lo z re­ťa­ze, ur­če­né čís­lom ale­bo špe­ci­fi­ká­ciou
--in­sert (-I): vlo­ží pra­vid­lo na mies­to ur­če­né čís­lom pra­vid­la. Ak ne­za­dá­me čís­lo, pra­vid­lo sa za­ra­dí na za­čia­tok re­ťa­ze
--rep­la­ce (-R): nah­ra­dí pô­vod­né pra­vid­lo no­vým pra­vid­lom
--list (-L): zob­ra­zí zoz­nam pra­vi­diel v re­ťa­zi. Ak vy­nec­há­me ná­zov re­ťa­ze, zob­ra­zí sa zoz­nam vo všet­kých re­ťa­ziach
--flush (-F): od­strá­ni všet­ky pra­vid­lá z re­ťa­ze. Ak vy­nec­há­me ná­zov re­ťa­ze, vy­ma­žú sa pra­vid­lá vo všet­kých re­ťa­ziach
--ze­ro (-Z): vy­nu­lu­je hod­no­tu všet­kých pa­ke­to­vých a baj­to­vých čí­ta­čov
--new-chain (-N): vy­tvo­rí po­uží­va­te­ľom de­fi­no­va­ný re­ťa­zec so za­da­ným me­nom
--de­le­te-chain (-X): od­strá­ni po­uží­va­te­ľom de­fi­no­va­ný re­ťa­zec so za­da­ným me­nom. Ak ne­za­dá­me me­no re­ťa­ze, od­strá­ni všet­ky re­ťaz­ce de­fi­no­va­né po­uží­va­te­ľom
--re­na­me-chain (-E): zme­ní sta­ré me­no re­ťa­ze na no­vé me­no
--po­li­cy (-P): de­fi­nu­je štan­dar­dnú po­li­ti­ku re­ťa­ze
--help (-h): zob­ra­zí po­moc­ní­ka nás­tro­ja ip­tab­les

Pa­ra­met­re prí­ka­zu
Med­zi naj­čas­tej­šie po­uží­va­né pa­ra­met­re prí­ka­zu pa­tria:
ná­zov ta­buľ­ky – ak ho ne­za­dá­me, štan­dar­dne sa sta­no­vu­je ta­buľ­ka IN­PUT (kto­rá sa naj­čas­tej­šie po­uží­va)
ná­zov re­ťa­ze – mô­že to byť štan­dar­dná re­ťaz v da­nej ta­buľ­ke ale­bo re­ťaz vy­tvo­re­ná (de­fi­no­va­ná) po­uží­va­te­ľom
čís­lo pra­vid­la
pre­no­so­vý pro­to­kol
vstup­ný inter­fa­ce
vý­stup­ný inter­fa­ce
po­rt
a iné

Po­dmien­ka
Po­dmien­ka (ale­bo viac po­dmie­nok) umož­ňu­je pres­ne ur­čiť pa­ke­ty, kto­rých sa da­né pra­vid­lo tý­ka. Ak sa po­dmien­ka za­čí­na zna­kom "!", pla­tí jej ne­gá­cia.

Ak­cia
Ak­cia ur­ču­je, čo sa sta­ne s pa­ke­tom, ak vy­ho­vie po­dmien­kam. Niek­to­ré ak­cie umož­ňu­jú (vy­ža­du­jú) za­dať aj ďal­šie pa­ra­met­re. Ako sme už spo­me­nu­li, naj­čas­tej­šie ak­cie sú AC­CEPT (po­vo­liť pa­ket) a DROP (za­ho­diť pa­ket). Ak­cia sa naj­čas­tej­šie ozna­ču­je po­mo­cou pa­ra­met­ra --jump (-j), kto­rým mô­že­me ur­čiť osud pa­ke­tu, kto­rý vy­ho­vie sta­no­ve­ným po­dmien­kam (ak chce­me filtro­vať pa­ke­ty, je ten­to pa­ra­me­ter po­vin­ný – bez ne­ho po­dmien­ka sku­toč­ne ne­má zmy­sel). Ďal­šia ak­cia mô­že byť QUEUE", "RE­TURN" ale­bo hod­no­ta plat­ná pre roz­ší­re­nie (LOG, RE­JECT, SNAT, MASQUERA­DE, DNAT, RE­DI­RECT a iné), ale­bo me­no re­ťa­ze, kto­rá bu­de spra­cú­vať pa­ket ďa­lej (uká­že­me si na kon­krét­nych prík­la­doch).

Prík­lad štan­dar­dnej po­li­ti­ky
Aby sme si oz­rej­mi­li spo­me­nu­té všeo­bec­né zá­pi­sy, uve­die­me nie­koľ­ko ilus­tra­tív­nych prík­la­dov tvor­by prí­ka­zov nás­tro­ja ip­tab­les. Spo­mí­na­li sme štan­dar­dnú po­li­ti­ku. Vie­me, že je všet­ko do­vo­le­né, te­da AC­CEPT. To však pre prí­pad­ný fi­rewall nie je vô­bec vhod­né. Pri tvor­be (aké­ho­koľ­vek) fi­rewal­lu pla­tí zá­sa­da: čo nie je do­vo­le­né, je za­ká­za­né. A tak naj­prv všet­ko za­ká­že­me a po­tom po­stup­ne jed­not­li­vý­mi pra­vid­la­mi po­vo­ľu­je­me to, čo bu­de na čin­nosť server­a ne­vyh­nut­né. Pre­to hneď na za­čiat­ku nas­ta­ví­me štan­dar­dnú po­li­ti­ku jed­not­li­vých re­ťa­zí tak­to:

	ip­tab­les –P IN­PUT DROP
	ip­tab­les –P FORWARD DROP
	ip­tab­les –P OUT­PUT AC­CEPT

Čo to zna­me­ná?
Všet­ky pric­hád­za­jú­ce (IN­PUT) a prec­hád­za­jú­ce (FORWARD) pa­ke­ty bu­dú za­ho­de­né, len pa­ke­ty vy­tvo­re­né lo­kál­nym sys­té­mom a sme­ru­jú­ce do sie­te (OUT­PUT) bu­dú po­vo­le­né. Po­dob­ne by sme moh­li uviesť via­ce­ré prík­la­dy, ale asi naj­efek­tív­nej­šie to bu­de tak, že bu­de­me tvo­riť sku­toč­ný fi­rewall a na je­ho tvor­be si jed­not­li­vé prík­la­dy uká­že­me a vy­svet­lí­me. Tak­že na­bu­dú­ce za­čí­na­me naos­tro!

Ďal­šie čas­ti >>

Zdroj: Infoware 10/2008



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Li­nux prak­tic­ky ako server úvod
Linux ako server je pomerne zložitá technológia. Jej výhodou je určitá modularita, keď sa nemusí nastaviť celý server naraz, ale postupne. čítať »
 
Syn­chro­ni­zá­cia ča­su v Li­nuxe
V predchádzajúcich dvoch častiach sme si ukázali, že Linux a všeobecne open source softvér sa nenachádza iba v serveroch a počítačových sieťach, ale aj v iných zariadeniach bežnej domácej potreby a v oblasti hobby. čítať »
 
Za­ria­de­nia za­lo­že­né na Li­nuxe
V predchádzajúcej časti sme si spomenuli definície nie - ktorých pojmov z oblasti nášho záujmu, teda Linuxu. Vysvetlili sme si, čo je to Open Source, Public Domain, proprietárny softvér a GNU GPL. Tentoraz ukážeme, ako sa tieto pojmy využívajú v praxi. čítať »
 
Po­jmy z ob­las­ti
Tentoraz na chvíľu trochu odbočíme od bezpečnosti Linuxu a jeho siete. V tejto neštandardnej časti seriálu sa mu budeme venovať len okrajovo. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí II.
V predchádzajúcej časti sme sa začali zaoberať bezpečnosťou bezdrôtových sietí. Poukázali sme na rôzne faktory zneužitia siete, podstatu rizika a vysvetlili sme základné prvky bezpečnosti. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí I.
V predchádzajúcich častiach sme sa venovali bezpečnosti linuxového servera. Riešili sme firewall, bezpečnosť prístupu na internet, zaoberali sme sa demilitarizovanou zónou a podobne. čítať »
 
Údr­žba lo­gov – kon­fi­gu­rá­cia log­ro­ta­te
V predchádzajúcej časti sme sa venovali rotácii logov. Vysvetlili sme princíp ukladania logov, spôsob, ako sa rotujú, a uviedli sme niečo o tom, čo a ako treba nastaviť čítať »
 
Údr­žba lo­gov – ro­tá­cia
V predošlej časti sme sa zaoberali spôsobom logovania informácií na iný alebo vzdialený počítač a ukázali sme, ako riešiť problém s logovaním uzavretých procesov pomocou chroot. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter