Dokončenie príkladu skriptu CGI na blokovanie prístupu

linux_server.jpg V pre­doš­lej čas­ti sme za­ča­li tvo­riť kon­krét­ny prík­lad blo­ko­va­nia prís­tu­pu na inter­net z lo­kál­nej po­čí­ta­čo­vej sie­te. Uvied­li sme, že asi naj­efek­tív­nej­šou me­tó­dou bu­de za­ha­dzo­va­nie pa­ke­tov po­mo­cou prí­ka­zu ip­tab­les na zá­kla­de ad­re­sy IP blo­ko­va­né­ho po­čí­ta­ča. Vy­tvo­ri­li sme si dva shellov­ské skrip­ty vyp a zap. Tie sme oba­li­li do skrip­tov CGI vyp.cgi a zap.cgi, kto­ré sú ulo­že­né v ad­re­sá­ro­vej štruk­tú­re webo­vé­ho server­a Apa­che. Te­raz bu­de­me v na­šom prík­la­de pok­ra­čo­vať.

Hlav­ný skript
Vy­pí­nať a za­pí­nať prís­tup na inter­net by sme do­ká­za­li už aj po­mo­cou spo­me­nu­tých skrip­tov CGI. Sta­čí, ak do ľu­bo­voľ­né­ho inter­ne­to­vé­ho pre­hlia­da­ča za­dá­me ad­re­su v tva­re

http://192.168.1.1/cgi-bin/vyp.cgi

Spus­tí­me tým skript blo­ku­jú­ci prís­tup. Ob­dob­ne za­da­ním prí­ka­zu

http://192.168.1.1/cgi-bin/zap.cgi

spus­tí­me skript od­stra­ňu­jú­ci blo­ko­va­nie.

Efek­tnej­šie sa zdá vy­tvo­re­nie jed­nej in­teg­ro­va­nej inter­ne­to­vej strán­ky, kde by vy­pí­na­nie aj za­pí­na­nie bo­li na jed­nom mies­te. Na vý­pi­se č. 1 je uve­de­ný zdro­jo­vý kód ta­kej­to jed­no­du­chej strán­ky.

<html>
<head>
<tit­le>Vy­pi­na­nie a za­pi­na­nie inter­ne­tu na uceb­ni</tit­le>
</head>
<bo­dy>
<h1>Vy­pi­na­nie a za­pi­na­nie inter­ne­tu na uceb­ni</h1>
<p>
<form ac­tion="/cgi-bin/vyp.cgi" met­hod="get" na­me="on">
<in­put ty­pe=sub­mit va­lue="Vy­pni inter­net">
</form>
<p>
<form ac­tion="/cgi-bin/zap.cgi" met­hod="get" na­me="off">
<in­put ty­pe=sub­mit va­lue="Za­pni inter­net">
</form>
<p>
</bo­dy>
</html>

Pod­sta­ta strán­ky
Skla­dá sa z jed­no­du­chých prí­ka­zov (ta­gov) ja­zy­ka HTML na tvor­bu inter­ne­to­vých strá­nok. Zá­kla­dom sú dva pá­ro­vé ta­gy <html> a </html> . Me­dzi ni­mi sa na­chá­dza hla­vič­ka, tvo­re­ná tag­mi <head> a </head>, kde tag­mi <tit­le> a </tit­le> ur­ču­je­me nad­pis ok­na v zá­klad­nom pru­hu. Po­tom nas­le­du­je sek­cia – te­lo hlav­nej čas­ti prog­ra­mu – uzav­re­tá me­dzi tag­mi <bo­dy> a </bo­dy>. Ta­gy <h1> a </h1> tvo­ria nad­pis textu, te­da text „Vy­pi­na­nie a za­pi­na­nie inter­ne­tu na uceb­ni“. Jed­no­du­chý tag <p> spô­so­bí vy­tvo­re­nie no­vé­ho od­se­ku.

