Klopanie na linuxovú bránu

linux_server.jpg Na zá­kla­de po­dne­tu jed­né­ho z či­ta­te­ľov sa bu­de­me ve­no­vať té­me, ako zvý­šiť za­bez­pe­če­nie li­nuxové­ho server­a, ale pri­tom nep­rísť o mož­nosť vzdia­le­ne ho ov­lá­dať.

Pred­stav­me si si­tuáciu, že sme na na­šom li­nuxovom server­i za­ká­za­li prís­tup na po­rt ssh tak, že sa naň mô­že­me dos­tať len z vop­red ur­če­nej pra­cov­nej sta­ni­ce s kon­krét­nou IP ad­re­sou. Ak sa eš­te pa­mä­tá­me, do­siah­li sme to zá­pi­som pra­vid­la

$IP­TAB­LES -A IN­PUT -s 211.161.243.2 -j AC­CEPT

do skrip­tu fi­rewal­lu, čím sme po­vo­li­li prís­tup z IP ad­re­sy 211.161.243.2 (vy­mys­le­ná pre ten­to prík­lad) do li­nuxové­ho sys­té­mu. Je to cel­kom sluš­né za­bez­pe­če­nie, ale čo ak sa na li­nuxový server po­tre­bu­je­me pri­po­jiť z iné­ho ako z uve­de­né­ho po­čí­ta­ča? Ak ne­má­me mož­nosť zme­niť IP ad­re­su, čo je v prí­pa­de pev­ne da­nej ve­rej­nej ad­re­sy (sko­ro) ne­mož­né, na li­nuxový server sa ne­dos­ta­ne­me. Vte­dy by sa ho­dil ne­ja­ký špión, kto­rý by v server­i slie­dil, či ná­ho­dou nec­hce­me vstú­piť, a v prí­pa­de po­tre­by by nám ot­vo­ril dve­re.

Ta­ký slie­dič v Li­nuxe exis­tu­je. Vo­lá sa knockd (knoc­ker dae­mon) a je to ap­li­ká­cia, kto­rá po­tic­hu a pa­sív­ne beží na po­za­dí a na­čú­va sie­ťo­vej pre­vád­zke. Ak v ne­ja­kom pa­ke­te ob­ja­ví vop­red de­fi­no­va­nú sek­ven­ciu, kto­rá sa sna­ží pris­tú­piť na ur­če­né po­rty li­nuxové­ho server­a, vy­ko­ná do­hod­nu­tú ak­ciu. Sna­hu pris­tú­piť na ur­če­né po­rty na­zý­va­me klo­pa­nie. Od to­ho je od­vo­de­né aj me­no tej­to ap­li­ká­cie (knock = klo­pať).

Ap­li­ká­cia sa skla­dá z dvoch čas­tí – z dé­mo­na, kto­rý beží na po­za­dí, sle­du­je pre­vád­zku na sie­ti a ko­ná ak­cie, a klien­ta, kto­ré­ho úlo­hou je za­klo­pať na tie správ­ne po­rty v pres­ne de­fi­no­va­nom po­ra­dí. My tú­to schop­nosť dé­mo­na knockd vy­uži­je­me v sce­ná­ri pre vlas­tné po­tre­by. Nas­ta­ví­me ho tak, aby nás po správ­nom za­klo­pa­ní vpus­til do sys­té­mu po­rtom ssh z ľu­bo­voľ­né­ho po­čí­ta­ča na inter­ne­te.

Čo na to po­tre­bu­je­me a ako to pra­cu­je?
 nain­šta­lu­je­me dé­mo­na knockd na náš li­nuxový server,
 ur­čí­me si sek­ven­ciu po­rtov, kto­rá bu­de na­ším po­zná­va­cím zna­kom (ob­do­ba aké­ho­si hes­la),
 sta­no­ví­me ak­ciu, kto­rá sa má vy­ko­nať, ak bo­la roz­poz­na­ná správ­na sek­ven­cia za­klo­pa­nia na po­rty, a uve­die­me to v kon­fi­gu­rač­nom sú­bo­re dé­mo­na knockd,
 spus­tí­me dé­mo­na knockd na po­za­dí,
 po­dľa po­tre­by z klien­tskej sta­ni­ce „za­klo­pe­me“ na tie správ­ne dve­re (po­rty),
 dé­mon vy­ko­ná ak­ciu, kto­rá ot­vo­rí po­rt ssh pre po­čí­tač, z kto­ré­ho prá­ve klo­pe­me,
 vy­ko­ná­me po­treb­nú ad­mi­nis­tra­tív­nu čin­nosť na li­nuxovom server­i,
 po­klo­pa­ním na iné dve­re (te­da inou sek­ven­ciou po­rtov) spus­tí­me ak­ciu, kto­rá po­rt ssh za­se uza­vrie.

