Obiettivo: configurare in modo sicuro il server SSH su una nuova VPS Linux, riducendo drasticamente la superficie d’attacco e bloccando i tentativi di accesso non autorizzati. Non servono strumenti complessi, solo attenzione ai file di configurazione.
Livello: Intermediate
Tempo di lettura: 7 min read
Categoria: Hardening / Linux
Tag:
SSH,Linux,Hardening,Sysadmin,Security
Il problema: la porta 22 è sempre sotto attacco
Non appena pubblichi una Virtual Private Server (VPS) su internet con un indirizzo IP pubblico, i bot automatizzati di tutto il mondo iniziano a scansionarla. Nel giro di pochi minuti, la porta predefinita di SSH (22) comincerà a ricevere tentativi di accesso continui tramite attacchi di forza bruta e dizionario (brute-force attacks), alla ricerca di combinazioni comuni come root / root o admin / password123.
Lasciare la configurazione di default di SSH espone il server a rischi enormi. L'hardening (la messa in sicurezza) di SSH è il primo passo fondamentale per blindare qualsiasi infrastruttura Linux.
1. Creare un utente amministrativo e disabilitare il login per root
Il comportamento predefinito di molte distribuzioni permette l'accesso diretto come utente root tramite password. Questo è il bersaglio principale degli attaccanti.
La regola d'oro è: non lavorare mai come root nella vita di tutti i giorni.
Accedi alla VPS come root (la prima volta).
Crea un nuovo utente con privilegi di amministrazione (es.
mario):Bashadduser marioAggiungi l'utente al gruppo sudo per consentirgli di eseguire comandi amministrativi:
Bashusermod -aG sudo mario # Su Debian/Ubuntu # oppure usermod -aG wheel mario su CentOS/RHEL/AlmaLinuxTesta il cambio utente prima di chiudere la sessione corrente.
2. Passare all'autenticazione tramite chiavi SSH (Public Key Authentication)
Le password, anche se complesse, possono essere intercettate, indovinate o brute-forzate. Le chiavi crittografiche (coppia chiave pubblica/privata) offrono un livello di sicurezza nettamente superiore.
Sul tuo computer locale (non sul server), genera una coppia di chiavi (se non le possiedi già):
Bashssh-keygen -t ed25519 -C "tua_email@example.com"Copia la chiave pubblica sul server VPS:
Bashssh-copy-id mario@INDIRIZZO_IP_VPSUna volta completato, potrai accedere al server senza digitare la password, ma inserendo la passphrase della tua chiave privata locale.
3. Modificare la configurazione del demone SSH
Tutte le direttive di sicurezza si gestiscono modificando il file di configurazione principale di SSH sul server: /etc/ssh/sshd_config (o nei file inclusi in /etc/ssh/sshd_config.d/).
Prima di effettuare modifiche, fai sempre una copia di backup:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Apri il file con un editor di testo (es. nano):
sudo nano /etc/ssh/sshd_config
Modifica o decommenta (rimuovendo il # iniziale) le seguenti direttive chiave:
Cambia la porta di ascolto (Opzionale ma utile per ridurre il rumore dei log):
Sebbene non sia una misura di sicurezza crittografica, spostare SSH dalla porta standard
22a un'altra porta (es.2222) riduce del 99% il traffico spazzatura dei bot automatici nei log di sistema.PlaintextPort 2222Disabilita il login diretto di root:
Impedisce a chiunque di loggarsi direttamente come root, costringendo prima ad entrare con un utente standard e poi a scalare i privilegi.
PlaintextPermitRootLogin noDisabilita l'autenticazione tramite password:
Forza l'uso esclusivo delle chiavi crittografiche, bloccando alla radice gli attacchi di forza bruta basati su password.
PlaintextPasswordAuthentication no PubkeyAuthentication yesLimita gli utenti autorizzati (Best Practice):
Permetti l'accesso SSH solo agli utenti che ne hanno realmente bisogno.
PlaintextAllowUsers mario
Salva il file e chiudi l'editor.
4. Verificare la sintassi e riavviare il servizio
Prima di chiudere la sessione SSH attiva (misura di sicurezza critica per evitare di rimanere chiuso fuori dal server), verifica che la configurazione non contenga errori di sintassi:
sudo sshd -t
Se il comando non restituisce errori, puoi riavviare il servizio SSH:
sudo systemctl restart ssh
# oppure sudo systemctl restart sshd su distribuzioni RedHat-based
Attenzione: Apri un nuovo terminale sul tuo computer e prova a connetterti (
ssh -p 2222 mario@IP_SERVER) per verificare che tutto funzioni correttamente prima di chiudere la finestra attuale.
5. Strumenti extra di difesa: Fail2ban
Anche se hai disabilitato le password e le chiavi pubbliche sono sicure, i bot continueranno a bombardare la porta SSH generando traffico e log superflui. Puoi installare Fail2ban, un software che monitora i log di autenticazione e banna temporaneamente (tramite firewall) gli IP che collezionano troppi tentativi di accesso falliti.
Installazione (su Ubuntu/Debian):
Bashsudo apt update && sudo apt install fail2ban -yCrea una copia del file di configurazione locale:
Bashsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localAvvia e abilita il servizio:
Bashsudo systemctl enable --now fail2ban
Riepilogo delle configurazioni critiche in sshd_config
| Direttiva | Valore Consigliato | Spiegazione |
PermitRootLogin | no | Vieta l'accesso remoto diretto all'utente root. |
PasswordAuthentication | no | Blocca l'accesso via password, obbligando l'uso delle chiavi SSH. |
PubkeyAuthentication | yes | Abilita l'autenticazione tramite chiave pubblica. |
Port | Personalizzata (es. 2222) | Riduce i tentativi di accesso automatici dei bot sulla porta standard. |
Fonti e riferimenti utili
AUTORE
Redazione ThreatHunting.it
Da piu' di 30 anni sono appassionato di computers e tecnologia. il mio primo programma lo sviluppai in Basic nel 1989, non era un gran che :).. ma quella voglia di scrivere codici non mi ha piu' lasciato …
COMMUNITY

Non ci sono ancora commenti. Puoi iniziare tu la conversazione.