<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Automazione on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/automazione/</link>
        <description>Recent content in Automazione on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 23 Jun 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/automazione/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CIS Benchmark e automazione</title>
        <link>https://www.matteobianchi.eu/p/cis-benchmark-e-automazione/</link>
        <pubDate>Tue, 23 Jun 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/cis-benchmark-e-automazione/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/cis-benchmark-e-automazione/cover.png" alt="Featured image of post CIS Benchmark e automazione" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Tutti i capitoli precedenti descrivono controlli; applicarli &lt;em&gt;a mano, una volta sola, su una macchina&lt;/em&gt;
non basta nel mondo reale. I sistemi si moltiplicano, le configurazioni &lt;strong&gt;derivano&lt;/strong&gt; nel tempo (qualcuno
cambia qualcosa &amp;ldquo;al volo&amp;rdquo;), e senza un metodo non sai se la macchina numero 20 è indurita come la prima.
Servono tre cose: una &lt;strong&gt;lista condivisa&lt;/strong&gt; di cosa fare, un modo di &lt;strong&gt;misurare&lt;/strong&gt; quanto ci si è vicini, e
un modo di &lt;strong&gt;applicarla in modo ripetibile&lt;/strong&gt;. Sono rispettivamente i CIS Benchmark, gli scanner di
auditing e l&amp;rsquo;automazione.&lt;/p&gt;
&lt;h2 id=&#34;i-cis-benchmark-la-lista-condivisa&#34;&gt;I CIS Benchmark: la lista condivisa
&lt;/h2&gt;&lt;p&gt;I &lt;strong&gt;CIS Benchmark&lt;/strong&gt; sono documenti dettagliati, mantenuti dal Center for Internet Security, che elencano
centinaia di controlli di hardening per ogni sistema (Ubuntu, RHEL, Debian&amp;hellip;), ciascuno con
motivazione, come verificarlo e come applicarlo. Il valore: non devi &lt;em&gt;inventare&lt;/em&gt; la lista né rischiare
di dimenticare qualcosa — parti da un riferimento riconosciuto e lo adatti al tuo contesto. Molti dei
temi di questa serie (permessi di &lt;code&gt;/etc/shadow&lt;/code&gt;, SSH, sysctl, auditd&amp;hellip;) sono esattamente controlli CIS.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Struttura tipica di un controllo CIS:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - Livello 1: hardening di base, basso impatto sull&amp;#39;operatività
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - Livello 2: più restrittivo, per ambienti ad alta sicurezza (può rompere qualcosa)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → scegli il livello in base al contesto; non tutto va applicato ovunque
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;misurare-lynis&#34;&gt;Misurare: Lynis
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Lynis&lt;/strong&gt; fa l&amp;rsquo;audit del sistema e produce un report con un punteggio di hardening e suggerimenti
concreti — un modo rapido di sapere &amp;ldquo;quanto sono messo&amp;rdquo; senza controllare tutto a mano.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install lynis       &lt;span class=&#34;c1&#34;&gt;# o dnf install lynis&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lynis audit system
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ... Hardening index : 72 [############        ]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Suggestions: ... (elenco di cosa migliorare, con riferimenti)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;L&amp;rsquo;&lt;strong&gt;hardening index&lt;/strong&gt; dà un numero da seguire nel tempo: l&amp;rsquo;obiettivo non è &amp;ldquo;100&amp;rdquo; (irrealistico e a volte
controproducente), ma una curva che sale e un report che non contiene sorprese.&lt;/p&gt;
&lt;h2 id=&#34;applicare-in-modo-ripetibile-ansible&#34;&gt;Applicare in modo ripetibile: Ansible
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;automazione trasforma l&amp;rsquo;hardening da &amp;ldquo;cosa fatta a mano&amp;rdquo; a &lt;strong&gt;codice&lt;/strong&gt; applicabile a N macchine in modo
identico e ri-applicabile (correggendo la deriva). Esistono ruoli Ansible pronti che implementano i CIS
Benchmark.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# esempio: usare un ruolo di hardening CIS in un playbook&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;servers&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;become&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;roles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;devsec.hardening.os_hardening    &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# permessi, sysctl, account...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;devsec.hardening.ssh_hardening   &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# sshd_config indurito&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ansible-playbook -i inventory hardening.yml --check   &lt;span class=&#34;c1&#34;&gt;# --check: mostra cosa cambierebbe (dry-run)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ansible-playbook -i inventory hardening.yml           &lt;span class=&#34;c1&#34;&gt;# applica&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Il vantaggio è doppio: applichi la &lt;em&gt;stessa&lt;/em&gt; configurazione a tutta la flotta, e rieseguendo il playbook
riporti allo stato voluto qualunque macchina sia derivata — è il principio della &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/iac-sicuro-policy-as-code/&#34; &gt;configurazione come
codice&lt;/a&gt; applicato all&amp;rsquo;hardening del sistema operativo.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; se applico un ruolo CIS pronto con Ansible, non è un modo per indurire senza capire nulla — e quindi il contrario di tutta questa serie, che insisteva sul perché?&lt;/summary&gt;
&lt;p&gt;È il rischio reale di ogni automazione — applicare regole a scatola chiusa — ma il modo giusto di
usarla è esattamente l&#39;opposto: l&#39;automazione &lt;em&gt;presuppone&lt;/em&gt; la comprensione, non la sostituisce, ed
è qui che tutta la serie ripaga. Un ruolo CIS applicato senza capire cosa fa produce due disastri
prevedibili. Primo, &lt;em&gt;rompe cose e non sai perché&lt;/em&gt;: molti controlli CIS di livello 2 disabilitano
funzioni, stringono permessi, cambiano SSH — se non capisci cosa stai applicando, un servizio smette di
funzionare e sei bloccato, con la tentazione di disattivare tutto. Secondo, &lt;em&gt;applichi controlli
inadatti al tuo contesto&lt;/em&gt;: non ogni regola ha senso ovunque (un benchmark per workstation differisce
da uno per server esposto), e scegliere il livello e le eccezioni richiede di sapere cosa ti serve
davvero. La comprensione costruita nei capitoli precedenti è ciò che ti permette di usare l&#39;automazione
&lt;em&gt;bene&lt;/em&gt;: leggi il ruolo e riconosci i controlli (ah, questo è il sysctl rp_filter, questo è
PermitRootLogin no, questo monta /tmp nosuid), capisci perché ci sono, decidi quali attivare e quali
derogare con cognizione, e quando qualcosa si rompe sai diagnosticarlo invece di arrenderti. L&#39;automazione
risolve il problema dello &lt;em&gt;scalare e del non derivare&lt;/em&gt; — applicare la stessa cosa a 50 macchine,
ripristinare lo stato voluto — che è un problema diverso e complementare rispetto al &lt;em&gt;sapere cosa
applicare&lt;/em&gt;. Chi capisce ma fa tutto a mano non scala; chi automatizza senza capire costruisce un
castello che crolla al primo imprevisto e non sa rialzarlo. L&#39;obiettivo della serie era darti il primo
pezzo proprio perché il secondo, da solo, è fragile. Automatizza — ma automatizza ciò che capisci.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;I CIS Benchmark danno la lista condivisa, Lynis la misura, Ansible la applica in modo ripetibile su
tutta la flotta correggendo la deriva: così l&amp;rsquo;hardening diventa sistematico invece che artigianale. Qui
si chiude &lt;strong&gt;Linux Hardening in pratica&lt;/strong&gt;: dal &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/modello-sicurezza-linux/&#34; &gt;modello di permessi del
kernel&lt;/a&gt; fino all&amp;rsquo;automazione, con un filo conduttore
costante — privilegio minimo, superficie minima, visibilità — e un principio di metodo: ogni controllo
ha un &lt;em&gt;perché&lt;/em&gt;, e capirlo è ciò che distingue un sistema indurito da una checklist spuntata. Per
ripartire dall&amp;rsquo;inizio, torna alla &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/linux-hardening-la-serie/&#34; &gt;roadmap della serie&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
