Port knocking: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Sgorjuno (talk | contribs)
Created page with ''''Sergei Gorjunov A21''''
 
Sgorjuno (talk | contribs)
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

Näide1:tavaline võrgu skaneeremine 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

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

Autor

Sergei Gorjunov A21