Ricerca nel sito web

Come utilizzare Port Knocking per proteggere il servizio SSH in Linux


Il Port Knocking è una tecnica ingegnosa per controllare l'accesso a una porta consentendo solo agli utenti legittimi l'accesso al servizio in esecuzione su un server. Funziona in modo tale che quando viene effettuata la giusta sequenza di tentativi di connessione, il firewall apre volentieri la porta che era chiusa.

La logica dietro il port knocking è quella di salvaguardare il tuo sistema Linux dagli scanner di porte automatizzati che cercano porte aperte. In questa guida, esaminiamo come installare il port knocking e come configurarlo per proteggere il servizio SSH. A scopo dimostrativo utilizzeremo Ubuntu 18.04.

Passaggio 1: installa e configura knockd

Per iniziare, accedi al tuo sistema Linux e installa il demone knockd come mostrato.

sudo apt install knockd

Una volta installato, apri la configurazione di knockd.conf con il tuo editor di testo preferito. Qui stiamo utilizzando l'editor di testo della riga di comando vim.

sudo vim /etc/knockd.conf

Il file di configurazione predefinito appare come segue.

Nella sezione [openSSH], dobbiamo modificare la sequenza di colpi predefinita – 7000,8000,9000 – in qualcos'altro. Questo perché questi valori sono già noti e possono compromettere la sicurezza del tuo sistema.

A scopo di test, abbiamo impostato i valori su 10005, 10006, 10007. Questa è la sequenza che verrà utilizzata per aprire la porta SSH da un sistema client.

Nella terza riga, che inizia con comando, cambia -A in -I subito dopo /sbin/iptables comando e prima di INPUT.

Infine, nella sezione [closeSSH], modifica nuovamente la sequenza predefinita con la tua scelta preferita. Questa è la sequenza che verrà utilizzata per chiudere la connessione SSH una volta che l'utente ha terminato e si è disconnesso dal server.

Ecco la nostra configurazione completa.

Una volta terminato, salva le modifiche ed esci.

Un'altra configurazione che dobbiamo modificare è /etc/default/knockd. Ancora una volta, aprilo utilizzando il tuo editor di testo.

sudo vim /etc/default/knockd

Individua la riga START_KNOCKD=0. Decommentalo e imposta il valore su 1.

Successivamente, vai alla riga KNOCKD_OPTS= ”-i eth1 ” Decommentala e sostituisci il valore eth1 predefinito con l'interfaccia di rete attiva del tuo sistema. Per controllare la tua interfaccia di rete esegui semplicemente ip addr o il comando ifconfig.

Per il nostro sistema, enp0s3 è la scheda di rete attiva.

La configurazione completa è come mostrato.

Salva le modifiche ed esci.

Quindi avvia e abilita il demone knockd come mostrato.

sudo systemctl start knockd
sudo systemctl enable knockd

Per verificare lo stato del demone knockd, esegui il comando:

sudo systemctl status knockd

Passaggio 2: chiudere la porta SSH 22 sul firewall

Poiché l'obiettivo del servizio knockd è concedere o negare l'accesso al servizio ssh, chiuderemo la porta ssh sul firewall. Ma prima controlliamo lo stato del firewall UFW.

sudo ufw status numbered

Dall'output, possiamo vedere chiaramente che la porta SSH 22 è aperta su entrambi i protocolli IPv4 e IPv6 numerati 5 e 9 rispettivamente.

Dobbiamo eliminare queste due regole come mostrato, iniziando dal valore più alto, ovvero 9.

sudo ufw delete 9
sudo ufw delete 5

Ora, se tenti di accedere in remoto al server, riceverai un errore di timeout della connessione come mostrato.

Passaggio 3: configurare un client knock per connettersi al server SSH

Nel passaggio finale, configureremo un client e tenteremo di accedere inviando prima la sequenza di colpi che abbiamo configurato sul server.

Ma prima installa il demone knockd proprio come hai fatto sul server.

sudo apt install knockd

Una volta completata l'installazione, inviare la sequenza di colpi utilizzando la sintassi mostrata

knock -v server_ip knock_sequence

Nel nostro caso, questo si traduce in:

knock -v 192.168.2.105 10005 10006 10007

Dovresti ottenere un output simile a quello che abbiamo, a seconda della sequenza. Ciò dimostra che i tentativi di bussare hanno avuto successo.

A questo punto, dovresti essere in grado di accedere correttamente al server utilizzando SSH.

Una volta terminato il lavoro sul server remoto, chiudere la porta SSH inviando la sequenza di chiusura.

knock -v 192.168.2.105 10007 10006 10005

Qualsiasi tentativo di accedere al server fallirà come dimostrato.

Pensieri conclusivi

Con questo si conclude questa guida su come sfruttare il port knocking per proteggere il servizio SSH sul tuo server. Un approccio migliore e più semplice sarebbe configurare l'autenticazione SSH con password utilizzando coppie di chiavi SSH. Ciò garantisce che solo l'utente con la chiave privata possa autenticarsi con il server su cui è archiviata la chiave pubblica.