Come mettere in sicurezza l'accesso SSH di un VPS LWS: solo chiavi e fail2ban

Procédure

Per mettere in sicurezza l'accesso SSH del vostro VPS LWS, si consiglia di disattivare completamente l'autenticazione tramite password a favore di una chiave SSH, quindi installare fail2ban. Questa configurazione protegge il vostro server dagli attacchi brute force ed elimina i rischi legati a password intercettate o indovinate. In questo tutorial, copierete la vostra chiave SSH pubblica, adatterete la configurazione SSH per neutralizzare le impostazioni predefinite di cloud-init, quindi installerete e verificherete la protezione attiva di fail2ban.

Installare la propria chiave SSH

  1. Collegatevi una prima volta in SSH e poi disconnettetevi

    Aprite un terminale sul vostro computer e collegatevi al server usando la password root ricevuta nella vostra e-mail di consegna. Al primo accesso, accettate l'impronta digitale della chiave del server digitando yes. Una volta connessi, chiudete immediatamente la sessione eseguendo exit per tornare alla vostra macchina locale.

    ⌨ Sul tuo computer
    ssh root@203.0.113.10
    exit
  2. Copiate la vostra chiave SSH pubblica sul VPS

    Dal vostro computer, usate il comando ssh-copy-id per copiare la vostra chiave pubblica sul server. Inserite la password root un'ultima volta quando il terminale ve lo richiede. Se avevate già aggiunto la vostra chiave SSH durante l'ordine o la reinstallazione dal pannello KVM, questo passaggio non è necessario.

    ⌨ Sul tuo computer
    ssh-copy-id root@203.0.113.10
    Risultato atteso
    Number of key(s) added: 1
    
    Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
    and check to make sure that only the key(s) you wanted were added.
  3. Verificate la connessione tramite chiave SSH

    Ricollegatevi al vostro VPS in SSH dal vostro computer. La connessione deve stabilirsi istantaneamente senza richiedere la password root del server, confermando che la vostra chiave pubblica è stata installata correttamente.

    ⌨ Sul tuo computer
    ssh root@203.0.113.10

Disattivare la connessione tramite password

  1. Individuate la trappola del file cloud-init

    Elencate i file presenti nella directory /etc/ssh/sshd_config.d/ e visualizzate il contenuto di 50-cloud-init.conf. Questo file attiva l'autenticazione tramite password. Poiché il server SSH mantiene la prima direttiva incontrata durante la lettura dei file in ordine alfabetico, la vostra configurazione deve obbligatoriamente essere letta prima di essa.

    ⌨ Sul server
    ls /etc/ssh/sshd_config.d/
    cat /etc/ssh/sshd_config.d/50-cloud-init.conf
    Risultato atteso
    PasswordAuthentication yes
  2. Create il file di configurazione SSH prioritario

    Aprite l'editor nano per creare il file 00-cles-uniquement.conf. Il prefisso 00 garantisce che questo file sarà elaborato prima di 50-cloud-init.conf. Inserite le direttive che disattivano le password e limitano l'accesso root alle chiavi, quindi salvate con Ctrl+X, confermate con O (o Y a seconda della lingua) e premete Invio.

    ⌨ Sul server
    nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    📄 /etc/ssh/sshd_config.d/00-cles-uniquement.conf
    # Connessione SSH solo tramite chiave
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
  3. Testate la sintassi e applicate la configurazione

    Eseguite sshd -t per verificare l'assenza di errori di sintassi, poi controllate i valori attivi con sshd -T. Notate che permitrootlogin mostra without-password, che corrisponde a prohibit-password. Se tutto è corretto, ricaricate il servizio SSH per applicare i nuovi parametri senza interrompere la vostra sessione.

    ⌨ Sul server
    sshd -t
    sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
    systemctl reload ssh
    Risultato atteso
    permitrootlogin without-password
    passwordauthentication no
    kbdinteractiveauthentication no

Testare l'accesso SSH

  1. Convalidate il rifiuto della password e l'accesso tramite chiave

    Senza chiudere la vostra sessione attiva, aprite una seconda finestra di terminale sul vostro computer. Provate innanzitutto una connessione forzando il rifiuto delle chiavi con l'opzione PubkeyAuthentication=no: il server deve rifiutare l'accesso. Avviate quindi una connessione normale: l'autenticazione tramite chiave avviene con successo.

    ⌨ Sul tuo computer
    ssh -o PubkeyAuthentication=no root@203.0.113.10
    ssh root@203.0.113.10
    Risultato atteso
    root@203.0.113.10: Permission denied (publickey).

