Port knocking: Difference between revisions
Created page with ''''Sergei Gorjunov A21'''' |
No edit summary |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
'''Sergei Gorjunov A21 | =Sissejuhatus= | ||
Tavaliselt süsteemse administraatori töö on seotud serveritega. Arukam ja mugavam on teha oma töö personaalse arvuti taga, aga serverid häälestada kaugadmenistreerimise eest. Mõnikord kaugadmenistreerimine on ainus viis midagi teha (n. kui administraator elab Eestis, aga on vaja portaali paigaldada Inglismaa serverile). Selles situatsioonis kaugadmenistreerimise tarkvara kasutab võrgupordid, et administraatorist serverile ühendamist ehitada. | |||
Samal ajal on vaja mõelda infoturbest – tänapäeval liiga palju inimesi Internetis tahavad serverit murda ning kasutada seda oma vajaduste jaoks. Tavaliselt administraatorid kasutavad pordid: 22 (SSH) andmete vahetuseks turvalise kanali läbi või 23 (Telnet) serveri konsole ühendamiseks. Oma kogemusest tean, et kui masinal on avatud port 23 ja hakker teab sellest – murdmine toimub kiiremini ja hakkeril on võimalus kõike teha. | |||
==Eesmärk== | |||
Tutvustada “knockd” tarkvaraga ja anda ülevaade – kuidas teha kaugadmenistreerimine ja ei anda teisele kasutada porte. | |||
==Põhiidee== | |||
Esimene element mis paigaldatakse serverile infoturbe eest on firewall. Firewall sulgeb kõik võrgupordid infoturbe eest(jäävad ainult standardsed pordid – n. port 80 “HTTP”). Kui keegi tahab serveriga koostöö teha, abiks tuleb “port knocking”(koputus pordile) printsiip. See printsep “lubab andme vahetamist suletud pordi läbi”. | |||
=Kuidas “koputus pordile” töötab?= | |||
Serveris on kõik pordid on suletud. Klient alustab ühendamist ja saab taotlusi erinevatele portidele. Kõik taotlused on visatud maha. Siis programm alustab ühendamise log faili uurimist ja kui ip aadressist koputus oli õiges järjekorras, siis server avab uut ühendust. | |||
==Näide== | |||
[[File:Bad_knocking.jpg|200px|Näide1:tavaline võrgu skaneeremine]] [[File:Good_knocking.jpg|200px|Näide2:Koputus ja ühendust avamine]] | |||
Serveri õige koputuse algoritm on 41, 22, 56, 400, 22. Kui keegi proovib avaliku porti otsida, siis tavaliselt alustab esimesest pordist kuni viimaseni. See „otsing“ ei anna kasutajale midagi. Teiselt poolt, kui kasutaja teab algoritmi, server avab ühendust kasutajale. | |||
=Kuidas kasutada „knocking“ tehnoloogiat= | |||
Serveris ja kasutaja arvutis kõik on vaja teha juurkasutaja õigusega. | |||
sudo -i | |||
Sel praktikaosa eesmärk – kaitsta port 22. Linux'i tuum juba sisaldab firewall'it, lihtsalt on vaja õige turbepolitikat kirjutada. | |||
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | |||
iptables -P INPUT DROP | |||
Praegu, kui inimene proovib ühendada serveriga ssh protokolli abil, siis tulemus on: | |||
ssh: connect to host 192.168.0.12 port 22: Connection timed out | |||
==Knockd paigaldamine serverile== | |||
Ubuntu süsteemis: | |||
sudo apt-get install knockd | |||
==Konfigureeremine== | |||
Failis ''/etc/knockd.conf'' administraator saab teha kõik konfigureeremine | |||
[options] | |||
# kus kirjutada tarkvara logid. Kui on vaja süsteemlogis | |||
# kirjutame, siis kasutame UseSyslog | |||
logfile = /var/log/knockd.log | |||
# ssh juurdepääse avamise tingimused | |||
[openSSH] | |||
#pordi järjekord ühenduse avamiseks | |||
sequence = 41,22,56,400,22 | |||
# kui kasutaja teeb knocking rohkem kui 5 sekundi, siis server lõpeb ühendust | |||
seq_timeout = 5 | |||
#firewall'i käsk, et ühendust avada | |||
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT | |||
#ühenduselipp TCP | |||
tcpflags = syn | |||
#ssh juurdepääse sulgemise tingimused | |||
[closeSSH] | |||
#pordi järjekord ühendust sulgemiseks | |||
sequence = 22,400,56,22,41 | |||
seq_timeout = 5 | |||
#firewall'i käsk, et ühendust lõpeda | |||
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT | |||
tcpflags = syn | |||
Knockd käivitamiseks: | |||
knockd -d | |||
===Teised käivitusparameetrid=== | |||
{|class="wikitable" | |||
! Parameeter | |||
! Kirjeldus | |||
|- | |||
| '''-c''' ||võimalus valida teist config faili | |||
|- | |||
| '''-h''' ||abi | |||
|- | |||
| '''-i''' ||võimalus interface valida | |||
|- | |||
| '''-l''' ||avab DNS aadressi knocking | |||
|- | |||
| '''-v''' ||näitab detailised staatus sõnumid | |||
|- | |||
| '''-D''' ||näitab debug sõnumid | |||
|- | |||
| '''-V''' ||näitab versiooninumber | |||
|} | |||
==Knock paigaldamine kasutajale== | |||
Kasutaja peab omama knockd ka tarkvarat. Kui programmi pole, siis paigaldamiseks on vaja kirjutada: | |||
apt-get install knockd | |||
Ühenduse avamiseks on vaja kasutada käsku: | |||
knock %serveri_ip% %port% %port% %port% | |||
Näiteks | |||
knock 192.168.0.12 41 22 56 400 22 | |||
Tavaliselt, et ühedust avada, kasutatakse tcp protokollit. Aga kui serveri configuratsiooni failis kirjutada porti ja tema protokollit (n. 400:udp), siis „knock“ käsul ka on vaja sama protokolli kirjutada. | |||
Vṍime proovida, kas server avab ühendust või mitte: | |||
ssh 192.168.0.12 -l %teie_kasutajanimi_serveris% | |||
Ühenduse sulgemiseks on vaja koputada pordid vastavsuunas (või järjekorras, mis on serveri config failis): | |||
knock 192.168.0.12 41 22 56 400 22 | |||
=Kokkuvõte= | |||
==Turvalisus== | |||
Hakker võib proovida ''brute-force'' teha. Kui serveris on 65536 porti ja „knocking“ algoritm sisaldab ainult 5 elemendit, siis on vaja proovida 65536! / (5!*(65536-5)!) = 10,072,844,683,544,179,310,592 erinevat kombinatsiooni. Seepärast ''brute-force'' ei sobi, mis teeb „knocking“ turvalisem. | |||
Lisaks on vaja teada, milliste ajaperioodidega teha koputusi. See teeb hakkeritele rohkem muret. | |||
==Nõrkused== | |||
Hakker võib kasutada ''sniffer'' tehnoloogiat. See tehnoloogia püüab võrgust pakketid ja analüüsib neid. Hakker saab teada, millised pordid ja millises järjekorras on vaja koputada, et ühendust saada. Jääb üks probleem – saada aru mis ajaperiood server kasutab. | |||
=Kasutatud kirjandus= | |||
* http://www.linuxjournal.com/magazine/implement-port-knocking-security-knockd?page=0,1 | |||
* http://www.linuxaria.com/howto/knockd-to-secure-your-ports-on-linux?lang=en | |||
* http://www.linux.com/archive/feed/37888 | |||
=Autor= | |||
Sergei Gorjunov A21 | |||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] |
Latest revision as of 19:38, 19 May 2011
Sissejuhatus
Tavaliselt süsteemse administraatori töö on seotud serveritega. Arukam ja mugavam on teha oma töö personaalse arvuti taga, aga serverid häälestada kaugadmenistreerimise eest. Mõnikord kaugadmenistreerimine on ainus viis midagi teha (n. kui administraator elab Eestis, aga on vaja portaali paigaldada Inglismaa serverile). Selles situatsioonis kaugadmenistreerimise tarkvara kasutab võrgupordid, et administraatorist serverile ühendamist ehitada. Samal ajal on vaja mõelda infoturbest – tänapäeval liiga palju inimesi Internetis tahavad serverit murda ning kasutada seda oma vajaduste jaoks. Tavaliselt administraatorid kasutavad pordid: 22 (SSH) andmete vahetuseks turvalise kanali läbi või 23 (Telnet) serveri konsole ühendamiseks. Oma kogemusest tean, et kui masinal on avatud port 23 ja hakker teab sellest – murdmine toimub kiiremini ja hakkeril on võimalus kõike teha.
Eesmärk
Tutvustada “knockd” tarkvaraga ja anda ülevaade – kuidas teha kaugadmenistreerimine ja ei anda teisele kasutada porte.
Põhiidee
Esimene element mis paigaldatakse serverile infoturbe eest on firewall. Firewall sulgeb kõik võrgupordid infoturbe eest(jäävad ainult standardsed pordid – n. port 80 “HTTP”). Kui keegi tahab serveriga koostöö teha, abiks tuleb “port knocking”(koputus pordile) printsiip. See printsep “lubab andme vahetamist suletud pordi läbi”.
Kuidas “koputus pordile” töötab?
Serveris on kõik pordid on suletud. Klient alustab ühendamist ja saab taotlusi erinevatele portidele. Kõik taotlused on visatud maha. Siis programm alustab ühendamise log faili uurimist ja kui ip aadressist koputus oli õiges järjekorras, siis server avab uut ühendust.
Näide
Serveri õige koputuse algoritm on 41, 22, 56, 400, 22. Kui keegi proovib avaliku porti otsida, siis tavaliselt alustab esimesest pordist kuni viimaseni. See „otsing“ ei anna kasutajale midagi. Teiselt poolt, kui kasutaja teab algoritmi, server avab ühendust kasutajale.
Kuidas kasutada „knocking“ tehnoloogiat
Serveris ja kasutaja arvutis kõik on vaja teha juurkasutaja õigusega.
sudo -i
Sel praktikaosa eesmärk – kaitsta port 22. Linux'i tuum juba sisaldab firewall'it, lihtsalt on vaja õige turbepolitikat kirjutada.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -P INPUT DROP
Praegu, kui inimene proovib ühendada serveriga ssh protokolli abil, siis tulemus on:
ssh: connect to host 192.168.0.12 port 22: Connection timed out
Knockd paigaldamine serverile
Ubuntu süsteemis:
sudo apt-get install knockd
Konfigureeremine
Failis /etc/knockd.conf administraator saab teha kõik konfigureeremine
[options] # kus kirjutada tarkvara logid. Kui on vaja süsteemlogis # kirjutame, siis kasutame UseSyslog logfile = /var/log/knockd.log
# ssh juurdepääse avamise tingimused [openSSH] #pordi järjekord ühenduse avamiseks sequence = 41,22,56,400,22 # kui kasutaja teeb knocking rohkem kui 5 sekundi, siis server lõpeb ühendust seq_timeout = 5 #firewall'i käsk, et ühendust avada command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT #ühenduselipp TCP tcpflags = syn
#ssh juurdepääse sulgemise tingimused [closeSSH] #pordi järjekord ühendust sulgemiseks sequence = 22,400,56,22,41 seq_timeout = 5 #firewall'i käsk, et ühendust lõpeda command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn
Knockd käivitamiseks:
knockd -d
Teised käivitusparameetrid
Parameeter | Kirjeldus |
---|---|
-c | võimalus valida teist config faili |
-h | abi |
-i | võimalus interface valida |
-l | avab DNS aadressi knocking |
-v | näitab detailised staatus sõnumid |
-D | näitab debug sõnumid |
-V | näitab versiooninumber |
Knock paigaldamine kasutajale
Kasutaja peab omama knockd ka tarkvarat. Kui programmi pole, siis paigaldamiseks on vaja kirjutada:
apt-get install knockd
Ühenduse avamiseks on vaja kasutada käsku:
knock %serveri_ip% %port% %port% %port%
Näiteks
knock 192.168.0.12 41 22 56 400 22
Tavaliselt, et ühedust avada, kasutatakse tcp protokollit. Aga kui serveri configuratsiooni failis kirjutada porti ja tema protokollit (n. 400:udp), siis „knock“ käsul ka on vaja sama protokolli kirjutada. Vṍime proovida, kas server avab ühendust või mitte:
ssh 192.168.0.12 -l %teie_kasutajanimi_serveris%
Ühenduse sulgemiseks on vaja koputada pordid vastavsuunas (või järjekorras, mis on serveri config failis):
knock 192.168.0.12 41 22 56 400 22
Kokkuvõte
Turvalisus
Hakker võib proovida brute-force teha. Kui serveris on 65536 porti ja „knocking“ algoritm sisaldab ainult 5 elemendit, siis on vaja proovida 65536! / (5!*(65536-5)!) = 10,072,844,683,544,179,310,592 erinevat kombinatsiooni. Seepärast brute-force ei sobi, mis teeb „knocking“ turvalisem. Lisaks on vaja teada, milliste ajaperioodidega teha koputusi. See teeb hakkeritele rohkem muret.
Nõrkused
Hakker võib kasutada sniffer tehnoloogiat. See tehnoloogia püüab võrgust pakketid ja analüüsib neid. Hakker saab teada, millised pordid ja millises järjekorras on vaja koputada, et ühendust saada. Jääb üks probleem – saada aru mis ajaperiood server kasutab.
Kasutatud kirjandus
- http://www.linuxjournal.com/magazine/implement-port-knocking-security-knockd?page=0,1
- http://www.linuxaria.com/howto/knockd-to-secure-your-ports-on-linux?lang=en
- http://www.linux.com/archive/feed/37888
Autor
Sergei Gorjunov A21