Menu Chiudi

Port Knocking, la Sicurezza dei server Linux

Port Knocking

In questa breve guida abbiamo pensato di introdurre la tecnica del Port Knocking. Un tipo di protezione a basso livello che può contribuire a mantenere sicuro un server GNU Linux che espone i propri servizi sulla rete.

In ambiente GNU Linux, qualunque Sysadmin che si rispetti dispone del suo accesso riservato ssh al sistema; sfruttando i grandi pregi nell’utilizzo Secure Shell per accedere ai server Linux in modo sicuro e protetto da occhi indiscreti.

Tuttavia, avere costantemente a disposizione nel sistema il servizio ssh è qualcosa che potrebbe mettere a serio repentaglio la sicurezza complessiva delle piattaforme IT; soprattutto quei sistemi che sono esposti sulla rete Internet.

Basti pensare che una sessione ssh per eseguire le normali routine di amministrazione può durare qualche minuto; ma che succede in tutto il tempo durante il quale non c’è nessuna esigenza di accedere a quel server?

A volte può accadere che non sia necessario dover accedere a quel sistema per giorni, settimane e talvolta mesi. Ebbene, la porta TCP 22, ovvero la porta standard attraverso la quale il server accetta le connessioni ssh, rimane comunque aperta a disposizione di chiunque, anche dei non autorizzati, voglia tentare di accedere al sistema.

E lo stesso problema potrebbe presentarsi anche per altri servizi, come ad esempio il servizio TFTP oppure il servizio SNMP. Insomma, una vera manna per qualsiasi Hacker.

Non sarebbe fantastico se potessimo aprire una porta così delicata come ssh ad un semplice comando, cioè semplicemente “bussando” alla porta ssh e farcela aprire automaticamente dal sistema?

Certamente si. In ambiente GNU Linux possiamo ricorrere alla tecnica del Port Knocking. Possiamo effettivamente “bussare” su determinate porte chiuse del sistema e richiedere che la porta TCP 22 ci venga aperta. A questo punto potremo liberamente accedere al sistema con le normali credenziali.

Che cos’è il Port Knocking

Il Port Knocking è uno strato aggiuntivo di sicurezza che può essere impiegato per aprire su richiesta alcune porte del firewall del server che son normalmente chiuse.

Il meccanismo in generale è molto semplice, e può essere riassunto come segue:

  1. L’amministratore di sistema, o chi è autorizzato ad accedere al server, invia una segnalazione al server, letteralmente “bussando” (knocking) con una sequenza si pacchetti prestabilita, su alcune porte preconfigurate;
  2. Il server riconosce la sequenza, ed invia al firewall interno della macchina, un comando per aprire la porta designata per quella specifica sequenza;
  3. L’amministratore di sistema, a questo punto può effettuare la sua consueta connessione con dal proprio Client.

Il motivo prevalente per cui si implementa il Port Knocking è dettato dalla necessità di proteggere quanto più possibile il sistema dal Port Scanning e dalla enumerazione di servizi potenzialmente vulnerabili.

Infatti, se l’attaccante non è a conoscenza della valida sequenza di Port Knocking, il sistema rimane protetto in quanto le porte TCP e UDP potenzialmente vulnerabili, appaiono normalmente indisponibili all’attaccante, nascondendo così i servizi dall’esterno.

Cosa NON è il Port Knocking

Sulla scorta di quanto appena detto, alcuni Sysadmin tendono ad equiparare il Port Knocking ad una sorta di “Password” di accesso al sistema. Un’assunzione questa, quanto mai errata!

Sebbene la tecnica della “Bussata” può rivelarsi un’eccellente strategia per aumentare il livello di sicurezza a basso livello, questa non dovrebbe mai essere assunta come un sistema di autenticazione per l’accesso ai sistemi informatici.

Essa infatti, si basa sulla condivisione, tra client e server, della sequenza del Port Knocking, la quale deve assolutamente rimanere segreta tra client e server.

Queste informazioni, cruciali per la sicurezza, in alcune circostanze potrebbero essere in qualche modo trafugate, accidentalmente rivelate o, come vedremo di seguito, “Sniffate”.

Si raccomanda quindi che i meccanismi di autenticazione siano comunque adeguatamente robusti e sicuri a salvaguardia di accessi indesiderati ai sistemi.

Criticità e limitazioni del Port Knocking

Il Port Knocking abbiamo detto che è un buon modo per cautelarsi dal Port Scanning; quindi esclude una grande moltitudine di attacchi da malintenzionati che dalla rete internet non possono accedere a quei servizi nascosti dietro al firewall interno del sistema.

Tuttavia, non è certamente una tecnica che può garantire un livello di sicurezza assoluta, posto che,sappiamo bene, la sicurezza informatica assoluta non esiste.

Esistono alcune circostanze in cui un attaccante malevolo può essere in grado di “sniffare” il traffico di rete e carpire la sequenza segreta del Port Knocking inviata dal Client al Server. In questi casi la tecnica della “Bussata” diventa praticamente inefficace.

