0Pricing
Cryptology Academy · Lezione

Hardening SSH e buone pratiche di audit

Applichi l'hardening di sshd_config, le pratiche di rotazione delle chiavi e i log di audit per rafforzare le distribuzioni SSH.

Hardening SSH e buone pratiche di audit è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Disabilitazione dell'autenticazione tramite password

La misura di hardening SSH più efficace consiste nell'impostare PasswordAuthentication no in /etc/ssh/sshd_config. In questo modo tutti gli utenti devono autenticarsi con chiavi pubbliche, eliminando i rischi legati a password deboli o riutilizzate e agli attacchi di forza bruta. Prima di disabilitare l'autenticazione tramite password, verifichi che sia installata almeno una chiave autorizzata, per evitare di bloccare il proprio accesso.

Limitazione degli utenti e dei gruppi autorizzati

Le direttive AllowUsers e AllowGroups limitano l'accesso SSH agli utenti indicati o ai membri dei gruppi specificati. Ad esempio, AllowGroups sshusers consente l'accesso solo ai membri del gruppo sshusers. Questo offre una difesa in profondità: anche se un aggressore conosce un nome utente e ottiene le credenziali, l'accesso SSH viene negato se l'account non è esplicitamente autorizzato.

Modifica della porta predefinita

Spostare SSH dalla porta 22 a una porta con numero elevato è una forma di security through obscurity, non una misura di sicurezza. Tuttavia, riduce significativamente il rumore nei log generato dagli scanner automatizzati che prendono di mira la porta 22. In questo modo è più facile analizzare i log alla ricerca di minacce reali. Mantenga sempre le regole del firewall come principale controllo degli accessi; l'offuscamento della porta deve essere solo una misura supplementare.

Disabilitazione dell'accesso root

Impostare PermitRootLogin no impedisce l'autenticazione diretta dell'utente root tramite SSH. Gli aggressori che prendono di mira root hanno un nome utente sicuramente valido e privilegi illimitati in caso di successo. L'impostazione consigliata è PermitRootLogin prohibit-password, che consente l'accesso root solo tramite autenticazione con chiave pubblica, bloccando gli attacchi di forza bruta basati sulle password e mantenendo al contempo l'accesso di emergenza.

Limitazione dei tentativi di autenticazione

MaxAuthTries 3 limita a tre il numero di tentativi di autenticazione per connessione. Dopo tre tentativi falliti, il server termina la connessione. Questo rallenta i tentativi di forza bruta. In combinazione con il backoff esponenziale di fail2ban o SSHGuard, che bloccano temporaneamente gli indirizzi IP dopo ripetuti fallimenti, gli attacchi di forza bruta diventano computazionalmente irrealizzabili.

Controlli sui tempi di accesso

LoginGraceTime specifica per quanto tempo il server attende un'autenticazione riuscita prima di disconnettere il client. Il valore predefinito è 120 secondi; ridurlo a 20 secondi impedisce i tentativi di forza bruta lenti e riduce il consumo di risorse dovuto alle connessioni non autenticate. ClientAliveInterval e ClientAliveCountMax controllano i test dello stato della connessione per disconnettere le sessioni inattive o non più attive.

Limitazione degli algoritmi crittografici consentiti

Le configurazioni SSH moderne dovrebbero limitare gli algoritmi alle opzioni forti e attuali. In sshd_config, imposti Ciphers su chacha20-poly1305@openssh.com,aes256-gcm@openssh.com, imposti MACs su hmac-sha2-256-etm@openssh.com e imposti KexAlgorithms su curve25519-sha256. In questo modo elimina gli algoritmi legacy come arcfour, DES e i MAC basati su MD5, che potrebbero essere disponibili per garantire la compatibilità con le versioni precedenti.

Blocco degli attacchi di forza bruta con fail2ban

fail2ban monitora i log di autenticazione e blocca gli indirizzi IP che superano una soglia di tentativi di accesso falliti. Dopo un numero configurabile di errori entro un determinato intervallo di tempo, fail2ban aggiunge una regola iptables per scartare gli ulteriori pacchetti provenienti da quell'indirizzo IP. Questa risposta automatizzata rende impraticabili gli attacchi di forza bruta senza richiedere interventi manuali.

Auditing con ssh-audit

Lo strumento ssh-audit si connette a un server SSH e ne valuta la configurazione: gli algoritmi di scambio delle chiavi, i tipi di chiavi host, i cifrari e i MAC offerti, segnalando le opzioni obsolete o deboli. Eseguire ssh-audit sui propri server prima e dopo l'hardening fornisce una valutazione oggettiva della situazione precedente e successiva e identifica eventuali lacune nella configurazione.

Logging e auditing degli accessi

Gli eventi di autenticazione SSH vengono registrati tramite syslog. Su Linux, /var/log/auth.log (Debian) o /var/log/secure (RHEL) registra ogni accesso riuscito e fallito con indicazione di data e ora, nome utente, IP di origine e fingerprint della chiave utilizzata. L'invio di questi log a un SIEM centralizzato consente di rilevare schemi di accesso insoliti, come accessi da Paesi imprevisti o in orari inconsueti.

Esempio completo di configurazione con hardening

Un file sshd_config sottoposto a hardening combina: PasswordAuthentication no, PermitRootLogin prohibit-password, MaxAuthTries 3, LoginGraceTime 20, AllowGroups sshusers, Ciphers e MAC limitati, X11Forwarding no e AllowTcpForwarding no (a meno che il tunneling non sia necessario). Ogni direttiva rimuove uno specifico vettore di attacco e, insieme alle altre, contribuisce a una postura SSH basata sulla difesa in profondità.

Configurazione dell'hardening SSH

Quale impostazione di sshd_config è più efficace per eliminare gli attacchi di forza bruta basati sulle password contro SSH?

Riepilogo dell'hardening SSH

Checklist per l'hardening SSH: disabilitare l'autenticazione tramite password, limitare l'accesso con AllowGroups/AllowUsers, disabilitare l'accesso root o limitarlo alle sole chiavi, impostare MaxAuthTries 3, ridurre LoginGraceTime, limitare gli algoritmi ai soli cifrari moderni, implementare fail2ban o SSHGuard, eseguire ssh-audit per una valutazione oggettiva e centralizzare i log per rilevare le anomalie.

Domande Frequenti

La lezione «Hardening SSH e buone pratiche di audit» è gratuita?

Sì — il testo completo di «Hardening SSH e buone pratiche di audit» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Hardening SSH e buone pratiche di audit»?

Applichi l'hardening di sshd_config, le pratiche di rotazione delle chiavi e i log di audit per rafforzare le distribuzioni SSH. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Hardening SSH e buone pratiche di audit»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Handshake SSH e autenticazione con chiave host
  2. Autenticazione a chiave pubblica e agent forwarding
  3. Tecniche di tunneling SSH e port forwarding
  4. Hardening SSH e buone pratiche di audit
← Torna a Cryptology Academy