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.
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.
ssh root@203.0.113.10
exitDal 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.
ssh-copy-id root@203.0.113.10Number 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.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.
ssh root@203.0.113.10Elencate 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.
ls /etc/ssh/sshd_config.d/
cat /etc/ssh/sshd_config.d/50-cloud-init.confPasswordAuthentication yesAprite 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.
nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf# Connessione SSH solo tramite chiave
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-passwordEseguite 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.
sshd -t
sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
systemctl reload sshpermitrootlogin without-password
passwordauthentication no
kbdinteractiveauthentication noSenza 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.
ssh -o PubkeyAuthentication=no root@203.0.113.10
ssh root@203.0.113.10root@203.0.113.10: Permission denied (publickey).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.
apt update
apt install -y fail2banAssicuratevi 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à.
systemctl is-active fail2ban
fail2ban-client status sshd
exitactive
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: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.
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.
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.
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.
Ponila al team LWS e alla community. La risposta viene pubblicata dopo la moderazione.