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:
1 |
sudo apt-get install knockd |
Si configura il servizio modificando il file knockd.conf:
1 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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:
1 |
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:
1 |
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:
1 |
knock -v <IP/HOST> 2022 3022 4022 |
Mentre per richiederne la chiusura si passa la sequenza invertita:
1 |
knock -v <IP/HOST> 4022 3022 2022 |
E’ possibile utilizzare anche un misto di porte TCP e UDP:
1 |
knock <IP/HOST> 2022:tcp 9090:udp 4022:tcp |
Per maggiori chiarimenti si rimanda come sempre all’articolo originale e alla documentazione ufficiale.