In­šta­lá­cia dé­mo­na knockd
Naj­prv nain­šta­lu­je­me dé­mo­na knockd. Stiah­ne­me ho zo strán­ky pro­jek­tu http://www.ze­rof­lux.org/pro­jects/knock, prí­pad­ne iných server­ov, kde mô­že­me náj­sť zdro­jo­vé kó­dy ale­bo ho­to­vé, vop­red prip­ra­ve­né ba­líč­ky pre prís­luš­nú li­nuxovú dis­tri­bú­ciu. Zá­ro­veň na uve­de­nej do­mov­skej strán­ke náj­de­me klien­ta knock pre iné ne­li­nuxové ope­rač­né sys­té­my, te­da pre Cygwin, MS Win­dows, Mac OS a do­kon­ca aj pre iP­ho­ne.

Kon­fi­gu­rá­cia
Pre­dov­šet­kým sta­no­ví­me sek­ven­ciu po­rtov, na kto­ré bu­de­me klo­pať. Mô­že­me vy­be­rať z po­rtov TCP ale­bo UDP, prí­pad­ne z oboch, a to v ce­lej do­vo­le­nej šká­le od 0 do 65535. Je zrej­mé, že je vhod­nej­šie vy­be­rať po­rty s čís­lom nad 1024. Zvo­lí­me si dve sek­ven­cie – ot­vá­ra­ciu a za­tvá­ra­ciu, v kaž­dej iné po­ra­die klo­pú­cich po­rtov. Nech na ot­vo­re­nie po­rtu ssh bu­de slú­žiť sek­ven­cia po­rtov 7000, 8000, 9000, na za­tvo­re­nie po­rtu ssh to bu­de sek­ven­cia klo­pú­cich po­rtov 9000, 8000, 7000. Ako pr­vú ak­ciu po­ža­du­je­me pri­da­nie no­vé­ho pra­vid­la (pa­ra­met­rom -I ) do fi­rewal­lu, kto­ré ot­vo­rí po­rt TCP 22 (ssh) pre IP ad­re­su klien­tskej sta­ni­ce. Na to po­sta­čí pra­vid­lo

/sbin/ip­tab­les -I IN­PUT -s %IP% -p tcp --dport 22 -j AC­CEPT

Pa­ra­me­ter %IP% zís­ka IP ad­re­su klien­ta z prís­luš­né­ho pa­ke­tu, ne­sú­ce­ho klo­pú­cu sek­ven­ciu. Dru­hou ak­ciou bu­de od­ob­ra­nie toh­to pra­vid­la z ta­buľ­ky fi­rewal­lu (pa­ra­met­rom -D). Na vý­pi­se č. 1 je prík­lad ob­sa­hu kon­fi­gu­rač­né­ho sú­bo­ru knockd.conf.

[openSSH]
sequen­ce    = 7000,8000,9000
seq_ti­meout = 5
com­mand     = /sbin/ip­tab­les -I IN­PUT -s %IP% -p tcp --dport 22 -j AC­CEPT
tcpflags    = syn

[clo­seSSH]
sequen­ce    = 9000,8000,7000
seq_ti­meout = 5
com­mand     = /sbin/ip­tab­les -D IN­PUT -s %IP% -p tcp --dport 22 -j AC­CEPT
tcpflags    = syn

Skon­tro­luj­me te­raz nas­ta­ve­nie fi­rewal­lu, či sa na po­rt ssh dos­ta­ne­me len z ad­re­sy 211.161.243.2. Z kon­zo­ly za­dá­me prí­kaz

ip­tab­les -L –n

Na vý­pi­se č. 2 vi­dí­me, že na po­rt 22 (ssh) mož­no nao­zaj pris­tú­piť (AC­CEPT) len z uve­de­nej ad­re­sy a inak je prís­tup z ľu­bo­voľ­nej ad­re­sy za­ká­za­ný (DROP):

Chain IN­PUT (po­li­cy DROP)
tar­get     prot opt sour­ce               des­ti­na­tion
AC­CEPT     tcp  --  211.161.243.2        0.0.0.0/0           tcp dpt:22
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

Po­znám­ka:
Uve­dom­me si, že pra­vid­lá sa spra­cú­va­jú v pres­nom po­ra­dí, te­da ak po­dmien­ka vy­ho­vu­je pr­vé­mu pra­vid­lu, os­tat­né pra­vid­lá sa pres­ko­čia.

