Il port knocking è un modo molto interessante di abilitare l'accesso a vari servizi (classico sshd ad esempio) senza dover tenere sempre aperta la porta sul firewall. Una misura di sicurezza aggiuntiva molto efficace con un basso costo di gestione e praticamente nessuna contro indicazione.
Partiamo dal presupposto di avere sul nostro server un firewall basato su IPTABLES con tutte le porte chiuse, e abbiamo la necessità di accedere da remoto tramite ssh. La strada che vogliamo evitare è quella di utilizzare il port forwarding aprendo la porta sul firewall e inoltrandola al server o di aprire la porta del servizio sshd (è solo un esempio, potrei voler abilitare altri servizi) direttamente.
Qui entra in gioco il PORT KNOCKING. Vige il principio client/server, ove il server prevede un file di configurazione non troppo complicato e il client è facilmente impostabile tramite parametri.
Il meccanismo è questo: il client esegue una sequenza di richieste di accesso (lancia dei SYN) a porte di servizio arbitrarie entro un tempo stabilito, questa sequenza viene riconosciuta ed abilita l'apertura di una determinata porta corrispondente ad un preciso servizio.
IPTABLES dinamicamente quindi, cambia le sue RULES, in virtù di una sequenza stabilita e riconosciuta (questi sono i parametri da impostare nel file di configurazione del client e del server).
Ad esempio: entro 10 secondi devo interrogare 3 porte e per ultima quella relativa al servizio utile (esempio sshd) , se la sequenza delle tre porte è giusta, sshd verrà abilitato e inizierà la regolare procedura di autenticazione su questo servizio.
Personalmente questo sistema di sicurezza mi ha entusiasmato, forse per la sua semplicità direttamente proporzionale alla sua efficacia.
Overview, gestione, utilizzo di iptables su Linux per packet filtering
Port Knocking su Linux
Prova a dare un'occhiata qui :
http://stargazer.altervista.org/pk/5_5.html
Port Knocking su Linux
Si potrebbe avere un'estratto
di uno script iptables nel quale si applica il Port Knocking, con il relativo esempio di connessione dal client.
Poi se possibile vorrei sapere anche come fare (una volta terminata la connessioine) per "richiudere" la porta in automatico sempre tramite rules dinamiche di iptables.
Grazie.