Veľ­mi dô­le­ži­té sú dva zá­pi­sy me­dzi tag­mi <form> a </form>. Tie vy­tvo­ria for­mu­lár, do kto­ré­ho mož­no vkla­dať jed­not­li­vé pr­vky for­mu­lá­ra. Na správ­nu prá­cu for­mu­lá­ra sú dô­le­ži­té dva at­ri­bú­ty – AC­TION a MET­HOD. Pr­vý z nich slú­ži na ur­če­nie ad­re­sy skrip­tu CGI, kto­rý bu­de ob­sah for­mu­lá­ra spra­cú­vať. V pr­vom prí­pa­de to bu­de skript vyp.cgi, kto­rý le­ží na re­la­tív­nej ad­re­se /cgi-bin/. V dru­hom prí­pa­de je to skript zap.cgi.

Dru­hý pa­ra­me­ter MET­HOD ur­ču­je me­tó­du, kto­rá sa pri od­os­la­ní dát pou­ži­je, v tom­to prí­pa­de GET. Pa­ra­me­ter NA­ME tvo­rí hod­no­tu for­mu­lá­ra. Vo vy­tvo­re­nom for­mu­lá­ri je na­de­fi­no­va­ný je­den ele­ment pr­vku in­put. Ty­pom sub­mit vy­tvo­rí­me tla­čid­lo na od­os­la­nie for­mu­lá­ra a pa­ra­met­rom va­lue vy­tvo­rí­me prís­luš­ný ná­pis na tla­čid­le. Tak­to vy­tvo­re­ný sú­bor po­me­nu­je­me vy­pzap.htm a ulo­ží­me do ad­re­sá­ra webo­vé­ho server­a, te­da nap­rík­lad /var/www/html/. Po­tom sta­čí už len do edi­tač­né­ho riad­ka vhod­né­ho inter­ne­to­vé­ho pre­hlia­da­ča za­dať ad­re­su server­a a me­no sú­bo­ru, te­da nap­rík­lad

http://192.168.1.1/vy­pzap.htm

Ak sme uro­bi­li všet­ko správ­ne, na ob­ra­zov­ke po­čí­ta­ča sa zob­ra­zí ok­no po­dob­né to­mu na ob­ráz­ku č. 1.

linux_prakticky OBR1.bmp
Obr. 1

Ako to fun­gu­je
Po zob­ra­ze­ní hlav­nej strán­ky vy­pzap.htm (obr. č. 1) mô­že­me ov­lá­dať prís­tup na inter­net kli­ka­ním na dve tla­čid­lá. Po klik­nu­tí na tla­čid­lo s ná­pi­som Vy­pni inter­net sa spus­tí skript CGI vyp.cgi. Ten za­vo­lá ďal­ší shellov­ský skript vyp (poz­ri vý­pi­sy v pred­chá­dza­jú­cej čas­ti). Je­ho úlo­hou je spus­tiť sú­bor prí­ka­zov ip­tab­les, kto­rý­mi sa v re­ťa­zi IN­PUT nas­ta­ví za­ha­dzo­va­nie pa­ke­tov, kto­ré sme­ro­va­li von z lo­kál­nej po­čí­ta­čo­vej sie­te do inter­ne­tu. Ak da­ný pa­ket za­ho­dí­me, ne­mô­že naň prísť ani ni­ja­ká od­po­veď, a tak sa zdá, že prís­tup na inter­net je blo­ko­va­ný. Zá­ro­veň skript CGI vy­tvo­rí (sek­ciou web da­ta) ma­lú inter­ne­to­vú strán­ku, po­dob­nú tej na ob­ráz­ku č. 2.

linux_prakticky OBR2.bmp
Obr. 2

Klik­nu­tím na lin­ku Chod na hlav­nu stran­ku sa vrá­ti­me k ob­ráz­ku č. 1.