Installare e verificare fail2ban

  1. Installate fail2ban

    Dalla vostra sessione collegata al VPS, aggiornate la lista dei repository Debian con apt update, quindi installate il pacchetto fail2ban. Sulle versioni recenti di Debian, fail2ban attiva automaticamente la protezione del servizio SSH al termine dell'installazione.

    ⌨ Sul server
    apt update
    apt install -y fail2ban
  2. Verificate lo stato di fail2ban e chiudete la sessione

    Assicuratevi che il servizio fail2ban sia attivo con systemctl, quindi interrogate la jail sshd per confermare che il filtraggio funzioni e monitori le connessioni. Potete quindi disconnettervi in tutta serenità.

    ⌨ Sul server
    systemctl is-active fail2ban
    fail2ban-client status sshd
    exit
    Risultato atteso
    active
    Status for the jail: sshd
    |- Filter
    |  |- Currently failed: 1
    |  |- Total failed:     3
    |  `- Journal matches:  _SYSTEMD_UNIT=ssh.service + _COMM=sshd
    `- Actions
       |- Currently banned: 0
       |- Total banned:     0
       `- Banned IP list:

Lessico

SSH (Secure Shell)
Protocollo di comunicazione sicuro che consente di connettersi e amministrare un server remoto da linea di comando.
Chiave pubblica
File di chiave depositato sul server remoto per verificare l'identità dell'utente senza trasmettere una password.
Chiave privata
File di chiave strettamente confidenziale conservato sul vostro computer locale e utilizzato per provare la vostra identità al server.
Cloud-init
Strumento di automazione utilizzato durante la distribuzione iniziale delle macchine virtuali per inizializzare la rete e gli accessi.
fail2ban
Software di sicurezza che monitora i log di sistema e blocca temporaneamente a livello di firewall gli indirizzi IP sospetti.
Jail (prigione)
In fail2ban, insieme che associa un filtro di rilevamento dei tentativi abusivi e una regola di ban per un determinato servizio.

Domande frequenti

Perché nominare il file 00-cles-uniquement.conf invece di modificare sshd_config?

Il demone OpenSSH legge i file della cartella sshd_config.d in ordine alfabetico e applica il primo valore che incontra. Usando il prefisso 00, le vostre direttive vengono elaborate prima di quelle di 50-cloud-init.conf, garantendo così che il divieto delle password venga preso in considerazione.

Cosa fare se mi ritrovo bloccato fuori dal mio VPS?

Se perdete l'accesso SSH, collegatevi alla vostra area clienti LWS e aprite la console KVM / VNC disponibile per il vostro VPS. Questa console simula uno schermo e una tastiera fisici collegati al server e consente di correggere i file di configurazione senza passare da SSH.

Qual è la differenza tra prohibit-password e without-password?

Si tratta esattamente dello stesso parametro in OpenSSH. prohibit-password è la sintassi moderna consigliata, ma il comando sshd -T mostra il suo equivalente storico without-password nell'elenco delle direttive attive.

Bisogna configurare fail2ban dopo la sua installazione su Debian?

Sulle distribuzioni recenti come Debian 13, fail2ban configura e avvia automaticamente la jail per il servizio SSH subito dopo l'installazione del pacchetto. Potete personalizzare in seguito le durate dei ban in un file jail.local se lo desiderate.

help.lws.net/a/7926
Questo articolo ti è stato utile?

Sì

No

Letto 1 volte

Grazie! Non esitare a porre domande sulla nostra documentazione se desideri maggiori informazioni e aiutarci a migliorarla.

Articoli simili

Una domanda su questo articolo?

Ponila al team LWS e alla community. La risposta viene pubblicata dopo la moderazione.

Fate una domanda al team LWS e alla sua comunità

GDPR: Titolare: LWS-Ligne Web Services. Finalità: moderazione e pubblicazione della tua domanda, eventuale notifica di una risposta. Base giuridica: consenso (art. 6.1.a GDPR). Conservazione delle e-mail: 90 giorni dopo la notifica, massimo 12 mesi senza risposta. Per esercitare i tuoi diritti, consulta la sezione GDPR delle nostre condizioni generali.