Come proteggere SSH su un VPS Linux
Un VPS pubblico riceve tentativi di accesso automatici entro pochi minuti dalla messa online. Questi passaggi rendono SSH molto più difficile da attaccare. Sono scritti per Ubuntu o Debian; se non hai ancora creato un server, puoi noleggiare un VPS Linux e partire da un'immagine pulita. Mantieni aperta la sessione SSH attuale finché non hai verificato le nuove impostazioni da una seconda finestra.
1. Crea un utente normale con sudo
adduser deploy
usermod -aG sudo deploy2. Usa le chiavi SSH al posto delle password
Sul tuo computer:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPAccedi una volta con la chiave per verificare che funzioni prima di disattivare le password.
3. Disattiva il login con password e come root
Crea /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Controlla la sintassi e ricarica il servizio. Il servizio si chiama ssh su Ubuntu e Debian e sshd sui sistemi basati su RHEL:
sudo sshd -t && sudo systemctl reload sshApri un secondo terminale ed effettua di nuovo l'accesso. Solo dopo chiudi la vecchia sessione.
4. Attiva un firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseApri solo le porte di cui hai bisogno, come 80 e 443 per un web server. Puoi anche limitare SSH al tuo indirizzo IP con una regola del firewall nel pannello cloud.
5. Blocca i tentativi ripetuti con Fail2ban
sudo apt install -y fail2banCrea /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Installa automaticamente gli aggiornamenti di sicurezza
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Extra facoltativi
- Cambiare la porta SSH riduce il rumore nei log, ma di per sé non è una misura di sicurezza.
- Proteggi la chiave privata con una passphrase e conserva una copia di backup in un luogo sicuro.
- Controlla gli accessi con
lastesudo journalctl -u ssh --since today. - Crea uno snapshot una volta configurato il server, così potrai ripristinare una base pulita.
Se sei rimasto fuori, usa la console del browser nel pannello cloud per accedere e correggere la configurazione. La nostra guida alla protezione DDoS copre il livello di difesa successivo.
Domande frequenti
È sicuro disattivare il login root?
Sì, se prima crei un utente sudo e verifichi che la sua chiave funzioni. Puoi comunque eseguire comandi amministrativi con sudo.
Serve Fail2ban se uso solo le chiavi?
È facoltativo. Con il login tramite password disattivato, un attacco a forza bruta non può riuscire, ma Fail2ban riduce il rumore nei log e il carico.
Cosa succede se perdo la mia chiave SSH?
Usa la console nel pannello cloud per accedere, aggiungi la nuova chiave pubblica in ~/.ssh/authorized_keys e rimuovi la vecchia.