Port Knocking: aprire una porta di IPTABLES con una sequenza di pacchetti
Un articolo del buon nixCraft che spiega come aprire una porta ( ad es. la 22 ) su una macchina con iptables solo se viene inviata una determinata successione di pacchetti, detto port-knocking.
http://www.cyberciti.biz/faq/debian-ubuntu-linux-iptables-knockd-port-knocking-tutorial/
Riassumendo è necessario innanzitutto installare knockd:
sudo apt-get install knockd
Si configura il servizio modificando il file knockd.conf:
sudo nano /etc/knockd.conf
E impostandolo ad esempio per rispondere alla sequenza delle porte TCP 2022, 3022, 4022 per aprire la porta e la sequenza inversa per chiuderla:
[options]
UseSyslog
[openSSH]
sequence = 2022,3022,4022
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 4022,3022,2022
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Si salva e si apre l’altro file di configurazione:
sudo nano /etc/default/knockd
Si cerca il parametro START_KNOCKD e si imposta il valore 1, eventualmente è possibile anche impostare l’interfaccia di rete che deve essere utilizzata impostando ad esempio KNOCKD_OPTS=”-i eth0″
Si avvia infine il demone:
sudo service start knockd
La configurazione del server è terminata, spostiamoci sulla macchina remota che richiede l’accesso.
Per fare la richiesta di accesso è sufficiente utilizzare un port-knock client, ad esempio knock:
knock -v <IP/HOST> 2022 3022 4022
Mentre per richiederne la chiusura si passa la sequenza invertita:
knock -v <IP/HOST> 4022 3022 2022
E’ possibile utilizzare anche un misto di porte TCP e UDP:
knock <IP/HOST> 2022:tcp 9090:udp 4022:tcp
Per maggiori chiarimenti si rimanda come sempre all’articolo originale e alla documentazione ufficiale.