<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Boot on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/boot/</link>
        <description>Recent content in Boot on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 14 Apr 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/boot/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Boot sicuro e GRUB</title>
        <link>https://www.matteobianchi.eu/p/boot-e-secure-boot/</link>
        <pubDate>Tue, 14 Apr 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/boot-e-secure-boot/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/boot-e-secure-boot/cover.png" alt="Featured image of post Boot sicuro e GRUB" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Tutte le difese viste finora presuppongono un sistema &lt;em&gt;già avviato&lt;/em&gt; e integro. Ma il processo di avvio
è esso stesso un bersaglio: chi ha accesso alla console — fisicamente, o alla console di una VM/IPMI —
può interrompere GRUB, aggiungere &lt;code&gt;init=/bin/bash&lt;/code&gt; ai parametri del kernel e ottenere una shell di root
&lt;em&gt;senza password&lt;/em&gt;, scavalcando login, SSH e PAM. La sicurezza del boot chiude questa porta e stabilisce
una &lt;strong&gt;catena di fiducia&lt;/strong&gt; dal firmware al kernel.&lt;/p&gt;
&lt;h2 id=&#34;la-minaccia-la-shell-di-root-al-boot&#34;&gt;La minaccia: la shell di root al boot
&lt;/h2&gt;&lt;p&gt;Dal menu di GRUB, premendo &lt;code&gt;e&lt;/code&gt; si editano i parametri di avvio. Aggiungere &lt;code&gt;init=/bin/bash&lt;/code&gt; o
&lt;code&gt;systemd.unit=rescue.target&lt;/code&gt; può dare una shell privilegiata prima che partano le protezioni. È il
motivo per cui, con accesso alla console, un sistema non protetto al boot è già perso.&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;/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;# ciò che un attaccante aggiunge alla riga &amp;#39;linux ...&amp;#39; nel menu GRUB:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;init=/bin/bash          # il kernel avvia una shell invece di systemd → root senza login
&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;password-su-grub&#34;&gt;Password su GRUB
&lt;/h2&gt;&lt;p&gt;Proteggere l&amp;rsquo;&lt;em&gt;editing&lt;/em&gt; delle voci e la modalità rescue con una password impedisce questo scavalcamento.&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;/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;grub-mkpasswd-pbkdf2        &lt;span class=&#34;c1&#34;&gt;# genera un hash: grub.pbkdf2.sha512.10000.XXXX...&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;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;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&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;# /etc/grub.d/40_custom
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set superusers=&amp;#34;admin&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;password_pbkdf2 admin grub.pbkdf2.sha512.10000.XXXX...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# per lasciare l&amp;#39;avvio normale senza password ma proteggere l&amp;#39;EDITING:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;#   aggiungi --unrestricted alle voci di menu generate
&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;/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;update-grub     &lt;span class=&#34;c1&#34;&gt;# Debian/Ubuntu    (grub2-mkconfig -o /boot/grub2/grub.cfg su RHEL)&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 bilanciamento tipico: l&amp;rsquo;avvio normale non chiede password (il server riparte da solo dopo un
riavvio), ma &lt;em&gt;modificare&lt;/em&gt; i parametri o entrare in rescue sì.&lt;/p&gt;
&lt;h2 id=&#34;secure-boot-la-catena-di-fiducia&#34;&gt;Secure Boot: la catena di fiducia
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Secure Boot&lt;/strong&gt; (UEFI) verifica la firma crittografica di ogni anello della catena d&amp;rsquo;avvio: il firmware
verifica il bootloader (shim/GRUB), che verifica il kernel, che verifica i moduli. Se un componente non
è firmato da una chiave fidata, non parte. Protegge da &lt;strong&gt;bootkit&lt;/strong&gt; e da un kernel/bootloader manomesso.&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;/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;mokutil --sb-state            &lt;span class=&#34;c1&#34;&gt;# Secure Boot enabled / disabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bootctl status                &lt;span class=&#34;c1&#34;&gt;# stato del boot UEFI e del firmware&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;Su Linux funziona tramite &lt;code&gt;shim&lt;/code&gt; firmato da Microsoft (la cui chiave è nei firmware) che a sua volta
verifica il bootloader della distribuzione. Puoi anche iscrivere le &lt;em&gt;tue&lt;/em&gt; chiavi (MOK) per firmare moduli
kernel custom.&lt;/p&gt;
&lt;h2 id=&#34;fin-dove-arriva-e-fin-dove-no&#34;&gt;Fin dove arriva (e fin dove no)
&lt;/h2&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;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&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;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&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 hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Protegge: scavalcamento via console/GRUB, bootkit, kernel/bootloader manomessi
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NON protegge da solo: dischi non cifrati estratti e letti su un&amp;#39;altra macchina
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  → per quello serve la cifratura del disco (prossimo capitolo)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Richiede: accesso fisico/console protetto; su cloud/VM, dipende dalle protezioni del provider
&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;Secure Boot verifica che il software che &lt;em&gt;parte&lt;/em&gt; sia fidato, ma non protegge i &lt;strong&gt;dati a riposo&lt;/strong&gt;: chi
stacca il disco e lo legge altrove scavalca tutto. È il naturale ponte al prossimo tema.&lt;/p&gt;
&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Password su GRUB contro lo scavalcamento da console e Secure Boot per la catena di fiducia del software
d&amp;rsquo;avvio chiudono gli attacchi al boot — ma non proteggono i dati su un disco rimosso. Per quello serve
rendere illeggibile il disco stesso: la &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/cifratura-dischi-luks/&#34; &gt;cifratura con LUKS&lt;/a&gt;,
prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
