SSH è il servizio più attaccato di qualsiasi server pubblico, ed è anche il più facile da chiudere come si deve. Quasi tutto il rischio viene da una cosa sola: le password. Toglile, e i tentativi proseguono smettendo di contare.

La configurazione

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers sara deploy

sudo sshd -t && sudo systemctl reload ssh
Prima di ricaricare: assicurati di avere una chiave che funziona e un secondo terminale già connesso. Se imposti PasswordAuthentication no senza una chiave installata ti sei chiuso fuori dal tuo stesso server, e l'unica via di ritorno resta la console del fornitore.

Riga per riga

  • PermitRootLogin no — lavora come utente con un nome, usando sudo. Vedi Utenti, sudo e non lavorare mai come root.
  • PasswordAuthentication no — di gran lunga la riga più preziosa dell'elenco.
  • KbdInteractiveAuthentication no — chiude la seconda via delle password, quella che tutti dimenticano e che in silenzio le tiene in funzione.
  • AllowUsers — un elenco esplicito. Un nuovo account di sistema creato da un pacchetto non può accedere.

Limita da dove risponde

sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
sudo ufw deny 22/tcp

Se un indirizzo fisso d'ufficio non è possibile, il ripiego è Fail2ban — vedi Cosa ferma Fail2ban. Spostare la porta è cosmesi; vedi Cambiare la porta SSH.

Verifica con cosa sei rimasto

sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|allowusers'
sshd -T stampa la configurazione realmente in vigore, compreso tutto ciò che è impostato in un file Include più in basso. È l'unica lettura che tiene conto di una distribuzione che lascia cadere un file in sshd_config.d scavalcandoti.