L’attaccante che può fare Sniffing di rete può scoprire in pochi minuti la sequenza segreta della bussata informatica. Può fare ciò, utilizzando strumenti adeguati, come Tcpdump, o il più versatile Wireshark.

Immagine wireshark
Packet trace del Port Knocking con Wireshark

Come è mostrato nell’immagine, i pacchetti utilizzati per il Port Knocking e la loro esatta sequenza sono in bella mostra. Qualunque hacker smaliziato sarà in grado di comprendere al volo che di che cosa si tratta e come replicare il la tecnica a proprio vantaggio.

Quindi, il Port Knocking NON ci mette del tutto al sicuro da tutti gli attacchi informatici. Assolutamente no! Ma può comunque rivelarsi un buon modo per mitigare il problema.

Il System Administrator saggio sa benissimo che:

l sistema informatico più sicuro è quello spento, al quale è stato scollegato il cavo di rete e se possibile anche il cavo di alimentazione.

È però ovvio che i nostri server dovranno pur essere accesi e funzionanti per poter erogare quei servizi che ne giustifichino la loro presenza (oltre ai soldi spesi).

Basti pensare che i servizi come FTP, oppure Email o Web dovranno necessariamente essere sempre disponibili. Per questi servizi ovviamente la tecnica del Port Knocking non si può applicare ed le metodologie di sicurezza da implementare in quei casi va individuata altrove.

Depistaggi e camuffamenti

Considerate le criticità implicite nel Port Knocking, è comunque possibile adottare qualche accorgimento in più per rendere questa tecnica un po’ più efficace nel mitigare attacchi conseguenti al Packet Sniffing.

Il depistaggio non è certamente una pratica sicura; tutt’altro.

È però una pratica che se unita ad altre tecniche possono scoraggiare almeno una parte dei potenziali attaccanti, contribuendo così a ridurre almeno il numero complessivo degli attacchi.

Camuffamento – Utilizzo di porte standard

Sebbene molti degli esempi riportati nelle varie guide reperibili in internet tendano ad utilizzare porte TCP e UDP non comuni e non utilizzate, un buon modo per depistare un eventuale attaccante consiste nell’inviare la sequenza di Port Knocking su porte standard e molto comuni, corrispondenti cioè a reali servizi.

Ovviamente le porte che verranno utilizzare per la sequenza di Port Knocking non dovranno corrispondere ad un effettivo servizio presente nel sistema.

L’utilizzo delle porte TCP 80 (www-http), TCP 443 (http protocol over TLS/SSL) oppure TCP 8080 (www caching service) può facilmente ingannare chi sta sniffando la rete, facendoli apparire come normale traffico di rete; ovvero, classici tentativi di accesso a quei servizi.

Lo stesso discorso vale per le porte UDP. Si potranno utilizzare le porte ad esempio le porte UDP 123 (Network Time Protocol), UDP 69 (tftp), oppure UDP 554 (Real Time Stream Control Protocol).

Depistaggio – Sequenza ritardata (Lazy Sequence)

Un altro modo consiste nel tentare di depistare l’aggressore, nascondendo la sequenza di pacchetti del Port Knocking nel normale traffico di rete in entrata ed in uscita dal server.

Il termine “nascondere” qui va inteso come un modo per far si che i pacchetti relativi alla sequenza di Port Knocking siano sufficientemente distanti nel tempo tra loro, in modo da causare qualche difficoltà a chi sta sniffando, rendendogli cioè il compito un po’ più arduo.

Normalmente, i Client per inviare la “Bussata” al server, sono impostati di default in modo da inviare in rapida successione tutti i pacchetti della sequenza prestabilita. Per confondere un po’ le acque all’eventuale aggressore che sta sniffando, sarà utile inviare i pacchetti della sequenza con intervalli che possono andare dai 700 millisecondi al 1.5 secondi.

In questo modo, i pacchetti della sequenza saranno “mescolati tra la folla” di migliaia di altri pacchetti, aggiungendo un po’ di difficoltà per capire cosa sta succedendo.

Conclusioni

In campo informatico la sicurezza non è mai abbastanza, questo lo abbiamo già detto, ma non ci stancheremo mai di ripeterlo.

Ogni server che si rispetti dovrebbe avere a bordo il proprio firewall di sistema in modo che tutte le porte TCP ed UDP non necessarie siano costantemente inaccessibili dall’esterno.

Soprattutto la porta 22 (ssh), tipicamente utilizzata per effettuare la manutenzione del sistema da parte del Sysadmin. Questa porta non dovrebbe mai essere esposta in rete; sia che si tratti di un server connesso alla rete internet, sia che si tratti di un sistema sulla rete intranet.

L’amministratore di sistema di un server GNU Linux ha però necessità di poter accedere tramite il protocollo ssh per poter manutenere la macchina. Un problema non di poco conto.

Con il Port Knocking è possibile mantenere chiusa la porta ssh in modo che questa non sia costantemente disponibile a chiunque ed aprirla solo all’occorrenza.

Condividi

Lascia un commento