next   previous   contents

Protezione del servizio ssh

  Viene ora illustrata una seconda dimostrazione del funzionamento del sistema, nell'ipotetica situazione in cui esso sia utilizzato per fornire un'accesso on demand al servizio ssh, installato sulla stessa macchina in cui servknock e' in esecuzione.
 La rete utilizzata per il test e' cosi' costituita :

 -stargazer (192.168.0.1), consente l'acesso agli utenti autorizzat tramite il servizio ssh e svolge i compiti di firewall, e portknocking server;  -ayreon (192.168.0.4), la macchina del richiedente, dalla quale vengono inviate le sequenze di knock.

 Nella situazione ipotizzata il servizio ssh e' installato su stargazer, ma non e' in esecuzione. Si vuole fare in modo che esso sia accessibile solo in seguito alla ricezione di un'opportuna sequenza di knock.
 In risposta alla sequenza corretta servknock provvedera' ad avviare il servizio e ad aggiungere la seguente regola di filtraggio, in modo da consentire l'accesso al richiedente, dalla macchina con indirizzo 192.168.0.4:

iptables -A INPUT -s 192.168.0.4 -p tcp --dport 22 -j ACCEPT

 Perche' servknock possa aggiungere la precedente regola alla politica di filtraggio, in risposta ad una specifica sequenza, devono quindi essere presenti nel relativo file di configurazione le seguenti righe:

<seq>
name=ssh_open
seq_timeout=40
sequence=UDP:222,ICMP,TCP:56,UDP:22,TCP:99
tcp_flags=syn,ack,psh
command=/etc/init.d/ssh start
command=iptables -A INPUT -s $IP -p tcp --dport 22 -j ACCEPT
</seq>

 Viene inoltre definita una seconda sequenza, per arrestare il servizio e rimuovere la regola di filtraggio precedentemente inserita :

<seq> name=ssh_close
seq_timeout=40
sequence=UDP:212,TCP:149,ICMP,UDP:42,TCP:199,TCP:180
tcp_flags=syn,psh,fin
command=iptables -D INPUT -s $IP -p tcp --dport 22 -j ACCEPT
command=/etc/init.d/ssh stop
</seq>

 Inizialmente sulla macchina con indirizzo IP 192.168.0.1 (stargazer), vengono impostate le regole di filtraggio iniziali tramite lo shellscript fwall.sh ed avviato servknock. Si sottolinea inoltre che il servizio ssh non e' ancora in esecuzione, come si puo' notare dallo screenshot successivo che mostra anche il risultato di un portscan effettuato con nmap:


 A questo punto, se si tenta di accedere da ayreon a stargazer tramite ssh si ottiene il seguente risultato:


 Infatti, a causa della politica di filtraggio firewall, che applica l'azione DROP a tutti i pacchetti in arrivo sulla catena INPUT, non e' possibile, accedere alla porta 22, utilizzata da ssh.
 Per potervi accedere e' quindi necessario che il richiedente si autentichi inviando la sequenza di knock appropriata:


 Se la sequenza di knock ricevuta risulta corretta, servknock provvede ad avviare il servizio ssh ed aggiungere alla politica di filtraggio una regola per consentire al richiedente di accedere alla porta 22, in modo tale da consentire l'accesso da remoto a stargazer:


 Infatti con il comando ssh andrea@stargazer, il richiedente ha ora la possibilita' di accedere da remoto dall'host ayreon a stargazer, come si puo' notare dallo screenshot sottostante:


 Una volta eseguite le operazioni previste, il richiedente deve infine fermare il servizio ssh e rimuovere la regola di filtraggio inserita, inviando una seconda sequenza di knock, associata a queste operazioni. Una volta rilevata tale sequenza servknock esegue i comandi definiti nel file di configurazione, ovvero iptables -D INPUT -s $IP -p tcp --dport 22 -j ACCEPT ed /etc/init.d/ssh stop:


next   previous   contents