<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Freebsd on Marcello Barnaba</title>
    <link>https://sindro.me/it/tags/freebsd/</link>
    <description>Recent content in Freebsd on Marcello Barnaba</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Wed, 28 Jan 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sindro.me/it/tags/freebsd/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Sblocco remoto via SSH di ZFS cifrato su FreeBSD</title>
      <link>https://sindro.me/it/posts/2026-01-28-freebsd-encrypted-zfs-remote-unlock/</link>
      <pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2026-01-28-freebsd-encrypted-zfs-remote-unlock/</guid>
      <description>&lt;h2 id=&#34;luks-remoto-pfft-ecco-come-sbloccare-via-ssh-una-root-zfs-cifrata-su-freebsd-nel-modo-difficile&#34;&gt;LUKS remoto? Pfft. Ecco come sbloccare via SSH una root ZFS cifrata su FreeBSD (nel modo difficile)&lt;/h2&gt;&#xA;&lt;p&gt;Se usi FreeBSD &lt;a href=&#34;https://sindro.me/posts/2023-08-13-freebsd-encrypted-root-on-zfs/&#34; target=&#34;_blank&#34;&gt;come me&lt;/a&gt;, su un server remoto con cifratura completa del disco (ZFS su GELI), conosci il panico del riavvio. Sei sempre alla mercé di un KVM-over-IP o di una connessione VNC dal browser, per inserire la password del filesystem root al prompt del kernel.&lt;/p&gt;&#xA;&lt;p&gt;Inoltre, se (come me) fai girare un sistema con &lt;code&gt;kern.securelevel&lt;/code&gt; &amp;gt; 0, allora installare una nuova libc significa riavviare in single user e installare gli aggiornamenti tramite la suddetta connessione KVM o VNC, che &lt;em&gt;non è ergonomica&lt;/em&gt; per usare un eufemismo.&lt;/p&gt;&#xA;&lt;p&gt;La soluzione standard è di solito un ambiente SSH pre-boot. Su Linux, dropbear-initramfs rende la cosa banale. Su FreeBSD? Devi costruirti un mfsroot (memory file system) custom da zero.&lt;/p&gt;&#xA;&lt;p&gt;La maggior parte delle guide suggerisce di usare un semplice shell script come init. Funziona, ma è misero. Perdi il job control (niente Ctrl+C), non hai un TTY decente, e in bocca al lupo se devi fare debug dei problemi di rete in modo interattivo.&lt;/p&gt;&#xA;&lt;p&gt;Non volevo un hack raffazzonato. Volevo un ambiente vero. Volevo &lt;code&gt;init&lt;/code&gt;, &lt;code&gt;getty&lt;/code&gt;, &lt;code&gt;login&lt;/code&gt;, autenticazione PAM, e un chroot ZFS per la manutenzione &amp;ndash; per installare aggiornamenti.&lt;/p&gt;&#xA;&lt;p&gt;Ecco come ho costruito un unlocker remoto robusto per FreeBSD.&lt;/p&gt;&#xA;&lt;h2 id=&#34;il-problema-con-binsh-come-init&#34;&gt;Il problema con /bin/sh come Init&lt;/h2&gt;&#xA;&lt;p&gt;L&amp;rsquo;approccio ingenuo è compilare un ramdisk minuscolo, ficcarci dentro un binario sh statico, e dire al loader di eseguirlo come PID 1.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Questo crea incubi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &amp;gt; /sbin/init &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;&amp;lt;EOF&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/sbin/dropbear&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;exec /bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EOF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Perché fallisce?&lt;/p&gt;</description>
    </item>
    <item>
      <title>pfasciilogd: collegare pf e fail2ban</title>
      <link>https://sindro.me/it/posts/2023-08-17-pfasciilogd-link-pf-and-fail2ban/</link>
      <pubDate>Thu, 17 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2023-08-17-pfasciilogd-link-pf-and-fail2ban/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;p&gt;FreeBSD: come bloccare i port scanner dall&amp;rsquo;enumerare le porte aperte sul&#xA;tuo server, usando fail2ban e una rappresentazione ASCII dei log di &lt;code&gt;pf&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;premessa&#34;&gt;Premessa&lt;/h2&gt;&#xA;&lt;p&gt;Uso &lt;a href=&#34;https://fail2ban.org/&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;fail2ban&lt;/code&gt;&lt;/a&gt; per tenere alla larga attaccanti e bot&#xA;che tentano di scansionare i miei siti web o di forzare le mie caselle di posta.&#xA;Fail2ban funziona scansionando i file di log alla ricerca di pattern specifici e&#xA;mantenendo un conteggio delle corrispondenze per IP, e permette&#xA;all&amp;rsquo;amministratore di sistema di definire cosa fare quando quel conteggio supera&#xA;una soglia definita.&lt;/p&gt;&#xA;&lt;p&gt;I pattern sono indicativi di attività malevola, come il tentativo di indovinare&#xA;la password di una casella di posta, o il tentativo di scansionare lo spazio di&#xA;un sito web alla ricerca di vulnerabilità.&lt;/p&gt;&#xA;&lt;p&gt;L&amp;rsquo;azione da eseguire nella maggior parte dei casi è bloccare l&amp;rsquo;indirizzo IP&#xA;incriminato tramite il firewall della macchina, ma fail2ban supporta qualsiasi&#xA;meccanismo che tu possa concepire, purché possa essere attuato da un comando&#xA;UNIX.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pf-e-i-suoi-log&#34;&gt;PF e i suoi log&lt;/h2&gt;&#xA;&lt;p&gt;Sul mio server FreeBSD uso l&amp;rsquo;eccellente &lt;a href=&#34;https://docs.freebsd.org/en/books/handbook/firewalls/#firewalls-pf&#34; target=&#34;_blank&#34;&gt;pf&lt;/a&gt;,&#xA;il packet filter, per gestire il traffico in entrata e per eseguire la&#xA;normalizzazione del traffico.&lt;/p&gt;&#xA;&lt;p&gt;Il meccanismo di logging di PF è molto UNIX-iano: fornisce un&amp;rsquo;interfaccia di&#xA;rete virtuale (&lt;code&gt;pflog0&lt;/code&gt;) sulla quale vengono inoltrati i primi byte dei&#xA;pacchetti bloccati da una regola con lo specificatore &lt;code&gt;log&lt;/code&gt;, così che i log&#xA;dei blocchi in tempo reale possano essere ispezionati con un semplice:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# tcpdump -eni pflog0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tcpdump: verbose output suppressed, use -v or -vv &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; full protocol decode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;listening on pflog0, link-type PFLOG &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;OpenBSD pflog file&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;, capture size &lt;span style=&#34;color:#ae81ff&#34;&gt;262144&lt;/span&gt; bytes&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:48:13.748353 rule 1/0&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;match&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: block in on vtnet0: 121.224.77.46.41854 &amp;gt; 46.38.233.77.6379: Flags &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;S&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;, seq 1929621329, win 29200, options &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;mss 1460,sackOK,TS val &lt;span style=&#34;color:#ae81ff&#34;&gt;840989709&lt;/span&gt; ecr 0,nop,wscale 7&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;, length &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:48:15.726215 rule 1/0&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;match&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: block in on vtnet0: 192.241.235.20.37422 &amp;gt; 46.38.233.77.5632: UDP, length &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;01:48:17.993439 rule 1/0&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;match&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: block in on vtnet0: 145.239.244.34.54154 &amp;gt; 46.38.233.77.1024: Flags &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;S&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;, seq 3365362952, win 1024, length &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;^C&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; packets captured&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; packets received by filter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; packets dropped by kernel&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questi log possono essere salvati da &lt;code&gt;pflogd&lt;/code&gt; in un file formato &lt;code&gt;pcap&lt;/code&gt; in&#xA;&lt;code&gt;/var/log/pflog&lt;/code&gt;, che può essere usato per troubleshooting e ispezione&#xA;asincrona, sempre con &lt;code&gt;tcpdump&lt;/code&gt; o qualsiasi cosa che sappia leggere file&#xA;&lt;code&gt;pcap&lt;/code&gt; (come Wireshark).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Root cifrata su ZFS con FreeBSD</title>
      <link>https://sindro.me/it/posts/2023-08-13-freebsd-encrypted-root-on-zfs/</link>
      <pubDate>Sun, 13 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2023-08-13-freebsd-encrypted-root-on-zfs/</guid>
      <description>&lt;h2 id=&#34;premessa&#34;&gt;Premessa&lt;/h2&gt;&#xA;&lt;p&gt;Nel 2023, gestisco ancora il mio mailserver. Sì, perché mi piace avere il&#xA;controllo (almeno in parte) della mia vita digitale, e mi piace avere&#xA;diversi nomi di dominio su cui tenere le mie cose. Tuttavia, stavo pagando&#xA;30€/mese ad AWS per avere in cambio 2 core, 2GiB di RAM e 40G di disco,&#xA;appena sufficienti per far girare IMAP+SMTP+MySQL+Clamd, figurarsi qualsiasi&#xA;forma di protezione antispam o ricerca full-text nel corpo delle email.&lt;/p&gt;&#xA;&lt;p&gt;Insomma, stavo pagando un botto di soldi per far girare un servizio merdoso,&#xA;e avevo persino pensato di chiudere tutto e spostare la posta e i siti web&#xA;su qualche servizio completamente managed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;però-voglio-ancora-farlo&#34;&gt;Però voglio ancora farlo&lt;/h2&gt;&#xA;&lt;p&gt;Beh, per ospitare quattro domini con solo qualche redirect email più i siti&#xA;web che gestisco, avrei speso di più di quanto stavo già pagando,&#xA;incatenandomi per di più a qualche fornitore di servizi e alle sue politiche.&lt;/p&gt;&#xA;&lt;p&gt;Quindi, volevo usare FreeBSD e ho cominciato a cercare nella &lt;a href=&#34;https://www.freebsd.org/commercial/isp/&#34; target=&#34;_blank&#34;&gt;pagina degli&#xA;ISP&lt;/a&gt; fino a decidere di valutare&#xA;&lt;a href=&#34;https://www.hetzner.com/cloud&#34; target=&#34;_blank&#34;&gt;Hetzner&lt;/a&gt; e&#xA;&lt;a href=&#34;https://www.netcup.eu/vserver/vps.php&#34; target=&#34;_blank&#34;&gt;netcup&lt;/a&gt;, che offrono entrambi&#xA;prezzi aggressivi e un buon vecchio VPS senza fronzoli.&lt;/p&gt;&#xA;&lt;h2 id=&#34;scelta-del-provider&#34;&gt;Scelta del provider&lt;/h2&gt;&#xA;&lt;p&gt;Alla fine, ho scelto un netcup VPS 1000 che mi dà, a 1/3 del prezzo&#xA;che pagavo ad AWS, 4 volte le risorse: 6 core, 8GiB di RAM, 160GiB di&#xA;SSD RAID10 e un&amp;rsquo;installazione FreeBSD completamente libera e senza&#xA;limitazioni.&lt;/p&gt;&#xA;&lt;p&gt;Tuttavia, l&amp;rsquo;immagine base fornita da Netcup ha alcune limitazioni:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Gira su UFS&lt;/li&gt;&#xA;&lt;li&gt;Non ha una partizione di swap&lt;/li&gt;&#xA;&lt;li&gt;Non ha cifratura&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fare-un-piano&#34;&gt;Fare un piano&lt;/h2&gt;&#xA;&lt;p&gt;Dato che ero già in fase di configurazione e non volevo ricominciare da zero&#xA;(questo è un server vecchio stile, gestito a mano, zero automazione) ho&#xA;deciso di:&lt;/p&gt;</description>
    </item>
    <item>
      <title>*BSD su un MacMini 4,1? Neanche per sogno. :-(</title>
      <link>https://sindro.me/it/posts/2011-01-04-bsd-onto-a-macmini-4-1-no-way/</link>
      <pubDate>Tue, 04 Jan 2011 18:00:00 +0000</pubDate>
      <guid>https://sindro.me/it/posts/2011-01-04-bsd-onto-a-macmini-4-1-no-way/</guid>
      <description>&lt;img src=&#34;https://sindro.me/posts/2011-01-04-bsd-onto-a-macmini-4-1-no-way/mini-daemon.png&#34; style=&#34;float: right&#34; /&gt;&#xA;&lt;p&gt;Ho passato gli ultimi due giorni a cercare di configurare il Mac Mini in alluminio (rev. 4,1)&#xA;come &lt;span class=&#34;caps&#34;&gt;NAS&lt;/span&gt; server casalingo con storage crittografato, e&#xA;volevo metterci un sistema &lt;span class=&#34;caps&#34;&gt;BSD&lt;/span&gt;. C&#39;è già un&#xA;OpenBSD embedded sul gateway soekris, e un compagno sarebbe stato&#xA;carino. :-)&lt;/p&gt;&#xA;&lt;p&gt;Indovinate un po&#39;, non c&#39;è verso:&lt;/p&gt;&#xA;&lt;ul&gt; &lt;li&gt;FreeBSD 8.1 non completa il processo di boot, a causa di &lt;a&#xA;href=&#34;http://wiki.freebsd.org/AppleMacbook&#34;&gt;un bug nel chipset &lt;span&#xA;class=&#34;caps&#34;&gt;SATA&lt;/span&gt;, &lt;span class=&#34;caps&#34;&gt;NV MCP89&lt;/span&gt;&lt;/a&gt;;&lt;/li&gt;&#xA;&lt;li&gt;FreeBSD 8.2-RC1 fa il boot ma, a causa dello stesso bug, non riconosce nessun&#xA;drive &lt;span class=&#34;caps&#34;&gt;SATA&lt;/span&gt; né nessun dispositivo &lt;span class=&#34;caps&#34;&gt;USB&lt;/span&gt;&#xA;umass;&lt;/li&gt; &lt;li&gt;NetBSD 5.1 fa il boot senza problemi, gestisce i&#xA;dischi &lt;span class=&#34;caps&#34;&gt;SATA&lt;/span&gt; tramite il driver generico pciide (niente &lt;span&#xA;class=&#34;caps&#34;&gt;DMA&lt;/span&gt;, quindi piuttosto lento) ma, sfortunatamente, non gestisce&#xA;il controller ethernet &lt;span class=&#34;caps&#34;&gt;BCM57762&lt;/span&gt;. Ho provato con&#xA;patch veloci e sporche per &lt;a&#xA;href=&#34;http://code.bsd64.org/cvsweb/netbsd/src/sys/dev/pci/if_bge.c&#34;&gt;portare il&#xA;driver bge al livello di -current&lt;/a&gt;, ma niente da fare: il &lt;span&#xA;class=&#34;caps&#34;&gt;MII&lt;/span&gt; link detection funziona, la scheda trasmette ma&#xA;non riceve. Anche il controller sdmmc funziona con -current ma non&#xA;con la 5.1-RELEASE. L&#39;&lt;span class=&#34;caps&#34;&gt;ACPI&lt;/span&gt; funziona correttamente;&lt;/li&gt;&#xA;&lt;li&gt;OpenBSD 4.8 fa il boot, accede ai drive &lt;span class=&#34;caps&#34;&gt;SATA&lt;/span&gt;&#xA;senza &lt;span class=&#34;caps&#34;&gt;DMA&lt;/span&gt;, e riconosce la scheda di rete bge, ma&#xA;mostra lo stesso identico comportamento di NetBSD 5.1 col driver di -current;&lt;/li&gt;&#xA;&lt;li&gt;DragonFlyBSD 2.8.2 non entra nemmeno in kernel mode, sospetto&#xA;a causa di bug &lt;span class=&#34;caps&#34;&gt;ACPI&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;PureDarwin non mi ha&#xA;ispirato granché, a causa dei tanti &lt;a&#xA;href=&#34;http://www.puredarwin.org/blockers&#34;&gt;problemi bloccanti&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;&#xA;&lt;p&gt;Tutti supportano lo storage crittografato, ho tirato su un disco &lt;a&#xA;href=&#34;http://netbsd.gw.com/cgi-bin/man-cgi?cgd+4+NetBSD-5.0&#34;&gt;NetBSD &lt;span&#xA;class=&#34;caps&#34;&gt;CGD&lt;/span&gt;&lt;/a&gt; senza problemi su dk wedge; FreeBSD ha gli&#xA;interessanti strumenti &lt;a&#xA;href=&#34;http://www.freebsd.org/doc/handbook/disks-encrypting.html&#34;&gt;gbde(8) e&#xA;geli(8)&lt;/a&gt; basati su GEOM che non ho potuto testare, mentre OpenBSD&#xA;supporta la crittografia tramite una &lt;a&#xA;href=&#34;http://www.openbsd.org/cgi-bin/man.cgi?query=softraid&amp;amp;sektion=4&#34;&gt;personality&#xA;softraid&lt;/a&gt;. Purtroppo, il supporto per l&#39;hardware Apple, ormai esotico, è&#xA;fuori discussione.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
