Vai al contenuto principale

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.

text
PasswordAuthentication no
PermitRootLogin prohibit-password

2. Un firewall con default-deny

Consenti solo ciò che servi davvero. Su Debian/Ubuntu:

bash
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 verbose

Sulla famiglia RHEL, usa firewalld:

bash
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Attenzione: 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

bash
apt install -y unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades    # choose yes
# verify:
systemctl status unattended-upgrades --no-pager

Sulla 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.

bash
apt install -y fail2ban
systemctl enable --now fail2ban

5. Disattiva ciò che non usi

Ogni servizio in ascolto è un potenziale punto di ingresso.

bash
ss -tulpn        # what is listening, and who owns it
systemctl --type=service --state=running   # what is running

Ferma 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