Po klik­nu­tí na tla­čid­lo s ná­pi­som Za­pni inter­net sa spus­tí skript CGI zap.cgi, kto­rý za­vo­lá ďal­ší shellov­ský skript zap. Ten svo­ji­mi prí­kaz­mi ip­tab­les vy­ma­že z re­ťa­ze IN­PUT za­ha­dzo­va­nie pa­ke­tov. Prís­tup do inter­ne­tu je tak po­vo­le­ný. Zá­ro­veň skript CGI vy­tvo­rí (sek­ciou web da­ta) ma­lú inter­ne­to­vú strán­ku, po­dob­nú tej na ob­ráz­ku č. 3.

linux_prakticky OBR3.bmp
Obr. 3

Úpra­vy
Uve­de­ný prík­lad je nao­zaj jed­no­du­chý. Už na­poh­ľad vi­dí­me, že ak v ľu­bo­voľ­nom ča­se spus­tí­me strán­ku vy­pzap.htm, ne­má­me žiad­nu in­for­má­ciu o sta­ve prís­tu­pu na inter­net, te­da či je po­vo­le­ný ale­bo už blo­ko­va­ný. Ne­vie­me, aký je pred­chá­dza­jú­ci stav tla­či­diel. Pre­to by bo­lo vhod­né, ke­by sa stav tla­či­diel uk­la­dal do po­moc­né­ho sú­bo­ru, kto­rý by sa pri kaž­dom spus­te­ní strán­ky vy­pzap.htm pre­čí­tal a na ob­ra­zov­ke by sa zob­ra­zi­lo len to tla­čid­lo, kto­ré by pre da­nú čin­nosť bo­lo ak­tuál­ne. Eš­te pres­nej­šie by bo­lo par­so­va­nie vý­stu­pu prí­ka­zu ip­tab­les –L IN­PUT (poz­ri pred­chá­dza­jú­cu časť), aby sme zis­ti­li, či sku­toč­ne doš­lo k nas­ta­ve­niu za­ha­dzo­va­nia (DROP) prís­luš­ných pa­ke­tov, prí­pad­ne či doš­lo k zma­za­niu tej­to čas­ti.

Efek­tív­na úp­ra­va by bo­la, ke­by bo­lo mož­né od­pá­jať jed­not­li­vé po­čí­ta­če. Čas­to sa stá­va, že štu­dent spl­ní úlo­hu skôr, ak je mo­ti­vo­va­ný po­vo­le­ním sur­fo­vať na inter­ne­te. Po spl­ne­ní úlo­hy by bo­lo mož­né jed­no­du­chým klik­nu­tím na ikon­ku po­čí­ta­ča či tla­čid­lo s je­ho ozna­če­ním po­vo­liť prís­tup na inter­net len kon­krét­ne­mu po­čí­ta­ču, za­tiaľ čo os­tat­ní by bo­li na­ďa­lej blo­ko­va­ní.

Mož­né prob­lé­my
Tre­ba poz­na­me­nať, že v niek­to­rých dis­tri­bú­ciách mô­žu pri im­ple­men­tá­cii toh­to prík­la­du nas­tať ur­či­té prob­lé­my. V pr­vom ra­de sa mô­že stať, že skript CGI sí­ce za­vo­lá shellov­ský skript vyp (ale­bo zap), ten však pot­re­bu­je na spus­te­nie prí­ka­zu ip­tab­les prá­va roo­ta. Skript beží pod ta­ký­mi prá­va­mi, pod aký­mi beží webo­vý server. Pod­ľa kon­fi­gu­rač­né­ho sú­bo­ru httpd.conf ten­to server (spra­vid­la) beží s prá­va­mi pou­ží­va­te­ľa aj sku­pi­ny s náz­vom Apa­che. Ten­to prob­lém sa dá rie­šiť (tak ako všet­ko v Li­nuxe) via­ce­rý­mi pos­tup­mi. Jed­ným z nich je vy­uži­tie wrap­pe­ra suexec. Ale o tom na­bu­dú­ce.

Ďal­šie čas­ti >>

Zdroj: Infoware 5/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