Port Knocking a Ubuntu 16.04

De Wiket
Salta a la navegació Salta a la cerca

Port Knocking és un mètode que consisteix en afegir una seqüència de peticions previa a la demanada a priori amb el fi d'assegurar l'accés a un servei.

Instal·lació

Necessitarem instal·lar el paquet knockd per configurar port knocking.

#apt-get update
#apt-get install knockd
Si tot ha anat bé hauriem de veure quelcom així.

Configuració al servidor

Seguidament editem el fitxer /etc/knockd.conf

▪ logFile = /directori/on/guardem/log
▪ sequence: seqüència de ports per obrir o tancar "la porta".
▪ seq_timeout: Interval de temps per ficar la seqüència correctament.
▪ command: comanda linux que executarà si la seqüència es valida.
▪ tcpflags: bit de control dins del segment TCP.
Així quedaría finalment el fitxer.

Un cop tenim el la configuració amb la seqüència dels ports, editem el fitxer /etc/default/knockd amb els següents paràmetres:

▪ START_KNOCKD: Per inicialitzar el servei juntament amb el servidor quan s'encèn. 0 = off, 1 = on.
▪ KNOCD_OPTS: Interfície per on actuarà el servei.
Configuració final del fitxer /etc/default/knockd.

El servei precisa de iptables per acceptar el tràfic estipulat com "ESTABLISHED" i dropejem totes les peticions pel port 22 de qualsevol origen.

També podem afegir aquestes regles al final de l'arxiu /etc/network/interfaces amb la comanda post-up davant.
Comprovem que las iptables funcionan.

Comprovació des d'un client ubuntu

Escanejem el port 22 amb la comanda nmap

Ho podem instal·lar amb
#apt install nmap  
#nmap -p22 ip_server_knock
Ens mostra el port 22 com filtered.
Instal·lem tambè el paquet knockd al client i fiquem la seqüència de opertura amb la comanda knock -v ip_server_knock port1 port2....
Com la seqüència es valida, s'afegeix una iptable amb la ip de la màquina que ha demanat accès.

Ara fem un ssh per a comprovar que podem accedir:

La sintaxis per accedir per ssh és:
ssh user@ip

Tornem a escanejar el port 22 i...

..comprovem que s'ha obert desprès d'encertar la seqüència.

Per últim tanquem el servei amb la mateixa comanda d'abans però amb la seqüència de tancament.

Afegim la seqüència de tancament i tornem a escanejar els ports per comprovar que està filtered.

Documentació i referències

https://www.digitalocean.com/community/tutorials/how-to-use-port-knocking-to-hide-your-ssh-daemon-from-attackers-on-ubuntu
http://www.zeroflux.org/projects/knock