Riadenie prístupu k internetu

linux_server.jpg V pred­chád­za­jú­cich čas­tiach sme po­sta­vi­li náš po­mer­ne dob­rý fi­rewall na bá­ze li­nuxové­ho server­a. Vy­uži­li sme služ­bu net­fil­ter, kde sme po­mo­cou nás­tro­ja ip­tab­les nas­ta­vi­li rôz­ne pra­vid­lá fi­rewal­lu. Vý­ho­dou tak­to vy­tvo­re­né­ho fi­rewal­lu je je­ho uni­ver­zál­nosť, te­da mož­nosť viac­ná­sob­né­ho po­uži­tia pri mi­ni­mál­nej zme­ne je­ho pa­ra­met­rov. Zá­ro­veň za po­mo­ci nás­tro­ja ip­tab­les mô­že­me fi­rewall mo­di­fi­ko­vať, a to tr­va­le ale­bo len do­čas­ne. A to vy­uži­je­me v tej­to čas­ti.

Ria­de­nie prís­tu­pu k inter­ne­tu
Spo­mí­na­te si eš­te na prin­cíp služ­by net­fil­ter? Na ta­buľ­ky, re­ťa­ze a pra­vid­lá? Prá­ve s ni­mi bu­de­me ten­to­raz pra­co­vať. Pred­stav­me si, že má­me ta­ký­to fi­rewall v škol­skej či po­dni­ko­vej sie­ti a z ur­či­tých dô­vo­dov chce­me ria­diť prís­tup k inter­ne­tu pre jed­not­li­vých účas­tní­kov lo­kál­nej sie­te. Asi naj­vy­puk­lej­ší prob­lém je v ško­lách. Štu­den­ti po­čas vy­svet­ľo­va­nia no­vej lát­ky či po­čas skú­ša­nia v po­čí­ta­čo­vých učeb­niach ra­di sur­fu­jú po inter­ne­te na­mies­to to­ho, aby dá­va­li po­zor. Hlav­ne vte­dy, ak sa no­vá lát­ka pre­be­rá pria­mo na po­čí­ta­či (nap­rík­lad texto­vý edi­tor, prog­ra­mo­va­nie a po­dob­ne). Ak vy­uču­jú­ci ne­má mož­nosť „uzam­knúť“ inter­net, deg­ra­du­je to vý­uč­bu a je to ná­roč­né pre vy­uču­jú­ce­ho aj os­tat­ných štu­den­tov. My si však vie­me po­môcť!

Po­znám­ka:
Mož­no sa nie­ko­mu zdá, že sme to už pre­be­ra­li. Áno, už sme to ok­ra­jo­vo spo­me­nu­li dáv­nej­šie, len sme eš­te ne­ro­zu­me­li, ako a pre­čo to fun­gu­je. No a te­raz si to eš­te zlep­ší­me.

Prin­cíp ria­de­nia
Naj­prv vy­chád­zaj­me z mo­de­lo­vej si­tuácie na­šej sie­te. Nech má­me lo­kál­nu sieť s IP ad­re­sou 192.168.10.x a li­nuxový server, na kto­rom beží proxy server (squid) a zá­ro­veň aj fi­rewall (net­fil­ter). Už vie­me, že proxy server beží na po­rte 3128, te­da ak chce­me pris­tú­piť k inter­ne­tu, klien­tske prog­ra­my mu­sia byť nas­ta­ve­né tak, aby sa ob­ra­ca­li na proxy server. A prá­ve tú­to vlas­tnosť sie­te vy­uži­je­me na ria­de­nie prís­tu­pu – ak nec­hce­me, aby klien­tsky po­čí­tač mo­hol pris­tú­piť na inter­net, všet­ky po­žia­dav­ky na proxy server za­ho­dí­me. Prin­cíp ria­de­nia je v pri­da­ní pra­vid­la do re­ťa­ze IN­PUT, te­da nap­rík­lad tak­to:

ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.31 --dport 3128 -j DROP

Len na zo­pa­ko­va­nie – (pa­ra­me­ter I) pri­dá pra­vid­lo do re­ťa­ze IN­PUT, kto­ré všet­ky TCP pa­ke­ty pric­hád­za­jú­ce na roz­hra­nie eth1 fi­rewal­lu, po­chád­za­jú­ce z klien­tske­ho po­čí­ta­ča s ad­re­sou 192.168.10.31 a sme­ru­jú­ce na po­rt 3128 (te­da na proxy server) ZA­HODÍ (drop)!

