Port knocking
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 kiirem ja hakker saab teha kõik mida ta tahab.
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) printseb. See printsep “lubab andme vahetamist suletud pordi läbi”.
Kuidas “koputus pordile” töötab?
Serveris 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, millega ajaperioodiga teha koputused. See teeb hakkeritele rohkem muret.
Nõrkused
Hakker võib kasutada sniffer tehnoloogiat. See tehnoloogia püüab võrgust pakketid ja analiseerib 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