Guida di base alla sicurezza di SSHD. In questa guida illustrerò alcuni punti importanti riguardanti la sicurezza di un server SSH. SSHD è un servizio che offre la possibilità di connettersi ad una Shell da remoto. La connessione avviene in modo criptato. Ecco alcuni punti per migliorare la sicurezza di SSHD.
1. Limitare l’accesso tramite indirizzo ip
Per limitare l’accesso tramite indirizzo ip editare il file hosts.allow e host.deny. Nel file allow andiamo ad inserire le istruzioni sul chi può accedere e nel file con l’estensione .deny informazioni sugli ip a cui negare l’accesso. Nel nostro caso a tutti. Per farlo inserire in /etc/hosts.deny la seguente riga:
sshd: ALL
Con questo rifiutiamo l’accesso a tutti a parte chiaramente gli hosts inseriti (indirizzi ip, o range di ip) nel file hosts.allow, che andiamo ad editare. In questo modo l’accesso sarà permesso solo da uno specifico indirizzo Ip. Nel file /etc/hosts.allow inserire la seguente riga:
sshd: 192.168.200.10
2. Limitare l’accesso ad alcuni utenti
Per limitare l’accesso solo ad alcuni utenti editare il file /etc/ssh/sshd_config ed aggiungere la seguente riga:
AllowUsers chituser
3. Disabilitare il login da Root
Per disabilitare il login da Root editare il file /etc/ssh/sshd_config ed aggiungere la seguente riga:
PermitRootLogin no
Rendendo impossibile l’accesso diretto tramite Root si evita di esporre l’account dell’amministratore ad eventuali attacchi ed exploit. Poi, oltre a questo, un eventuale attacker dovrebbe essere a conoscenza delle informazioni di accesso (nome utente e password) riguardanti sia l’utente usato per connettersi al Server che Root. Quindi una doppia sicurezza.
4. Cambiare la Porta
Il motivo per il quale viene consigliato di non usare la porta (22) standard è il seguente: Un attaccante potrebbe scannare l’ip del Server con un port-scanner e capire che sul Server in questione sia attivo SSHD e decidere di usarlo come punto di attacco.
Oppure un malintenzionato potrebbe scannare la rete alla ricerca di hosts con la porta 22 aperta con un ip-scanner. Quindi come in tutto meno informazioni si danno all’attaccante su che Servizi sono attivi e sul che porte sono aperte e meglio è.
Vi sono due tipi di scanner, gli IP-scanner e i Port-scanner che come si capisce già dalla parola servono rispettivamente per scannare un ip alla ricerca di porte aperte o per scannare un range di ip (una rete) alla ricerca di specifiche porte aperte. L’IP-scanner scanna la rete alla ricerca di hosts con una specifica porta aperta mentre il port-scanner scanna und indirizzo ip alla ricerca di porte aperte. Network-scanners come nmap per Linux incorporano tutte e due le funzionalità.
Per cambiare la porta dobbiamo per prima cosa sceglierne una, si può usare una qualsiasi porta da 1024 a 65535. Uno scanner non scannerà per default queste porte (non standard).
Per cambiare la porta editare il file di configurazione sshd_config e aggiungere le seguenti righe:
Port 6500 ListenAddress 10.10.10.10
5. Usare password complicate e cambiarle spesso
Cambiare spesso le password e usarne di complicate è molto importante. L’ideale sarebbe cambiare la password ogni mese o due.
6. Attivare l’opzione StrictModes
Per usare l’opzione settare il valore su yes, editando il file /etc/sshd_config:
StrictModes yes
7. Usare UsePrivilegeSeparation
Per attivare l’opzione editare il file /etc/sshd_config e aggiungere quanto segue:
UsePrivilegeSeparation yes
8. Forzare l’uso del Protocollo 2
Per forzare l’uso del protocollo 2 Aggiungere la seguente riga nel file di configurazione:
Protocol 2
Se è già presente lasciare com’è. Questo farà in modo che ai client che hanno ancora in uso una versione vecchia di un ssh client, verrà negato l’accesso.
9. Disabilitare l’accesso senza password
Per impedire il login da remoto a utenti non protetti da password impostare la seguente opzione su no:
PermitEmptyPasswords no
10. Limitare l’accesso tramite ip usando iptables
In alternativa al metodo utilizzato prima o come doppia sicurezza (usare entrambi i metodi) oltre al fare uso del file hosts.deny e hosts.allow per limitare l’accesso solo ad alcuni hosts, vi è la possibilità di usare iptables per ottenere li stessi risultati.
Ecco il comando per permettere l’accesso al Secure Shell Server su una determinata porta ad un host specifico:
# iptables -A INPUT -p tcp -m state --state NEW --source 192.168.200.10 --dport 6500 -j ACCEPT
Questo invece è il comando per negare l’accesso a tutti gli altri:
# iptables -A INPUT -p tcp --dport 6500 -j DROP
11. Attualizzare OpenSSH e sistema operativo
Una altra cosa importante è chiaramente tenere aggiornato il sistema operativo come anche l’applicazione stessa, OpenSSH. Assicurarsi di avere in uso sempre la versione più attuale disponibile.
12. SSH Client
Ora per connettersi al Secure Shell Server appena configurato bisogna usare i parametri -l per specificare l’utente e -p per la porta. Ecco un esempio:
ssh -l chituser -p 6500 10.10.10.10