Po pri­da­ní toh­to pra­vid­la sa už po­čí­tač s tou­to ad­re­sou na inter­ne­to­vé strán­ky ne­dos­ta­ne. Zá­ro­veň os­tá­va úpl­ne funkč­ný na bež­nú vý­uč­bu, ba do­kon­ca mu nič neb­rá­ni pra­co­vať v lo­kál­nej sie­ti, te­da mô­že zdie­ľať sie­ťo­vé pros­tried­ky, ako sú sie­ťo­vé dis­ky, tla­čiar­ne a po­dob­ne. Ak chce­me opä­tov­ne to­mu­to po­čí­ta­ču po­vo­liť prís­tup na inter­net, mu­sí­me to­to pra­vid­lo z re­ťa­ze IN­PUT vy­ma­zať. To do­siah­ne­me prí­ka­zom:

ip­tab­les -D IN­PUT -i eth1 -p TCP -s 192.168.10.31 --dport 3128 -j DROP

(pa­ra­me­ter D zna­čí vý­maz pra­vid­la).

Fi­lo­zo­fia ria­de­nia
Maj­me v na­šej po­čí­ta­čo­vej sie­ti 10 po­čí­ta­čov – je­den uči­teľ­ský a de­väť žiac­kych. Uči­teľ­ský po­čí­tač pred­sa ne­bu­de­me blo­ko­vať, pre­to nás v tom­to prí­pa­de ne­zau­jí­ma. Žiac­ke po­čí­ta­če ma­jú IP ad­re­sy v roz­sa­hu 192.168.10.31 až 192.168.10.39. Chce­me, aby sme moh­li ria­diť prís­tup kaž­dé­ho po­čí­ta­ča jed­not­li­vo, ale aj na­raz ako ce­lú sku­pi­nu. Na zá­kla­de na­šich pred­chád­za­jú­cich skú­se­nos­tí vy­tvo­rí­me pa­ra­met­ri­zo­va­né skrip­ty – de­väť pre kaž­dý žiac­ky po­čí­tač jed­not­li­vo a de­sia­ty spo­loč­ný pre všet­ky žiac­ke po­čí­ta­če na­raz. Vy­tvor­me si na ukáž­ku skript pre pr­vý po­čí­tač:

#! /bin/bash
#
# Start/Stop skript
#
# chkcon­fig: 2345 07 93
# opis: prog­ram ria­dia­ci pris­tup k inter­ne­tu pre ziac­ky po­ci­tac PC1
#
# (c) mior 

prog="pris­tup k Inter­ne­tu pre PC1"
VER­SION="0.0.1"

start() {
  trap "" 2 3
  ec­ho "Po­vo­lu­jem $prog ($VER­SION) "
  ip­tab­les -D IN­PUT -i eth1 -p TCP -s 192.168.10.31 --dport 3128 -j DROP
  trap - 2 3
}

stop() {
  trap "" 2 3
  ec­ho "Za­sta­vu­jem $prog: "
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.31 --dport 3128 -j DROP  trap - 2 3
}	

ca­se "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  
  *)
	ec­ho $"Po­uzi­tie: $0 {start|stop}"
	exit 1
esac

exit $?

Vy­ko­ná­va­nie skrip­tu je nám už zná­me – pa­ra­met­rom stop sa pra­vid­lo za­ve­die (te­da sa za­blo­ku­je prís­tup k inter­ne­tu), pa­ra­met­rom start sa pra­vid­lo zma­že a prís­tup k inter­ne­tu sa ob­no­ví (mu­sí­me si uve­do­miť, že tu je opač­ná po­li­ti­ka – naj­prv za­sta­vu­je­me, po­tom po­vo­ľu­je­me).

Uve­de­ný skript ulo­ží­me pod náz­vom intpc1 do vhod­né­ho ad­re­sá­ra, nap­rík­lad tam, kde má­me aj skript fi­rewal­lu – do /etc/sys­con­fig. Nes­mie­me za­bud­núť nas­ta­viť spus­ti­teľ­nosť skrip­tu prí­ka­zom

 [root@server /] # chmod 744 /etc/sys­con­fig/intpc1

Po­tom sa skript po­uží­va tak­to: Ak chce­me prís­tup za­blo­ko­vať, za­dá­me prí­kaz

 [root@server /] # /etc/sys­con­fig/intpc1 stop

