<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Auditing on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/auditing/</link>
        <description>Recent content in Auditing on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 19 May 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/auditing/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Auditing con auditd</title>
        <link>https://www.matteobianchi.eu/p/auditd/</link>
        <pubDate>Tue, 19 May 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/auditd/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/auditd/cover.png" alt="Featured image of post Auditing con auditd" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Un sistema che non osservi è un sistema di cui non sai nulla: non puoi accorgerti di una compromissione,
né ricostruire cosa è successo dopo. &lt;strong&gt;auditd&lt;/strong&gt; è la scatola nera di Linux: registra, a livello di
kernel, eventi di sicurezza — chi ha letto un file sensibile, chi ha eseguito un comando, chi ha
modificato la configurazione, quali syscall sono state invocate. È indispensabile per le indagini
forensi e richiesto da molti standard (PCI DSS, CIS). A differenza del semplice logging applicativo,
opera &lt;em&gt;sotto&lt;/em&gt; le applicazioni, quindi è difficile da eludere.&lt;/p&gt;
&lt;h2 id=&#34;come-funziona&#34;&gt;Come funziona
&lt;/h2&gt;&lt;p&gt;Il kernel genera eventi secondo le &lt;strong&gt;regole&lt;/strong&gt; che carichi; &lt;code&gt;auditd&lt;/code&gt; li scrive in
&lt;code&gt;/var/log/audit/audit.log&lt;/code&gt;. Le regole possono sorvegliare &lt;em&gt;file&lt;/em&gt; (watch) o &lt;em&gt;syscall&lt;/em&gt; (con filtri).&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;auditctl -s                 &lt;span class=&#34;c1&#34;&gt;# stato del sottosistema di audit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;auditctl -l                 &lt;span class=&#34;c1&#34;&gt;# regole attualmente caricate&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;h2 id=&#34;regole-utili&#34;&gt;Regole utili
&lt;/h2&gt;&lt;p&gt;Si mettono in &lt;code&gt;/etc/audit/rules.d/*.rules&lt;/code&gt; (caricate al boot). Due famiglie:&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;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&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;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&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;# --- WATCH sui file sensibili (-w percorso -p permessi -k etichetta) ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# -p: r=read w=write x=exec a=attribute change ; -k: chiave per ritrovarli
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w /etc/passwd    -p wa -k identita        # modifiche agli account
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w /etc/shadow    -p wa -k identita
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w /etc/sudoers   -p wa -k escalation      # chi tocca le regole sudo
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-w /etc/ssh/sshd_config -p wa -k sshd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# --- SYSCALL (-a azione,filtro -S syscall) ---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a always,exit -F arch=b64 -S execve -k exec        # ogni comando eseguito
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a always,exit -F arch=b64 -S mount -S umount2 -k mount
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-a always,exit -F arch=b64 -F euid=0 -S execve -k root_cmds   # comandi eseguiti da root
&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;I &lt;strong&gt;watch&lt;/strong&gt; su &lt;code&gt;/etc/passwd&lt;/code&gt;, &lt;code&gt;/etc/shadow&lt;/code&gt;, &lt;code&gt;/etc/sudoers&lt;/code&gt; catturano esattamente le modifiche che un
attaccante fa per persistere (creare un account, darsi sudo). La regola su &lt;code&gt;execve&lt;/code&gt; registra ogni
comando eseguito — preziosissima in un&amp;rsquo;indagine.&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;augenrules --load       &lt;span class=&#34;c1&#34;&gt;# carica le regole da rules.d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;auditctl -e &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;           &lt;span class=&#34;c1&#34;&gt;# rende la configurazione IMMUTABILE fino al reboot (1=on, 2=locked)&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;&lt;code&gt;-e 2&lt;/code&gt; è importante: blocca le regole finché non si riavvia, così un attaccante non può disattivare
l&amp;rsquo;audit al volo per nascondersi.&lt;/p&gt;
&lt;h2 id=&#34;interrogare-i-log&#34;&gt;Interrogare i log
&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;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;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&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;&lt;span class=&#34;c1&#34;&gt;# tutti gli eventi con una certa chiave&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ausearch -k identita -ts today
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ausearch -k escalation -i          &lt;span class=&#34;c1&#34;&gt;# -i = interpreta UID/syscall in forma leggibile&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;# chi ha eseguito cosa da root, oggi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ausearch -k root_cmds -ts today -i
&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;# report riassuntivi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aureport --summary
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aureport -au                       &lt;span class=&#34;c1&#34;&gt;# tentativi di autenticazione&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;aureport -x --summary              &lt;span class=&#34;c1&#34;&gt;# eseguibili più usati&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;Le &lt;strong&gt;chiavi&lt;/strong&gt; (&lt;code&gt;-k&lt;/code&gt;) sono il trucco di usabilità: etichetti le regole per argomento e poi filtri gli
eventi per argomento, senza grep a mano in un log enorme.&lt;/p&gt;
&lt;h2 id=&#34;attenzione-al-volume&#34;&gt;Attenzione al volume
&lt;/h2&gt;&lt;p&gt;auditd può generare moltissimi eventi: la regola su &lt;code&gt;execve&lt;/code&gt; su un sistema attivo produce molto. Si
bilancia — sorvegliare i file &lt;em&gt;davvero&lt;/em&gt; sensibili e i comandi di root, non tutto — e si gestiscono
rotazione e spazio (&lt;code&gt;max_log_file&lt;/code&gt;, &lt;code&gt;space_left_action&lt;/code&gt; in &lt;code&gt;/etc/audit/auditd.conf&lt;/code&gt;), inviando
idealmente i log a un collettore esterno (prossimo capitolo).&lt;/p&gt;
&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;auditd registra a livello di kernel chi tocca i file sensibili e chi esegue comandi, in modo difficile
da eludere (regole immutabili con &lt;code&gt;-e 2&lt;/code&gt;), interrogabile per chiavi con &lt;code&gt;ausearch&lt;/code&gt;/&lt;code&gt;aureport&lt;/code&gt;: la
scatola nera per indagini e compliance. auditd è specializzato sugli eventi di sicurezza; il resto dei
log di sistema — servizi, kernel, boot — passa per journald, il &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/logging-journald/&#34; &gt;prossimo capitolo&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
