Hardening e principi CIS
Modulo 10: Restare al sicuro · Tempo di lettura: 11 minuti
Obiettivo della lezione: Al termine di questa lezione saprà spiegare che cos'è l'hardening e su quali principi si basa, saprà che cosa sono le CIS Benchmarks e come usarle con criterio, e saprà controllare il Suo server in modo sistematico con Lynis.
Concetti chiave: hardening, superficie di attacco, installazione minima, privilegi minimi (least privilege), difesa a più livelli (defense in depth), CIS Benchmarks, Level 1 e Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, sincronizzazione dell'ora
Che cos'è l'hardening?
Un'installazione nuova di Debian o Ubuntu è ragionevolmente sicura, ma è pensata per funzionare nel maggior numero possibile di contesti. L'hardening (irrobustimento) consiste nell'adattare il server esattamente al Suo utilizzo: eliminare tutto ciò che non Le serve e rendere più rigoroso tutto ciò che può esserlo, senza compromettere i Suoi servizi.
Nei moduli precedenti lo ha già fatto passo dopo passo: SSH con chiavi (modulo 2), un utente normale con sudo (modulo 3), aggiornamenti automatici (modulo 4), un firewall e fail2ban (modulo 5), servizi con utenti propri (modulo 6). Questa lezione inserisce queste misure singole in un quadro d'insieme, così vede che cosa manca ancora.
Quattro principi
1. Una superficie di attacco ridotta. Ciò che non c'è non può rompersi. Ogni servizio installato, ogni porta aperta, ogni account è un possibile punto di ingresso (lezione 5.1). Installi il minimo indispensabile e rimuova ciò che non usa più:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lSe è in esecuzione un servizio che non conosce, scopra che cosa fa (lezione 6.1). Se non Le serve, rimuova il pacchetto.
2. Privilegi minimi. Ogni utente e ogni programma riceve solo i permessi necessari (lezione 3.2). Niente lavoro quotidiano come root, servizi con utenti propri, utenti del database con permessi solo sul proprio database, nessun chmod 777.
3. Difesa a più livelli. Parta dal presupposto che una misura possa fallire. Un database che è in ascolto solo su 127.0.0.1 e si trova dietro un firewall e ha una password robusta resta sicuro anche se una di queste tre protezioni viene meno per errore. Questo si chiama defense in depth.
4. Sapere che cosa succede. L'hardening non significa solo chiudere, ma anche vedere: log conservati (lezione 6.2), un monitoraggio che invia avvisi (lezione 8.3) e backup con cui tornare indietro (modulo 8). Senza tutto questo, si accorge di un'intrusione solo quando è troppo tardi.
Le CIS Benchmarks
Il Center for Internet Security (CIS) è un'organizzazione statunitense senza scopo di lucro che redige le CIS Benchmarks: elenchi dettagliati di impostazioni consigliate per ciascun prodotto, preparati da volontari del settore della sicurezza. Ne esistono più di cento, anche per Debian Linux e Ubuntu Linux, distinte per versione. I pdf si possono scaricare gratuitamente per uso non commerciale, dopo aver creato un account.
Una benchmark per Linux contiene centinaia di raccomandazioni, ciascuna con una spiegazione, un metodo di verifica e un metodo di configurazione. Sono suddivise in profili:
- Level 1: misure di base che si possono introdurre abbastanza rapidamente, con un chiaro vantaggio in termini di sicurezza, senza rendere il server molto meno utilizzabile. Per la maggior parte dei server è questo l'obiettivo.
- Level 2: misure aggiuntive per ambienti in cui la sicurezza ha la priorità (difesa a più livelli). Possono costare funzionalità o prestazioni e, secondo lo stesso CIS, possono causare danni se applicate senza attenzione.
Per Linux esistono profili distinti per server e per postazioni di lavoro.
Esempi di argomenti in una benchmark per Linux: partizioni separate per /tmp e /var/log, disattivazione di file system e protocolli di rete inutilizzati, sincronizzazione dell'ora, registrazione di audit, impostazioni di SSH (molte delle quali le conosce dalla lezione 2.2), criteri per le password, permessi sui file importanti e il firewall.
Accanto alle Benchmarks esistono i CIS Controls (attualmente versione 8.1): non impostazioni per prodotto, ma un elenco di diciotto gruppi di misure per un'intera organizzazione, come "inventario del software", "gestione delle vulnerabilità" e "ripristino dei dati". Per un singolo server le Benchmarks sono più utili; i Controls aiutano quando riflette sull'intera azienda.
Usi una benchmark con criterio
Una benchmark non è un pulsante da premere. Alcune regole:
- Prima capire, poi applicare. Ogni raccomandazione ha una spiegazione. Se non capisce il perché, non la applichi ancora.
- Una cosa alla volta, e verificare. Un'impostazione rigorosa del kernel o della rete può bloccare la Sua applicazione. Crei uno snapshot, modifichi una cosa sola e controlli che tutto funzioni ancora.
- Non tutto fa per Lei. Una raccomandazione per una partizione
/var/logseparata è complicata su un VPS esistente e porta pochi benefici. Scelga consapevolmente e annoti perché non applica qualcosa. - Faccia attenzione agli script di hardening già pronti trovati su internet che applicano "tutto il CIS" in un colpo solo. Possono modificare SSH, il firewall o i log in modo tale da lasciarLa fuori dal server, e in seguito non saprà più che cosa è stato cambiato.
Lynis: un audit dall'interno
Lynis è un programma gratuito e open source (GPL) di CISOfy che esamina il Suo server dall'interno e fornisce avvisi e suggerimenti per ogni argomento. Non modifica nulla da sé: si limita a riferire.
anna@web1:~$ sudo apt install lynis
anna@web1:~$ sudo lynis audit system
...
-[ Lynis 3.x Results ]-
Warnings (1):
----------------------------
! Found one or more vulnerable packages. [PKGS-7392]
Suggestions (34):
----------------------------
* Consider hardening SSH configuration [SSH-7408]
- Details : AllowTcpForwarding (set YES to NO)
...
Lynis security scan details:
Hardening index : 66 [############# ]
Tests performed : 262Come leggere il risultato:
- Warnings sono elementi da esaminare davvero, come pacchetti con vulnerabilità note (in tal caso ha aggiornamenti in sospeso, lezione 4.1).
- Suggestions sono consigli. Molti sono utili, alcuni non si adattano al Suo server. Un suggerimento di disattivare
AllowTcpForwarding, per esempio, interrompe i Suoi tunnel SSH (lezione 2.3). Scelga consapevolmente. - Ogni segnalazione ha un codice tra parentesi quadre, come
[SSH-7408]. Con questo codice può cercare nel log/var/log/lynis.logche cosa è stato verificato esattamente. - L'hardening index è un numero fino a 100. È un'indicazione di direzione, non un voto da inseguire. Un aumento dopo le Sue modifiche mostra che sta facendo progressi; 100 non è un obiettivo.
La versione di Lynis presente nei repository della Sua distribuzione può essere un po' datata. Per un primo audit non è un problema.
Altri tre argomenti in breve
- AppArmor e SELinux sono livelli di sicurezza aggiuntivi nel kernel che stabiliscono, per ogni programma, che cosa gli è consentito. Debian e Ubuntu usano AppArmor, attivo per impostazione predefinita; AlmaLinux e Rocky usano SELinux. Non li disattivi "perché qualcosa non funziona": cerchi la segnalazione nel journal e risolva il problema in modo mirato.
- sysctl imposta parametri del kernel, per esempio per la rete. I valori predefiniti di Debian e Ubuntu sono ragionevoli. Se desidera modificare qualcosa, lo inserisca in un file proprio in
/etc/sysctl.d/(Debian 13 non legge più/etc/sysctl.conf). - Ora: un server con l'ora sbagliata rende inutilizzabili i log e può considerare non validi dei certificati. Verifichi con
timedatectlche compaia "System clock synchronized: yes".
Nella pratica
Con WebOké, come con altri fornitori di VPS, la sicurezza all'interno del server la gestisce Lei: il fornitore si occupa dell'hardware, della rete e della piattaforma di virtualizzazione. Questo corso è un percorso di autoapprendimento: nessuno controlla il Suo server al posto Suo. Prima di una sessione di hardening crei uno snapshot nel pannello e sappia come aprire la console nel caso in cui resti comunque chiuso fuori.
Riepilogo
- L'hardening consiste nell'adattare il server al proprio utilizzo: eliminare ciò che non serve, rendere più rigoroso ciò che si può.
- Quattro principi: superficie di attacco ridotta, privilegi minimi, difesa a più livelli e vedere che cosa succede.
- Le CIS Benchmarks forniscono per ogni prodotto centinaia di raccomandazioni nei profili Level 1 (base) e Level 2 (rigoroso); le usi con consapevolezza, un passo alla volta.
- Lynis esamina il server dall'interno e fornisce avvisi, suggerimenti e un hardening index; non modifica nulla da sé.
- Non disattivare AppArmor/SELinux; impostazioni del kernel personalizzate in
/etc/sysctl.d/; verificare la sincronizzazione dell'ora.
Quiz
Esercizio
Esercizio O10.1: Un audit con Lynis. Crei uno snapshot, installi Lynis sul Suo server ed esegua sudo lynis audit system. Annoti l'hardening index, tutti gli avvisi e cinque suggerimenti. Scelga tre suggerimenti da applicare e uno che consapevolmente non applica, indicandone il motivo. Esegua poi di nuovo l'audit e annoti il nuovo indice.
Esercizio O10.1: Un audit con Lynis
Questo esercizio lo svolge da sé; nessuno lo verifica. Spunti ciò che ha fatto e segni l'esercizio come completato.
Prima gli avvisi (di solito aggiornamenti in sospeso). Utili: impostazioni SSH più restrittive, aggiornamenti automatici, rimozione dei servizi inutilizzati. Un buon motivo per saltare qualcosa: AllowTcpForwarding se usa dei tunnel. L'indice è un'indicazione di direzione, non un obiettivo.
Le Sue spunte e note restano solo in questo browser; non le inviamo da nessuna parte. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che ha svolto l'esercizio.
Per approfondire
- Proteggere il suo VPS: i primi cinque minuti
- CIS Benchmarks (panoramica, anche Debian e Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, documentazione: https://cisofy.com/documentation/lynis/
- NCSC olandese, Beginnen met cybersecurity (fonte olandese, in lingua neerlandese): https://www.ncsc.nl/beginnen-met-cybersecurity