Ak chce­me prís­tup opä­tov­ne po­vo­liť, za­dá­me prí­kaz

 [root@server /] # /etc/sys­con­fig/intpc1 start

Uve­de­ný skript prip­ra­ví­me pre os­tat­né žiac­ke po­čí­ta­če. Skrip­ty bu­dú veľ­mi po­dob­né – bu­dú sa lí­šiť iba v IP ad­re­se žiac­ke­ho po­čí­ta­ča a v po­lož­ke prog, aby sme moh­li roz­poz­ná­vať, kto­rý po­čí­tač sme za­blo­ko­va­li. Aj náz­vy skrip­tov bu­dú po­dob­né, te­da od intpc2 po intpc9 (za­se nes­mie­me za­bud­núť na nas­ta­ve­nie spus­ti­teľ­nos­ti, inak sa bu­de­me ču­do­vať, pre­čo to ne­fun­gu­je).

Od­te­raz mô­že­me žia­kom ria­diť prís­tup k inter­ne­tu jed­not­li­vo, nap­rík­lad po spl­ne­ní ur­či­tej úlo­hy a po­dob­ne. Ak však bu­de­me chcieť za­ká­zať ale­bo po­vo­liť prís­tup k inter­ne­tu pre ce­lú trie­du na­raz, asi by bo­lo dosť únav­né vy­pi­so­vať na prí­ka­zo­vom riad­ku jed­not­li­vé skrip­ty od intpc1 po intpc9. Pre­to si te­raz vy­tvo­rí­me skript pre všet­kých de­väť po­čí­ta­čov a naz­ve­me ho in­tall. Aj ten bu­de veľ­mi po­dob­ný ako ukáž­ko­vý skript, len v sek­cii stop a start bu­dú uve­de­né všet­ky pra­vid­lá – nap­rík­lad tak­to:

.
.
.
stop() {
  trap "" 2 3
  ec­ho "Za­sta­vu­jem $prog: "
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.31 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.31 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.32 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.33 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.34 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.35 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.36 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.37 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.38 --dport 3128 -j DROP
  ip­tab­les -I IN­PUT -i eth1 -p TCP -s 192.168.10.39 --dport 3128 -j DROP

  trap - 2 3
}
.
.
.

Vzo­ro­vé po­uži­tie
No a ako po­uží­vať tie­to skrip­ty? Pred­pok­la­dá­me, že na uči­teľ­skom po­čí­ta­či má­me nain­šta­lo­va­ný vhod­ný nás­troj na prís­tup ku kon­zo­le li­nuxové­ho server­a (nap­rík­lad prog­ram put­ty pre MS Win­dows). Na za­čiat­ku ho­di­ny za­dá­me prí­kaz:

 [root@server /] # /etc/sys­con­fig/in­tall stop

Tým blo­ku­je­me inter­net pre všet­kých žia­kov. Vy­svet­lí­me no­vú lát­ku, za­dá­me úlo­hu do cvi­če­nia. Keď nap­rík­lad žia­ci za po­čí­tač­mi PC2, PC4 a PC5 úlo­hu spl­nia, po­vo­lí­me im inter­net prí­kaz­mi intpc2 start, intpc4 start a intpc5 start. Os­tat­ní žia­ci ho ma­jú stá­le za­blo­ko­va­ný. Keď do­kon­čia úlo­hu aj os­tat­ní, mô­že­me im prís­tup k inter­ne­tu po­vo­liť ďal­ší­mi prí­kaz­mi intpcX start (kde X je čís­lo po­čí­ta­ča) ale­bo spo­loč­ným prí­ka­zom in­tall start. (Nič to, že dá­me zma­zať pra­vid­lá, kto­ré už bo­li zma­za­né prí­kaz­mi intpc2, intpc4 a intpc5. Je to len drob­ná koz­me­tic­ká chy­bič­ka.)

Mož­no nás na­pad­ne aj iná úp­ra­va uve­de­né­ho skrip­tu, mož­nos­tí je nie­koľ­ko – jed­na z nich je mať iba je­den skript a za­dá­vať ná­zov po­čí­ta­ča ako dru­hý pa­ra­me­ter na prí­ka­zo­vom riad­ku, nap­rík­lad inter­net stop pc1, inter­net start all. Je to len a len na na­šej krea­ti­vi­te!

Ďal­šie čas­ti >>

Zdroj: Infoware 3/2009



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