Port knocking în Ubuntu
Conceptul
Pentru
administrarea de la distanţă în regim consolă a unui sistem Ubuntu,
este necesar ca portul aferent serviciului SSH (portul 22 în mod tipic)
să fie deschis către Internet, ceea ce aduce cu sine riscuri nedorite
(vulnerabilitate la atacuri automatizate / botnets). Pentru a reduce
aceste riscuri, se poate folosi o tehnică numită "port knocking" astfel
încât portul SSH să rămână închis majoritatea timpului şi pentru
majoritatea adreselor IP de pe Internet. Portul se va deschide numai la
cerere şi numai pentru adresa de IP care a "bătut la uşă" secvenţa
corectă de porturi în modul descris mai jos. Această secvenţă corectă
poate fi configurată în fişierul de configurare aferent utilitarului
knockd.
Instalarea pachetelor necesare
Este
necesar pachetul knockd, care poate fi găsit în Ubuntu repo, deci se
poate instala în mod obişnuit cu synaptic, adept, din terminal sau direct din browser.
sudo aptitude install knockd
Knockd
nu porneşte în mod automat. Pentru a realiza acest lucru trebuie
înlocuită cifra 0 cu cifra 1 în fişierul /etc/default/knockd în acest
mod:
START_KNOCKD=1
Configurarea
Datele
de configurare pentru knockd se află în fişierul /etc/knockd.conf. Se
deschide la cerere portul SSH (portul 22) "bătând la uşă" cu combinaţia
7000 8000 9000; portul se închide la loc cu 9000 8000 7000. Important:
se recomandă a nu se reutiliza exact această secvenţă de porturi în
practică. De asemenea, se recomandă a nu se utiliza portul 22 pentru
serverul de SSH. Exemplul de faţă are doar caracter ilustrativ.
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
command = iptables -I INPUT -s %IP% -p tcp --dport 22 --syn -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
command = iptables -D INPUT -s %IP% -p tcp --dport 22 --syn -j ACCEPT
tcpflags = syn
Utilizarea
Pentru a "bate la uşă" se poate folosi utilitarul knock (care este instalat împreună cu knockd) sau netcat (în mod zero-I/O):
knock -v 192.168.1.2 7000 8000 9000
nc -z 192.168.1.2 7000 8000 9000
Surse de inspiraţie şi referinţe
https://help.ubuntu.com/community/PortKnocking
http://www.gentoo-wiki.info/HOWTO_Port_Knocking
http://portknocking.org/
Feedback
http://forum.ubuntu.ro/viewtopic.php?id=5560