Come Impedire al Tuo Server di Diventare un Bersaglio Facile con gli Script di Hardening di konstruktoid
Immagina di aver appena distribuito una nuova istanza Ubuntu. Tutto è in funzione, SSH è aperto, i pacchetti sono aggiornati. Ti senti al sicuro—finché non controlli i log e vedi infiniti tentativi di login a forza bruta da tutto il mondo. Le impostazioni predefinite delle distribuzioni Linux danno priorità alla praticità rispetto alla sicurezza, quindi rafforzare un sistema richiede ore di modifica delle configurazioni SSH, configurazione dei firewall e limitazione dei permessi dei servizi.
L'autore del repository con il nickname konstruktoid ha deciso di semplificare questa routine e ha assemblato script per l'hardening automatico di Ubuntu. Non è solo un insieme di comandi—è un'intera strategia per trasformare un normale sistema operativo in una fortezza digitale, con il controllo attraverso systemd come pietra angolare.
Cosa fa esattamente questo script
L'idea fondamentale del progetto è ridurre al minimo la superficie d'attacco. Se un servizio non è necessario, dovrebbe essere disabilitato. Se un servizio è in esecuzione, dovrebbe avere esattamente i permessi necessari per svolgere il suo compito.
Lo script verifica il sistema rispetto a un elenco completo di criteri, molti dei quali sono tratti dalle raccomandazioni CIS (Center for Internet Security). Ecco alcune aree in cui porta ordine:
- Configurazione dei parametri del kernel tramite sysctl. Questo include il blocco dell'inoltro dei pacchetti (IP forwarding), la protezione dallo spoofing e la limitazione dell'accesso alle funzioni di debug del kernel.
- Rafforzamento dei permessi dei file di sistema. Lo script verifica i permessi su
/etc/shadow,/etc/gshadowe altri file di configurazione critici in modo che gli utenti normali o le applicazioni web compromesse non possano leggerli. - Limitazione dei servizi systemd. Questa è forse la parte più interessante. Lo script utilizza le moderne funzionalità di isolamento di systemd, come
PrivateTmp,NoNewPrivilegeseProtectSystem. - Gestione dei moduli del kernel. Protocolli raramente utilizzati (come DCCP o SCTP) e filesystem che spesso diventano fonti di vulnerabilità vengono disabilitati.
Come funziona nella pratica
Il progetto è scritto in Shell, il che lo rende trasparente per il controllo. Puoi semplicemente leggere il codice prima di eseguirlo e capire esattamente cosa cambierà nel tuo sistema. Per iniziare, basta clonare il repository ed eseguire lo script principale come root.
git clone https://github.com/konstruktoid/hardening.git
cd hardening
sudo bash ubuntu.sh
A proposito, l'autore ha una versione separata per Debian, ma questo repository è focalizzato specificamente su Ubuntu (versioni 20.04, 22.04 e 24.04). Interessante è che lo script non si limita a modificare le configurazioni—installa anche strumenti di sicurezza aggiuntivi, ad esempio auditd per la registrazione approfondita delle chiamate di sistema.
Ottimizzazione per le tue esigenze
Eseguire lo script direttamente su un sistema di produzione live è un'impresa rischiosa. L'hardening è sempre un compromesso tra sicurezza e funzionalità. Se disabiliti la possibilità di caricare determinati moduli del kernel, Docker o specifici componenti hardware di rete potrebbero smettere di funzionare.
Il progetto include un file di configurazione in cui puoi sovrascrivere le variabili. Ad esempio, se hai assolutamente bisogno di IPv6 (che lo script cerca di limitare per impostazione predefinita), puoi regolarlo nelle impostazioni. Ti consiglio di eseguire prima lo script su una VM di test che replichi completamente il tuo stack tecnologico di produzione.
Perché dovresti prestare attenzione all'edizione systemd
Molte guide di sicurezza Linux più datate consigliano ancora di modificare decine di file in /etc/. L'approccio di konstruktoid è più moderno: utilizza attivamente la modularità di systemd. Invece di riscrivere il file unità del servizio principale, vengono creati file drop-in. Questo permette di aggiornare i pacchetti tramite apt senza conflitti di configurazione, mentre le tue personalizzazioni di sicurezza rimangono attive.
Lo script verifica anche la presenza di pacchetti compromessi e suggerisce la rimozione di software che spesso diventa una falla di sicurezza, come le vecchie implementazioni di rsh o telnet.
A chi sarà utile questo progetto
Se amministri un paio di server per progetti personali, questo repository diventerà un'ottima lista di controllo. Non devi eseguire l'intero script—puoi prendere in prestito buone soluzioni per configurare i parametri ufw o sysctl.
Per gli amministratori di sistema nelle aziende, questa è una base pronta all'uso per creare la tua immagine aziendale dorata. Invece di reinventare la ruota, puoi prendere il lavoro di konstruktoid e adattarlo ai tuoi requisiti di conformità.
Tuttavia, ricorda: la sicurezza è un processo. Eseguire lo script oggi non garantisce protezione contro una vulnerabilità che emerge domani. Ma alza sicuramente l'asticella per un potenziale attaccante così in alto che molto probabilmente andrà a cercare prede più facili.
Dove iniziare per imparare
- Dai un'occhiata al file
ubuntu.sh. Questo è il punto di ingresso da cui vengono chiamati gli altri moduli. - Esplora la cartella
scripts/. La logica è suddivisa per categoria: rete, filesystem, permessi. - Assicurati di leggere la sezione sulle variabili d'ambiente nel README per capire come controllare il comportamento dello script senza modificarne il codice.
Il progetto è vivo e viene regolarmente aggiornato per le nuove versioni di Ubuntu e incorpora le ultime raccomandazioni di sicurezza. Questo è un ottimo esempio di come l'automazione trasformi ore di lavoro routinario in un'attività che richiede minuti.
Progetti correlati