Una nuova VPS con un indirizzo IP pubblico inizia a ricevere tentativi di accesso automatici nel giro di pochi minuti. Nulla di personale: i bot scansionano semplicemente ogni indirizzo. Pochi passaggi di base ne bloccano quasi tutti. Questa checklist presuppone un server nuovo con Ubuntu 24.04 o Debian 12/13 e richiede circa quindici minuti.
1. Aggiorna prima di tutto
apt update && apt full-upgrade -y
reboot
Accedi di nuovo dopo il riavvio. Parti sempre da un sistema completamente aggiornato.
2. Crea un utente non root
Lavorare sempre come root rende pericoloso ogni errore di battitura. Crea un utente normale con diritti sudo:
adduser deploy
usermod -aG sudo deploy
3. Configura le chiavi SSH
Sul tuo computer, crea una coppia di chiavi se non ne hai una e copia la metà pubblica sul server:
ssh-keygen -t ed25519 -C "my-vps"
ssh-copy-id deploy@YOUR_SERVER_IP
Apri un secondo terminale e verifica di poter accedere come deploy con la chiave prima di proseguire. Non chiudere la sessione originale finché non ci sei riuscito.
4. Disattiva l’accesso con password e come root
Modifica la configurazione del demone SSH:
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
Inserisci queste righe nel file:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
Controlla la sintassi e ricarica:
sudo sshd -t && sudo systemctl reload ssh
5. Abilita un firewall
UFW è l’opzione più semplice. Consenti prima SSH, poi attiva il firewall:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp # only if you run a web server
sudo ufw enable
sudo ufw status verbose
Apri porte solo per i servizi che esegui davvero. Tutto il resto resta chiuso per impostazione predefinita.
6. Aggiungi fail2ban
Fail2ban monitora i log e blocca temporaneamente gli indirizzi che continuano a fallire l’accesso.
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Le impostazioni predefinite sono adeguate per SSH. Poiché hai già disattivato le password, questo serve soprattutto a ridurre il rumore nei log e lo spreco di CPU.
7. Attiva gli aggiornamenti di sicurezza automatici
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Questo installa automaticamente le patch di sicurezza. Riavvia ogni tanto per gli aggiornamenti del kernel, oppure lascia che lo faccia lo strumento in un orario tranquillo.
8. Controlla cosa è in ascolto
sudo ss -tulpn
Tutto ciò che è in ascolto su 0.0.0.0 e che non ti aspettavi merita un’indagine. I servizi destinati solo all’uso locale (database, cache, pannelli di amministrazione) dovrebbero restare in ascolto su 127.0.0.1.
9. Monitoraggio di base e backup
- Controlla i log con
journalctl -u ssh --since todayogni tanto. - Controlla le risorse con
htopedf -hcosì un disco pieno o un processo fuori controllo non ti coglie di sorpresa. - Fai i backup. Crea uno snapshot del server prima di modifiche importanti e conserva una copia fuori dal server di tutto ciò che non puoi ricreare.
Cosa fare dopo
Ora hai un server molto più difficile da violare rispetto a quello predefinito. Da qui, tieni aggiornato il software, esegui ogni servizio come utente non privilegiato e esponi solo ciò che serve. Se vuoi un tunnel privato verso il server, la nostra guida a configurare WireGuard è un buon passo successivo.
Domande frequenti
Cosa dovrei fare per prima cosa su un nuovo VPS?
Aggiorna i pacchetti, crea un utente non root, passa alle chiavi SSH, disattiva l’accesso con password e abilita un firewall.
Dovrei cambiare la porta SSH?
Riduce il rumore nei log ma non è vera sicurezza. Le chiavi e un firewall contano molto di più.