Com utilitzar Port Knocking per assegurar el servei SSH a Linux


Port Knocking és una tècnica enginyosa per controlar l'accés a un port només permetent l'accés dels usuaris legítims al servei que s'executa en un servidor. Funciona de tal manera que quan es fa la seqüència correcta d'intents de connexió, el tallafoc obre amb molt de gust el port que estava tancat.

La lògica darrere de la trucada de ports és assegurar el servei SSH. Amb finalitats de demostració, utilitzarem Ubuntu 18.04.

Pas 1: instal·leu i configureu knockd

Per començar, inicieu sessió al vostre sistema Linux i instal·leu el dimoni knockd tal com es mostra.

$ sudo apt install knockd

Un cop instal·lat, obriu la configuració knockd.conf amb l'editor de text de la línia d'ordres de vim.

$ sudo vim /etc/knockd.conf

El fitxer de configuració predeterminat apareix de la següent manera.

A la secció [openSSH], hem de canviar la seqüència de trucades predeterminada - 7000,8000,9000 - per una altra cosa. Això es deu al fet que aquests valors ja es coneixen i poden comprometre la seguretat del vostre sistema.

Amb finalitats de prova, hem establert els valors a 10005, 10006, 10007. Aquesta és la seqüència que s'utilitzarà per obrir el port SSH des d'un sistema client.

A la tercera línia, començant per l'ordre, canvieu -A per -I just després de l'ordre /sbin/iptables i abans de INPUT .

I, finalment, a la secció [closeSSH], de nou, canvieu la seqüència per defecte a la vostra elecció preferida. Aquesta és la seqüència que s'utilitzarà per tancar la connexió SSH un cop l'usuari hagi acabat i tanqui la sessió del servidor.

Aquí teniu la nostra configuració completa.

Un cop hàgiu acabat, deseu els canvis i sortiu.

Una altra configuració que hem de modificar és /etc/default/knockd. Un cop més, obriu-lo amb el vostre editor de text.

$ sudo vim /etc/default/knockd

Localitzeu la línia START_KNOCKD=0. Descomenteu-lo i establiu el valor a 1.

A continuació, aneu a la línia KNOCKD_OPTS=-i eth1” Descomenteu-la i substituïu el valor predeterminat eth1 per la interfície de xarxa activa del vostre sistema. Per comprovar la vostra interfície de xarxa, només cal que executeu l'ordre ifconfig.

Per al nostre sistema, enp0s3 és la targeta de xarxa activa.

La configuració completa és com es mostra.

Deseu els canvis i sortiu.

A continuació, inicieu i activeu el dimoni knockd tal com es mostra.

$ sudo systemctl start knockd
$ sudo systemctl enable knockd

Per comprovar l'estat del dimoni knockd, executeu l'ordre:

$ sudo systemctl status knockd

Pas 2: tanqueu el port SSH 22 al tallafoc

Com que l'objectiu del servei knockd és concedir o denegar l'accés al servei ssh, tancarem el port ssh al tallafoc. Però primer, comprovem l'estat del tallafoc UFW.

$ sudo ufw status numbered

A la sortida, podem veure clarament que el port SSH 22 està obert tant als protocols IPv4 com IPv6 numerats 5 i 9 respectivament.

Hem de suprimir aquestes dues regles tal com es mostra, començant pel valor més alt, que és 9.

$ sudo ufw delete 9
$ sudo ufw delete 5

Ara, si intenteu iniciar sessió de manera remota al servidor, obtindreu un error de temps d'espera de connexió tal com es mostra.

Pas 3: configureu un client Knock per connectar-se al servidor SSH

En el pas final, configurarem un client i intentarem iniciar sessió enviant primer la seqüència de trucades que hem configurat al servidor.

Però primer, instal·leu knockd daemon tal com ho heu fet al servidor.

$ sudo apt install knockd

Un cop finalitzada la instal·lació, envieu la seqüència de trucades utilitzant la sintaxi que es mostra

$ knock -v server_ip knock_sequence

En el nostre cas, això es tradueix en:

$ knock -v 192.168.2.105 10005 10006 10007

Hauríeu d'obtenir una sortida similar a la que tenim, depenent de la vostra seqüència. Això demostra que els intents de cop van tenir èxit.

En aquest punt, hauríeu d'estar en condicions d'iniciar sessió correctament al servidor mitjançant SSH.

Un cop hàgiu acabat de fer la vostra feina al servidor remot, tanqueu el port SSH enviant la seqüència de toc de tancament.

$ knock -v 192.168.2.105 10007 10006 10005

Qualsevol intent d'iniciar sessió al servidor fallarà tal com es mostra.

Això tanca aquesta guia sobre com aprofitar el cop de port per assegurar el servei SSH al vostre servidor. Un enfocament millor i més fàcil seria configurar l'autenticació SSH de contrasenya mitjançant parells de claus SSH. Això garanteix que només l'usuari amb la clau privada pot autenticar-se amb el servidor on s'emmagatzema la clau pública.