SSH (Secure Shell) è un protocollo di rete crittografico per avviare sessioni di shell basate su testo su macchine remote in modo sicuro.
OpenSSH è il client e il server SSH standard utilizzato dalla maggior parte delle distribuzioni Linux. È uno strumento di connettività su cui la maggior parte degli amministratori fa affidamento per lavorare sui propri server Linux e *BSD. OpenSSH crittografa tutto il traffico (comprese le password) per eliminare efficacemente le intercettazioni, il dirottamento della connessione e altri attacchi. Quindi in altre parole "OpenSSH garantisce che la connessione al tuo server sia sicura". Vedi l'articolo di Wikipedia per un'escursione dettagliata su SSH.
Questo tutorial illustra le migliori pratiche per configurare il tuo server SSH in modo sicuro.
Sicurezza OpenSSH
Queste sono le sei attività più importanti per proteggere la configurazione del tuo server SSH:
- Utilizza una password complessa.
- Cambia la porta SSH predefinita.
- Utilizza sempre il protocollo versione 2.
- Disabilita il login di root.
- Limita l'accesso degli utenti.
- Utilizza la chiave per l'autenticazione.
Utilizza una password complessa
Una password è una parola o una stringa di caratteri utilizzata per l'autenticazione dell'utente per dimostrare l'identità o l'approvazione dell'accesso per ottenere l'accesso a una risorsa. Tienilo segreto a coloro che non sono autorizzati ad accedere al server. Usa una password complessa e lunga, dovrebbe essere facile da ricordare e univoca secondo te ma non facile da indovinare per gli altri . Non usare `admin123` o `admin` ecc. che sono facili da indovinare e non usare compleanni, il nome di tua moglie ecc. Una buona password dovrebbe contenere anche caratteri speciali come '.!;/' (non solo i caratteri a-c e 0-9). Usa caratteri maiuscoli e minuscoli nella password.
Cambia la porta SSH predefinita
Il Post predefinito del servizio SSH è 22, dovresti cambiarlo per rendere meno ovvio che il tuo server sta eseguendo un servizio SSH. Il file di configurazione SSH si trova nella directory /etc/sshd/, devi modificare il file di configurazione /etc/ssh/sshd_config .
nano /etc/ssh/sshd_config
Cerca la riga "Porta":
Port 22
e cambialo con il tuo numero di porta preferito, ad esempio:1337
Port 1337
Scegli una porta che non è ancora in uso sul tuo server. Puoi ottenere un elenco delle porte attualmente in uso con il comando:
netstat -ntap
Questo comando si traduce in un elenco piuttosto lungo che mostra tutte le porte e le connessioni aperte. Se vuoi solo controllare se la porta desiderata è disponibile, usa invece questo comando:
netstat -ntap | grep 4422
In questo esempio, verificherò se la porta 4422 è libera. Se il comando non restituisce un risultato, la porta è disponibile e può essere utilizzata per SSH.
Usa sempre il protocollo 2
SSH ha due versioni di protocollo, il vecchio protocollo 1 che non è sicuro e il nuovo protocollo 2. Quindi usa sempre il protocollo 2 per il tuo server ssh, è più sicuro del protocollo 1. Maggiori informazioni qui.
Disabilita l'accesso come root
Dovresti disabilitare l'accesso diretto per l'utente root perché ci sono molti attacchi di forza bruta contro il nome del superutente root. IMPORTANTE:prova l'accesso SSH con l'utente alternativo non root che prevedi di utilizzare per gli accessi ssh prima di disabilitare l'account root.
PermitRootLogin no
Dopo aver impostato "PermitRootLogin" su "no", non puoi più accedere con l'account root, sebbene utilizzi la password corretta per l'utente root.
Limita utenti
Dovresti aggiungere un nuovo utente per accedere al tuo server. Supponiamo di aver creato gli utenti ruiko e mikoto per accedere al tuo server, quindi puoi aggiungere la nuova riga:
AllowUsers ruiko mikoto
in /etc/ssh/sshd_config per limitare l'accesso SSH a questi utenti.
Utilizza l'autenticazione basata su chiave
Ti ho consigliato di utilizzare questa opzione perché è molto facile da configurare e più sicura dell'autenticazione basata su password. Per prima cosa devi creare una coppia di chiavi pubblica-privata sul tuo computer locale (desktop), io uso Linux per crearla.
Puoi creare la coppia di chiavi pubblica/privata con questo comando:
ssh-keygen -t rsa -b 4096
Creerà 2 file che si trovano nella directory ~/.ssh/, id_rsa come chiave privata e id_rsa.pub come chiave pubblica. Se viene richiesta una password, puoi lasciarla vuota o digitare la tua password. Si consiglia di utilizzare una password per proteggere la chiave.
Ora carica la chiave pubblica id_rsa.pub sul tuo server con il comando ssh-copy-id.
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Scriverà automaticamente la tua chiave pubblica nel file ~/.ssh/authorized_keys/ nel tuo server.
Ora torna al tuo server e modifica di nuovo la configurazione del tuo file ssh.
nano /etc/ssh/sshd_config
Decommenta questa riga:
AuthorizedKeysFile %h/.ssh/authorized_keys
e infine riavvia il tuo server ssh:
systemctl restart sshd
Ora prova a connetterti al tuo server:
ssh -p '4422' '[email protected]'
Conclusione
OpenSSH è lo standard per l'accesso remoto sicuro a server simili a *Unix, in sostituzione del protocollo telnet non crittografato. SSH (e il suo sottoprotocollo SCP per il trasferimento di file) garantisce che la connessione dal computer locale al server sia crittografata e sicura. L'installazione di base di OpenSSH è già abbastanza sicura, ma possiamo migliorarla seguendo la guida sopra.