Migliori Pratiche per Rafforzare la Sicurezza SSH sui Server Linux
Proteggi immediatamente il tuo server Linux padroneggiando queste tecniche essenziali di hardening SSH. Questa guida esperta fornisce passaggi attuabili, concentrandosi sulle modifiche di configurazione in `sshd_config`. Scopri come disabilitare il login root ad alto rischio, implementare l'autenticazione obbligatoria basata su chiave per eliminare le password deboli, cambiare la porta predefinita e installare Fail2Ban per un limitazione efficace della velocità contro gli attacchi di forza bruta. Proteggi il tuo sistema trasformando SSH in un canale robusto e sicuro.
Migliori Pratiche per Rafforzare la Sicurezza SSH sui Server Linux
SSH è solitamente la prima porta che apri su un server Linux, quindi l'hardening della sicurezza SSH dovrebbe avvenire prima di esporre quell'host a internet. I bot cercano costantemente password deboli, credenziali riutilizzate e account predefiniti sulla porta 22.
L'obiettivo è semplice: mantenere l'accesso remoto utilizzabile per te e doloroso per gli aggressori. Inizia da una seconda sessione terminale, mantieni aperta la tua sessione SSH corrente e testa ogni modifica prima di riavviare il demone.
Esegui il Backup e Testa Prima la Configurazione
Prima di modificare /etc/ssh/sshd_config, esegui un backup. Un errore di battitura può bloccarti fuori dal server.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)
Dopo la modifica, controlla la sintassi:
sudo sshd -t
Se il test passa, ricarica o riavvia SSH. Il nome del servizio è comunemente sshd sui sistemi RHEL-style e ssh su Debian/Ubuntu:
sudo systemctl restart sshd
# oppure
sudo systemctl restart ssh
1. Disabilita l'Accesso Root
L'accesso diretto come root fornisce a un aggressore il nome utente più prezioso in anticipo. Usa un account utente normale, quindi eleva i privilegi con sudo quando hai bisogno di accesso amministrativo.
Passaggio di Configurazione
Apri /etc/ssh/sshd_config e individua la direttiva PermitRootLogin. Cambia il suo valore in no.
# Prima:
# PermitRootLogin yes
# Dopo (Migliore Pratica):
PermitRootLogin no
Prima di riavviare SSH, conferma di poter accedere come utente standard con privilegi sudo.
2. Richiedi l'Autenticazione Basata su Chiave
L'autenticazione tramite password è facile da attaccare su larga scala. Le chiavi SSH sono più difficili da indovinare, più facili da ruotare e più sicure per l'amministrazione quotidiana quando proteggi la chiave privata con una passphrase.
Genera e Installa le Chiavi
- Genera la coppia di chiavi sulla tua macchina locale:
ssh-keygen -t ed25519 -C "[email protected]" - Copia la chiave pubblica sul server:
ssh-copy-id -i ~/.ssh/id_ed25519 user@your_server_ip
Disabilita l'Autenticazione tramite Password
Una volta confermato di poter accedere con successo utilizzando la tua chiave SSH, disabilita completamente l'autenticazione tramite password.
# Disabilita le password
PasswordAuthentication no
# Assicurati che le chiavi siano abilitate
PubkeyAuthentication yes
Ed25519 è un buon valore predefinito per le nuove chiavi. Se hai bisogno di RSA per la compatibilità con sistemi più vecchi, usa una chiave grande come 4096 bit.
3. Considera di Cambiare la Porta SSH Predefinita
Cambiare SSH dalla porta TCP 22 a una porta non standard può ridurre le scansioni automatiche rumorose. Non sostituisce chiavi, controlli di accesso o rate limiting, perché chiunque può comunque scoprire la porta aperta con una scansione.
Passaggio di Configurazione
In /etc/ssh/sshd_config, cambia la direttiva Port:
# Prima:
# Port 22
# Dopo (Esempio di porta non standard):
Port 22222
Aggiorna il tuo firewall e qualsiasi gruppo di sicurezza cloud prima di riavviare SSH. Altrimenti, il tuo nuovo demone SSH potrebbe essere in ascolto su una porta a cui non puoi accedere.
Esempio usando firewalld (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload
4. Limita l'Accesso a Utenti e Gruppi Specifici
Se solo un piccolo gruppo di persone dovrebbe usare SSH, specificarlo in sshd_config. Questo blocca account locali dimenticati dal diventare punti di ingresso remoti.
Direttive di Configurazione
Usa una o entrambe le seguenti direttive in sshd_config:
- Consenti utenti specifici:
AllowUsers alice bob - Consenti gruppi specifici:
AllowGroups sshaccess admins
Se queste direttive sono presenti, qualsiasi utente o gruppo non elencato esplicitamente riceverà un rifiuto di accesso.
5. Mantieni le Impostazioni Predefinite Moderne di SSH e Disabilita i Metodi Legacy
Le versioni attuali di OpenSSH utilizzano già il protocollo SSH 2; il supporto per il protocollo 1 più vecchio è stato rimosso da OpenSSH moderno. Evita di copiare vecchi snippet di hardening che includono direttive Protocol non supportate o un elenco di cifrari obsoleti. Questi possono rompere SSH dopo un aggiornamento.
Concentrati sulla disabilitazione dei meccanismi di fiducia legacy a meno che tu non sappia di averne bisogno:
HostbasedAuthentication no
IgnoreRhosts yes
PermitEmptyPasswords no
Se la tua organizzazione richiede una politica personalizzata per cifrari, MAC o scambio di chiavi, controlla cosa supporta il tuo server installato prima di modificarlo:
sshd -T | grep -E '^(ciphers|macs|kexalgorithms) '
Quindi applica solo una politica testata che corrisponda al tuo parco clienti. Un elenco troppo restrittivo può bloccare host di automazione più vecchi.
6. Aggiungi Rate Limiting con Fail2Ban
Anche con l'autenticazione basata su chiave, i tentativi ripetuti sprecano risorse e ingombrano i log. Fail2Ban monitora i log di autenticazione e aggiunge ban temporanei del firewall dopo fallimenti ripetuti.
Installa Fail2Ban:
# Debian/Ubuntu sudo apt update && sudo apt install fail2ban # RHEL/CentOS/Fedora sudo dnf install fail2banAbilita il jail
sshd. Molti sistemi includono una configurazione predefinita, ma dovresti inserire le sovrascritture locali in/etc/fail2ban/jail.localo in un file sotto/etc/fail2ban/jail.d/.[sshd] enabled = true port = 22222 maxretry = 5 bantime = 1hAvvia il servizio:
sudo systemctl enable --now fail2ban
Se hai cambiato la porta SSH, fai in modo che il jail di Fail2Ban corrisponda alla nuova porta.
7. Ottimizza le Impostazioni di Sessione e Autenticazione
Queste impostazioni aiutano a chiudere le sessioni inattive e rimuovere percorsi di autenticazione deboli:
| Direttiva | Valore Consigliato | Scopo |
|---|---|---|
ClientAliveInterval |
300 | Invia un controllo keepalive lato server ogni 300 secondi. |
ClientAliveCountMax |
3 | Disconnette dopo tre controlli senza risposta. |
UsePAM |
yes | Abilita i Pluggable Authentication Modules (PAM) per politiche di sicurezza di sistema locali aggiuntive. |
PermitEmptyPasswords |
no | Blocca l'accesso agli account con password vuote. |
MaxAuthTries |
3 | Limita i tentativi di autenticazione ripetuti per connessione. |
X11Forwarding |
no | Disabilita l'inoltro X11 a meno che non lo usi effettivamente. |
Checklist di Hardening
Usa questa checklist per assicurarti che il tuo server soddisfi gli standard di base di hardening SSH:
- Esegui il backup di
sshd_configprima di apportare modifiche. - Imposta
PermitRootLogin no. - Imposta
PasswordAuthentication no(dopo la configurazione delle chiavi). - Cambia la
Portin un valore non standard. - Aggiorna il firewall per consentire la nuova porta.
- Usa
AllowUsersoAllowGroupsper limitare l'accesso. - Disabilita i metodi di fiducia legacy come
HostbasedAuthentication. - Installa e configura Fail2Ban.
- Controlla la configurazione con
sshd -tprima di riavviare.
L'hardening della sicurezza SSH funziona meglio come difesa a strati. Le chiavi fermano l'indovinamento delle password, le restrizioni utente riducono chi può connettersi, le regole del firewall limitano da dove provengono le connessioni e Fail2Ban rallenta i tentativi ripetuti. Mantieni una sessione di lavoro aperta mentre testi, quindi documenta la nuova porta e il metodo di accesso per chiunque gestisca il server.