Port knocking: un'idea di sicurezza il cui momento è giunto

Molte, molte innovazioni provengono dal mondo Linux e Unix. Pochi sono più intriganti per me del bussare al porto. Come plug-in di sicurezza globale per proteggere i servizi, ha molto da offrire e pochi svantaggi. Tuttavia, per un motivo o per l'altro, soffre di mancanza di utilizzo e comprensione. Molti amministratori potrebbero averne sentito parlare, ma pochi sanno come implementarlo. Ancora meno l'hanno usato.

Il port knocking funziona sul concetto che gli utenti che desiderano connettersi a un servizio di rete devono avviare una sequenza predeterminata di connessioni alla porta o inviare una stringa univoca di byte prima che il client remoto possa connettersi al servizio finale. Nella sua forma più semplice, il software client dell'utente remoto deve prima connettersi a una o più porte prima di connettersi alla porta di destinazione finale.

Ad esempio, supponiamo che il client remoto desideri connettersi a un server SSH. L'amministratore configura i requisiti di port knocking in anticipo, richiedendo che la connessione dei client remoti si connetta prima alle porte 3400, 4000 e 9887 prima di connettersi alla porta di destinazione finale, 22. L'amministratore comunica a tutti i client legittimi la "combinazione" corretta per connettersi ; agli hacker malintenzionati che desiderano connettersi al servizio SSH verrà negato l'accesso senza la combinazione. Il port knocking vanificherà anche gli appassionati di port scanning e di banner.

Poiché è possibile utilizzare qualsiasi combinazione di porte e protocolli di trasporto, il numero di possibili sequenze che un utente malintenzionato dovrebbe indovinare è elevato. Anche se l'hacker sapeva che erano coinvolti solo tre colpi di porta, come nell'esempio molto semplice sopra, con 64.000 possibili porte TCP, UDP e ICMP (Internet Control Message Protocol) tra cui scegliere, l'insieme risultante di possibili combinazioni per l'hacker prova a correre a milioni. I port scanner saranno frustrati perché il port knocking utilizza porte chiuse per eseguire l'ascolto (più su questo di seguito).

Il più grande vantaggio di tutti è che il port knocking è indipendente dalla piattaforma, dal servizio e dall'applicazione: qualsiasi sistema operativo con il software client e server corretto può trarre vantaggio dalla sua protezione. Sebbene il port knocking sia principalmente un'implementazione Linux / Unix, ci sono strumenti di Windows che possono fare la stessa cosa. E come per IPSec e altri meccanismi di protezione, nessuno dei servizi o delle applicazioni coinvolti deve essere sensibile al port knocking.

Il software del server a bussare alle porte funziona monitorando il registro del firewall e cercando connessioni a porte chiuse o monitorando lo stack IP. Il primo metodo richiede che tutti i tentativi di connessione negata vengano scritti rapidamente in un registro del firewall e il servizio di knocking delle porte (daemon) monitora e correla le combinazioni legittime di port knocking. Per le combinazioni di knocking autenticate, il servizio server di knocking porta quindi indica al firewall di aprire la porta richiesta finale solo per il client di knocking porta legittimo, solitamente tracciato dall'indirizzo IP.

Implementazioni più avanzate del port knocking funzionano sullo stack IP e ascoltano e registrano su connessioni a porte chiuse o utilizzano un meccanismo più sofisticato. Alcune implementazioni cercano una serie specifica di byte nel primo tentativo di connessione. Questi byte possono anche essere "nascosti" all'interno di un semplice ping di richiesta echo ICMP. Metodi di negoziazione port-knocking ancora più efficaci prevedono la crittografia o l'autenticazione asimmetrica.

Il port knocking può anche fungere da ulteriore livello di sicurezza per proteggere i servizi di gestione remota ad alto rischio, come SSH e RDP (Remote Desktop Protocol). Sfortunatamente, il port knocking è stato utilizzato da più di pochi trojan rootkit mentre i loro creatori di hacker tentano di mantenere il controllo delle proprie creazioni dannose.

I critici spesso sottolineano il fatto che gli hacker che intercettano potrebbero essere in grado di catturare e riprodurre la sequenza o la serie di byte di successo del port knocking. Anche se questo potrebbe essere vero con le implementazioni di base, attacchi come questi sarebbero schiacciati utilizzando metodi di autenticazione più sofisticati o ridotti al minimo utilizzando indirizzi IP consentiti hardcoded secondari come i wrapper TCP.

Se un hacker riesce a raccogliere la tua combinazione, lo scenario peggiore è che l'intruso aggira la protezione anti-porta e ora deve affrontare le normali misure di sicurezza del servizio: richiesta della password di accesso e così via. Per quanto ne so, l'uso del port knocking può solo rafforzare qualsiasi strategia di difesa in profondità e non fa nulla per danneggiarla.

Vorrei che Windows avesse meccanismi di port knocking integrati per impostazione predefinita. Sarebbe un bel complemento alle implementazioni IPSec e Kerberos testate sul mercato di Microsoft. Il mondo Linux / Unix ha una pletora di implementazioni port knocking tra cui scegliere, nessuna delle quali richiede un'incredibile esperienza per la configurazione o l'utilizzo.

Per ulteriori informazioni sul port knocking, visitare www.portknocking.org o en.wikipedia.org/wiki/Port_knocking. Per i dettagli di configurazione da un esempio di implementazione, controlla gentoo-wiki.com/HOWTO_Port_Knocking.

Un'eccellente raccolta di software e utilità port knocking può essere trovata su www.portknocking.org/view/implementations, e un altro server e client port-knocking basato su Windows può essere trovato su www.security.org.sg/code/portknock1 .html.