Se dicessimo che l'hardening di un sistema operativo è "un insieme di impostazioni e procedure implementate per ridurre la superficie d'attacco e le vulnerabilità, in modo da migliorare la resilienza e la postura difensiva di un sistema" diremmo qualcosa di vero, ma forse anche di poco concreto. In pratica, fare hardening di un sistema operativo significa, ad esempio, accertarsi che non ci siano processi attivi che non siano necessari, che non ci siano punti di attacco con impostazioni troppo permissive, che ci sia adeguato controllo degli accessi e dei permessi, che non siano attivi software obsoleti, che il traffico sia adeguatamente monitorato, etc.
Per accertarsi che un sistema sia adeguatamente "hardenizzato" (passatemi il termine) il primo passo è chiaramente quello di analizzare la situazione di partenza, che consentirà di rilevare le non conformità e i punti deboli, a cui bisognerà poi applicare azioni correttive, come cambi di impostazioni, modifica delle procedure, etc. Se state pensando che l'hardening sia uno stretto parente, o meglio, "l'altro lato" del vulnerability assessment, avete indovinato. Considerando la complessità di un sistema operativo, sfogliare a mano tutte le impostazioni pertinenti la sicurezza, in tutti i sui ambiti, sarebbe un'impresa molto dispendiosa in termini di tempo e impegno. Per fortuna, come vedremo, ci sono strumenti che consentono di automatizzare la produzione di rapporti sulle condizioni attuali di un sistema operativo e persino di indicare nel dettaglio come attuare azioni di hardening per renderlo conforme a standard di sicurezza di alto livello.
Scaricando alcuni programmi e file dal sito del Dipartimento della Difesa americano, quello che potremo ottenere, con pochi click, è un quadro esaustivo della situazione di partenza del nostro sistema operativo e contestualmente anche suggerimenti su come "hardenizzarlo" al meglio. Per l'analisi della situazione, useremo STIG (Security Technical Implementation Guide) come riferimento qualitativo (benchmark) per un adeguato hardening e SCAP (Security Content Automation Protocol) come strumento per ottenere report di confronto fra la nostra situazione e lo STIG di riferimento.
Acquisizione dei file necessari
Prima di iniziare a fruire dei report automatici e delle correzioni guidate, è necessario scaricare tutti i vari file necessari; questa è la fase più noiosa (seppur fondamentale), ma una volta conclusa non sarà necessario ripeterla ogni volta, se non eventualmente scaricare solo qualche aggiornamento. Iniziamo andando all'indirizzo del DoD (Department of Defense) Cyber Exchange gestito dalla Defense Information Systems Agency (DISA), nella sezione SCAP 1.3 content
, clicchiamo e scarichiamo il contenuto più adatto al programma (Office, Acrobat, etc.) o sistema operativo (Windows, Red Hat, Oracle, etc.), anche in ambito server, di cui vogliamo valutare le condizioni di sicurezza.
Nel nostro caso useremo "Microsoft Windows 10 STIG Benchmark - Ver 3, Rel 3" perché attueremo i test a un Windows 10 22H2 Pro, ma è bene precisare che il campo di utilizzo delle STIG, come accennato, è molto più ampio. Nella sezione sottostante, denominata SCAP tools
scarichiamo "SCC 5.10.1 Windows".
Cliccando, nella sezione viola di sinistra, su Document Library
, nella casella di testo per la ricerca (in alto a destra della tabella), cerchiamo "Windows 10" (in questo caso) e scarichiamo "Microsoft Windows 10 STIG - Ver 3, Rel 3". Nel medesimo campo di ricerca testuale cerchiamo "viewer" e scarichiamo sia "STIG Viewer 2.18_Win64" che "STIG Viewer 3.4-Win64" (quest'ultimo è molto più grande degli altri file, sono circa 150 MB).
Utilizzo di SCAP compliance checker
Nella cartella "scc-5.10.1_Windows_bundle", apriamo la sottocartella "scc-5.10.1_Windows" dove troviamo il file per l'installazione "SCC_5.10.1_Windows_Setup.exe". Se preferiamo usare SCAP compliance checker (SCC) senza installarlo, possiamo usare il file (sempre nella sottocartella "scc-5.10.1_Windows") "scc-5.10.1_Windows.zip"; decomprimiamolo (potrebbe richiedere un attimo di pazienza) e se veniamo informati che il nome di un percorso è troppo lungo, possiamo decomprimere la cartella in un percorso differente e poi spostarla assieme alle altre; oppure modificare nel registro la lunghezza massima di caratteri consentiti nei percorsi (v. qui). Nella cartella decompressa, troveremo la cartella "scc_5.10.1" con all'interno il file eseguibile "sec.exe" che ci consentirà di avviare la versione portabile di SCAP compliance checker; è un file firmato da Federal Bridge CA G4 e controfirmato da DigiCert, tuttavia non è possibile per Windows verificare tale autorità, quindi l'antivirus potrebbe chiederci conferma prima di aprirlo, anche perché va comunque eseguito con privilegi di amministratore.
Il programma caricherà all'apertura alcuni file SCAP; tuttavia è buona prassi cancellarli e caricare manualmente le ultime versioni che abbiamo scaricato precedentemente, anche perché molti degli SCAP già caricati probabilmente non ci servono, poiché riguardano altri programmi che non intendiamo coinvolgere o che non sono presenti nel nostro sistema. Dopo esserci accertati che siano tutti selezionati, clicchiamo con il destro sulla prima riga (Windows) e poi su Delete All
.
Una volta ripulita la tabella dei contenuti, clicchiamo su Install
, poi su Select Content File(s) to Install
.
Selezioniamo, nel nostro caso, l'XML che si chiama "U_MS_Windows_10_V3R3_STIG_SCAP_1-3_Benchmark" posto nella cartella "U_MS_Windows_10_V3R3_STIG_SCAP_1-3_Benchmark"; poi clicchiamo su Install
nella finestra piccola. Una volta che il benchmark (ossia il riferimento per le valutazioni di conformità) è stato caricato, ci conviene andare nel menu Options
, poi Output Options
e impostare la cartella in cui vogliamo siano salvati i risultati delle analisi.
Dopo aver impostato il percorso di nostro gradimento, clicchiamo in basso su Save
. Chiaramente quando avremo maggior dimestichezza con il programma potremo addentrarci anche nelle altre opzioni, ma per adesso procediamo senza modificare altro. Tuttavia va almeno segnalato che è possibile personalizzare gli item della scansione, ossia gli elementi che saranno controllati: clicchiamo sul pulsante Tailor
; si aprirà una finestra in cui potremo scegliere gli item e anche modificarne il contenuto, comprese le azioni per rimediare (Fix Text).
Per avviare la scansione del sistema è sufficiente cliccare sul vistoso pulsante Start Scan
sulla prima colonna a sinistra (visibile anche nelle immagini sopra), lasciando lo scan type su Local Scan
(si possono anche scansionare molteplici computer remoti, utilizzare UNIX SSH remote scan o altri profili, più adatti ad amministratori di rete che ad utenti domestici). Solitamente la scansione dura un paio di minuti ed è meglio eseguirla offline, senza ulteriori programmi o aggiornamenti in esecuzione, in modo che il sistema si più stabile possibile .Nella scheda Output
possiamo leggere subito il punteggio (score), il percorso dove è salvato l'HTML con i risultati, eventuali errori e avvisi.
Cliccando su View Results
si apre un'ulteriore finestra che schematizza meglio l'esito della scansione e cliccando con il destro sulla riga che riguarda la scansione, poi su Open Summary viewer in OS default web browser
possiamo visualizzare il dettaglio dei risultati.
Cliccando sui vari HTML potremo approfondire i dati della scansione, ad esempio se visualizziamo il report in All setting
, scopriamo che la macchina virtuale con Windows 10 Pro, praticamente con quasi tutte le impostazioni di default, ha un punteggio abissale di solo 38% e uno stato di conformità al livello rosso che, come ci insegnano i semafori, non è un colore favorevole. Scorrendo la lunga pagina in HTML troviamo le tre categorie di gravità (CAT I, CAT II e CAT III) con tutte le minuziose informazioni che ci consentono di comprendere ciò che non è conforme alle linee guida raccomandate (benchmark) e anche ciò che invece è risultato conforme.
Utilizzo di Stig Viewer
Per visualizzare in modo meno prolisso questi risultati, abbiamo a disposizione lo STIG viewer, in due versioni, la 2.18 e la 3.4. Torniamo quindi nella cartella principale, in cui abbiamo salvato tutto il materiale scaricato in precedenza, e andiamo nella cartella "STIG Viewer 2.18_Win64" (se avessimo scaricato "STIG Viewer 2.18" sarebbe necessario aver installato anche Java), apriamo "STIG viewer" e poi clicchiamo su "Stig Viewer.exe", accettando di eseguirlo. Una volta aperta l'interfaccia, è necessario caricare gli STIG aprendo il menu File
, poi Import STIG
e selezionando il file al percorso che ha per radice la cartella in cui abbiamo scaricato tutto e poi prosegue con "U_MS_Windows_10_V3R3_STIG\U_MS_Windows_10_V3R3_Manual_STIG\U_MS_Windows_10_STIG_V3R3_Manual-xccdf.xml".
Selezionando la STIG importata, le varie colonne vengono popolate dai rispettivi dati.
A questo punto salviamo questa checklist cliccando sull'omonimo menu e poi sulla seconda voce Create Checklist - Check Marked STIG(s)
; comparirà un grafico a torta grigio in attesa di rappresentare i risultati della nostra scansione. Per importarli andiamo nel menu Import
, clicchiamo su XCDDF Results File
e infine selezioniamo il file nella cartella di partenza al percorso "RESULTS\Sessions\2025-02-14_151335\Results\SCAP\XML\DESKTOP-0Q7JL2R_SCC-5.10.1_2025-02-14_151335_XCCDF-Results_MS_Windows_10_STIG-003.003.xml" dove "RESULTS" è il nome a piacere dato alla cartella dei risultati e "2025-02-14_151335" indica la data e l'ora della scansione.
A questo punto il grafico ci mostrerà la situazione del sistema e la varie tabelle mostreranno i dettagli con il consueto schema di colori "a semaforo".
Sopra il grafico possiamo filtrare i risultati in base alle categorie di gravità (le tre suddette CAT), mentre sotto possiamo consultare ulteriori informazioni sulla scansione come: quali STIG stiamo usando, qual è il sistema target della scansione, a quale area appartiene e, soprattutto, impostare parole chiave per filtrare i risultati.
Notevole il dettaglio di analisi delle segnalazioni: cliccando sulla voce incriminata nella sezione centrale, la colonna di destra mostrerà una spiegazione che include la tipologia di non-conformità, la prassi operativa per controllarne la presenza ("Check test") e anche come rettificare lo scostamento dalla norma tramite un'azione correttiva ("Fix text").
Sotto i suggerimenti per ristabilire la conformità, c'è anche una sezione in cui scrivere eventuali commenti utili ad inquadrare meglio la problematica. Per calibrare il report secondo le nostre necessità è possibile, nella colonna di destra in alto, eseguire un severity override, ossia forzare il livello di categorizzazione (magari perché nel nostro contesto un CAT II è così cruciale da essere come un CAT I), o al bisogno marcare lo status della non-conformità come non applicabile o non rilevato (usando il menu a tendina Status
), oppure aggiungere qualche criticità che, fra quelle disponibili, a nostro avviso è stata tralasciata o male interpretata dal report. Utilizzando il menu File
possiamo salvare la nostra checklist con i risultati inclusi.
Tornando nella nostra cartella con tutti i download, passiamo ora a dare un'occhiata alla versione 3 dello STIG viewer; nella cartella "U_STIGViewer-win32_x64-3-4-0" troviamo l'eseguibile "STIG viewer 3.exe". Per iniziare al meglio, nel menu in alto a sinistra, possiamo andare su Preferences
ed impostare il dark mode, per rilassare un po' i nostro occhi.
Anche con questa interfaccia è necessario importare prima gli STIG; clicchiamo su STIG Viewer
, poi Open STIG
e selezioniamo l'XML al percorso già visto in precedenza ("U_MS_Windows_10_V3R3_STIG\U_MS_Windows_10_V3R3_Manual_STIG\U_MS_Windows_10_STIG_V3R3_Manual-xccdf.xml"). Torniamo poi in HOME
(simboleggiata dalla consueta icona a forma di casa in alto), e clicchiamo in basso su New
affianco a Checklist
. Nella nuova finestra clicchiamo prima sul "+
" affianco a Windows 10, poi in alto a destra su Import XCCDF files
.
Importiamo dunque il file al già citato percorso "RESULTS\Sessions\2025-02-14_151335\Results\SCAP\XML\DESKTOP-0Q7JL2R_SCC-5.10.1_2025-02-14_151335_XCCDF-Results_MS_Windows_10_STIG-003.003.xml" e clicchiamo in alto a destra su Fill Checklist
.
Si tratta di un'interfaccia leggermente differente a quella della versione 2, ma le informazioni e i contenuti mostrati sono in pratica gli stessi.
Per scendere sul concreto, quali sono alcune non conformità rilevate nel nostro Windows 10 Pro? Ecco qualche esempio (citati testualmente):
- Remote Desktop Services must always prompt a client for passwords upon connection
- Users must be prevented from changing installation options
- User Account Control approval mode for the built-in Administrator must be enabled
- User Account Control must automatically deny elevation requests for standard users
- The user must be prompted for a password on resume from sleep (plugged in)
- Passwords must, at a minimum, be 14 characters
- Accounts must be configured to require password expiration
- The Windows SMB client must be configured to always perform SMB packet signing
- The machine inactivity limit must be set to 15 minutes, locking the system with the screensaver
- Automatically signing in the last interactive user after a system-initiated restart must be disabled
- Indexing of encrypted files must be turned off
- Windows 10 must be configured to disable Windows Game Recording and Broadcasting
- The password manager function in the Edge browser must be disabled
- Windows Telemetry must not be configured to Full
- Autoplay must be disabled for all drives
- The network selection user interface (UI) must not be displayed on the logon screen
- Internet connection sharing must be disabled
- The display of slide shows on the lock screen must be disabled
- The Windows PowerShell 2.0 feature must be disabled on the system.
Come già ricordato, per ciascuna di queste segnalazioni vengono fornite anche informazioni su come rimediare e rientrare nella conformità dei parametri raccomandati.
Considerazioni contestuali sull'uso di stig e scap
Doveroso precisare che un sistema non conforme ai benchmark del Ministero della Difesa americano non è un sistema troppo insicuro per essere usato, ma è soltanto un sistema che, in alcune precise situazioni di attacco, è più vulnerabile di quelli conformi ai benchmark. Come sempre, avere una vulnerabilità o un sistema non "hardenizzato" non comporta necessariamente subire un attacco che usi tale vulnerabilità come vettore per scopi malevoli; è di fatto possibile usare un sistema con alcune note vulnerabilità e non aver alcun incidente di sicurezza, come spesso capita quando vengono rese note vulnerabilità diffuse, magari da anni, ma che all'utente domestico medio (quindi non preso di mira da hacker) non hanno nel frattempo causato alcun danno.
Lo scopo di STIG e SCAP è principalmente acquisire consapevolezza di elementi analitici per delineare il proprio threat model (modello di rischio), ossia dove si potrebbe essere attaccati, come, con quali danni in termini di confidenzialità, integrità e disponibilità dei dati, etc. Tutto questo, in ambito aziendale, può anche avere conseguenze gestionali in termini di POA&M (Plan of Action & Milestones), ma per un utente domestico può essere perlopiù un report da tenere presente per cercare il giusto compromesso fra esigenze pratiche d'uso e riduzione del rischio (valutando bene anche quali sia il rapporto probabilità/danno dei rischi individuati).
ulteriori Risorse
- Risulta possibile visualizzare i risultati contenuti nel file XML anche usando OpenSCAP worckbench, parte di una suite di programmi rivolti principalmente al mondo Linux in ambito di rete aziendale
- per approfondire l'hardening e le principali procedure di sicurezza in ambito informatico, un riferimento trasversale e istituzionale è questa guida dell'Agenzia per l'Italia Digitale, che allarga il discorso anche ai server e a Linux, fornendo anche pratici quadri sintetici con le contromisure consigliate a seconda del tipo specifico di minaccia
- qui trovate un ulteriori spiegazioni sull'applicazione delle STIG
- il video di riferimento da cui sono tratte le procedure illustrate sopra è questo (in inglese) in cui viene spiegato anche come importare delle group policy preconfigurate in modo da sanare automaticamente alcune non conformità; hanno fornito spunti interessanti anche questo e questo (anche loro in inglese).