Spus­te­nie dé­mo­na knockd
Po nas­ta­ve­ní kon­fi­gu­rač­né­ho sú­bo­ru dé­mo­na knockd spus­tí­me tak, ako je to bež­né v li­nuxovej dis­tri­bú­cii, kto­rú po­uží­va­me na server­i. Dô­le­ži­té je, aby dé­mon bež­al, inak ne­zac­hy­tí klo­pa­nie a my sa do sys­té­mu ne­dos­ta­ne­me. Nes­mie­me za­bud­núť nas­ta­viť server tak, aby sa po reš­tar­te po­čí­ta­ča a na­beh­nu­tí Li­nuxu spus­til aj dé­mon knockd, tre­ba ho te­da za­pí­sať do prís­luš­ných štar­to­va­cích skrip­tov. Ten­to dé­mon je skry­tý a neot­vá­ra žiad­ne po­rty. Po­dsta­tou je od­po­čú­va­nie sie­te.

Klo­pa­nie na li­nuxovú brá­nu
V prí­pa­de po­tre­by spra­vo­vať li­nuxový server z inej ako spo­me­nu­tej IP ad­re­sy mu­sí­me za­klo­pať na li­nuxovú brá­nu. Pres­nej­šie po­ve­da­né, na tri li­nuxové brá­ny – po­rty. Na to po­uži­je­me klien­tsky prog­ram knock, kto­rý sa už nac­hád­za pria­mo v li­nuxovej in­šta­lá­cii ap­li­ká­cie knockd, prí­pad­ne si ho stiah­ne­me z uve­de­nej ad­re­sy pre prís­luš­ný ope­rač­ný sys­tém. Nech sme te­da kde­koľ­vek vo sve­te a se­dí­me za po­čí­ta­čom s ope­rač­ným sys­té­mom MS Win­dows a IP ad­re­sou nap­rík­lad 86.112.123.1. Stiah­ne­me a nain­šta­lu­je­me klien­ta knock a spus­tí­me prí­kaz:

knock -v 219.18.10.1 7000 8000 9000

kde 219.18.10.1 je ve­rej­ná IP ad­re­sa náš­ho li­nuxové­ho server­a, nas­le­do­va­ná klo­pú­cou sek­ven­ciou. Len čo dé­mon knockd za­chy­tí tú­to sek­ven­ciu, vy­ko­ná ur­če­nú ak­ciu, te­da ot­vo­rí po­rt ssh pre IP ad­re­su klien­tske­ho po­čí­ta­ča. Te­raz spus­tí­me vhod­ný ko­mu­ni­kač­ný prog­ram (tel­net ale­bo eš­te lep­šie put­ty) a mô­že­me vstú­piť do li­nuxové­ho server­a.

Ak za­dá­me prí­kaz ip­tab­les -L -n

mô­že­me na ob­ra­zov­ke vi­dieť vý­pis č. 3.

Chain IN­PUT (po­li­cy DROP)
tar­get     prot opt sour­ce               des­ti­na­tion
AC­CEPT     tcp  --  86.112.123.1         0.0.0.0/0           tcp dpt:22
AC­CEPT     tcp  --  211.161.243.2        0.0.0.0/0           tcp dpt:22
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
 

Zis­tí­me, že bo­lo pri­da­né pra­vid­lo, kto­ré umož­ňu­je (AC­CEPT) pris­tú­piť na po­rt ssh len z IP ad­re­sy 86.112.123.1, kto­rá bo­la pri­da­ná ak­ciou dé­mo­na knockd, a z ad­re­sy 211.161.243.2, kto­rá bo­la vo fi­rewal­le tr­va­lo nas­ta­ve­ná. Od­te­raz mô­že­me na li­nuxovom server­i spo­koj­ne pra­co­vať tak, ako sme zvyk­nu­tí. Po skon­če­ní ad­mi­nis­tro­va­nia server­a nes­mie­me za­bud­núť za se­bou za­vrieť ot­vo­re­né dve­re. To do­siah­ne­me za­klo­pa­ním prí­ka­zom

knock -v 219.18.10.1 9000 8000 7000

Všim­ni­me si, že za IP ad­re­sou nas­le­du­je za­tvá­ra­cia sek­ven­cia, te­da tá, kto­rá spus­tí dru­hú ak­ciu, de­fi­no­va­nú v kon­fi­gu­rač­nom sú­bo­re knockd.conf. Tá­to ak­cia vy­ma­že uve­de­né pra­vid­lo z ta­buľ­ky fi­rewal­lu, čím uza­vrie po­rt ssh.

Na­bu­dú­ce bu­de­me tú­to ap­li­ká­ciu zlep­šo­vať.

Ďal­šie čas­ti >>

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