Questo tutorial si concentra sull'impostazione e la configurazione di un server SSH su un server minimo Debian 10
SSH , per Secure Shell , è un protocollo di rete utilizzato per eseguire accessi remoti a macchine distanti all'interno di una rete locale o su Internet. Le architetture SSH in genere includono un server SSH utilizzato dai client SSH per connettersi alla macchina remota.
In qualità di amministratore di sistema, è molto probabile che utilizzi SSH quotidianamente per connetterti a macchine remote attraverso la tua rete.
Di conseguenza, quando nuovi host vengono inseriti nella tua infrastruttura, potresti dover configurarli per installarli e abilitare SSH su di essi.
In questo tutorial, vedremo come installare e abilitare SSH, tramite OpenSSH , su una distribuzione Debian 10.
Prerequisiti
Per installare un server SSH su Debian 10, dovrai disporre dei privilegi sudo sul tuo host.
Per verificare se hai i privilegi sudo o meno, esegui il seguente comando
$ sudo -l
Se vedi le seguenti voci sul tuo terminale, significa che hai privilegi elevati
Per impostazione predefinita, l'utilità ssh dovrebbe essere installata sul tuo host, anche su configurazioni minime.
Per verificare la versione della tua utility SSH, puoi eseguire il seguente comando
$ ssh -V
Come puoi vedere, sto eseguendo OpenSSH v7.9 con OpenSSL v1.1.1.
Nota che ciò non significa che i server SSH siano installati sul mio host, significa solo che potrei collegarmi a macchine remote come client usando l'utilità SSH.
Significa anche che sul mio host saranno disponibili utilità specifiche relative al protocollo SSH (come scp ad esempio) o relative ai server FTP (come sftp).
Installazione del server OpenSSH su Debian 10
Prima di tutto, assicurati che i tuoi pacchetti siano aggiornati eseguendo un comando di aggiornamento
$ sudo apt-get update
Per installare un server SSH su Debian 10, esegui il seguente comando
$ sudo apt-get install openssh-server
Il comando dovrebbe eseguire un processo di installazione completo e dovrebbe configurare tutti i file necessari per il tuo server SSH.
Se l'installazione ha avuto successo, ora dovresti avere un servizio sshd installato sul tuo host.
Per controllare il servizio appena installato, esegui il seguente comando
$ sudo systemctl status sshd
Per impostazione predefinita, il tuo server SSH verrà eseguito sulla porta 22.
Questa è la porta predefinita assegnata per le comunicazioni SSH. Puoi verificare se questo è il caso sul tuo host eseguendo il seguente comando netstat
$ netstat -tulpn | grep 22
Grande! Il tuo server SSH è ora attivo e funzionante sul tuo host Debian 10.
Abilitazione del traffico SSH sulle impostazioni del firewall
Se stai usando UFW come firewall predefinito sul tuo sistema Debian 10, è probabile che tu debba consentire le connessioni SSH sul tuo host.
Per abilitare le connessioni SSH sul tuo host, esegui il seguente comando
$ sudo ufw allow ssh
Abilita il server SSH all'avvio del sistema
Come probabilmente hai visto, il tuo server SSH è ora in esecuzione come servizio sul tuo host.
È anche molto probabile che venga richiesto di avviarsi all'avvio.
Per verificare se il tuo servizio è abilitato o meno, puoi eseguire il seguente comando
$ sudo systemctl list-unit-files | grep enabled | grep ssh
Se non vengono visualizzati risultati sul tuo terminale, abilita il servizio ed esegui nuovamente il comando
$ sudo systemctl enable ssh
Configurazione del tuo server SSH su Debian
Prima di consentire l'accesso agli utenti tramite SSH, è importante disporre di una serie di impostazioni sicure per evitare di essere attaccati, soprattutto se il tuo server è in esecuzione come VPS online.
Come abbiamo già visto in passato, gli attacchi SSH sono piuttosto comuni ma possono essere evitati se modifichiamo le impostazioni predefinite disponibili.
Per impostazione predefinita, i file di configurazione SSH si trovano in /etc/ssh/
In questa directory troverai molti file di configurazione diversi, ma i più importanti sono :
- ssh_config :definisce le regole SSH per i client. Significa che definisce le regole che vengono applicate ogni volta che usi SSH per connetterti a un host remoto o per trasferire file tra host;
- sshd_config :definisce le regole SSH per il tuo server SSH. Viene utilizzato ad esempio per definire la porta SSH raggiungibile o per impedire a utenti specifici di comunicare con il proprio server.
Ovviamente modificheremo la parte a livello di server della nostra configurazione SSH poiché siamo interessati a configurare e proteggere il nostro server OpenSSH.
Modifica della porta predefinita SSH
Il primo passo verso l'esecuzione di un server SSH sicuro è modificare l'impostazione predefinita assegnata dal server OpenSSH.
Modifica il tuo file di configurazione sshd_config e cerca la riga seguente.
#Port 22
Assicurati di cambiare la tua porta con una che non sia riservata ad altri protocolli. In questo caso sceglierò 2222.
Quando ti connetti al tuo host, se non è in esecuzione sulla porta predefinita, specificherai tu stesso la porta SSH.
Per ulteriori informazioni, fare riferimento alla sezione "Connessione al server SSH".
Disabilitazione dell'accesso root sul tuo server SSH
Per impostazione predefinita, l'accesso root è disponibile sul tuo server SSH.
Ovviamente non dovrebbe essere così in quanto sarebbe un completo disastro se gli hacker dovessero accedere come root sul tuo server.
Se per caso hai disabilitato l'account di root nella tua installazione di Debian 10, puoi comunque configurare il tuo server SSH per rifiutare l'accesso come root, nel caso in cui tu scelga di riattivare il tuo login come root un giorno.
Per disabilitare l'accesso come root sul tuo server SSH, modifica la riga seguente
#PermitRootLogin
PermitRootLogin no
Configurazione dell'autenticazione SSH basata su chiave
In SSH, ci sono due modi per connettersi al tuo host:usando l'autenticazione della password (cosa stiamo facendo qui) o disponendo di un set di chiavi SSH.
Se sei curioso dell'autenticazione SSH basata su chiave su Debian 10, qui è disponibile un tutorial sull'argomento.
Riavvio del server SSH per applicare le modifiche
Per applicare le modifiche, riavvia il servizio SSH e assicurati che sia stato riavviato correttamente
$ sudo systemctl restart sshd
$ sudo systemctl status sshd
Inoltre, se modifichi la porta predefinita, assicurati che le modifiche siano state applicate correttamente eseguendo un semplice comando netstat
$ netstat -tulpn | grep 2222
Connessione al tuo server SSH
Per connetterti al tuo server SSH, utilizzerai il comando ssh con la seguente sintassi
$ ssh -p <port> <username>@<ip_address>
Se ti stai connettendo su una rete LAN, assicurati di ottenere l'indirizzo IP locale della tua macchina con il seguente comando
$ sudo ifconfig
Ad esempio, per connettermi alla mia istanza situata in 127.0.0.1, eseguirei il seguente comando
$ ssh -p 2222 <user>@127.0.0.1
Ti verrà chiesto di fornire la tua password e di certificare che l'autenticità del server è corretta.
Uscire dal server SSH
Per uscire dal tuo server SSH su Debian 10, puoi premere Ctrl + D o digitare "logout" e la tua connessione verrà interrotta.
Disabilitare il tuo server SSH
Per disabilitare il tuo server SSH su Debian 10, esegui il seguente comando
$ sudo systemctl stop sshd
$ sudo systemctl status sshd
Da lì, il tuo server SSH non sarà più accessibile.
Risoluzione dei problemi
In alcuni casi, potresti incontrare molti messaggi di errore quando provi a configurare un server SSH su Debian 10.
Ecco l'elenco degli errori comuni che potresti ricevere durante l'installazione.
Debian:connessione SSH rifiutata
Di solito ricevi questo errore perché il tuo firewall non è configurato correttamente su Debian.
Per risolvere "Connessione SSH rifiutata" devi ricontrollare le impostazioni del firewall UFW.
Per impostazione predefinita, Debian utilizza UFW come firewall predefinito, quindi potresti voler controllare le regole del firewall e vedere se SSH è consentito correttamente.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Se stai usando iptables, puoi anche controllare le tue attuali regole IP con il comando iptables.
$ sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
Se la regola non è impostata per SSH, puoi impostarla eseguendo nuovamente il comando iptables.
$ sudo iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Debian:accesso SSH negato
A volte, potrebbe esserti negato l'accesso al tuo server SSH con questo messaggio di errore "Accesso SSH negato" su Debian.
Per risolvere questo problema, dipende dal metodo di autenticazione in uso.
Accesso con password SSH negato
Se stai utilizzando il metodo della password, ricontrolla la tua password e assicurati di averla inserita correttamente.
Inoltre, è possibile configurare i server SSH per consentire solo un sottoinsieme specifico di utenti:in tal caso, assicurati di appartenere a tale elenco.
Infine, se vuoi accedere come root, assicurati di aver modificato l'opzione "PermitRootLogin" nel tuo file "sshd_config".
#PermitRootLogin
PermitRootLogin yes
Accesso alla chiave SSH negato
Se utilizzi chiavi SSH per l'autenticazione SSH, potrebbe essere necessario ricontrollare che la chiave si trovi correttamente nel file "authorized_keys".
Se non sei sicuro di come farlo, segui la nostra guida sull'autenticazione della chiave SSH su Debian 10.
Debian:Impossibile individuare il pacchetto openssh-server
Per questo, devi assicurarti di aver impostato correttamente i tuoi repository APT.
Aggiungi la seguente voce al tuo file sources.list e aggiorna i tuoi pacchetti.
$ sudo nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian wheezy main
$ sudo apt-get update
Conclusione
In questo tutorial, hai imparato come installare e configurare un server SSH su host Debian 10.
Hai anche appreso le opzioni di configurazione di base che devono essere applicate per eseguire un server SSH sicuro e robusto su una LAN o su Internet.
Se sei curioso dell'amministrazione del sistema Linux, abbiamo un sacco di tutorial sull'argomento in una categoria dedicata.