Metti in sicurezza la tua VPS: una checklist da completare in 20 minuti
Questa guida è tradotta dall'inglese. Alcune pagine collegate sono disponibili solo in inglese.
I passaggi concreti che fermano la stragrande maggioranza degli attacchi opportunistici.
Non renderai mai un server perfettamente sicuro. Puoi però renderlo un bersaglio poco appetibile in una ventina di minuti, il che devia praticamente tutti gli attacchi automatizzati.
1. SSH solo con chiavi
Spiegato per intero in Chiavi SSH e accesso. È il singolo passaggio di maggior valore. Il brute-forcing delle password è il metodo di intrusione più comune su internet e questo lo elimina.
PasswordAuthentication no
PermitRootLogin prohibit-password2. Un firewall con default-deny
Consenti solo ciò che servi davvero. Su Debian/Ubuntu:
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp # SSH — see the warning below
ufw allow 80,443/tcp # web
ufw enable
ufw status verboseSulla famiglia RHEL, usa firewalld:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadAttenzione: attiva il firewall mentre la sessione SSH è aperta e verifica che SSH sia consentito prima di disconnetterti. Se cambi la porta SSH, consenti prima la nuova porta. Vedi Nozioni di base sul firewall per i dettagli, inclusa la nostra interfaccia mesh privata che deve essere sempre consentita.
3. Aggiornamenti di sicurezza automatici
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades # choose yes
# verify:
systemctl status unattended-upgrades --no-pagerSulla famiglia RHEL, dnf-automatic svolge lo stesso compito. Le patch di sicurezza automatiche chiudono la finestra tra la pubblicazione di una vulnerabilità e il suo sfruttamento — che nella pratica spesso è di poche ore.
4. Fail2ban
Blocca un IP dopo ripetuti accessi falliti, trasformando un tentativo infinito di brute-force in un vicolo cieco. Vedi Nozioni di base su Fail2ban.
apt install -y fail2ban
systemctl enable --now fail2ban5. Disattiva ciò che non usi
Ogni servizio in ascolto è un potenziale punto di ingresso.
ss -tulpn # what is listening, and who owns it
systemctl --type=service --state=running # what is runningFerma e disabilita tutto ciò che non hai richiesto. Un server minimale è un server sicuro.
6. Esegui i servizi come utenti senza privilegi
Database, app web e worker non dovrebbero mai girare come root. La maggior parte dei pacchetti crea automaticamente un proprio utente di servizio; usalo. Se scrivi un tuo file di unità, imposta esplicitamente User= e Group=.
7. Proteggi i segreti
Non fare mai il commit di segreti su git. Usa file di ambiente con
chmod 600.Non rendere mai un file di configurazione leggibile da tutti se contiene una password o una chiave.
Preferisci credenziali per servizio a una singola credenziale amministrativa condivisa.
8. Tieni una via di ritorno
Verifica che la console di ripristino in /panel/vps funzioni prima di averne bisogno.
Crea uno snapshot prima delle modifiche rischiose — vedi Ridimensionare, snapshot e reinstallare.
Conserva almeno una chiave SSH in un posto diverso dal tuo portatile di tutti i giorni.
9. Monitora
Un server che non guardi mai è un server che non puoi difendere. Aggiungi un controllo di monitoraggio e leggi ogni tanto i log — Leggere i log mostra come.
Facoltativo: rilevamento delle intrusioni
Per host di maggior valore, CrowdSec (blocco collaborativo, licenza MIT) e Wazuh (rilevamento delle intrusioni sull'host) aggiungono vera profondità. Entrambi sono documentati nelle nostre guide all'hosting di app.
Letture correlate