<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mac Souverain — Articles (English)</title><description>In-depth Mac Souverain articles, excluding the watch/radar feed.</description><link>https://macsouverain.com/en/</link><language>en</language><atom:link href="https://macsouverain.com/en/articles.xml" rel="self" type="application/rss+xml"/><item><title>Passwork, « Made in EU » outside, FSB-certified inside</title><link>https://macsouverain.com/en/made-in-eu-souverainete-logicielle/</link><guid isPermaLink="true">https://macsouverain.com/en/made-in-eu-souverainete-logicielle/</guid><description>A tool sold as Made in EU, with code pushed from Russia. The label has no legal weight. Here&apos;s the checklist to vet your software supply chain.</description><pubDate>Mon, 27 Jul 2026 07:00:00 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;A software company based in Barcelona. A password manager sold to European public bodies. On the website, until recently, two reassuring lines: “Made in EU 2017” and “no affiliations with any US, Russian, or other non-European entities”.&lt;/p&gt;
&lt;p&gt;Small problem. The software is in fact affiliated with Russia. And its source code is certified by &lt;strong&gt;the FSB&lt;/strong&gt;, which &lt;strong&gt;had access to it&lt;/strong&gt;. Barely worth mentioning.&lt;/p&gt;
&lt;p&gt;On 17 July 2026, a consortium led by OCCRP and VSquare, with a dozen newsrooms including Le Monde, NU.nl, De Groene Amsterdammer, Investico and De Tijd, published an investigation. The code of this European tool is developed in Russia, in Arkhangelsk, and its updates travel through an entity in the Emirates. The two reassuring lines vanished from the website after the journalists started asking questions.&lt;/p&gt;
&lt;p&gt;This piece isn’t only about Passwork. Passwork is just one more example of Brussels’ incompetence. Get this straight, &lt;strong&gt;“Made in EU” on a product page carries no legal weight, and protects you from nothing&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Nobody, not Brussels, not a label, checks it for you. So let’s learn to do it ourselves.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-problem-a-flag-proves-nothing&quot;&gt;The problem: a flag proves nothing&lt;/h2&gt;
&lt;p&gt;You pick a piece of software to protect your data. You see “European”, you see a head office in the EU, and you decide sovereignty is ticked off. You’ve just confused two things that have nothing to do with each other.&lt;/p&gt;
&lt;p&gt;A company’s registration address tells you where its lawyers and its taxes sit. It doesn’t tell you where the code running on your machine comes from. Those are two separate chains: the legal chain, and the software supply chain. The first is easy to display on a website. The second is invisible, and it’s the only one that matters.&lt;/p&gt;
&lt;p&gt;Take the case documented by the investigation. Passwork Europe S.L. is indeed registered in Barcelona. But Passwork LLC is registered in Arkhangelsk, Russia, in November 2022. Same logo, a common code base at the origin, and user manuals the investigation calls “virtually indistinguishable aside from the language”. On the two versions released in early April 2026, a researcher notes an install script of around 517 lines that he describes as “basically identical”.&lt;/p&gt;
&lt;p&gt;Two products presented as separate. &lt;strong&gt;One code base, or nearly.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The point isn’t “a Russian company, that’s bad”. The point is more uncomfortable: nothing on the product page let you know. The “Made in EU” label did exactly the job it exists for, reassuring you, without proving anything.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-mechanism-the-three-questions-the-label-never-asks&quot;&gt;The mechanism: the three questions the label never asks&lt;/h2&gt;
&lt;p&gt;A tool’s sovereignty can’t be read off a flag. It’s read off three concrete questions, and not one of them shows up on a sales brochure.&lt;/p&gt;
&lt;h3 id=&quot;who-ships-the-binary&quot;&gt;Who ships the binary?&lt;/h3&gt;
&lt;p&gt;The code you use isn’t the one sitting in a public repository. It’s the one that lands on your machine at the next update. So the real question is: which entity builds and delivers that update?&lt;/p&gt;
&lt;p&gt;In the Passwork case, the cofounders Ilya Garakh, who owns the domains, and Andrey Pyankov, a manager, operate through Passwork FZ-LLC, registered in Ras Al Khaimah, in the Emirates, in July 2022. It’s this entity that supplies the updates to the European branch. Passwork describes it as “limited product related knowledge-transfer support” during a transition period meant to end in August 2026.&lt;/p&gt;
&lt;p&gt;Translation: the European binary is, at least until that date, fed from outside Europe. A researcher quoted in the investigation sums up the EU/Russia split as “technically shallow”.&lt;/p&gt;
&lt;h3 id=&quot;who-signs-the-code-and-with-which-key&quot;&gt;Who signs the code, and with which key?&lt;/h3&gt;
&lt;p&gt;A legitimate update is cryptographically signed. That’s what guarantees the file you install really comes from the vendor and hasn’t been tampered with along the way. Except a signature guarantees origin, not innocence. If the entity holding the signing key is also the one that could slip something into an update, a valid signature protects you from nothing. It just certifies the parcel really came from the sender, whatever the contents.&lt;/p&gt;
&lt;p&gt;It’s the update channel, not the storage, that concentrates the risk. A researcher quoted in the investigation describes it as “the most elegant and hardest-to-detect attack vector”. OCCRP itself draws the parallel with SolarWinds, that 2019-2020 attack where a perfectly legitimate monitoring tool served as the vehicle for a massive compromise, through its signed updates.&lt;/p&gt;
&lt;p&gt;Let’s stay precise: to date, no backdoor has been found in Passwork, no leak, no compromised client. We’re talking about a vector that exists, not an attack that took place. The channel would allow, structurally, what SolarWinds proved possible. &lt;strong&gt;This isn’t an accusation. It’s a geometry.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;which-state-got-to-review-the-source&quot;&gt;Which state got to review the source?&lt;/h3&gt;
&lt;p&gt;Here’s the question nobody thinks to ask, and it may be the heaviest.&lt;/p&gt;
&lt;p&gt;Passwork LLC is certified by FSTEC, which VSquare ties to the Russian Ministry of Defense, and by the FSB. These certifications aren’t administrative rubber stamps. The process requires the source code to be submitted to accredited laboratories, tasked with detecting “vulnerabilities or undeclared capabilities”.&lt;/p&gt;
&lt;p&gt;In other words: a state organized the review of this software’s source code. Not the European Union. Not an auditor you hired. A service under another jurisdiction, with its own priorities.&lt;/p&gt;
&lt;p&gt;When you install a piece of software, you’re not just trusting the vendor. You’re trusting, without knowing it, everyone who had their hands in its code before you.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-regulatory-maze-that-saw-nothing-coming&quot;&gt;The regulatory maze that saw nothing coming&lt;/h2&gt;
&lt;p&gt;At this point you might tell yourself this is exactly what we pay regulators for. Europe churns out digital regulation by the yard, a fresh acronym every quarter, a triumphant press release for every text passed. So this Russian vault dressed up as a European product, sold to its own public bodies, did they see it coming? No. Not one alert, not one line.&lt;/p&gt;
&lt;p&gt;Look at the regulatory stack meant to cover this ground. The Cyber Resilience Act imposes “by-design” security on digital products: how they’re built, not by whom or from where. The Cyber Solidarity Act, in force since 4 February 2025, organizes crisis response: a European alert system, a cybersecurity reserve, a post-incident review. Useful the day the house is on fire, silent on who lit the match. And ENISA’s certification schemes, the EUCC for products, the EUCS for cloud, assess assurance levels against technical criteria.&lt;/p&gt;
&lt;p&gt;Look through all of that for the box marked “which entity ships the binary” or “which state reviewed the source”. It doesn’t exist. None of these texts certifies a product by its real origin, and none of them bans anything on that basis. A company can display “Made in EU”, have its code reviewed by a foreign intelligence service, and stay perfectly compliant with Brussels. Compliant, stamped, spotless on paper. That’s the level of protection you were sold with billions poured into European cybersecurity and press conferences.&lt;/p&gt;
&lt;p&gt;While this vault, whose Russian strain is FSB-certified, thrived on the European public market, where was the same Union pouring its energy? Into trying to force messaging apps to scan your private conversations before encryption, the CSAR (Chat Control 2.0). Translation: Brussels couldn’t spot a tool reviewed by a Russian service and sold to its own public bodies, but it wants to search the messages of hundreds of millions of Europeans. &lt;strong&gt;Incompetent on the real threat, zealous about surveilling the innocent.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read next: &lt;a href=&quot;https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/&quot;&gt;Chat Control 2.0, the EU wants to read your messages before you send them&lt;/a&gt; and &lt;a href=&quot;https://macsouverain.com/en/nis2-csar-contradiction-ue-chiffrement-surveillance/&quot;&gt;NIS2 forces you to encrypt, CSAR forbids you from really doing it&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The conclusion is unpleasant but clear. Software sovereignty isn’t delegated to a regulator. &lt;strong&gt;It’s on you. You, the citizen. You, the small business.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-this-changes-in-practice-your-verification-checklist&quot;&gt;What this changes in practice: your verification checklist&lt;/h2&gt;
&lt;p&gt;Good news, you don’t need to be a cyber-defense analyst. You need a method. Before you hand your passwords, your contracts or your accounts to a piece of software, run it through these six questions. Take the most sensitive example there is, a password vault, the one that holds the keys to everything else.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Who ships the binary?&lt;/strong&gt; Look for the entity that actually publishes the updates, not the one that cashes your invoice. Company register, legal notices, corporate history. A European address on the homepage and a parent company elsewhere is a signal, not an answer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who signs the code, and with which key?&lt;/strong&gt; A serious vendor publishes its signatures and lets you verify them. Look at who holds the signing key and where. A key controlled by an entity under an opaque jurisdiction cancels the benefit of the signature.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Which state got to review the source?&lt;/strong&gt; National certifications are public. An FSTEC or FSB certification means the code was reviewed by accredited Russian labs. Conversely, an ANSSI visa (like the one earned by KeePassXC) means a French evaluation. That’s not neutral: ask yourself which state you’re willing to let look under the hood.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-hosted or cloud?&lt;/strong&gt; Software you host yourself takes the vendor out of the storage loop. Your data stays on your infrastructure, under your jurisdiction. It doesn’t solve the update-channel problem, but it shrinks the surface. The vendor’s cloud, on the other hand, stacks both dependencies.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What update history, through which channel?&lt;/strong&gt; A mature project has a readable changelog, a stable and documented distribution channel. Opaque updates, a channel that keeps changing, an exotic distribution entity: so many red flags. The channel is the real entry point, watch it as such.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is the code auditable?&lt;/strong&gt; Open source doesn’t magically make software safe, but it makes lying harder. Public code could have been read by anyone, including people with no interest in reassuring you. Closed code asks you to take the vendor at its word, and you’ve just seen what words on a product page are worth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these six questions needs a budget. They need ten minutes and the will to look behind the flag. Apply them to your current manager tonight. Some will pass the test without breaking a sweat, others far less so.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read next: &lt;a href=&quot;https://macsouverain.com/en/gestionnaire-mots-de-passe-mac-comparatif/&quot;&gt;Apple, Bitwarden, KeePassXC or 1Password, the honest comparison of password vaults&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-limits-what-this-checklist-wont-tell-you&quot;&gt;The limits: what this checklist won’t tell you&lt;/h2&gt;
&lt;p&gt;We have to be honest on two points, otherwise we slide into trial by insinuation.&lt;/p&gt;
&lt;p&gt;First, fairness to the vendor in question. Passwork claims its independence, says the transition with the Russian entity ends in August 2026, and that its clients’ data lives on those clients’ servers. Its CEO, Alexander Muntyan, invokes a “zero-knowledge architecture”, with encryption and decryption on the client side: “we would simply have no data to provide”. This argument deserves to be taken for what it is, a marketing argument, not a technical guarantee. In the self-hosted version, that layer can be disabled, and a server-side layer exists. Above all, zero-knowledge protects the storage, not the update channel, and it’s the channel that worries the researchers.&lt;/p&gt;
&lt;p&gt;On the client side, caution too. The investigation establishes that two Irish bodies, the Office of Public Works and the State Laboratory, say they weren’t informed of the product’s origin, the latter now treating the matter as a “potential risk”. Beyond that, on the Russian side Passwork LLC lists clients from the military-industrial complex, including Almaz-Antey, MMZ Avangard, Kometa and Gazprom Neft. Several appear on Western sanctions lists, but under different regimes, EU, United States or export controls depending on the case. No lumping together: neither “all sanctioned by the EU”, nor “all European clients compromised”.&lt;/p&gt;
&lt;p&gt;Second, the checklist itself has limits. It doesn’t detect an active compromise, it assesses a structural risk. Software that ticks every box can still be attacked, and software that misses one isn’t necessarily a trap. The checklist doesn’t replace an audit, it stops you from mistaking a sales brochure for proof. That alone is huge.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-short&quot;&gt;In short&lt;/h2&gt;
&lt;p&gt;“Made in EU” is a marketing claim. Not a controlled label, not a legal guarantee, not proof of sovereignty. The Passwork affair shows it without needing a single proven compromise: a piece of software can be registered in Barcelona, coded in Arkhangelsk, updated from the Emirates, and reviewed by a Russian service, all while staying perfectly compliant with the European regulatory stack. That stack, Cyber Resilience Act, Cyber Solidarity Act, ENISA schemes, never asked the right questions. It still doesn’t. Don’t count on it. &lt;strong&gt;It didn’t protect you, it reassured you. That’s not the same job.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So ask them yourself. Who ships the binary, who signs the code, which state got to read the source, can you host it yourself, what’s the update channel, is the code auditable. Six questions, ten minutes, applied first to the most sensitive spot there is: the vault where all your passwords live. Sovereignty can’t be read off a flag. It has to be verified. &lt;strong&gt;Nobody will do it for you.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The investigation&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.occrp.org/en/investigation/european-password-manager-shares-origins-and-updates-with-state-certified-russian-firm&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;OCCRP, European Password Manager Shares Origins and Updates with State-Certified Russian Firm&lt;/a&gt;, the primary investigation, 17 July 2026.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://vsquare.org/european-password-manager-shares-origins-and-updates-with-state-certified-russian-firm/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;VSquare, the same investigation&lt;/a&gt;, the consortium’s co-publication.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.irishtimes.com/ireland/2026/07/17/how-russian-password-technology-made-its-way-into-irish-state-agencies/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;The Irish Times, How Russian password technology made its way into Irish State agencies&lt;/a&gt;, the Irish public bodies among the clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The regulatory framework&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://eur-lex.europa.eu/eli/reg/2025/38/oj/eng&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;EUR-Lex, Regulation (EU) 2025/38, Cyber Solidarity Act&lt;/a&gt;, the official text, in force since 4 February 2025.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://digital-strategy.ec.europa.eu/en/policies/cyber-solidarity&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;European Commission, EU Cyber Solidarity Act&lt;/a&gt;, budget and mechanisms.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://eur-lex.europa.eu/EN/legal-content/summary/digital-europe-programme-2021-2027.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;EUR-Lex, Digital Europe Programme 2021-2027&lt;/a&gt;, the cybersecurity strand.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://messervices.cyber.gouv.fr/visas/ANSSI-CSPN-2025-16-rapport.pdf&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;ANSSI, CSPN-2025/16 certification report (KeePassXC 2.7.9)&lt;/a&gt;, the ANSSI visa example.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>securite</category><category>souverainete</category><category>reglementation</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-made-in-eu-souverainete-logicielle-1.png" length="0" type="image/png"/></item><item><title>Alerting and total cost, the final tally of your sovereign SIEM</title><link>https://macsouverain.com/en/alerting-cout-total-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/alerting-cout-total-siem-souverain/</guid><description>Wire up Wazuh alerting without drowning in noise, then the honest bottom line on your sovereign stack against a SaaS bill six to thirty times heavier.</description><pubDate>Sat, 25 Jul 2026 12:25:13 GMT</pubDate><content:encoded>&lt;p&gt;Six episodes. A hardened VPS, Wazuh centralising everything, agents across the whole park, CrowdSec at the network, Rspamd at the mail, Santa on the Macs. Your stack is standing, it collects, it detects, it logs.&lt;/p&gt;
&lt;p&gt;And it is mute.&lt;/p&gt;
&lt;p&gt;A binary blocked on a workstation, a burst of failed logins, an account waking up at 3 in the morning, all of it lands quietly in a dashboard nobody is watching at 3 in the morning. A detection nobody sees go by isn’t a detection, it’s one more log line.&lt;/p&gt;
&lt;p&gt;Today, the last episode of the series, we wire up alerting. The brick that turns a SIEM that knows into a SIEM that warns. And then we do what we promised from &lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;the very first article&lt;/a&gt;, the math. What this stack really costs you, against the bill you’d have been handed in SaaS. The answer is sharper than you think.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;alerting-being-warned-without-being-harassed&quot;&gt;Alerting, being warned without being harassed&lt;/h2&gt;
&lt;p&gt;Wazuh already knows how to send notifications. A dedicated daemon, &lt;code&gt;wazuh-integratord&lt;/code&gt;, starts with the manager, reads the alert stream continuously, and pushes every alert above a threshold to the target you’ve pointed it at. The machinery is there. All the work is in the tuning.&lt;/p&gt;
&lt;p&gt;First sovereign reflex, look at who receives your alerts. Wazuh ships turnkey native integrations, and that’s exactly the trap, almost all of them are American services, Slack, PagerDuty, VirusTotal. Wiring your sovereign SIEM to Slack means building an entire stack to stay master of your logs, then shipping every one of your security alerts off to an American third party. Dependency sneaking in through the back door.&lt;/p&gt;
&lt;p&gt;Two channels stay coherent with what we’ve built. &lt;strong&gt;Email&lt;/strong&gt;, served by the mail server you’ve already been running since &lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;the Rspamd episode&lt;/a&gt;, which is Wazuh’s historical notification mechanism. And &lt;strong&gt;self-hosted chat&lt;/strong&gt;, a Mattermost or a Matrix sitting on your own infrastructure. Mattermost accepts Slack-format webhooks, so the native &lt;code&gt;slack&lt;/code&gt; integration works as-is most of the time, its &lt;code&gt;hook_url&lt;/code&gt; pointed at your own server. Retest it on your version, the formats shift from one release to the next.&lt;/p&gt;
&lt;p&gt;The configuration lives in &lt;code&gt;ossec.conf&lt;/code&gt;, on the manager. Native email is handled directly by the manager, chat channels go through the Integrator via an &lt;code&gt;&amp;#x3C;integration&gt;&lt;/code&gt; block. Email first.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;global&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_notification&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;yes&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_notification&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;smtp_server&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;localhost&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;smtp_server&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_from&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;wazuh@your-domain.tld&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_from&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_to&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;secu@your-domain.tld&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_to&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;global&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;alerts&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_alert_level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;7&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;email_alert_level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;alerts&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For chat, one &lt;code&gt;&amp;#x3C;integration&gt;&lt;/code&gt; block per channel.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;integration&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;slack&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;hook_url&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;https://mattermost.your-domain.tld/hooks/xxxxxxxx&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;hook_url&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;10&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;alert_format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;json&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;alert_format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;integration&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The field that commands everything is &lt;code&gt;&amp;#x3C;level&gt;&lt;/code&gt;. Wazuh scores each alert on a scale of &lt;strong&gt;0 to 16&lt;/strong&gt;, and the threshold forwards that value &lt;strong&gt;or anything above it&lt;/strong&gt;. A channel at &lt;code&gt;&amp;#x3C;level&gt;10&amp;#x3C;/level&gt;&lt;/code&gt; will never see a level 6. You can refine with &lt;code&gt;&amp;#x3C;rule_id&gt;&lt;/code&gt; or &lt;code&gt;&amp;#x3C;group&gt;&lt;/code&gt;, but remember one classic trap, when you combine several of these filters, they stack as AND, not OR. The alert has to satisfy every criterion to pass, and plenty of people have wondered why their integration stayed silent for exactly that reason.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/body-alerting-config-alerting-cout-total-siem-souverain.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Alerting configuration in ossec.conf, email_alert_level and level thresholds highlighted&quot;&gt;
&lt;p&gt;That leaves the real question, which level for which channel. Here are the markers I’d suggest, a usage recommendation and not a scale carved in stone by Wazuh, to adjust to your park:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0 to 3&lt;/strong&gt;, informational noise. You log it, you notify nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4 to 6&lt;/strong&gt;, low. It lives in the dashboard, not in your pocket.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7 to 9&lt;/strong&gt;, medium. Grouped email, the team reads it during the day.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10 to 12&lt;/strong&gt;, high. Failed logins in series, a file integrity breach, a binary blocked by Santa. Real-time chat plus email.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;13 to 16&lt;/strong&gt;, critical. Probable compromise, agent disabled. On-call, you wake someone up.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One &lt;code&gt;&amp;#x3C;integration&gt;&lt;/code&gt; block per channel, each with its threshold. The email digest at 7 for everyone, chat at 10 for the technical team, a custom script to SMS or ntfy at 12 for the manager. The boss doesn’t want to be dragged out of bed for a level 8, and the day you wake him for nothing, he turns the notifications off. That’s how you die.&lt;/p&gt;
&lt;p&gt;Because the real risk of alerting isn’t missing one. It’s having too many. A brute-force attack with no deduplication is hundreds of alerts in a few minutes, and a team that learns to ignore them. Deduplication is set upstream, in the frequency and time window of your rules, never at notification time. A SIEM that cries all the time is a SIEM nobody listens to anymore. Alert fatigue is worse than no alerting at all, because it gives you the illusion of being covered.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-the-stack-actually-cost-you&quot;&gt;What the stack actually cost you&lt;/h2&gt;
&lt;p&gt;The moment of reckoning, cost shown and cost hidden, because selling you “free” would be lying to you.&lt;/p&gt;
&lt;p&gt;The visible line is the VPS. Wazuh in single-node mode, manager, indexer and dashboard on one machine, runs comfortably for a 25-to-50-seat SME on &lt;strong&gt;8 vCPU, 16 GB of RAM and 100 GB of disk&lt;/strong&gt; for three months of retention. At a European host beyond American reach, that rents for between &lt;strong&gt;300 and 1,700 euros a year&lt;/strong&gt; depending on whether you go for the German budget tier or the high-end French sovereign one. A single line on the invoice, for the whole stack.&lt;/p&gt;
&lt;p&gt;The licence line, next. Wazuh, the agents, CrowdSec, Rspamd, Santa, the alerting. &lt;strong&gt;Zero.&lt;/strong&gt; Not a cent, not an enterprise tier, not a per-seat quota. Open source end to end.&lt;/p&gt;
&lt;p&gt;And then the line no price sheet shows you, time. Installing the stack, several cumulative days for someone starting out, less for a seasoned sysadmin. Then maintenance, updates, watching the disk, and above all the rule tuning that eats most of the first few weeks. I won’t hand you a figure of hours per month, it would be made up, and none of the ones you’ll read elsewhere rests on anything better than a wet finger in the wind. Count it in person-days, set your rate, do your own sum.&lt;/p&gt;
&lt;p&gt;There’s the nuance that holds the whole episode together. Sovereign isn’t free, sovereign shifts the spending from the licence to in-house skill. You no longer pay rent to a vendor, you pay an investment that stays in your own house. The VPS counts in hundreds of euros, time is the dominant line, and the two together stay very far below what the rented equivalent would have cost you.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;episode-by-episode-the-same-stack-in-saas&quot;&gt;Episode by episode, the same stack in SaaS&lt;/h2&gt;
&lt;p&gt;Let’s take the stack brick by brick, and put opposite each one what the market charges for the same function. Assumptions on the table, because without them a figure means nothing, an SME of around forty seats, twenty of them Macs, about five gigabytes of logs a day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wazuh&lt;/strong&gt; replaces a Microsoft Sentinel or a Splunk ES. Count on &lt;strong&gt;7,800 dollars a year&lt;/strong&gt; for five gigabytes of daily logs on the Sentinel side, from &lt;strong&gt;8,000 to 12,500 dollars&lt;/strong&gt; on the Splunk side. &lt;strong&gt;CrowdSec&lt;/strong&gt; plays the role of a managed threat intelligence offering, which starts at &lt;strong&gt;1,900 dollars a month&lt;/strong&gt; at the Platinum tier, close to &lt;strong&gt;23,000 dollars for the year&lt;/strong&gt;. &lt;strong&gt;Rspamd&lt;/strong&gt; does the work of a Proofpoint or a Mimecast, &lt;strong&gt;1,200 to 8,640 dollars&lt;/strong&gt; for forty mailboxes. &lt;strong&gt;Santa&lt;/strong&gt; stands in for a Jamf Protect, around &lt;strong&gt;1,440 dollars&lt;/strong&gt; for twenty Macs. Opposite every line, the same figure, &lt;strong&gt;zero in licences.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Add up that right-hand column. Depending on the options kept and without even counting managed EDR or high-end network filtering, the full SaaS equivalent for an SME this size sits &lt;strong&gt;between 12,000 and 40,000 dollars a year&lt;/strong&gt;. Against it, your sovereign stack, between 300 and 1,700 euros in cash, plus your time. Even comparing the worst of the sovereign stack to the best SaaS price, the ratio is on the order of &lt;strong&gt;six to thirty times&lt;/strong&gt;. And the gap isn’t fixed, it widens. The SaaS licence, you pay it again every year for life, at every seat added, at every extra gigabyte ingested. The VPS stays stable, and the install time amortises once and for all.&lt;/p&gt;
&lt;p&gt;Two points of honesty. First, the prices I gave you in the first article all hold, Sentinel around 4.30 dollars a gigabyte, CrowdStrike from 60 to 185 dollars a seat, Splunk from 8,000 to 12,500 dollars. Nothing came down. These vendors don’t publish a public rate card anyway, they hide their prices and push you toward volume commitments, which penalises the SME ingesting only a few gigabytes a day. Second, the zero in the sovereign column is a licence zero, not a zero full stop. The cost exists, pooled onto a single VPS line and spread across your time. But the bill on the other side counts by brick, by seat, and by year.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-pitfalls-so-you-dont-kid-yourself&quot;&gt;The pitfalls, so you don’t kid yourself&lt;/h2&gt;
&lt;p&gt;A well-built sovereign stack can age badly. Four points of vigilance, to face head-on.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Retention swells the VPS silently.&lt;/strong&gt; Three months by default, but the day you want six months or a year of hindsight for an investigation, the disk doubles or triples, and you move up a plan. The sovereign cost isn’t frozen, it grows with your retention and your agent count. Anticipate it at sizing time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The single node is a single point of failure.&lt;/strong&gt; The whole stack on one VPS is also one single target. Your encrypted off-site backups, laid down back in &lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;the socle episode&lt;/a&gt;, aren’t optional. Multi-node exists, but it falls outside an SME’s scope.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosts raise prices too.&lt;/strong&gt; Sovereign doesn’t mean a price locked for life, some raised their rates in 2026. The difference comes down to one word, switching hosts is a VPS migration of a few days. It isn’t a licence contract holding you by the throat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tuning is time-consuming at the start.&lt;/strong&gt; The first weeks buckle under false positives, and that’s where the quality of everything else is decided. Botch this phase, and you fall right back into alert fatigue.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these pitfalls is a dealbreaker. They’re parameters you control, precisely because the stack is your own.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;compliance-the-brick-that-makes-the-deadline-tenable&quot;&gt;Compliance, the brick that makes the deadline tenable&lt;/h2&gt;
&lt;p&gt;We opened the series on an obligation, &lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;GDPR and NIS2 require you to notify fast&lt;/a&gt;. Seventy-two hours to characterise a breach on the GDPR side, a triptych of 24 hours, 72 hours and 30 days on the NIS2 side.&lt;/p&gt;
&lt;p&gt;Alerting is the brick that makes that deadline tenable. Collecting and detecting is producing the evidence. Alerting is a human seeing it in time to act. Without calibrated notification, the triptych stays a wish, the stack knows something happened and nobody knows in time. With it, the 72-hour clock starts at detection, not on Monday morning when someone reopens the dashboard. That’s the difference between compliance on paper and compliance that holds up in front of the regulator.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-short-you-depend-on-no-one&quot;&gt;In short, you depend on no one&lt;/h2&gt;
&lt;p&gt;Step back and look at what you’ve built. Seven episodes, one VPS, open-source bricks, and a setup that sees, blocks, filters, controls and, as of today, warns at the right level without harassing you. What large companies pay a fortune for, you built for the price of a VPS and a few weekends.&lt;/p&gt;
&lt;p&gt;But the real gain isn’t on the invoice. It comes down to one sentence, you depend on no one. Three independences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Legal.&lt;/strong&gt; Your security logs, the most sensitive material in your information system, live on your European VPS, out of reach of the CLOUD Act. In June 2025, before a French Senate committee of inquiry, Anton Carniaux, director of public and legal affairs at Microsoft France, questioned under oath on his ability to guarantee that a French citizen’s data would never be handed to American authorities, answered, “No, I cannot guarantee that.” With a provider subject to American law, that’s the level of guarantee you’re accepting. None.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Economic.&lt;/strong&gt; No licence rent, no price shock decided without you. Remember VMware’s customers after the Broadcom buyout, perpetual licences scrapped, subscription forced. AT&amp;#x26;T went as far as suing Broadcom, alleging a renewal price hike of more than 1,000 percent. Pay or migrate the hard way, with no say in it. Nobody can do that to your stack.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Operational.&lt;/strong&gt; Nobody cuts off your access, deprecates a feature you rely on, or imposes a migration schedule on you. You own your stack, your logs, your detection.&lt;/p&gt;
&lt;p&gt;The price of those three freedoms is a VPS and skill that stays in your own house. Compare it one last time to a SaaS bill that comes back every year without buying you a single one of them.&lt;/p&gt;
&lt;p&gt;That’s where the series ends. Not on a product, on a stance. Sovereignty isn’t a slogan, it’s a sum you’ve just done, and it tips one way only.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What’s next, because you asked for it.&lt;/strong&gt; A reader wrote to us after this series to ask for a real deep dive into Wazuh, further than the all-in-one of episode 2. Message received. An in-depth Wazuh tutorial is coming soon, homegrown rules, decoders, dashboards tuned just right. Got a request, a typo you spotted, a brick you’d like to see taken apart? Write to us.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;series-recap&quot;&gt;Series recap&lt;/h2&gt;
&lt;p&gt;Seven episodes to build your sovereign security plumbing, brick by brick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;Episode 0, the bedrock of the series.&lt;/a&gt;&lt;/strong&gt; Why an SME needs a sovereign SIEM, NIS2, GDPR, and the cost of doing nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;Episode 1, the socle.&lt;/a&gt;&lt;/strong&gt; The hardened VPS beyond the CLOUD Act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/&quot;&gt;Episode 2, Wazuh all-in-one.&lt;/a&gt;&lt;/strong&gt; Manager, indexer and dashboard on a single node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/&quot;&gt;Episode 3, agents everywhere.&lt;/a&gt;&lt;/strong&gt; Deployment across your servers, Macs and Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;Episode 4, the community network defense.&lt;/a&gt;&lt;/strong&gt; Blocking known attackers before they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;Episode 5, the mail filter.&lt;/a&gt;&lt;/strong&gt; Anti-spam and anti-phishing in front of your mail server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/santa-controle-execution-mac-siem-souverain/&quot;&gt;Episode 6, execution control on the Macs.&lt;/a&gt;&lt;/strong&gt; Deciding which applications are allowed to start.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 7, alerting and total cost.&lt;/strong&gt; Calibrated notifications and the financial bottom line against SaaS. You’ve just read it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>wazuh</category><category>securite</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-alerting-cout-total-siem-souverain-1.png" length="0" type="image/png"/></item><item><title>MCP servers, the backdoor into your AI</title><link>https://macsouverain.com/en/les-mcp-porte-derobee-de-ton-ia/</link><guid isPermaLink="true">https://macsouverain.com/en/les-mcp-porte-derobee-de-ton-ia/</guid><description>MCP servers give your AI real access to your Mac: files, shell. Handy, but it&apos;s a backdoor. Here&apos;s how to lock it down.</description><pubDate>Sat, 18 Jul 2026 15:17:13 GMT</pubDate><content:encoded>&lt;h2 id=&quot;the-convenience-that-sets-you-up&quot;&gt;The convenience that sets you up&lt;/h2&gt;
&lt;p&gt;You install Claude Desktop on your Mac. In a few clicks, you wire up a server that reads your files, another that queries your database, a third that runs commands in your terminal. Suddenly your assistant isn’t just chatting anymore, it acts. It opens your documents, rewrites your code, sorts your folders while you sip your coffee.&lt;/p&gt;
&lt;p&gt;It’s impressive. It’s also the exact moment you opened a door onto your machine without keeping the key.&lt;/p&gt;
&lt;p&gt;These little connectors are called MCP servers. They are the reason your AI went from chatty to useful. They are also the most poorly understood attack surface in the entire 2026 AI ecosystem. And the problem isn’t theoretical: a design flaw in the protocol exposed roughly 200,000 instances to remote code execution, this past April.&lt;/p&gt;
&lt;p&gt;Let’s look at what you’re actually plugging into your Mac when you add an MCP. And above all, how to do it without getting burned.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-an-mcp-actually-is&quot;&gt;What an MCP actually is&lt;/h2&gt;
&lt;p&gt;MCP stands for Model Context Protocol. Anthropic published it in late 2024 as an open standard, and everyone adopted it, Claude of course, the Claude Desktop app as well as the Claude Code command-line tool, but also Cursor, Windsurf, and a good chunk of the AI tools you run into.&lt;/p&gt;
&lt;p&gt;The idea is simple, almost obvious. A language model, on its own, only knows how to talk. It can’t open a file, read your database, or send an email. MCP is the standard cable that connects your assistant to outside tools. An MCP server on one side exposes a capability, reading files, querying an API, running a command. The assistant on the other side decides when to use it.&lt;/p&gt;
&lt;p&gt;Think of a universal socket. Before, each device had its own proprietary plug. MCP is the single socket where you plug in whatever you want: a connector for your files, one for your calendar, one for your Git repo. Your AI reaches into it on demand.&lt;/p&gt;
&lt;p&gt;In practice, the flow looks like this. You ask Claude to tidy up your screenshots. The model notices it has a filesystem MCP server available. It calls it, lists your folder, moves the files. You see the result, not the machinery. The server ran a real action on your disk, decided by the model, triggered by your sentence.&lt;/p&gt;
&lt;p&gt;That is exactly where convenience tips over into risk.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-its-a-backdoor&quot;&gt;Why it’s a backdoor&lt;/h2&gt;
&lt;p&gt;Run the flow again, but watch who decides and who executes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You&lt;/strong&gt; write a sentence in plain language. &lt;strong&gt;The model&lt;/strong&gt;, a statistical box nobody controls line by line, decides which tool to call and with what arguments. &lt;strong&gt;The MCP server&lt;/strong&gt; runs whatever it’s asked to, on your machine, with your privileges. Between the three, there’s no bodyguard. Nobody to raise a hand and say “hold on, are you sure you want to delete that?”.&lt;/p&gt;
&lt;p&gt;A poorly designed or outright malicious MCP server is a command executor that obeys a middleman you don’t steer. The model can be manipulated by a hidden instruction, a booby-trapped piece of text in a file it reads, a web page you let it open. That’s called prompt injection. The result: your assistant ends up launching an action you never asked for, through a server that has no reason to say no.&lt;/p&gt;
&lt;p&gt;And the real trap is in the configuration. An MCP config file isn’t a tidy little list of preferences. It is, in practice, a shell script in disguise. It defines which executables to launch, with which arguments, which environment variables. Loading an MCP config you haven’t read is running a script you haven’t reviewed, and potentially a malicious one. The twist is that this one looks harmless because it’s tucked inside a JSON file.&lt;/p&gt;
&lt;p&gt;The word “backdoor” is earned for one precise reason: you see nothing go by. No confirmation window, no visible trace, no alert. The model decides, the server executes, and you watch the result thinking your AI just did you a favour.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-incident-that-settled-the-argument&quot;&gt;The incident that settled the argument&lt;/h2&gt;
&lt;p&gt;This isn’t a lab hypothesis. It happened, at scale, in April 2026.&lt;/p&gt;
&lt;p&gt;On 15 April, the OX Security research team published a report with a not-so-modest title, “The Mother of All AI Supply Chains”. The finding is brutal: the main interface of the official MCP SDKs, the one that makes the tool and the server talk locally, lets a mere configuration trigger the execution of arbitrary system commands. No input validation, no isolation by default.&lt;/p&gt;
&lt;p&gt;The numbers are dizzying:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;7,000 and more&lt;/strong&gt; public MCP servers indexed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;150 million and more&lt;/strong&gt; downloads of the affected SDKs and servers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;roughly 200,000 instances&lt;/strong&gt; estimated vulnerable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10 CVEs&lt;/strong&gt; issued, including CVE-2026-30615 on Windsurf: a prompt injection via malicious HTML leading to local code execution, rated 8.0 out of 10 in severity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the Mac side, these aren’t abstract names. Cursor, Windsurf and Claude Desktop use these SDKs, and are concretely affected through their MCP integrations. The researchers validated their attacks on six production platforms. It worked for real.&lt;/p&gt;
&lt;p&gt;And here’s the best part, or the worst depending which side you’re on. Anthropic’s response, as reported by OX Security and confirmed several times over, comes down to two words: “by design”. The behaviour is deemed normal, provided the user, or the downstream developer, does the securing work themselves. Anthropic declines to change the protocol.&lt;/p&gt;
&lt;p&gt;The argument holds up on paper. A protocol isn’t a sandbox, and no standard is obliged to fence off every use. Except that in practice, Anthropic hands the responsibility for locking down to people who never signed up for it: the individual installing Claude Desktop with no notion of security, the small business plugging in a connector found on a public repo. The fixes come from the downstream tools, Cursor, Windsurf and the others, not from the protocol itself.&lt;/p&gt;
&lt;p&gt;Translation: the sandbox is your problem. Better to know it going in, not after.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Further reading: &lt;a href=&quot;https://macsouverain.com/en/anthropic-mcp-rce-design-flaw-avril-2026/&quot;&gt;Anthropic’s MCP, a design flaw exposes 200,000 instances&lt;/a&gt;, our radar on the flaw and the associated CVEs.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;hardening-your-mcps-without-giving-up-the-convenience&quot;&gt;Hardening your MCPs without giving up the convenience&lt;/h2&gt;
&lt;p&gt;Good news: you don’t have to choose between “AI wired to everything” and “AI unplugged and useless”. The dial can be set. Here’s how to put it in the right spot.&lt;/p&gt;
&lt;p&gt;Before diving into the settings, know where it all happens. On Claude Desktop, your MCP servers are managed under Settings then Developer, and the “Edit config” button opens the &lt;code&gt;claude_desktop_config.json&lt;/code&gt; file.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-01-claude-desktop-developpeur-les-mcp-porte-derobee-de-ton-ia.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;In Claude Desktop, Settings then Developer, your local MCP servers and the button to open the config.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;When you open it, an MCP config looks like this: a few declared servers, each with its command and its access. Nothing more than a script waiting for its moment.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-02-config-mcp-les-mcp-porte-derobee-de-ton-ia.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;An MCP config: two declared servers, each with its command and its access.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;1. Inventory your active MCP servers.&lt;/strong&gt; On Claude Desktop, go to Settings then Developer, and click “Edit config”: it opens &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;. On Cursor, go to Settings then MCP. On Windsurf, the list is reachable from the IDE. Disable any server you didn’t deploy yourself or whose code you haven’t read. If you can’t remember why it’s there, it shouldn’t be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Apply least privilege, seriously.&lt;/strong&gt; A filesystem MCP server should never point at &lt;code&gt;/&lt;/code&gt; or at &lt;code&gt;~&lt;/code&gt;. Give it the specific subfolder of the current project, nothing more. Your assistant doesn’t need full access to your disk to tidy three screenshots.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Treat any third-party config as hostile by default.&lt;/strong&gt; A snippet of config grabbed off GitHub, a file shared on Slack, a colleague’s export, a cloned repo: read the configuration in full before enabling it. The executable paths, the commands, the environment variables. Remember it’s a shell script in disguise. Nobody runs an unknown &lt;code&gt;.sh&lt;/code&gt; without reading it. An MCP config &lt;code&gt;.json&lt;/code&gt; is the same thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. If you’re on Claude Code, lock it down through config, not through instruction.&lt;/strong&gt; You can write a rule in your &lt;code&gt;CLAUDE.md&lt;/code&gt; along the lines of “don’t enable any MCP server without my say-so”. That documents your intent, but don’t rely on it: you just read why a model that gets manipulated doesn’t always obey instructions. The real lock is in your &lt;code&gt;settings.json&lt;/code&gt;. Keep a whitelist of authorised MCP tools there and refuse the rest with &lt;code&gt;permissions.deny&lt;/code&gt;, and leave the approval prompt active for any server declared in a project &lt;code&gt;.mcp.json&lt;/code&gt;, never auto-approve it. The &lt;code&gt;CLAUDE.md&lt;/code&gt; reminds the human of the rule, the &lt;code&gt;settings.json&lt;/code&gt; imposes it on the machine.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-03-settings-permissions-les-mcp-porte-derobee-de-ton-ia.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;A settings.json with a whitelist of authorised MCP tools and a deny for the rest.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;5. Lock down the servers that listen on the network.&lt;/strong&gt; Some MCPs run as a small local HTTP server. Check it’s bound to &lt;code&gt;127.0.0.1&lt;/code&gt;, never to &lt;code&gt;0.0.0.0&lt;/code&gt;. Otherwise, a malicious web page opened in your browser can, in the worst case, trigger execution on your machine.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;~ % lsof -iTCP -sTCP:LISTEN -nP | grep node&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;node    41827 demo   23u  IPv4 0x9f3a5c  0t0  TCP 127.0.0.1:8787 (LISTEN)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;node    41902 demo   25u  IPv4 0x9f3b1d  0t0  TCP *:8788 (LISTEN)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first line sits nicely on &lt;code&gt;127.0.0.1&lt;/code&gt;. The second listens on &lt;code&gt;*&lt;/code&gt;, so on every interface: that’s the one you need to fix.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Update the affected tools.&lt;/strong&gt; Cursor, Windsurf, Claude Desktop and the frameworks involved shipped corrective releases starting in April 2026. Check the release notes that the flaw is explicitly addressed, not just “various security improvements”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7. Prefer local over remote.&lt;/strong&gt; An MCP server that runs on your machine and exposes nothing to the network is far easier to reason about than a remote connector hosted by a third party. Every outside service added to the loop is one more company that can read what passes through, or get compromised in your place.&lt;/p&gt;
&lt;p&gt;And before installing a new third-party MCP server, ask yourself three questions. Who wrote it and is the code inspectable? What access does it actually need, and does the config ask for more? What happens the day this server gets compromised? If you can’t answer all three, don’t install it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-short&quot;&gt;In short&lt;/h2&gt;
&lt;p&gt;MCPs are what make your AI assistant genuinely useful. They are also what connects it to your files, your database, your shell, with your privileges and with no witness. The model decides, the server executes, you see nothing go by. That’s the definition of a backdoor, and April 2026 proved it was wide open for roughly 200,000 installs.&lt;/p&gt;
&lt;p&gt;Sovereignty, here, isn’t about unplugging your AI. It’s about knowing what’s plugged in, granting only the strict access needed, and never loading a config you haven’t read. A local MCP server, tightly scoped, whose code you’ve read, is a tool. The same server, pulled from an unknown repo with access to your whole disk, is a vulnerability with a friendly interface.&lt;/p&gt;
&lt;p&gt;Inventory your MCPs. Cut the ones you don’t recognise. Trim the access of the ones you keep. The rest is just the good habits you already have for the rest of your machine.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Also worth reading: &lt;a href=&quot;https://macsouverain.com/en/ton-ia-peut-etre-eteinte-monte-la-tienne/&quot;&gt;Your AI can be turned off by the US, build your own&lt;/a&gt; and &lt;a href=&quot;https://macsouverain.com/en/38-apple-intelligence-ce-qui-sort-de-ton-mac/&quot;&gt;Apple Intelligence, what really leaves your Mac&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ia</category><category>securite</category><category>mcp</category><category>macos</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-les-mcp-porte-derobee-de-ton-ia.png" length="0" type="image/png"/></item><item><title>Rspamd in front of your inbox, phishing stops at the doormat</title><link>https://macsouverain.com/en/rspamd-mail-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/rspamd-mail-siem-souverain/</guid><description>Install Rspamd in front of your mail server, tune the anti-spam and anti-phishing scoring, and feed every verdict into your Wazuh SIEM.</description><pubDate>Thu, 16 Jul 2026 14:03:38 GMT</pubDate><content:encoded>&lt;p&gt;In the previous episode, you put &lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;CrowdSec up front&lt;/a&gt;. Your firewall now turns malicious IPs away before they touch your services, and every decision goes up into Wazuh. Your SIEM sees, and it bites.&lt;/p&gt;
&lt;p&gt;Except the attack that’s going to cost you dearly won’t come in through the SSH port.&lt;/p&gt;
&lt;p&gt;It’ll come in through an email. A fake invoice that mimics your usual supplier, a link that looks like your banking portal, an attachment your accountant will open because opening invoice attachments is her job.&lt;/p&gt;
&lt;p&gt;That email crosses your firewall without a sound, because it comes in through a door you left open yourself, port 25. CrowdSec won’t block anything, the sender has a clean IP. Wazuh won’t see anything, nobody told it to look that way.&lt;/p&gt;
&lt;p&gt;That’s the blind spot in the setup. Three bricks laid, and the number-one intrusion vector for small businesses still walks in unencrypted.&lt;/p&gt;
&lt;p&gt;Today, we plug it. We install &lt;a href=&quot;https://rspamd.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;Rspamd&lt;/strong&gt;&lt;/a&gt;, a filtering engine that slots in front of your mail server, scores every incoming message and decides its fate. Then we wire its logging into Wazuh, so that every verdict, spam blocked, phishing detected, message delivered, shows up in your single dashboard.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;before-you-begin&quot;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;Three things to keep in mind before the first command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you need.&lt;/strong&gt; A mail server you administer, Postfix or Exim, on a hardened server like the one from episode 1. The Wazuh manager from episode 2 in place on your VPS, and the Wazuh agent from episode 3 already installed on that mail server, for the integration part at the end of the tutorial. Administrator access, and Redis, which we’ll install alongside the engine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What changes.&lt;/strong&gt; By the end, every incoming message is scored before it reaches your employee’s mailbox. The obvious ones are refused at the door, the doubtful ones arrive marked, phishing attempts raise an alert in your SIEM. You move from a blind inbox to an instrumented one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What doesn’t change.&lt;/strong&gt; Rspamd filters &lt;strong&gt;incoming&lt;/strong&gt; mail. It’s not an endpoint antivirus, it’s not a replacement for your employees’ common sense, and it doesn’t protect against an account whose password has leaked, the attacker is then inside, not outside. And Rspamd isn’t infallible, it will fool you sometimes. The question isn’t whether it gets it wrong, it’s which side you set the cursor on when it does.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;rspamd-doesnt-say-yes-or-no-it-scores&quot;&gt;Rspamd doesn’t say yes or no, it scores&lt;/h2&gt;
&lt;p&gt;The point that changes everything, and that sets Rspamd apart from classic anti-spam filters.&lt;/p&gt;
&lt;p&gt;A binary filter looks at a message and rules, spam or not spam. The result is a door, open or shut, and the real world takes quick revenge on that oversimplification. A legitimate invoice with a shortened link and an attachment gets thrown out, a well-written scam gets through.&lt;/p&gt;
&lt;p&gt;Rspamd, on the other hand, &lt;strong&gt;accumulates&lt;/strong&gt;. It runs dozens of checks on the same message, each one reporting a small weight, positive or negative. Sender authentication fails, plus two points. The domain is on a reputable blacklist, plus four. The displayed URL doesn’t match the link’s real URL, plus seven. The message looks like a hundred others already flagged as spam, plus five. Conversely, the sender is properly signed and known, minus one.&lt;/p&gt;
&lt;p&gt;At the end, it gets a &lt;strong&gt;score&lt;/strong&gt;, and that score triggers an &lt;strong&gt;action&lt;/strong&gt; based on thresholds you set yourself. The recommended configuration is this one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Score 4, &lt;code&gt;greylist&lt;/code&gt;.&lt;/strong&gt; The sending server is asked to come back later. A real mail server does it, a spam bot rarely does.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Score 6, &lt;code&gt;add header&lt;/code&gt;.&lt;/strong&gt; The message is delivered, but marked. Your mail client can file it under junk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Score 15, &lt;code&gt;reject&lt;/code&gt;.&lt;/strong&gt; The message is refused at the door, it never comes in.&lt;/p&gt;
&lt;p&gt;Three levels of firmness, not a door. It’s the same philosophy as the SIEM in episode 2, we’re not after certainty, we’re after grading our response to an uncertain signal.&lt;/p&gt;
&lt;p&gt;On the architecture side, Rspamd runs as several specialized processes. The &lt;strong&gt;proxy worker&lt;/strong&gt; is the one that talks to your mail server, over the milter protocol, on port 11332. The &lt;strong&gt;normal worker&lt;/strong&gt; computes the score. The &lt;strong&gt;controller worker&lt;/strong&gt; serves the web interface and the learning. You’ll only need to know the first one, that’s the one we wire in.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-1-install-the-engine&quot;&gt;Step 1, install the engine&lt;/h2&gt;
&lt;p&gt;On the machine that hosts your mail server. The official Rspamd repository, then the package, then Redis, which Rspamd needs for its statistics, its Bayesian filter and its greylisting.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://rspamd.com/apt-stable/gpg.key&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; gpg&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --dearmor&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /usr/share/keyrings/rspamd.gpg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &quot;deb [signed-by=/usr/share/keyrings/rspamd.gpg] https://rspamd.com/apt-stable/ $(&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;lsb_release&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -cs&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;) main&quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tee&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/apt/sources.list.d/rspamd.list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; update&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; rspamd&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; redis-server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;apt-stable&lt;/code&gt; repository is the production branch, the one you want on a mail server. Rspamd has been on version 4.x since March 2026.&lt;/p&gt;
&lt;p&gt;Tell it where to find Redis, in &lt;code&gt;/etc/rspamd/local.d/redis.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;servers = &quot;127.0.0.1:6379&quot;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A survival rule with Rspamd, and it holds for the whole tutorial. &lt;strong&gt;You never touch the files in &lt;code&gt;/etc/rspamd/&lt;/code&gt; directly.&lt;/strong&gt; You write your settings in &lt;code&gt;/etc/rspamd/local.d/&lt;/code&gt;, which is layered on top of the default configuration. A package update overwrites the first, never the second.&lt;/p&gt;
&lt;p&gt;Then set a password for the web interface.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;rspamadm&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; pw&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It hands you a hash that you copy into &lt;code&gt;/etc/rspamd/local.d/worker-controller.inc&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;password = &quot;$2$your_hash_here&quot;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The interface listens on port 11334, locally only. &lt;strong&gt;Leave it that way.&lt;/strong&gt; The series’ doctrine since episode 1, nothing needless on the open internet, you reach it through your Tailnet or an SSH tunnel.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-2-wire-it-in-front-of-your-mail-server&quot;&gt;Step 2, wire it in front of your mail server&lt;/h2&gt;
&lt;p&gt;Rspamd is running, but no message is being handed to it. Your mail server has to submit every incoming email to it before accepting it.&lt;/p&gt;
&lt;p&gt;The mechanism is called &lt;strong&gt;milter&lt;/strong&gt;, for mail filter. Your mail server pauses the message during the SMTP transaction, hands it to Rspamd, waits for the verdict, and acts accordingly. The message is judged &lt;strong&gt;before&lt;/strong&gt; being accepted, that’s the whole difference with a filter that sorts after the fact in the mailbox.&lt;/p&gt;
&lt;p&gt;On Postfix, three lines in &lt;code&gt;/etc/postfix/main.cf&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;smtpd_milters = inet:localhost:11332&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;milter_protocol = 6&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;milter_default_action = accept&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The line that deserves your attention is the third. &lt;code&gt;accept&lt;/code&gt; means that &lt;strong&gt;if Rspamd is down, mail passes without filtering&lt;/strong&gt;. You favor service continuity. The other value commonly chosen is &lt;code&gt;tempfail&lt;/code&gt;, which asks the sender to come back later, your mail is protected even with Rspamd down, but a prolonged outage turns into a mail incident. Choose knowingly. For a small business, &lt;code&gt;accept&lt;/code&gt; is the reasonable default, provided you monitor the Rspamd service in your SIEM.&lt;/p&gt;
&lt;p&gt;On Exim, the wiring goes through the normal worker over HTTP, not through the milter.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;spamd_address = 127.0.0.1 11333 variant=rspamd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reload your mail server, and send yourself a message from an outside address. Rspamd starts scoring.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-3-set-the-thresholds-and-arm-the-anti-phishing&quot;&gt;Step 3, set the thresholds and arm the anti-phishing&lt;/h2&gt;
&lt;p&gt;The thresholds first, in &lt;code&gt;/etc/rspamd/local.d/actions.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;greylist = 4;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;add_header = 6;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;reject = 15;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These are the recommended values, and they’re deliberately lenient. A &lt;code&gt;reject&lt;/code&gt; at 15 means it takes a massive accumulation of negative signals for a message to be refused. That’s what you want at the start, you tighten later, once you’ve read your own logs.&lt;/p&gt;
&lt;p&gt;Sender authentication next. Three modules active by default, &lt;strong&gt;SPF&lt;/strong&gt; (Sender Policy Framework), &lt;strong&gt;DKIM&lt;/strong&gt; (DomainKeys Identified Mail) and &lt;strong&gt;DMARC&lt;/strong&gt; (Domain-based Message Authentication, Reporting and Conformance). They check three things, that the sending server is allowed to send for that domain, that the message’s cryptographic signature is valid, and that the domain shown in the “From” field is indeed the one that’s authenticated. An email claiming to come from your bank and failing all three is exposed without needing to read a single line of its content.&lt;/p&gt;
&lt;p&gt;By default, Rspamd scores these failures but doesn’t apply the policy published by the sending domain. To make it apply that policy, in &lt;code&gt;/etc/rspamd/local.d/dmarc.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;actions {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  quarantine = &quot;add header&quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  reject = &quot;reject&quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You now obey what the real domain owner asked the world to do with messages that impersonate it. It’s free, it’s immediate, and it eliminates a whole family of fake senders.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;phishing&lt;/strong&gt; module last, the heart of the matter. Its basic check is already active, it compares the URL displayed in the link text to the link’s real destination URL, and raises the &lt;code&gt;PHISHED_URL&lt;/code&gt; symbol when the two domains diverge. That’s exactly the mechanism of the fake banking link.&lt;/p&gt;
&lt;p&gt;You can back it with two public databases of known phishing URLs, in &lt;code&gt;/etc/rspamd/local.d/phishing.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;openphish_enabled = true;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;openphish_map = &quot;https://raw.githubusercontent.com/openphish/public_feed/refs/heads/main/feed.txt&quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;phishtank_enabled = true;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No &lt;code&gt;phishing { }&lt;/code&gt; block around it, and it’s the &lt;code&gt;local.d&lt;/code&gt; rule from step 1 that applies. Rspamd already includes this file &lt;strong&gt;inside&lt;/strong&gt; the module’s section, you write only the content. Add the block, and you get a section inside a section, silently ignored, no error at startup and no feed activated.&lt;/p&gt;
&lt;p&gt;A message containing a URL already flagged elsewhere in the world raises &lt;code&gt;PHISHED_OPENPHISH&lt;/code&gt; or &lt;code&gt;PHISHED_PHISHTANK&lt;/code&gt;, with a heavy weight. CrowdSec’s community logic, transposed to malicious links.&lt;/p&gt;
&lt;p&gt;Three other modules work for you without you configuring them. &lt;strong&gt;rbl&lt;/strong&gt; queries the public blacklists of sending servers. &lt;strong&gt;fuzzy_check&lt;/strong&gt; compares the message’s fingerprint to that of spam already flagged by the Rspamd network, a reworded spam keeps a close fingerprint. &lt;strong&gt;bayes&lt;/strong&gt; learns from your own messages, provided you train it.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;autolearn = true;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;in &lt;code&gt;/etc/rspamd/local.d/classifier-bayes.conf&lt;/code&gt;, and Rspamd learns on its own from the messages it classified with certainty. You can also correct it by hand when it gets it wrong, with &lt;code&gt;rspamc learn_spam&lt;/code&gt; on a message that slipped through, or &lt;code&gt;rspamc learn_ham&lt;/code&gt; on a legitimate one it wrongly marked.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-4-put-it-to-the-test&quot;&gt;Step 4, put it to the test&lt;/h2&gt;
&lt;p&gt;Rather than wait for a real spam, you make one.&lt;/p&gt;
&lt;p&gt;There’s a standard string for that, the &lt;strong&gt;GTUBE&lt;/strong&gt;, recognized by every serious anti-spam engine and designed to trigger a certain rejection without being real spam. You write it into a test message, and you submit it to the engine with &lt;code&gt;rspamc&lt;/code&gt;, the command-line client.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &apos;Subject: test\n\nXJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X\n&apos;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /tmp/gtube.eml&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;rspamc&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; symbols&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /tmp/gtube.eml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see the &lt;code&gt;GTUBE&lt;/code&gt; symbol and the &lt;code&gt;reject&lt;/code&gt; action. The GTUBE short-circuits the score computation and forces the rejection directly, that’s the whole point of the test. If you get it, the engine is running, it scores and it rules. You get something like this.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Results for file: /tmp/gtube.eml (0.014 seconds)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;[Metric: default]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Action: reject&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Spam: true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Symbol: GTUBE (0.00)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Message-ID: undef&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No need for a score that blows past the threshold, the &lt;code&gt;GTUBE&lt;/code&gt; symbol triggers a passthrough that forces the &lt;code&gt;reject&lt;/code&gt; action whatever the total. That’s the expected behavior, your engine does apply the verdict.&lt;/p&gt;
&lt;p&gt;Two check commands for later.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;rspamc&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; stat&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It gives you the engine’s state, the messages scanned, the breakdown by action, the state of the Bayesian filter.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;rspamc&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; symbols&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /path/to/a/real/message.eml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It replays a real message and shows you the detail of the symbols with their weight. It’s your diagnostic tool when a message got through that shouldn’t have, or the reverse. You don’t guess, you read the tally line.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-5-feed-rspamd-into-wazuh&quot;&gt;Step 5, feed Rspamd into Wazuh&lt;/h2&gt;
&lt;p&gt;Rspamd filters, very good. Your SIEM still doesn’t know it. We wire them together, and the series’ loop closes on mail.&lt;/p&gt;
&lt;p&gt;Nothing to enable on the Rspamd side. It already writes, by default, one line per processed message in &lt;code&gt;/var/log/rspamd/rspamd.log&lt;/code&gt;. A persistent file, on disk, exactly what Wazuh needs. A line looks like this.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2026-07-14 09:41:07 #3421(rspamd_proxy) &amp;#x3C;7f2c1a&gt;; task; rspamd_task_write_log: id: &amp;#x3C;a1b2@evil.example&gt;, qid: &amp;#x3C;4XjK2r1Yz&gt;, ip: 203.0.113.42, from: &amp;#x3C;facturation@evil.example&gt;, (default: T (reject): [16.40/15.00] [PHISHED_URL,DMARC_POLICY_REJECT,R_SPF_FAIL,BAYES_SPAM]), len: 4021, time: 128.4ms real, dns req: 22&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s all there. The sender’s IP, its address, the action taken, the score obtained against the threshold, and the full list of the symbols that brought it down. It’s an investigation report per message.&lt;/p&gt;
&lt;p&gt;The wiring happens on &lt;strong&gt;two machines&lt;/strong&gt;, and that’s the point where you trip up if you go too fast. The Wazuh agent, on your mail server, understands nothing of what it reads, it ships the raw lines. It’s the &lt;strong&gt;manager&lt;/strong&gt;, on the VPS from episode 2, that decodes and applies the rules. One machine collects, the other understands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On the mail server&lt;/strong&gt;, you tell the agent to read the file. The block goes in its &lt;code&gt;ossec.conf&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;localfile&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;/var/log/rspamd/rspamd.log&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;log_format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;syslog&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;log_format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;localfile&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You recognize the &lt;code&gt;&amp;#x3C;localfile&gt;&lt;/code&gt; from episode 3, the mechanism by which Wazuh swallows any log source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On the manager&lt;/strong&gt;, now, and on it alone. A &lt;strong&gt;decoder&lt;/strong&gt; extracts the useful fields from the line, in &lt;code&gt;/var/ossec/etc/decoders/local_decoder.xml&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;decoder&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;rspamd&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;prematch&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;rspamd_task_write_log: &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;prematch&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;decoder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;decoder&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;rspamd-verdict&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;parent&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;rspamd&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;parent&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;pcre2&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;ip: (\S+?), .*?\(default: \S+ \(([\w ]+)\): \[(-?\d+\.\d+)/&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;regex&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;order&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;srcip, rspamd_action, rspamd_score&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;order&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;decoder&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then &lt;strong&gt;rules&lt;/strong&gt; that turn those fields into graded alerts, in &lt;code&gt;/var/ossec/etc/rules/local_rules.xml&lt;/code&gt;, still on the manager.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;group&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;rspamd,&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;100400&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;decoded_as&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;rspamd&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;decoded_as&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;Rspamd, scan verdict.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;100401&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;12&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;if_sid&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;100400&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;if_sid&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;PHISHED_&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;Rspamd, phishing detected, sender $(srcip).&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;100402&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;10&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;if_sid&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;100400&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;if_sid&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;rspamd_action&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;pcre2&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;^reject$&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;Rspamd, message rejected, sender $(srcip).&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;100403&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;5&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;if_sid&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;100400&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;if_sid&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;rspamd_action&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;pcre2&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;^add header$&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;field&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;Rspamd, message marked as spam and delivered, sender $(srcip).&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rule&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;group&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The order of declaration isn’t cosmetic, it’s the heart of the tuning. The parent rule is at level 0, it decodes without alerting, otherwise your dashboard drowns under legitimate messages. &lt;strong&gt;Phishing goes first, at level 12&lt;/strong&gt;, because Wazuh fires only one rule per message, the first in the list that matches. A phishing fake invoice is also a rejected message, and if you declare the rejection before it, it comes out at level 10 and the alert you were waiting for never comes. Then the rejection at 10, and the marked-but-delivered spam at 5.&lt;/p&gt;
&lt;p&gt;Same logic on the anchoring. &lt;code&gt;^reject$&lt;/code&gt; and not &lt;code&gt;reject&lt;/code&gt;, because Rspamd also has a &lt;code&gt;soft reject&lt;/code&gt; action, a mere temporary deferral, which contains the word and would trigger a rejection alert for a message that’s nothing of the sort.&lt;/p&gt;
&lt;p&gt;Don’t take this decoder on faith, test it. Wazuh has the right tool, and it lives on the manager, not on the agent.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /var/ossec/bin/wazuh-logtest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You paste a real line from your &lt;code&gt;rspamd.log&lt;/code&gt;, and it shows you what it made of it, phase by phase, decoder recognized, fields extracted, rule triggered. If &lt;code&gt;srcip&lt;/code&gt; and &lt;code&gt;rspamd_action&lt;/code&gt; don’t come out, it’s the extraction pattern that needs adjusting, and you’ll know in thirty seconds instead of waiting in vain for an alert that will never come. Take a rejected-phishing line for your test, it’s the case that stresses the order of your rules. On the example line above, you’re aiming for a result of this shape.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;**Phase 1: Completed pre-decoding.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	full event: &apos;2026-07-14 09:41:07 #3421(rspamd_proxy) &amp;#x3C;7f2c1a&gt;; task; rspamd_task_write_log: id: &amp;#x3C;a1b2@evil.example&gt;, qid: &amp;#x3C;4XjK2r1Yz&gt;, ip: 203.0.113.42, from: &amp;#x3C;facturation@evil.example&gt;, (default: T (reject): [16.40/15.00] [PHISHED_URL,DMARC_POLICY_REJECT,R_SPF_FAIL,BAYES_SPAM]), len: 4021, time: 128.4ms real, dns req: 22&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;**Phase 2: Completed decoding.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	name: &apos;rspamd&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	srcip: &apos;203.0.113.42&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	rspamd_action: &apos;reject&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	rspamd_score: &apos;16.40&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;**Phase 3: Completed filtering (rules).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	id: &apos;100401&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	level: &apos;12&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	description: &apos;Rspamd, phishing detected, sender 203.0.113.42.&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	groups: &apos;[&apos;rspamd&apos;]&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	firedtimes: 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;	mail: false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;**Alert to be generated.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Phase 2 yields your three fields, phase 3 fires rule &lt;code&gt;100401&lt;/code&gt; at level 12, that’s the phishing alert you were waiting for. Don’t take this block for a capture ripped from a production machine, it’s the intended result, not a prod reading. The &lt;code&gt;syslog&lt;/code&gt; pre-decoding applied to an Rspamd line that doesn’t have the shape of a syslog log, and the decoder’s extraction pattern, can vary depending on your Wazuh version and the exact format of your &lt;code&gt;rspamd.log&lt;/code&gt; lines. That’s precisely what &lt;code&gt;wazuh-logtest&lt;/code&gt; confirms on your own machine, phase by phase, before you count on the alert.&lt;/p&gt;
&lt;p&gt;Once the test is conclusive, restart both services, each on its own machine. The manager, so it loads your decoder and your rules.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-manager&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the mail server’s agent, so it takes its &lt;code&gt;&amp;#x3C;localfile&gt;&lt;/code&gt; into account.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-agent&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An IP sends a fake invoice, Rspamd scores it, rejects it, writes it to its log, the Wazuh agent reads it and ships it, the manager decodes it and raises a level-12 alert, it shows up in your dashboard next to your CrowdSec blocks and your SSH authentication failures. In Discover, you filter it on the &lt;code&gt;srcip&lt;/code&gt;, &lt;code&gt;rspamd_action&lt;/code&gt; and &lt;code&gt;rspamd_score&lt;/code&gt; fields, exactly like the rest of your events.&lt;/p&gt;
&lt;p&gt;The blind spot is plugged.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;if-it-doesnt-work&quot;&gt;If it doesn’t work&lt;/h2&gt;
&lt;h3 id=&quot;problem-rspamd-is-running-but-no-message-gets-scored&quot;&gt;Problem, Rspamd is running but no message gets scored&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Likely cause,&lt;/strong&gt; the milter isn’t wired in. Rspamd is waiting on its port, your mail server hands it nothing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix,&lt;/strong&gt; check that the proxy worker is indeed listening on 11332, and that &lt;code&gt;smtpd_milters&lt;/code&gt; points to it in your Postfix configuration. Reload the mail server, not just Rspamd.&lt;/p&gt;
&lt;h3 id=&quot;problem-legitimate-messages-are-rejected&quot;&gt;Problem, legitimate messages are rejected&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Likely cause,&lt;/strong&gt; your rejection threshold is too low, or a sender you know fails its own SPF, which happens more often than people think.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix,&lt;/strong&gt; replay the message with &lt;code&gt;rspamc symbols&lt;/code&gt;, read the symbols that pushed it up. If the culprit is a single, legitimate symbol, raise your &lt;code&gt;reject&lt;/code&gt; threshold rather than disabling the module.&lt;/p&gt;
&lt;h3 id=&quot;problem-the-score-learns-nothing-the-bayesian-filter-stays-mute&quot;&gt;Problem, the score learns nothing, the Bayesian filter stays mute&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Likely cause,&lt;/strong&gt; Redis is unreachable. Without it, no bayes, no greylisting, no statistics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix,&lt;/strong&gt; check the Redis service and the contents of &lt;code&gt;/etc/rspamd/local.d/redis.conf&lt;/code&gt;. &lt;code&gt;rspamc stat&lt;/code&gt; will tell you whether the classifier has data.&lt;/p&gt;
&lt;h3 id=&quot;problem-nothing-goes-up-into-wazuh&quot;&gt;Problem, nothing goes up into Wazuh&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Likely cause,&lt;/strong&gt; three suspects, and you have to sort them out before touching anything. Either the file isn’t growing, or the agent isn’t reading it, or the manager doesn’t know how to decode it. The great classic, the decoder and rules edited on the mail server instead of the manager. There, they’re useless.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fix,&lt;/strong&gt; is the file growing? If it’s growing, go to the &lt;strong&gt;manager&lt;/strong&gt;, run a line through &lt;code&gt;wazuh-logtest&lt;/code&gt; and see at which phase it breaks. Check while you’re at it that &lt;code&gt;local_decoder.xml&lt;/code&gt; and &lt;code&gt;local_rules.xml&lt;/code&gt; are indeed on that machine, and that you restarted &lt;code&gt;wazuh-manager&lt;/code&gt; after writing them. Don’t reinstall Rspamd over an extraction-pattern issue.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-it-cost-you&quot;&gt;What it cost you&lt;/h2&gt;
&lt;p&gt;The license, nothing. Rspamd is open source, no paid version, no enterprise tier, no message quota.&lt;/p&gt;
&lt;p&gt;The machine, little. The engine is written in C and runs on your existing mail server, alongside Redis. At a small business’s volume, you won’t change server size for this. Keep an eye on your RAM anyway after enabling the Bayesian filter and fuzzy_check, they’re the ones that consume.&lt;/p&gt;
&lt;p&gt;Your time, a bit. Count a short hour for the installation, the milter and the Wazuh integration.&lt;/p&gt;
&lt;p&gt;And the real price, the calibration. It isn’t paid on installation day, it’s paid over the following two weeks, reading your own logs and raising your thresholds when a legitimate message got thrown out. A badly tuned anti-spam doesn’t cost you RAM, it costs you a customer order lost in a silent rejection. That’s the reason this tutorial starts you off lenient, at a rejection threshold of 15, and tightens afterward. The other way around, you learn the value of a false positive the hard way.&lt;/p&gt;
&lt;p&gt;It’s the only serious spending line, and no SaaS spares you it. It too will get it wrong, you just won’t see why.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-those-in-a-hurry&quot;&gt;For those in a hurry&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What this article does.&lt;/strong&gt; We install Rspamd on the mail server, wire it in as a milter in front of Postfix, set the scoring thresholds, enable the anti-phishing and the enforcement of DMARC policies, then feed every verdict into Wazuh via a homemade decoder and rules. The mail layer stops being the SIEM’s blind spot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concretely, the commands.&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the stable repository, &lt;code&gt;rspamd&lt;/code&gt; and &lt;code&gt;redis-server&lt;/code&gt; via apt.&lt;/li&gt;
&lt;li&gt;Point to Redis: &lt;code&gt;servers = &quot;127.0.0.1:6379&quot;;&lt;/code&gt; in &lt;code&gt;/etc/rspamd/local.d/redis.conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Interface password: &lt;code&gt;rspamadm pw&lt;/code&gt;, hash in &lt;code&gt;/etc/rspamd/local.d/worker-controller.inc&lt;/code&gt;. Interface locally only.&lt;/li&gt;
&lt;li&gt;Wire in the Postfix milter: &lt;code&gt;smtpd_milters = inet:localhost:11332&lt;/code&gt;, &lt;code&gt;milter_protocol = 6&lt;/code&gt;, &lt;code&gt;milter_default_action = accept&lt;/code&gt; in &lt;code&gt;main.cf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Thresholds: &lt;code&gt;greylist = 4; add_header = 6; reject = 15;&lt;/code&gt; in &lt;code&gt;/etc/rspamd/local.d/actions.conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Enforce DMARC: &lt;code&gt;actions { quarantine = &quot;add header&quot;; reject = &quot;reject&quot;; }&lt;/code&gt; block in &lt;code&gt;/etc/rspamd/local.d/dmarc.conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Anti-phishing: &lt;code&gt;openphish_enabled&lt;/code&gt; and &lt;code&gt;phishtank_enabled&lt;/code&gt; in &lt;code&gt;/etc/rspamd/local.d/phishing.conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Learning: &lt;code&gt;autolearn = true;&lt;/code&gt; in &lt;code&gt;/etc/rspamd/local.d/classifier-bayes.conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Test: GTUBE message then &lt;code&gt;rspamc symbols /tmp/gtube.eml&lt;/code&gt;, expected action &lt;code&gt;reject&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Integrate into Wazuh, on two machines: &lt;code&gt;&amp;#x3C;localfile&gt;&lt;/code&gt; on &lt;code&gt;/var/log/rspamd/rspamd.log&lt;/code&gt; &lt;strong&gt;on the agent side&lt;/strong&gt;, decoder and rules &lt;strong&gt;on the manager side&lt;/strong&gt; (&lt;code&gt;local_decoder.xml&lt;/code&gt; and &lt;code&gt;local_rules.xml&lt;/code&gt;, phishing rule declared first), validation with &lt;code&gt;/var/ossec/bin/wazuh-logtest&lt;/code&gt; &lt;strong&gt;on the manager&lt;/strong&gt;, then a restart of &lt;code&gt;wazuh-manager&lt;/code&gt; and &lt;code&gt;wazuh-agent&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-short&quot;&gt;In short&lt;/h2&gt;
&lt;p&gt;You started from a setup that saw your servers and blocked your network, but let the fake invoice walk in through the front door.&lt;/p&gt;
&lt;p&gt;You &lt;strong&gt;installed Rspamd&lt;/strong&gt; in front of your mail server, as a milter, so that every message is judged before being accepted. You &lt;strong&gt;tuned the scoring&lt;/strong&gt; rather than a binary verdict, three levels of firmness, greylist, marking, rejection, with thresholds you control.&lt;/p&gt;
&lt;p&gt;You &lt;strong&gt;armed the anti-phishing&lt;/strong&gt;, comparison of displayed and real URLs, public databases of malicious links, enforcement of the DMARC policies of impersonated domains. And you &lt;strong&gt;wired all of it into Wazuh&lt;/strong&gt;, decoder and graded rules, so that a phishing attempt raises a level-12 alert in the same dashboard as the rest.&lt;/p&gt;
&lt;p&gt;The whole thing stays with you. No message leaves your server to be analyzed elsewhere, no provider reads your mail to tell you whether it’s clean. That’s the difference between a filter you host yourself and a mail gateway in someone else’s cloud, to whom you hand your entire company correspondence so they can protect it.&lt;/p&gt;
&lt;p&gt;One entry door remains, and it’s the one that sits in your employees’ hands. The file downloaded without a second thought, the macro that got authorized, the binary that should never have started. In episode 6 we go down onto the Macs, and we fix the problem by deciding which applications are allowed to run.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;series-recap&quot;&gt;Series recap&lt;/h2&gt;
&lt;p&gt;Seven episodes to build your sovereign security plumbing, brick by brick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;Episode 0, the bedrock of the series.&lt;/a&gt;&lt;/strong&gt; Why an SME needs a sovereign SIEM, NIS2, GDPR, and the cost of doing nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;Episode 1, the foundation.&lt;/a&gt;&lt;/strong&gt; The hardened VPS beyond the CLOUD Act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/&quot;&gt;Episode 2, Wazuh all-in-one.&lt;/a&gt;&lt;/strong&gt; Manager, indexer and dashboard on a single node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/&quot;&gt;Episode 3, agents everywhere.&lt;/a&gt;&lt;/strong&gt; Deployment across your servers, Macs and Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;Episode 4, community network defense.&lt;/a&gt;&lt;/strong&gt; Blocking known attackers before they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 5, the mail filter.&lt;/strong&gt; Anti-spam and anti-phishing in front of your mail server. You’ve just read it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 6, execution control on Macs.&lt;/strong&gt; Deciding which applications are allowed to start.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 7, alerting and total cost.&lt;/strong&gt; Calibrated notifications and an honest financial reckoning against SaaS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>rspamd</category><category>securite</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-rspamd-mail-siem-souverain-1.png" length="0" type="image/png"/></item><item><title>CrowdSec up front, blocking before they hit you</title><link>https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/</guid><description>Install CrowdSec on your hardened VPS, block malicious IPs upstream with the bouncer firewall, and feed its decisions into Wazuh.</description><pubDate>Wed, 08 Jul 2026 06:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Episode 4: The Community Network Defense&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the previous episode, you enrolled Wazuh agents on all your machines. Servers, Linux, Mac, Windows, every machine sends its logs to the manager through the Tailnet. Your SIEM has lifted its nose from its own logs, your entire park is displayed before it. It sees everything, including attacks.&lt;/p&gt;
&lt;p&gt;But here’s the catch. An agent Wazuh &lt;strong&gt;observes&lt;/strong&gt;, as we’ve repeated all throughout episode 3. It tells you that a burst of failed connection attempts has just hit your server, it tells you very well, very quickly, very detailed. But it does nothing to stop it. You have eyes, but no hands.&lt;/p&gt;
&lt;p&gt;Today, we give you hands. We install &lt;strong&gt;CrowdSec&lt;/strong&gt;, the first active defense line in the series. An engine that reads your logs like Wazuh, but unlike Wazuh, it draws a conclusion and &lt;strong&gt;blocks&lt;/strong&gt;. The IP that’s hammering your SSH, it puts it outside. The attacker already spotted elsewhere on the community network, it blocks it before it even knocks on your door.&lt;/p&gt;
&lt;p&gt;A point raised since episode 1 and still holds true. &lt;strong&gt;Almost all your services live in Tailnet-only, invisible from the open internet&lt;/strong&gt;. But some doors must remain open to the world, a mail server receiving on port 25, a public web presence. Those are the doors CrowdSec guards.&lt;/p&gt;
&lt;p&gt;This stack, I use daily. The commands that follow are the ones you’ll type yourself, in order, on your hardened VPS then in your Wazuh manager.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Before you begin&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Three things to keep in mind before the first command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you need.&lt;/strong&gt; A hardened VPS like the one from episode 1, up-to-date, with at least one service exposed to the open internet to protect. The Wazuh manager from episode 2, operational, for the integration at the end of the tutorial. Administrator access on the machine. And something to read your own logs, &lt;code&gt;/var/log/auth.log&lt;/code&gt; and your service logs, since that’s CrowdSec’s raw material.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What changes.&lt;/strong&gt; At the end, known malicious IPs no longer reach your services, they hit your firewall before. You also benefit from the community list, millions of signals uploaded by other users, so you block attackers you’ve never seen yourself. And your SIEM finally sees this defense layer, every blockage is uploaded to Wazuh.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What doesn’t change.&lt;/strong&gt; CrowdSec blocks at the &lt;strong&gt;network level&lt;/strong&gt;, by IP address. It’s not an antivirus, not an exhaustive application firewall, not a replacement for your hardening from episode 1. It’s just another layer, the first one the attacker encounters, not the only one. And it blocks the IP, not the human behind it. An IP changes, defense plays on volume and speed, not infallibility.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;How CrowdSec sees and blocks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before installing anything, understand the mechanism. It’s based on three pieces that pass the baton to each other.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The security engine&lt;/strong&gt;, the local agent. It reads your logs continuously, &lt;code&gt;auth.log&lt;/code&gt;, your server web and mail logs. It passes them through &lt;strong&gt;scenarios&lt;/strong&gt;, behavior rules like “six failed SSH attempts in ten seconds from the same IP, that’s brute force”. When a scenario triggers, the engine takes a &lt;strong&gt;decision&lt;/strong&gt;, it writes this IP to a blacklist for a given duration, four hours by default for brute force.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The bouncer&lt;/strong&gt;, the executor. The engine decides, but it doesn’t touch your firewall itself, that’s a design choice. The bouncer firewall, the one we’re interested in, applies the decision. It puts the faulty IP into your nftables or iptables. Engine and bouncer are separate, you can have several, one for the firewall, one in front of a reverse proxy web, each applies the same decisions at its level.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The community network&lt;/strong&gt;, the CTI, for Cyber Threat Intelligence. It’s the multiplier. When your engine blocks an IP, it sends the signal to the central API, the address and the scenario. In exchange, you download the &lt;strong&gt;community list&lt;/strong&gt;, the aggregate of signals from all users. Result, an IP that attacked a server in Poland this morning is already blocked on your machine this afternoon, before its first attempt.&lt;/p&gt;
&lt;p&gt;Remember the flow, it commands everything else. Log read by the engine, scenario triggered, decision made, bouncer applies it on the firewall, signal shared, community list downloaded in return.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Step 1, install the engine&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We start with the brain, on your hardened VPS. Two commands, one to declare the official CrowdSec repository, one to install.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://install.crowdsec.net&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; crowdsec&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first line adds the CrowdSec repository to your sources list. The second installs and starts the engine.&lt;/p&gt;
&lt;p&gt;The installation is smart on one point. At the end, CrowdSec &lt;strong&gt;scans the services it detects&lt;/strong&gt; on your machine and installs the corresponding &lt;strong&gt;collections&lt;/strong&gt; automatically. It sees an SSH server, it installs the &lt;code&gt;crowdsecurity/sshd&lt;/code&gt; collection. An Nginx, it adds the web scenarios. You don’t have to guess what to watch, it deduces it from what’s running.&lt;/p&gt;
&lt;p&gt;Check what’s been set up.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; collections&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see the list of active collections, with the &lt;code&gt;enabled&lt;/code&gt; mention. If a service isn’t covered, install its collection manually, for example &lt;code&gt;sudo cscli collections install crowdsecurity/nginx&lt;/code&gt; then restart the service &lt;code&gt;crowdsec&lt;/code&gt;. Everything is controlled with &lt;code&gt;cscli&lt;/code&gt;, CrowdSec’s command-line tool, the equivalent of your &lt;code&gt;agent_control&lt;/code&gt; on Wazuh’s side.&lt;/p&gt;
&lt;p&gt;At this stage, the engine reads, analyzes and &lt;strong&gt;decides&lt;/strong&gt;. But it doesn’t block anything yet. It holds a blacklist that nobody applies. It still needs its hands.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Step 2, put the bouncer that really blocks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The hands, that’s the &lt;strong&gt;firewall bouncer&lt;/strong&gt;. It reads the engine’s decisions and translates them into firewall rules that really refuse traffic.&lt;/p&gt;
&lt;p&gt;There are two variants depending on your firewall, one for nftables, one for iptables. Most recent distributions run on nftables by default.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; crowdsec-firewall-bouncer-nftables&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If your machine is on the old iptables, replace the package with &lt;code&gt;crowdsec-firewall-bouncer-iptables&lt;/code&gt;. The principle is the same. A detail for consistency with episode 1, if your firewall runs on &lt;code&gt;ufw&lt;/code&gt;, know that &lt;code&gt;ufw&lt;/code&gt; relies on one of the two backends depending on your version, check which one before choosing the bouncer variant.&lt;/p&gt;
&lt;p&gt;The installation makes the connection itself. The package calls &lt;code&gt;cscli bouncers add&lt;/code&gt; for itself, registers the bouncer with the engine and gives it an authentication key. No manual key handling.&lt;/p&gt;
&lt;p&gt;Check that the engine and its bouncer talk to each other.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bouncers&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see your firewall bouncer listed, with a recent last activity date. From now on, the loop is closed. The engine decides, the bouncer applies, the faulty IP falls into a set blocked by your firewall. Your SIEM has hands.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-bouncers-list-crowdsec-premiere-ligne-siem-souverain-1.png&quot; alt=&quot;Output of cscli bouncers list: the firewall bouncer registered, valid, with a recent last activity.&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Step 3, check that it bites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Three commands to make sure the machine is running, and one to put it to the test without waiting for a real attack.&lt;/p&gt;
&lt;p&gt;First, the big picture.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; metrics&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It shows you how many log lines the engine has read, by source, and how many times each scenario has been triggered. If the counters are moving, your engine is seeing your logs. If they stay at zero, it’s not reading anything, and that’s a source issue to fix before going any further.&lt;/p&gt;
&lt;p&gt;Next, the current decisions. Add the &lt;code&gt;-a&lt;/code&gt; flag, otherwise CrowdSec will only show your local decisions and hide the IP addresses pulled from the community network.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; list&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -a&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On a machine exposed for a few hours, it shouldn’t be empty. Each line is an IP address, the scenario that triggered it, and the remaining duration.&lt;/p&gt;
&lt;p&gt;Look at the Source column. The &lt;code&gt;CAPI&lt;/code&gt; lines are the community’s gifts, IP addresses you’ve never seen knocking on your door and are already being refused. The line in bold is yours, a scanner your own server caught in the act and banned all by itself, three hours in the corner. The collective and the local, side by side, in the same blacklist.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-decisions-list-crowdsec-premiere-ligne-siem-souverain-1.png&quot; alt=&quot;Real output of cscli decisions list -a: the local line in bold, an attacker spotted by your server, among the community decisions CAPI.&quot;&gt;&lt;/p&gt;
&lt;p&gt;Finally, the test. Instead of waiting for an attacker, you create a test decision on a dummy IP address.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; add&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --ip&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 192.0.2.1&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --duration&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; 4h&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --reason&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &quot;test block&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The IP address &lt;code&gt;192.0.2.1&lt;/code&gt; belongs to a reserved range for documentation, it won’t block anyone real. You see it appear in the list, the bouncer pushes it into your firewall. Clean up behind you once the test is successful.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; decisions&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --ip&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 192.0.2.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If adding, displaying, and deleting work properly, your engine-decision-bouncer chain is operational end-to-end.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Step 4, the community signal, what goes out and what stays&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is where CrowdSec scales up, and it’s also the only place where honesty about sovereignty demands a sentence, so let’s put it out there without beating around the bush.&lt;/p&gt;
&lt;p&gt;By default, your engine is registered with the &lt;strong&gt;central community API&lt;/strong&gt;. You can check this with:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; cscli&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; capi&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This exchange works both ways, and it’s important to know exactly what’s going on. &lt;strong&gt;What goes out from your end&lt;/strong&gt;, when you block an IP address, is a minimal signal: the faulty IP address, the scenario that triggered it, and the timestamp. &lt;strong&gt;What never goes out&lt;/strong&gt;, are your logs, your machine names, your users, the content of anything. CrowdSec shares the conclusion “this IP address is attacking”, not the raw material that led to it. &lt;strong&gt;What comes in&lt;/strong&gt;, is the community list, the anonymized aggregate of these signals across the entire network.&lt;/p&gt;
&lt;p&gt;It’s a compromise, and it’s a clear one. You exchange the address of attackers, data that isn’t yours but belongs to your attackers, for collective protection that you couldn’t build alone. The engine remains &lt;strong&gt;self-hosted on your end&lt;/strong&gt;, no third party pilots your blocks, no decision depends on a remote service that could be cut off. You can even opt out of sharing and run purely locally, you keep your defense, you just lose the community list. The balance is in your hands, as always in this series.&lt;/p&gt;
&lt;p&gt;If you want a web console to visualize your alerts, CrowdSec offers one, for free, where you enroll your engine with &lt;code&gt;sudo cscli console enroll &amp;#x3C;your-key&gt;&lt;/code&gt;. Optional, and hosted by CrowdSec, so weigh it according to your line. Your real dashboard, anyway, is Wazuh, and that’s the next step.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Step 5, make CrowdSec show up in Wazuh&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your firewall blocks, great. But for now, your SIEM doesn’t know. CrowdSec acts on its own, Wazuh looks elsewhere. We connect them, so that every CrowdSec decision becomes a visible alert in your single dashboard.&lt;/p&gt;
&lt;p&gt;The principle is simple and clean. CrowdSec knows &lt;strong&gt;how to write its alerts to a file&lt;/strong&gt;, and Wazuh knows &lt;strong&gt;how to read a log file&lt;/strong&gt;. We make them meet.&lt;/p&gt;
&lt;p&gt;On CrowdSec’s side, you enable the file notification plugin. It already exists, you edit &lt;code&gt;/etc/crowdsec/notifications/file.yaml&lt;/code&gt; to make it write in JSON format, one alert per line.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;file&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;file_default&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;log_level&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;info&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;|&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  {{range. -}}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;   { &quot;crowdsec&quot;: { &quot;program&quot;: &quot;crowdsec&quot;, &quot;alert&quot;: {{. | toJson }} }}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#032F62&quot;&gt;  {{ end -}}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;log_path&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;/var/log/crowdsec/crowdsec_alerts.json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;rotate&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;  enabled&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;  max_size&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;500&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;  compress&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you declare this channel in &lt;code&gt;/etc/crowdsec/profiles.yaml&lt;/code&gt;, so the engine sends its alerts there.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yaml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#22863A&quot;&gt;notifications&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;file_default&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A detail that counts. The official CrowdSec tutorial writes this file to &lt;code&gt;/tmp&lt;/code&gt;, which is emptied on every machine reboot. We put it in &lt;code&gt;/var/log/crowdsec/&lt;/code&gt; instead, so your alert history survives a reboot. A &lt;code&gt;crowdsec&lt;/code&gt; service restart, and the &lt;code&gt;/var/log/crowdsec/crowdsec_alerts.json&lt;/code&gt; file fills up with every decision.&lt;/p&gt;
&lt;p&gt;On Wazuh’s side, you tell the local agent, the one from episode 3 already installed on this server, to read this file. You add this block to its configuration, ideally via the shared configuration for the group so you only have to write it once.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;localfile&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;/var/log/crowdsec/crowdsec_alerts.json&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;log_format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;json&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;log_format&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;crowdsec&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;localfile&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You recognize the &lt;code&gt;&amp;#x3C;localfile&gt;&lt;/code&gt; logic, it’s exactly the mechanism by which Wazuh swallows any log source. The &lt;code&gt;json&lt;/code&gt; format tells it to parse each line as a structured object, and your &lt;code&gt;crowdsec.alert.*&lt;/code&gt; fields become queryable in the dashboard.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-wazuh-alert-crowdsec-premiere-ligne-siem-souverain-1.png&quot; alt=&quot;An alert from CrowdSec showing up in the Wazuh Discover dashboard: a ban on the crowdsecurity/ssh-bf scenario, with all its crowdsec.alert fields unfolded and queryable.&quot;&gt;&lt;/p&gt;
&lt;p&gt;Restart the Wazuh agent, and the series’ loop is closed. An IP address attacks, CrowdSec blocks it, writes the alert, the Wazuh agent reads it, the manager sends it up, it shows up in your dashboard next to everything else. Your SIEM finally sees its own counterattacks.&lt;/p&gt;
&lt;p&gt;A version note, because it matters. This integration via the file plugin assumes a recent engine and Wazuh version. Make sure your CrowdSec is at 1.6.3 or above and your Wazuh is at 4.9.0 or above, the versions from which this integration by the file plugin is officially supported. You’re running on Wazuh 4.x, this integration doesn’t depend on the future 5.0, it works on your current stack.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;If it doesn’t work&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The deployment of CrowdSec is straightforward, and it usually gets stuck at the same points. Here are the real ones, in the order you’ll encounter them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;, &lt;code&gt;cscli metrics&lt;/code&gt; shows zero lines read&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, the engine can’t find your logs, or it doesn’t have the collection for your service. It’s running, but it’s reading nothing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, make sure the log source exists at the expected path and that the service’s collection is installed with &lt;code&gt;sudo cscli collections list&lt;/code&gt;. Install the missing collection, then restart the &lt;code&gt;crowdsec&lt;/code&gt; service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;, an IP address is decided but nothing is blocked&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, the bouncer isn’t there, or it isn’t talking to the engine. The engine decides on its own, nobody applies anything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, &lt;code&gt;sudo cscli bouncers list&lt;/code&gt; should show your firewall bouncer with recent activity. If it’s absent, reinstall the bouncer package. If it’s present but silent, check that the bouncer service is running.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;, the wrong firewall backend&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, you installed the nftables variant of the bouncer on an iptables machine, or vice versa. The bouncer puts its rules in a system that your firewall doesn’t use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, identify your real backend, then install the corresponding variant of the bouncer, &lt;code&gt;crowdsec-firewall-bouncer-nftables&lt;/code&gt; or &lt;code&gt;crowdsec-firewall-bouncer-iptables&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;, nothing shows up in Wazuh&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, note that this is usually not a CrowdSec problem. The &lt;code&gt;/var/log/crowdsec/crowdsec_alerts.json&lt;/code&gt; file grows on CrowdSec’s side. If it grows, the diagnosis is on Wazuh’s side, the &lt;code&gt;&amp;#x3C;localfile&gt;&lt;/code&gt; block and the agent version, not on CrowdSec’s side. Don’t reinstall CrowdSec for a Wazuh reading issue.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The community list makes up half the work&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A final word, because this is the point we always underestimate at the start. The day you install CrowdSec, you expect it to learn slowly, to need weeks of traffic before it becomes useful. Wrong.&lt;/p&gt;
&lt;p&gt;As soon as the first synchronization, you download the community list, and your &lt;code&gt;sudo cscli decisions list -a&lt;/code&gt; populates with IP addresses you’ve never seen. Attackers spotted elsewhere, already blocked at your end. You benefit from the work of tens of thousands of other servers before you’ve even had your first attack.&lt;/p&gt;
&lt;p&gt;It’s not magic, it’s volume. Every server that sends up a signal strengthens the defense of all the others. It’s exactly the model that the American SaaS sells you expensively and under its jurisdiction, except here it’s open source, self-hosted, and the shared signal is limited to the address of your attackers.&lt;/p&gt;
&lt;p&gt;The turning point is passed. Where your SIEM used to just observe, it now blocks.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;For the impatient&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What this article does.&lt;/strong&gt; We install CrowdSec on the hardened VPS to block malicious IP addresses known locally and signaled by the community network. The engine reads your logs and decides, the firewall bouncer applies the block on nftables or iptables, and every decision shows up in Wazuh via a file of alerts read by the agent. The defense goes from “seeing” to “barricading the door”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concretely, the commands.&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the engine: &lt;code&gt;curl -s https://install.crowdsec.net | sudo sh&lt;/code&gt; then &lt;code&gt;sudo apt install crowdsec&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check the detected collections: &lt;code&gt;sudo cscli collections list&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Install the firewall bouncer according to your backend: &lt;code&gt;sudo apt install crowdsec-firewall-bouncer-nftables&lt;/code&gt; (or &lt;code&gt;-iptables&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Check the connection: &lt;code&gt;sudo cscli bouncers list&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check the machine: &lt;code&gt;sudo cscli metrics&lt;/code&gt; and &lt;code&gt;sudo cscli decisions list -a&lt;/code&gt; (the &lt;code&gt;-a&lt;/code&gt; for seeing also the community list).&lt;/li&gt;
&lt;li&gt;Test the blocking: &lt;code&gt;sudo cscli decisions add --ip 192.0.2.1 --duration 4h --reason &quot;test&quot;&lt;/code&gt; then &lt;code&gt;sudo cscli decisions delete --ip 192.0.2.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check the community sharing: &lt;code&gt;sudo cscli capi status&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Integrate with Wazuh: enable the file notification plugin in &lt;code&gt;/etc/crowdsec/notifications/file.yaml&lt;/code&gt; (output &lt;code&gt;/var/log/crowdsec/crowdsec_alerts.json&lt;/code&gt;), declare it in &lt;code&gt;/etc/crowdsec/profiles.yaml&lt;/code&gt;, then add the &lt;code&gt;&amp;#x3C;localfile&gt;&lt;/code&gt; JSON block to the Wazuh agent’s configuration.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;In summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You started with a SIEM that saw attacks but couldn’t stop them, and now you’re ending with a first line that blocks them.&lt;/p&gt;
&lt;p&gt;You &lt;strong&gt;installed the CrowdSec engine&lt;/strong&gt; on your hardened VPS, which reads your logs and decides. You &lt;strong&gt;put the firewall bouncer&lt;/strong&gt;, which applies these decisions on your firewall and really blocks. You &lt;strong&gt;connected the community list&lt;/strong&gt;, which protects you from attackers you’ve never seen yourself, by only sharing their addresses. And you &lt;strong&gt;made everything show up in Wazuh&lt;/strong&gt;, so your control room finally sees this defense layer.&lt;/p&gt;
&lt;p&gt;It all stays with you. The engine is self-hosted, no decision depends on a third party, and the only signal that goes out is the IP address of your attackers. The protection collective without the dependence, that’s precisely the sovereign third way, opened in the series’ introduction episode.&lt;/p&gt;
&lt;p&gt;You now block at the network level. But your most frequent attacks don’t come through the SSH port, they come through your mailbox. In episode 5, we’ll put the anti-spam and anti-phishing filter in front of your mail server, the most exposed door of all.&lt;/p&gt;
&lt;p&gt;A final note on the series. Seven episodes to build your sovereign security plumbing, brick by brick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;Episode 0, the bedrock of the series.&lt;/a&gt;&lt;/strong&gt; Why an SME needs a sovereign SIEM, NIS2, GDPR, and the cost of doing nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;Episode 1, the foundation.&lt;/a&gt;&lt;/strong&gt; The hardened VPS outside the CLOUD Act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/&quot;&gt;Episode 2, Wazuh all-in-one.&lt;/a&gt;&lt;/strong&gt; Manager, indexer, and dashboard on a single node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/&quot;&gt;Episode 3, agents everywhere.&lt;/a&gt;&lt;/strong&gt; Deployment on your servers, Macs, and Windows machines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 4, the community network defense.&lt;/strong&gt; Blocking known attackers before they arrive. You just read this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;Episode 5, the mail filter.&lt;/a&gt;&lt;/strong&gt; Anti-spam and anti-phishing in front of your mail server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 6, Mac execution control.&lt;/strong&gt; Deciding which applications get to launch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 7, alerting and honest cost.&lt;/strong&gt; Calibrated notifications and honest financial breakdown against SaaS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>crowdsec</category><category>securite</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-crowdsec-premiere-ligne-siem-souverain-1.png" length="0" type="image/png"/></item><item><title>Install your first AI model locally on Mac</title><link>https://macsouverain.com/en/installer-premier-modele-ia-local-mac/</link><guid isPermaLink="true">https://macsouverain.com/en/installer-premier-modele-ia-local-mac/</guid><description>&quot;An AI model that runs 100% offline on your Mac Apple Silicon, in 20 minutes, without typing a single command. Install LM Studio, pick a model in MLX, enter your first prompt, then the ultimate test: cut the Wi-Fi.&quot;</description><pubDate>Mon, 06 Jul 2026 06:14:39 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Previous Article:&lt;/strong&gt; We set the stage. Your access to a distant AI model can be cut off overnight by an arbitrary decision, and the only thing still running the next morning… is nothing.&lt;/p&gt;
&lt;p&gt;We also mapped out what a Mac Apple Silicon runs locally, from the small model that sorts your notes to the large model that writes.&lt;/p&gt;
&lt;p&gt;That was the why. Here’s the how.&lt;/p&gt;
&lt;p&gt;Good news up front: you need no technical skill, no command line, and no additional hardware. If you’re reading this on a recent Mac, you already have everything. Count twenty minutes, most of it watching a progress bar.&lt;/p&gt;
&lt;p&gt;At the end, you have a capable model that responds entirely on your machine. And to prove it, at the very end, we’ll cut the Wi-Fi.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/ton-ia-peut-etre-eteinte-monte-la-tienne/&quot;&gt;Your AI can be shut down by the US, build your own&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;what-you-need&quot;&gt;What you need&lt;/h2&gt;
&lt;p&gt;Three things, and you probably already have them.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;Mac Apple Silicon&lt;/strong&gt;, that is, an M1 to M5 chip. Most Macs sold since late 2020 have one. If you have an Intel Mac, this method doesn’t apply, efficient local inference relies on Apple Silicon’s unified memory.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;reasonably recent version of macOS&lt;/strong&gt;, Sonoma (14) or later for the tool we’ll use. If you haven’t updated in a while, now’s the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RAM&lt;/strong&gt;, and that’s where the model choice comes in. Quick refresher from the previous article: on a 16GB Mac, once the system is served, you have 8 to 10GB left for AI, enough to run a 7 to 8 billion parameter model.&lt;/p&gt;
&lt;p&gt;On a 32GB, you step up a class, up to a 24 billion parameter model. The golden rule, never choose a model that fills the entire budget, or your machine will struggle or crash.&lt;/p&gt;
&lt;p&gt;If you want the RAM budget details and the full model map, it’s all in the previous article. Here, we install.&lt;/p&gt;
&lt;h2 id=&quot;the-tool-lm-studio-zero-terminal&quot;&gt;The tool: LM Studio, zero terminal&lt;/h2&gt;
&lt;p&gt;There are several ways to run a model locally. For a first step, one deserves to be singled out: &lt;strong&gt;LM Studio&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It’s a classic desktop app, with windows, buttons, and a search field. You download your models from an integrated library, click, chat. No command line, no config files to edit, no esoteric maneuvers. It’s local AI presented as a normal app, and for getting started, that’s exactly what you want.&lt;/p&gt;
&lt;p&gt;LM Studio is &lt;strong&gt;free&lt;/strong&gt;, for personal and professional use. And on Mac Apple Silicon, it comes with the best engine possible, we’ll get back to that in two minutes.&lt;/p&gt;
&lt;p&gt;The curious and the hungry have other options, Ollama on the command line, MLX for going metal. We’ll mention them at the end, once you already have a running model. One thing at a time.&lt;/p&gt;
&lt;h2 id=&quot;install-lm-studio&quot;&gt;Install LM Studio&lt;/h2&gt;
&lt;p&gt;Nothing more than an ordinary Mac app.&lt;/p&gt;
&lt;p&gt;Go to &lt;a href=&quot;https://lmstudio.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;lmstudio.ai&lt;/a&gt; and download the Mac version. The site detects your machine and offers the right build, the one for Apple Silicon. You get a &lt;code&gt;.dmg&lt;/code&gt; file, the usual Mac installation format.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-01-page-telechargement-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The LM Studio download page, which automatically detects your Mac Apple Silicon.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;Open the downloaded &lt;code&gt;.dmg&lt;/code&gt;. A window appears with the LM Studio icon and a shortcut to your Applications folder. Drag the icon to the Applications folder, just like any other app. That’s it, nothing to check, nothing to configure.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-02-dmg-vers-applications-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The.dmg window, you drag the LM Studio icon to the Applications folder.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;Launch LM Studio from Launchpad or your Applications folder. On the first launch, macOS might ask you to confirm opening an app downloaded from the internet, confirm. The app opens on a welcome screen that offers to choose a first model. Let’s go.&lt;/p&gt;
&lt;h2 id=&quot;choose-and-download-your-first-model&quot;&gt;Choose and download your first model&lt;/h2&gt;
&lt;p&gt;This is the crucial step, and the one where we’ll be precise, because not all models are equal and the right choice depends on your RAM.&lt;/p&gt;
&lt;p&gt;Stick to the sovereign pick from the previous article. On a &lt;strong&gt;16GB Mac&lt;/strong&gt;, aim for &lt;strong&gt;Qwen2.5 7B&lt;/strong&gt;, a model under Apache 2.0 license, truly free, that runs the essentials of daily life. On a &lt;strong&gt;32GB Mac&lt;/strong&gt;, aim for &lt;strong&gt;Mistral Small&lt;/strong&gt;, a 24 billion parameter model, European and also under Apache 2.0, tailored for sustained writing and long document analysis.&lt;/p&gt;
&lt;p&gt;In LM Studio, open the search tab, the magnifying glass icon in the sidebar, and type the model name. The library is connected to Hugging Face, the big model hub, so you’ll see several variants of the same model. That’s normal, and that’s where you need to know how to read.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-03-discover-recherche-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The LM Studio Discover tab, to search and download models from Hugging Face.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;Two things to decode on each variant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The format.&lt;/strong&gt; You’ll encounter two words, &lt;strong&gt;MLX&lt;/strong&gt; and &lt;strong&gt;GGUF&lt;/strong&gt;. Just remember this: MLX, the calculation framework made by Apple, is the engine optimized for Apple Silicon’s unified memory. On your Mac, an MLX version runs notably faster than the same one in GGUF, quality equal.&lt;/p&gt;
&lt;p&gt;LM Studio comes with this MLX engine, might as well use it. &lt;strong&gt;Choose the MLX version of the model whenever it’s available.&lt;/strong&gt; If a model only exists in GGUF, that’s fine, it still works, just a bit slower.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quantization.&lt;/strong&gt; You’ll see labels like &lt;code&gt;4bit&lt;/code&gt;, &lt;code&gt;Q4&lt;/code&gt;, &lt;code&gt;Q4_K_M&lt;/code&gt;, &lt;code&gt;Q8&lt;/code&gt;. That’s the model’s compression level. A raw model weighs a fortune in memory, quantization reduces the precision of its weights to make it fit in your RAM, at the cost of a barely noticeable quality loss.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q4, or 4bit, is the sweet spot for starting&lt;/strong&gt;, it divides the model’s weight by about four without you noticing much of a difference. Q8 is more faithful but twice as heavy, keep it for later if you have the RAM.&lt;/p&gt;
&lt;p&gt;In practical terms, what you’re downloading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On 16GB, &lt;strong&gt;Qwen2.5 7B in MLX 4bit&lt;/strong&gt; weighs around &lt;strong&gt;4.3GB&lt;/strong&gt;. It’s well within your RAM.&lt;/li&gt;
&lt;li&gt;On 32GB, &lt;strong&gt;Mistral Small 24B in MLX 4bit&lt;/strong&gt; weighs &lt;strong&gt;around 13 to 14GB&lt;/strong&gt;. It’s within your margin without killing your machine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Choose the right variant, MLX and 4bit, and click download. A progress bar appears, you can follow the download in the downloads tab. Time for a coffee break, the file is several gigabytes.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-04-picker-modele-mlx-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Qwen2.5 7B Instruct in MLX variant, 4bit quantization, 4GB.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;A word on version numbers. Models evolve, Mistral Small is already at a revision more recent than the one named in the previous article. Don’t sweat the exact number, just pick the latest &lt;strong&gt;Mistral Small 24B&lt;/strong&gt; offered in MLX in LM Studio, that’s the one you want.&lt;/p&gt;
&lt;h2 id=&quot;your-first-prompt-then-cut-the-wi-fi&quot;&gt;Your first prompt, then cut the Wi-Fi&lt;/h2&gt;
&lt;p&gt;The model is downloaded. Time for the moment of truth.&lt;/p&gt;
&lt;p&gt;Open the &lt;strong&gt;Chat&lt;/strong&gt; tab, the speech bubble icon in the sidebar. At the top of the window, a dropdown menu lets you load a model, select the one you just downloaded. LM Studio loads it into memory, a few seconds, and displays a familiar input field, a conversation, like any other assistant.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-05-modele-charge-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The model selected and loaded into memory in the Chat tab.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;If LM Studio offers you a choice of engine, make sure it’s set to &lt;strong&gt;MLX&lt;/strong&gt;. It’s usually automatic when you’ve picked an MLX variant, but a quick check doesn’t hurt.&lt;/p&gt;
&lt;p&gt;Type your first prompt. Anything, preferably a real task, to feel what it’s like. “Summarize this text in three points”, “write a polite follow-up email”, “explain the difference between two concepts”. The model thinks for a few seconds, then responds, word by word, entirely from your machine.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-06-premier-prompt-reponse-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;A first prompt, the response generated entirely locally by the model.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;And now, the demonstration that wraps up the previous article’s loop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cut the Wi-Fi.&lt;/strong&gt; Click on the Wi-Fi icon in your menu bar and turn it off, or go to System Preferences. Your machine is now offline, cut off from the internet, unplugged from the world. Ask the model another question.&lt;/p&gt;
&lt;p&gt;It responds.&lt;/p&gt;
&lt;p&gt;There you have it. No request went out, not a single byte of your text left your Mac, and yet it works. That’s what a model running on your machine looks like. When they turn off the distant tap one morning, that one keeps running. You can turn the Wi-Fi back on, the demonstration is made.&lt;/p&gt;
&lt;h2 id=&quot;three-settings-that-make-all-the-difference&quot;&gt;Three settings that make all the difference&lt;/h2&gt;
&lt;p&gt;Your model is running. Three buttons deserve a mention, because they make the difference between a smooth machine and a struggling one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context length.&lt;/strong&gt; That’s how much text the model can keep in mind at once, your question plus its response plus everything you’ve fed it. It’s set when you load the model, expressed in tokens, in the config panel. A high value lets you feed it long documents, but it consumes RAM in proportion. If your Mac is struggling, lower it. If you want it to digest a long PDF, raise it, keeping an eye on your RAM.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-07-reglages-contexte-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The context length setting (Context Length) of the model.&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Quantization.&lt;/strong&gt; We talked about it when downloading, it’s the quality-versus-weight lever. If your model is cramped in your RAM, more aggressive quantization (Q4 instead of Q8) makes it fit. If you have room to spare and want the best response, lighter quantization improves quality. You adjust by downloading another variant of the model, that’s the only point where you have to go back through the download process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unload the model.&lt;/strong&gt; As long as a model is loaded, it occupies your RAM, even if you’re not using it. When you’re done, unload it, the eject button in the model selector frees up RAM all at once. Useful habit if you’re switching to a heavy task, video editing, coding, virtual machine, and you want your gigabytes back. Closing the window isn’t always enough, unload explicitly.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-08-ejection-modele-installer-premier-modele-ia-local-mac-2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The eject button in the model selector, to unload the model and free up RAM.&quot;&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;going-further&quot;&gt;Going further&lt;/h2&gt;
&lt;p&gt;You have a running model, you’ve passed your first offline prompt. The rest is bonus, for when the urge to dig deeper strikes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ollama, for the curious of the command line.&lt;/strong&gt; If the command line doesn’t scare you, &lt;a href=&quot;https://ollama.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Ollama&lt;/a&gt; runs a model with a single command. You install the app, open the Terminal, type &lt;code&gt;ollama run mistral-small:24b&lt;/code&gt;, and it downloads the model then puts you in conversation, directly in the terminal. It’s sparser than LM Studio, but ruthlessly effective, and it opens the door to automation, plugging a local model into your own scripts via a local API. Ollama also takes advantage of Apple Silicon by using MLX.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MLX in action, for the hungry.&lt;/strong&gt; The engine LM Studio uses under the hood, &lt;a href=&quot;https://github.com/ml-explore/mlx&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;MLX&lt;/a&gt;, is an Apple framework that you can pilot yourself, with its toolbox &lt;code&gt;mlx-lm&lt;/code&gt;. It’s the playground for those who want to maximize their unified memory, test custom quantizations, or run barely-out models. Reserved for those who enjoy the fine mechanics, but that’s where you’ll find raw performance on a Mac.&lt;/p&gt;
&lt;p&gt;For most everyday uses, you’ll never go beyond LM Studio, and that’s perfectly fine.&lt;/p&gt;
&lt;h2 id=&quot;wrap-up&quot;&gt;Wrap-up&lt;/h2&gt;
&lt;p&gt;What you’ve just done. You installed a free app, downloaded a model in MLX tailored to your RAM, passed a first prompt, and verified with Wi-Fi off that nothing was leaving your Mac. Twenty minutes, zero command line, zero dependency on a model that a third-party IA can shut down.&lt;/p&gt;
&lt;p&gt;This model is yours. No one can cut it off, charge you per request, or decide one morning that your nationality doesn’t suit them. It won’t replace the best distant model for the toughest tasks, we said so, and that’s not the point. Its value is that it’s there, on your machine, all the time, for the bulk of what you do.&lt;/p&gt;
&lt;p&gt;The base is set. Next up, using it for real, for all the tasks you can.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/38-apple-intelligence-ce-qui-sort-de-ton-mac/&quot;&gt;Apple Intelligence: what really comes out of your Mac&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The tool&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://lmstudio.ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;LM Studio&lt;/a&gt;, the desktop app to run models locally, free, with MLX engine on Apple Silicon.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lmstudio.ai/docs/app/system-requirements&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;LM Studio, system requirements&lt;/a&gt;, Apple Silicon M1 to M4 and macOS 14 or later, 16GB RAM recommended.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The models&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/lmstudio-community/Qwen2.5-7B-Instruct-MLX-4bit&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Qwen2.5 7B Instruct, MLX 4bit&lt;/a&gt;, 4.28GB, Apache 2.0 license, the pick for a 16GB Mac.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://huggingface.co/lmstudio-community/Mistral-Small-3.2-24B-Instruct-2506-MLX-4bit&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Mistral Small 24B, MLX 4bit&lt;/a&gt;, around 13GB, Apache 2.0 license, the pick for a 32GB Mac.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Going further&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ollama.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Ollama&lt;/a&gt;, run a model with a single command, with local API.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ml-explore/mlx&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Apple MLX&lt;/a&gt;, the framework optimized for Apple Silicon’s unified memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ia</category><category>modele-local</category><category>macos</category><category>apple-silicon</category><category>lm-studio</category><category>mlx</category><category>tutoriels</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-installer-premier-modele-ia-local-mac-2.png" length="0" type="image/png"/></item><item><title>Deploy Wazuh everywhere, your SIEM finally sees your network</title><link>https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/</guid><description>Enroll Wazuh agents on your Linux servers, Macs, and Windows workstations, with log upload via Tailnet, never through the open internet.</description><pubDate>Wed, 01 Jul 2026 12:50:41 GMT</pubDate><content:encoded>&lt;p&gt;In the previous episode, you set up a security console that runs Wazuh on your hardened VPS, acting as a manager, indexer, and dashboard on a single node, with the dashboard locked to Tailnet-only. A fine machine, but for now, it only sees itself.&lt;/p&gt;
&lt;p&gt;That’s useful, your server monitors itself, validates your hardening, and reports its own CVEs. But a SIEM that only looks at the server it’s running on is like a camera pointed at its own box. Today, we’re turning it towards the rest of the room.&lt;/p&gt;
&lt;p&gt;We’re going to &lt;strong&gt;deploy Wazuh agents on your fleet&lt;/strong&gt;. Your Linux servers, Macs, and Windows machines. Each machine gets a sensor that collects its logs, security events, and file integrity, and sends it all back to the manager. Your SIEM goes from nearsighted to panoramic.&lt;/p&gt;
&lt;p&gt;One non-negotiable rule, set from episode 1 and commanding this whole chapter. &lt;strong&gt;This communication goes through the Tailnet, never through the open internet.&lt;/strong&gt; The manager only listens on your private mesh. An agent not in your Tailnet talks to nothing.&lt;/p&gt;
&lt;p&gt;This stack, I use daily. The commands that follow are the ones you’ll type yourself, in order, on your manager, then on each machine to monitor.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;before-you-start&quot;&gt;Before you start&lt;/h2&gt;
&lt;p&gt;Three things to keep in mind before the first command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you need.&lt;/strong&gt; The Wazuh manager from episode 2, operational. Administrator access on each machine to enroll. And most importantly, &lt;strong&gt;each machine to monitor must be a member of your Tailnet&lt;/strong&gt;, just like your manager. You’ll run &lt;code&gt;tailscale up&lt;/code&gt; on each endpoint. Without it, nothing comes back.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What changes.&lt;/strong&gt; At the end, your dashboard won’t list a single agent, but as many as you have machines. Each one reports its logs, audit configuration, vulnerabilities, and file integrity, all in one place, under your single eye.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What doesn’t change.&lt;/strong&gt; An agent &lt;strong&gt;observes&lt;/strong&gt;, it doesn’t block anything. It tells you when an application starts, when a file changes, when a connection fails. Deciding which applications have the right to launch on your Macs, that comes later, with another tool, in another episode. Here, we’re just looking. We’re not blocking anything yet.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;opening-the-right-doors-and-only-those&quot;&gt;Opening the right doors, and only those&lt;/h2&gt;
&lt;p&gt;Before touching any endpoints, a gesture on the manager. Until now, your server hasn’t been listening to the outside world on anything, and the dashboard has been folded onto the Tailnet. Remote agents need to reach the manager on two ports.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Port 1515&lt;/strong&gt;, for &lt;strong&gt;enrollment&lt;/strong&gt;. That’s the initial handshake, encrypted, where a new agent introduces itself and receives its authentication key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Port 1514&lt;/strong&gt;, for &lt;strong&gt;reporting&lt;/strong&gt; logs and events, once the agent is enrolled.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And that’s where your sovereignty comes into play. Those two ports, you open &lt;strong&gt;only on the Tailscale interface&lt;/strong&gt;, never globally.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; on&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tailscale0&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; any&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 1514&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; proto&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tcp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; on&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tailscale0&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; any&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 1515&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; proto&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You recognize the gesture, it’s the same one as SSH in episode 1, the same one as the dashboard in episode 2. You allow on &lt;code&gt;tailscale0&lt;/code&gt;, your encrypted mesh, and nowhere else. The trap would be to type &lt;code&gt;sudo ufw allow 1514/tcp&lt;/code&gt; all on its own. That command opens your SIEM to the world’s scanners. Ours keeps it invisible.&lt;/p&gt;
&lt;p&gt;Check your firewall status.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; status&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see your two new rules, both marked &lt;code&gt;on tailscale0&lt;/code&gt;. If there’s a global &lt;code&gt;1514/tcp&lt;/code&gt; hanging around, get rid of it without hesitation, that’s a breach.&lt;/p&gt;
&lt;p&gt;Last thing to note, the Tailscale address of your manager, the one every agent will target.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;tailscale&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ip&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s the address you’ll pass to the agents. Not the VPS’s public IP, it doesn’t listen on these ports anyway. In everything that follows, I’ll note it as &lt;code&gt;&amp;#x3C;IP_TAILSCALE_OF_THE_MANAGER&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-1-enrolling-a-linux-server&quot;&gt;Step 1, enrolling a Linux server&lt;/h2&gt;
&lt;p&gt;We start with the simplest one, an Ubuntu or Debian server. Three steps, add the Wazuh repository, install the agent and give it the manager’s address, start it up.&lt;/p&gt;
&lt;p&gt;First, the official repository.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; gnupg&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt-transport-https&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://packages.wazuh.com/key/GPG-KEY-WAZUH&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; gpg&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --no-default-keyring&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --keyring&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; gnupg-ring:/usr/share/keyrings/wazuh.gpg&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --import&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; chmod&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 644&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /usr/share/keyrings/wazuh.gpg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &quot;deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main&quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tee&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -a&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/apt/sources.list.d/wazuh.list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nothing exotic. You import the signature key for the repository, declare the Wazuh repository, refresh the package list. Standard APT routine.&lt;/p&gt;
&lt;p&gt;Then, the installation, with the trick that does all the work. Prefixing the installation command with the &lt;code&gt;WAZUH_MANAGER&lt;/code&gt; variable tells the package which manager to enroll with during installation.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; WAZUH_MANAGER=&quot;&amp;#x3C;IP_TAILSCALE_OF_THE_MANAGER&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; WAZUH_AGENT_GROUP=&quot;linux&quot;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-agent&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;WAZUH_AGENT_GROUP=&quot;linux&quot;&lt;/code&gt; puts this machine in a group named &lt;code&gt;linux&lt;/code&gt;. You’ll see what groups are for later, just remember to assign them now.&lt;/p&gt;
&lt;p&gt;Finally, start the service and enable it on boot.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; daemon-reload&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; enable&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-agent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; start&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-agent&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And there you go, your Linux server is reporting. If you’re running on RHEL, Alma, or Rocky, the principle is the same, just replace the APT repository with the YUM one and &lt;code&gt;apt-get install&lt;/code&gt; with &lt;code&gt;dnf install&lt;/code&gt;. The &lt;code&gt;WAZUH_MANAGER&lt;/code&gt; variable works the same way.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-2-enrolling-a-mac&quot;&gt;Step 2, enrolling a Mac&lt;/h2&gt;
&lt;p&gt;Macs get interesting because macOS has its own rules. Let’s start with the deployment, the twist comes right after.&lt;/p&gt;
&lt;p&gt;The Mac agent comes as a &lt;code&gt;.pkg&lt;/code&gt; package, and there are two versions, one for Apple Silicon and one for old Intel Macs. On a recent fleet, it’s Apple Silicon.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -O&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://packages.wazuh.com/4.x/macos/wazuh-agent-4.14.5-1.arm64.pkg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &quot;WAZUH_MANAGER=&apos;&amp;#x3C;IP_TAILSCALE_OF_THE_MANAGER&gt;&apos; &amp;#x26;&amp;#x26; WAZUH_AGENT_GROUP=&apos;macos&apos;&quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /tmp/wazuh_envs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; installer&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -pkg&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-agent-4.14.5-1.arm64.pkg&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -target&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The mechanism changes a bit in form but not in substance. On macOS, deployment variables don’t go in front of the command, they’re written to a temporary file, &lt;code&gt;/tmp/wazuh_envs&lt;/code&gt;, that the installer reads on the fly. The result is the same, the agent knows its manager and its group. For an Intel Mac, replace &lt;code&gt;arm64&lt;/code&gt; with &lt;code&gt;intel64&lt;/code&gt; in both lines that mention it.&lt;/p&gt;
&lt;p&gt;Then, start the agent.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; launchctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bootstrap&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; system&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /Library/LaunchDaemons/com.wazuh.agent.plist&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On macOS, the agent lives under &lt;code&gt;/Library/Ossec/&lt;/code&gt;, and its control binary is &lt;code&gt;/Library/Ossec/bin/wazuh-control&lt;/code&gt;, with the &lt;code&gt;start&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;, and &lt;code&gt;status&lt;/code&gt; verbs if you want to pilot it by hand.&lt;/p&gt;
&lt;h3 id=&quot;the-macos-landmine-tcc-and-full-disk-access&quot;&gt;The macOS landmine, TCC and full disk access&lt;/h3&gt;
&lt;p&gt;Now, the truth that most tutorials gloss over. On macOS, your agent will start, enroll, appear active in the dashboard, and yet remain &lt;strong&gt;half-blind&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The reason is &lt;strong&gt;TCC&lt;/strong&gt;, for &lt;strong&gt;Transparency, Consent and Control&lt;/strong&gt;, Apple’s permission system by usage. It filters access to sensitive folders, and it doesn’t cut any corners. The agent isn’t an application in Apple’s sense, it’s a package of binaries. Without explicit permission, it’s refused access to the zones TCC protects. Its file integrity monitoring turns on, but it can’t read what it can’t see.&lt;/p&gt;
&lt;p&gt;The workaround is to &lt;strong&gt;grant the agent full disk access&lt;/strong&gt;. On a managed fleet, that’s done properly with MDM, a configuration profile pushed by Jamf or equivalent, that declares the permission once and for all on all machines. On a single machine, you do it by hand in the privacy settings. That’s an extra step on top of Linux, and it’s specific to Apple, so keep that in mind before you’re surprised that the Mac reports less than the server.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-3-enrolling-a-windows-machine&quot;&gt;Step 3, enrolling a Windows machine&lt;/h2&gt;
&lt;p&gt;Windows, last one in. The agent installs via an MSI package, in silent mode, from a PowerShell console opened as an administrator.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;msiexec.exe&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; /&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;i.\wazuh&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;agent&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;4.14&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;1.&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;msi &lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;q WAZUH_MANAGER&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;&amp;#x3C;IP_TAILSCALE_OF_THE_MANAGER&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; WAZUH_AGENT_NAME&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;accounting-post&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; WAZUH_AGENT_GROUP&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;windows&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Same logic as everywhere, the manager, a readable name for the machine, and its group. The &lt;code&gt;WAZUH_AGENT_NAME&lt;/code&gt; is handy on Windows, where you’ll soon have ten machines that look the same, so it’s nice to give them names.&lt;/p&gt;
&lt;p&gt;Then, start the service.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;Start-Service&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; WazuhSvc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In CMD, that’s &lt;code&gt;NET START WazuhSvc&lt;/code&gt;, take your pick. The agent installs under &lt;code&gt;C:\Program Files (x86)\ossec-agent&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;What Windows brings specifically is &lt;strong&gt;reading Windows event logs&lt;/strong&gt;, the famous Security, System, and Application trio, where failed login attempts, privilege elevations, and account creations land. And the FIM can &lt;strong&gt;monitor the registry&lt;/strong&gt;, malware’s favorite playground for surviving reboots. Your Windows machine is no longer a black box.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-4-verifying-that-everythings-reporting&quot;&gt;Step 4, verifying that everything’s reporting&lt;/h2&gt;
&lt;p&gt;Three machines enrolled, time to make sure they’re talking to the manager. Back on the Wazuh server, one command.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /var/ossec/bin/agent_control&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It lists all your agents with their ID, name, and status. Four possible statuses, and you need to know how to read them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Active&lt;/strong&gt;, the agent is connected and reporting. That’s what you want to see everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pending&lt;/strong&gt;, it just enrolled and is waiting for its first full handshake. That’s temporary, give it a minute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disconnected&lt;/strong&gt;, it was connected and isn’t anymore. The manager considers an agent lost if it hasn’t given a sign of life in fifteen minutes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never connected&lt;/strong&gt;, it enrolled but never managed to report. That’s the classic symptom of a closed port or a machine outside the Tailnet.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-agents-list-wazuh-agents-parc-siem-souverain-3.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;List of enrolled agents and their connection status, viewed from the manager&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;The same table exists on the dashboard, prettier to the eye. The Agents view shows the count of Active, Disconnected, Pending, Never connected, and the details of each machine, its modules, its last activity. That’s your control room, now populated.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/capture-agents-dashboard-wazuh-agents-parc-siem-souverain-3.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Overview of agents in the Wazuh dashboard, count by status&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;And there’s the shift. Each active machine runs, on itself, exactly the modules your server was running on itself in episode 2. The CIS configuration audit. Vulnerability detection on its packages. File integrity monitoring. Log analysis. Except now, it’s not one machine, it’s your fleet, and everything converges on one screen.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;going-further-monitoring-a-specific-folder&quot;&gt;Going further, monitoring a specific folder&lt;/h2&gt;
&lt;p&gt;By default, the agent monitors sensitive system directories. But you’ve got a folder that matters more than the others, your client data, your accounting, a shared drive. You want to know, down to the second, if anyone touches it.&lt;/p&gt;
&lt;p&gt;That’s the &lt;strong&gt;FIM&lt;/strong&gt;’s job, &lt;strong&gt;File Integrity Monitoring&lt;/strong&gt;. And instead of editing each machine by hand, you use &lt;strong&gt;groups&lt;/strong&gt; that you assigned during enrollment. A group shares a configuration, pushed automatically by the manager to all its members. You write once, it applies everywhere.&lt;/p&gt;
&lt;p&gt;On the manager, edit the shared configuration file for the relevant group, for example &lt;code&gt;/var/ossec/etc/shared/linux/agent.conf&lt;/code&gt;, and declare the folder to monitor in the &lt;code&gt;&amp;#x3C;syscheck&gt;&lt;/code&gt; block.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;syscheck&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;directories&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; check_all&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;yes&quot;&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; realtime&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;&quot;yes&quot;&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;/srv/client-data&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;directories&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#22863A&quot;&gt;syscheck&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Two attributes to understand. &lt;code&gt;check_all=&quot;yes&quot;&lt;/code&gt; records everything that characterizes a file, its cryptographic hashes, its size, its owner, its permissions, its dates. Any change is spotted. &lt;code&gt;realtime=&quot;yes&quot;&lt;/code&gt; asks for &lt;strong&gt;real-time monitoring&lt;/strong&gt;, the alert comes at the moment of the change, without waiting for the next scan.&lt;/p&gt;
&lt;p&gt;A note of honesty on that real-time. It’s only available on &lt;strong&gt;Linux and Windows&lt;/strong&gt;. On macOS, the FIM falls back on &lt;strong&gt;scheduled scans&lt;/strong&gt;, periodic. A modification between two passes is only seen on the next pass. That’s not a bug, it’s a macOS limitation, but keep that in mind before you count on an instant alert on the Mac side. Another detail that trips people up, the folder must exist before you restart the agent, or it’s ignored.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;if-its-not-working&quot;&gt;If it’s not working&lt;/h2&gt;
&lt;p&gt;Deploying agents is simple when everything goes right, and it always has the same handful of causes when it goes wrong. Here are the real ones, in the order you’ll encounter them.&lt;/p&gt;
&lt;h3 id=&quot;problem-the-agent-stays-in-never-connected&quot;&gt;Problem, the agent stays in ‘Never connected’&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, in nine cases out of ten in our case, a network path issue. Either the manager’s ports 1514 and 1515 aren’t open on &lt;code&gt;tailscale0&lt;/code&gt;, or the machine isn’t in the Tailnet, or you gave the agent the VPS’s public IP instead of its Tailscale address.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, check those three. On the manager, &lt;code&gt;sudo ufw status&lt;/code&gt; should show your two new rules both marked &lt;code&gt;on tailscale0&lt;/code&gt;. On the endpoint, &lt;code&gt;tailscale status&lt;/code&gt; should confirm it’s in the mesh. And re-read the value of &lt;code&gt;WAZUH_MANAGER&lt;/code&gt;, it should point to the manager’s Tailscale address, not its public IP.&lt;/p&gt;
&lt;h3 id=&quot;problem-the-agent-goes-from-active-to-disconnected&quot;&gt;Problem, the agent goes from ‘Active’ to ‘Disconnected’&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, it was reporting, it’s not anymore. The manager cuts off after fifteen minutes without news. Often, the agent service has stopped, or the Tailscale link has dropped.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, check that the service is running. &lt;code&gt;sudo systemctl status wazuh-agent&lt;/code&gt; on Linux, &lt;code&gt;Start-Service WazuhSvc&lt;/code&gt; on Windows, &lt;code&gt;/Library/Ossec/bin/wazuh-control status&lt;/code&gt; on macOS. And take a look at the agent’s log, always in the same place depending on the platform, &lt;code&gt;/var/ossec/logs/ossec.log&lt;/code&gt; on Linux, &lt;code&gt;/Library/Ossec/logs/ossec.log&lt;/code&gt; on Mac, the installation folder on Windows.&lt;/p&gt;
&lt;h3 id=&quot;problem-the-mac-is-active-but-isnt-reporting-much&quot;&gt;Problem, the Mac is ‘Active’ but isn’t reporting much&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, the infamous TCC. The agent is running, but without full disk access, it’s blind on the zones macOS protects.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, grant the agent full disk access, by MDM on a managed fleet, by hand on a single machine in the privacy settings.&lt;/p&gt;
&lt;h3 id=&quot;problem-the-agents-are-active-but-the-dashboard-stays-empty&quot;&gt;Problem, the agents are ‘Active’ but the dashboard stays empty&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause&lt;/strong&gt;, that’s not an agent problem. If the machines are reporting but nothing appears in the interface, the culprit is downstream, between the manager and the indexer. Remember episode 2, &lt;strong&gt;Filebeat&lt;/strong&gt; pushes alerts to the indexer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;, diagnose on the server side, not on the agent side. Check that Filebeat is talking to the indexer and that the indexer is digesting. Don’t waste an hour reinstalling agents that are working perfectly.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-first-day-is-noisy-thats-normal&quot;&gt;The first day is noisy, that’s normal&lt;/h2&gt;
&lt;p&gt;One last word of honesty, because I’d rather you hear it from me before you figure it out on your own. The day you plug in ten machines at once, your dashboard is going to &lt;strong&gt;explode&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Each machine arrives with its configuration audit reporting dozens of deviations from the CIS baseline. Each FIM reports legitimate files that change as they’re used. At first, the noise drowns out the signal, and that’s disorienting.&lt;/p&gt;
&lt;p&gt;That’s not a bug. That’s the raw state of a SIEM you’ve just turned on in a real fleet. The work that follows, calibrating rules, filtering out false positives, adjusting thresholds so you’re only woken up when it matters, that’s human work, not magic software. We said it from the start of the series, the hard part isn’t the tech, it’s the tuning. That fine-tuning, that calibrated alerting, that’s episode 7’s payoff.&lt;/p&gt;
&lt;p&gt;For now, enjoy. Your SIEM isn’t looking at its own belly anymore, it’s seeing your network.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-the-impatient&quot;&gt;For the impatient&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What this article does.&lt;/strong&gt; You deploy Wazuh agents on your fleet, your Linux servers, Macs, and Windows machines. Each machine reports its logs, configuration audit, vulnerabilities, and file integrity to the manager. Everything goes through the Tailnet, never through the open internet. You verify the enrollment, extend file monitoring via groups, and weather the first day’s noise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concretely, the commands.&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On the manager, open ports 1514 and 1515 on &lt;code&gt;tailscale0&lt;/code&gt; only: &lt;code&gt;sudo ufw allow in on tailscale0 to any port 1514 proto tcp&lt;/code&gt;, then the same for &lt;code&gt;1515&lt;/code&gt;. Never globally.&lt;/li&gt;
&lt;li&gt;Prerequisite, every endpoint must be in the Tailnet (&lt;code&gt;tailscale up&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Linux: add the Wazuh repository, then &lt;code&gt;sudo WAZUH_MANAGER=&quot;&amp;#x3C;IP_TAILSCALE_OF_THE_MANAGER&gt;&quot; WAZUH_AGENT_GROUP=&quot;linux&quot; apt-get install wazuh-agent&lt;/code&gt;, then &lt;code&gt;systemctl enable --now wazuh-agent&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;curl -O&lt;/code&gt; the &lt;code&gt;.pkg&lt;/code&gt; arm64, write the variables in &lt;code&gt;/tmp/wazuh_envs&lt;/code&gt;, &lt;code&gt;sudo installer -pkg... -target /&lt;/code&gt;, &lt;code&gt;sudo launchctl bootstrap system /Library/LaunchDaemons/com.wazuh.agent.plist&lt;/code&gt;. Then grant the agent full disk access.&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;msiexec.exe /i.\wazuh-agent-4.14.5-1.msi /q WAZUH_MANAGER=&quot;&amp;#x3C;IP_TAILSCALE_OF_THE_MANAGER&gt;&quot; WAZUH_AGENT_GROUP=&quot;windows&quot;&lt;/code&gt;, then &lt;code&gt;Start-Service WazuhSvc&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Verify from the manager: &lt;code&gt;sudo /var/ossec/bin/agent_control -l&lt;/code&gt;, aim for ‘Active’ everywhere.&lt;/li&gt;
&lt;li&gt;Extend FIM via the group, in &lt;code&gt;/var/ossec/etc/shared/&amp;#x3C;group&gt;/agent.conf&lt;/code&gt;, &lt;code&gt;&amp;#x3C;syscheck&gt;&lt;/code&gt; block with &lt;code&gt;check_all=&quot;yes&quot; realtime=&quot;yes&quot;&lt;/code&gt; (real-time Linux and Windows only, not macOS).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;
&lt;p&gt;You started with a SIEM that only saw itself, and you end with a SIEM that sees your fleet.&lt;/p&gt;
&lt;p&gt;You &lt;strong&gt;opened the agent ports on the Tailnet only&lt;/strong&gt;, 1514 and 1515 on &lt;code&gt;tailscale0&lt;/code&gt;, never globally. You &lt;strong&gt;enrolled your three families of machines&lt;/strong&gt;, Linux in three commands, Macs managing TCC, Windows in silent MSI. You &lt;strong&gt;verified the reporting&lt;/strong&gt; with &lt;code&gt;agent_control -l&lt;/code&gt; and in the dashboard, and you &lt;strong&gt;extended file monitoring&lt;/strong&gt; on your sensitive folders via groups.&lt;/p&gt;
&lt;p&gt;Each machine you plug in is free on the license side, it’s 100% open source, no limit on agents. Where the American SaaS charges by log volume, by the number of machines, the more you see, the more you pay. With you, seeing more costs nothing.&lt;/p&gt;
&lt;p&gt;But you’re observing. You see attacks, you’re not blocking anything yet. In episode 4, you add the first active line of defense, &lt;strong&gt;CrowdSec&lt;/strong&gt;, the community network that blocks known attackers before they even knock on your door. Your SIEM starts to bite.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;series-recap&quot;&gt;Series recap&lt;/h2&gt;
&lt;p&gt;Seven episodes to build your sovereign security plumbing, brick by brick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;Episode 0, the bedrock of the series.&lt;/a&gt;&lt;/strong&gt; Why an SME needs a sovereign SIEM, NIS2, GDPR, and the cost of doing nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;Episode 1, the foundation.&lt;/a&gt;&lt;/strong&gt; The hardened VPS outside the CLOUD Act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/&quot;&gt;Episode 2, Wazuh all-in-one.&lt;/a&gt;&lt;/strong&gt; Manager, indexer, and dashboard on a single node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 3, agents everywhere.&lt;/strong&gt; Deploying Wazuh on your servers, Macs, and Windows machines. This one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;Episode 4, community network defense.&lt;/a&gt;&lt;/strong&gt; Blocking known attackers before they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;Episode 5, email filter.&lt;/a&gt;&lt;/strong&gt; Anti-spam and anti-phishing in front of your mail server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 6, Mac launch control.&lt;/strong&gt; Deciding which applications have the right to launch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 7, alerting and honest cost.&lt;/strong&gt; Calibrated notifications and honest financial breakdown against SaaS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>wazuh</category><category>securite</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-wazuh-agents-parc-siem-souverain-3.png" length="0" type="image/png"/></item><item><title>Wazuh: Your all-in-one, homegrown Splunk for the price of a VPS</title><link>https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/</guid><description>Install Wazuh (manager, indexer, dashboard) on a single node, harden passwords and dashboard in Tailnet-only, adjust JVM heap, initial dashboards without agents.</description><pubDate>Sat, 20 Jun 2026 13:13:52 GMT</pubDate><content:encoded>&lt;p&gt;In the previous episode, you set up an empty safe: a VPS on a Swiss host, hardened to the bone, SSH via key, firewall closed, administration behind Tailscale, encrypted backups off-site. A nice machine. But for now… it’s not watching anything!&lt;/p&gt;
&lt;p&gt;Today, we’re filling it up. We’re installing &lt;strong&gt;Wazuh&lt;/strong&gt;, the brain of the whole stack, on this single node. Manager, indexer, and dashboard, the three central components of a SIEM, on the same machine. It’s the all-in-one mode, and that’s exactly what a small business needs to start with.&lt;/p&gt;
&lt;p&gt;The promise of the series is in one sentence, set at the opening. &lt;strong&gt;The functional equivalent of a Splunk, for the price of a VPS.&lt;/strong&gt; By the end of this article, you’ll have a security console running, seeing your own machine already, and it won’t have cost you a single euro in licensing. Whereas the same perimeter with an American vendor would run from a few thousand to tens of thousands of dollars per year, depending on the size of your fleet, with your logs stored in a very unfavorable jurisdiction.&lt;/p&gt;
&lt;p&gt;This stack, I use every day. The commands that follow are the ones you’ll type yourself, in order, on the server from episode 1.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;three-components-one-machine&quot;&gt;Three components, one machine&lt;/h2&gt;
&lt;p&gt;Before installing, understand what you’re installing. A SIEM Wazuh isn’t a monolithic block, it’s three roles that pass the baton.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The manager&lt;/strong&gt; is the brain. It receives logs, runs the analysis engine, correlates events, applies rules, and raises alerts. It’s the one that decides that a sudden spike of failed login attempts at 3 AM deserves to wake you up.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The indexer&lt;/strong&gt; is the memory. It stores and indexes alerts so you can search, filter, and go back in time. It’s a fork of OpenSearch, the open-source search engine, which is itself a fork of Elasticsearch. Remember this detail, it’ll come back to bite us in the best possible way.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The dashboard&lt;/strong&gt; is the window. The web interface through which you read all this, accessible on port 443. It queries the manager for configuration and the indexer for data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A fourth player works in the shadows, &lt;strong&gt;Filebeat&lt;/strong&gt;, the pipe that pushes alerts from the manager to the indexer. You won’t touch it, but when something goes wrong, it’s often the first thing you look at.&lt;/p&gt;
&lt;p&gt;In an enterprise, these three components live on separate machines to handle the volume and maintain high availability. For a small business with up to a hundred machines being watched, it’s overkill. The all-in-one mode puts all three on the same server, and that’s more than enough to start with. The official documentation even sizes this mode for 1 to 100 agents.&lt;/p&gt;
&lt;p&gt;We’ll come back to the moment when all-in-one isn’t enough later on. But for now, one machine, and let’s go.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;installation-in-one-command&quot;&gt;Installation in one command&lt;/h2&gt;
&lt;p&gt;Wazuh offers two paths. The first, step-by-step, installs the indexer, then the manager, then the dashboard separately, editing the configuration files by hand. It’s educational, it’s long, and you don’t need it for a single node. The second is the official assistant, which does everything at once.&lt;/p&gt;
&lt;p&gt;We’re taking the assistant.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -sO&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://packages.wazuh.com/4.14/wazuh-install.sh&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bash./wazuh-install.sh&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -a&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s break it down. The &lt;code&gt;curl -sO&lt;/code&gt; downloads the installation script from the official Wazuh repository, branch &lt;code&gt;4.14&lt;/code&gt;. The &lt;code&gt;sudo bash./wazuh-install.sh -a&lt;/code&gt; runs it with admin rights, and the &lt;code&gt;-a&lt;/code&gt; flag means &lt;strong&gt;all-in-one&lt;/strong&gt;, all on one machine. This flag tells the assistant to install and configure the three components on this same machine, generate TLS certificates for secure communication between them, and create passwords.&lt;/p&gt;
&lt;p&gt;At the end, the assistant displays the admin password in the console. Note it down, it’s your first key to the kingdom. If you missed it while scrolling through the terminal, you can retrieve it properly with:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tar&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -O&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -xvf&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-install-files.tar&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-install-files/wazuh-passwords.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command extracts, without decompressing onto the disk, the file that lists all the passwords generated during installation. We’ll deal with these passwords in a moment, because passwords generated by a script are just a starting point, not a final destination.&lt;/p&gt;
&lt;p&gt;At the time of writing, the stable version is &lt;strong&gt;4.14.5&lt;/strong&gt;, released on April 23, 2026. The installation URL points to &lt;code&gt;4.14/&lt;/code&gt;, so you’re still getting the latest version of that branch. If a 4.15 has been released when you’re reading this, check the current branch on the &lt;a href=&quot;https://documentation.wazuh.com/current/release-notes/index-4x.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;release notes page&lt;/a&gt; before running the command.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-memory-trap-where-90-of-installs-fail&quot;&gt;The memory trap, where 90% of installs fail&lt;/h2&gt;
&lt;p&gt;If there’s one thing you should remember from this episode, it’s this. The number one cause of Wazuh installs that struggle, crash, or die after a few days is poorly configured memory on the indexer.&lt;/p&gt;
&lt;p&gt;Remember, the indexer is a fork of OpenSearch, which runs on the &lt;strong&gt;JVM&lt;/strong&gt;, the Java virtual machine. And the JVM reserves a fixed zone of memory for itself at startup, called the &lt;strong&gt;heap&lt;/strong&gt; (or the “heap space”). Too small, the indexer suffocates under the data. Too big, it takes up all the RAM and starves the manager, dashboard, and OS running alongside it on the same machine. That’s the whole point of the single-node setup, three big memory hogs sharing one envelope.&lt;/p&gt;
&lt;p&gt;The official rule is clear and simple. &lt;strong&gt;The heap is half of the machine’s RAM.&lt;/strong&gt; And both the minimum and maximum boundaries should be the same.&lt;/p&gt;
&lt;p&gt;Why the same? Because if you let the JVM resize its heap on the fly, it spends all its time reallocating memory instead of indexing your logs. By fixing the floor and ceiling at the same value, you’re telling it “here’s your sandbox, not a byte more or less, now get to work”.&lt;/p&gt;
&lt;p&gt;You set this in a file, &lt;code&gt;/etc/wazuh-indexer/jvm.options&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/wazuh-indexer/jvm.options&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Find the two lines &lt;code&gt;-Xms&lt;/code&gt; (the lower bound) and &lt;code&gt;-Xmx&lt;/code&gt; (the upper bound), and set them to half of your RAM. That’s why episode 1 had you aim for 12 GB of RAM, not 8. On a 12 GB machine, the heap takes up 6 GB, leaving 6 GB for everything else, the manager, dashboard, Filebeat, and the system. Plenty of room to breathe.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;-Xms6g&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;-Xmx6g&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then restart the indexer to apply the new value.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-indexer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you started with 8 GB to test, your heap value is &lt;code&gt;-Xms4g&lt;/code&gt; / &lt;code&gt;-Xmx4g&lt;/code&gt;, and you’re living on the edge with 4 GB left for everything else. It’s tight, but it works.&lt;/p&gt;
&lt;p&gt;One last detail for the curious. The “half of RAM” rule also has an absolute ceiling, around 32 GB of heap. Don’t worry about this for now, it’s a good general OpenSearch practice, not a Wazuh-specific limit, and at the scale of a small business, you’re nowhere near it. I’m just mentioning it so you’re not surprised if you run into it later while scaling up a bigger infrastructure.&lt;/p&gt;
&lt;p&gt;While we’re on the topic of memory, a related rule. &lt;strong&gt;The JVM should never swap.&lt;/strong&gt; If the system starts using the disk as additional memory for the indexer, performance tanks. On a properly sized VPS, with the heap set to half of RAM, you shouldn’t be swapping. But it’s the first thing to check when things start to slow down.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;locking-down-the-house&quot;&gt;Locking down the house&lt;/h2&gt;
&lt;p&gt;The installation gives you a functional console. It also gives you passwords generated by a script and a dashboard that, by default, wants to be accessible. Two things to take back under your control before you take your seat.&lt;/p&gt;
&lt;h3 id=&quot;change-all-the-default-passwords&quot;&gt;Change all the default passwords&lt;/h3&gt;
&lt;p&gt;The passwords generated during installation aren’t bad in and of themselves, but they’re sitting in a file on the server, and you didn’t create them. Good hygiene dictates that you regenerate everything with your own secrets. Wazuh comes with a tool for this, deposited by the assistant in the indexer.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; bash&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /usr/share/wazuh-indexer/plugins/opensearch-security/tools/wazuh-passwords-tool.sh&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -a&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -A&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -au&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -ap&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt;CURRENT_PASSWOR&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;-a&lt;/code&gt; flag targets all users, &lt;code&gt;-A&lt;/code&gt; applies the change, and the &lt;code&gt;-au&lt;/code&gt; / &lt;code&gt;-ap&lt;/code&gt; pair provides the current admin user and password. In all-in-one mode, the tool automatically propagates the new passwords to the relevant components. You don’t have to recopy them one by one.&lt;/p&gt;
&lt;p&gt;Your new passwords should meet a minimum complexity, &lt;strong&gt;8 to 64 characters, with at least one uppercase letter, one lowercase letter, one number, and one symbol&lt;/strong&gt; from &lt;code&gt;.*+?-&lt;/code&gt;. Generate them with your password manager, don’t make them up on the spot.&lt;/p&gt;
&lt;h3 id=&quot;certificates-already-there&quot;&gt;Certificates, already there&lt;/h3&gt;
&lt;p&gt;Good news, you don’t have to do anything on the internal encryption front. The &lt;code&gt;-a&lt;/code&gt; flag on the assistant generated a little certificate authority and deposited the certificates under &lt;code&gt;/etc/wazuh-indexer/certs/&lt;/code&gt; and so on. The three components are already talking to each other securely. It’s done, it’s clean, don’t touch it.&lt;/p&gt;
&lt;p&gt;The only visible effect is that when you first access the dashboard, your browser will show a security warning because the certificate is self-signed and not recognized by a public authority. That’s normal, and for a dashboard that won’t be exposed to the public, it’s perfectly acceptable. Click through the warning, and you’re in.&lt;/p&gt;
&lt;p&gt;A quick note to anticipate the temptation. You might want a “real” certificate, via Let’s Encrypt. &lt;strong&gt;Don’t do it here.&lt;/strong&gt; Let’s Encrypt validates your certificate by verifying that your server responds on the internet, which means you have to open a port to the world. That’s the exact opposite of what we’ve been building since episode 1.&lt;/p&gt;
&lt;p&gt;If the self-signed certificate really bugs you, Tailscale can emit a proper certificate for your node without any public exposure. But honestly, for a console that only you’ll be consulting, the self-signed certificate is good enough. We’re not going to punch a hole in the wall we just built to make a browser warning go away.&lt;/p&gt;
&lt;h3 id=&quot;the-dashboard-invisible-from-the-internet&quot;&gt;The dashboard, invisible from the internet&lt;/h3&gt;
&lt;p&gt;This is the most important security gesture of the episode, and it’s the one that separates a sovereign SIEM from one sitting on the curb. By default, nothing guarantees that your dashboard will stay private. The port 443 serving the interface should &lt;strong&gt;never&lt;/strong&gt; be accessible from the internet.&lt;/p&gt;
&lt;p&gt;Your security dashboards, they’re &lt;strong&gt;maps of your weaknesses&lt;/strong&gt;, exactly what an attacker dreams of seeing.&lt;/p&gt;
&lt;p&gt;The series’ rule, set in episode 1, is inflexible. &lt;strong&gt;No public services.&lt;/strong&gt; The dashboard lives behind Tailscale, accessible only to you, just like SSH did before it.&lt;/p&gt;
&lt;p&gt;Two locks, working together. First, we ask the dashboard to only listen on the Tailscale IP of the server, not on all interfaces. That’s set in its configuration file.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/wazuh-dashboard/opensearch_dashboards.yml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Find the &lt;code&gt;server.host&lt;/code&gt; line. If it’s set to &lt;code&gt;0.0.0.0&lt;/code&gt;, the dashboard is listening on all interfaces, including the public IP. That’s a no-no. Set it to the Tailscale IP of your server, the one you get with &lt;code&gt;tailscale ip -4&lt;/code&gt;, from episode 1.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;server.host: &quot;&amp;#x3C;YOUR_TAILSCALE_IP&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then restart the dashboard.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; wazuh-dashboard&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, the firewall, as a belt and braces. We’re following exactly the pattern from episode 1 for SSH, allowing port 443 only on the private network interface, never globally.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; on&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tailscale0&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; any&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 443&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; proto&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The pitfall to avoid is typing &lt;code&gt;sudo ufw allow 443/tcp&lt;/code&gt; on its own. That command opens the dashboard to the whole world. Ours only opens it on &lt;code&gt;tailscale0&lt;/code&gt;, your encrypted mesh. The difference is not cosmetic, one exposes your security console to internet scanners, the other makes it invisible.&lt;/p&gt;
&lt;p&gt;The result is a dashboard accessible only by a member of your private network. A scan of your public IP reveals nothing. In line with the sovereign promise, and in line with common sense.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-grand-tour&quot;&gt;The grand tour&lt;/h2&gt;
&lt;p&gt;Log in. From a machine on your Tailnet, open &lt;code&gt;https://&amp;#x3C;YOUR_TAILSCALE_IP&gt;&lt;/code&gt; in your browser. Certificate warning, click through. Login &lt;code&gt;admin&lt;/code&gt;, your new password. You’re in the console.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://macsouverain.com/content/images/2026/06/capture-03-dashboard-overview-wazuh-tout-en-un-siem-souverain-1.png&quot; alt=&quot;Wazuh dashboard overview&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This screenshot is from a production Wazuh instance already populated with several agents. On your fresh install, you’ll only see agent 000, the server watching itself.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And there’s a pleasant surprise, it’s not empty. You were expecting maybe an inert screen while you deploy agents. Not at all. In all-in-one mode, the server comes with a &lt;strong&gt;local agent&lt;/strong&gt;, with the ID 000, watching itself. Your machine is already under the eye of your own SIEM, before you’ve even touched the rest of your network.&lt;/p&gt;
&lt;p&gt;In practical terms, you’ve already got data and several modules running on this node.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SCA&lt;/strong&gt;, for &lt;strong&gt;Security Configuration Assessment&lt;/strong&gt;, is active by default, without any tuning, and it scans your machine against baseline security type CIS benchmarks. It tells you where your config deviates from best practices, a service too many, a permission too broad, a loose SSH setting. You’ll probably find, validated in black and white, the hardening decisions from episode 1.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vulnerability detection&lt;/strong&gt; is on by default, but not active. Wazuh inventories the packages installed on the machine and crosses them with known CVE databases. If one of your packages has a published vulnerability, it flags it, with the reference and severity. A note of honesty, unlike SCA and FIM, which run on their own, the local node scan doesn’t trigger on startup. You have to enable it in the &lt;code&gt;/var/ossec/etc/internal_options.conf&lt;/code&gt; file, set &lt;code&gt;vulnerability-detection.disable_scan_manager&lt;/code&gt; to &lt;code&gt;0&lt;/code&gt;, then restart the manager. Two minutes later, your own machine is scanned too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;File Integrity Monitoring&lt;/strong&gt;, or &lt;strong&gt;FIM&lt;/strong&gt;, is watching your sensitive files and alerting you if any of them change. A sudden change in a system file is often the first sign that you’ve got an unwanted guest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local log analysis&lt;/strong&gt;, digesting the machine’s logs and turning them into readable alerts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://macsouverain.com/content/images/2026/06/capture-04-sca-node-wazuh-tout-en-un-siem-souverain-1.png&quot; alt=&quot;SCA benchmark results on the local node, Ubuntu CIS benchmark&quot;&gt;&lt;/p&gt;
&lt;p&gt;And there are the compliance dashboards, ready to go. Wazuh ships with views tagged &lt;strong&gt;PCI DSS, HIPAA, GDPR, NIST 800-53, TSC&lt;/strong&gt;, with report generation. Each alert carries the compliance ID it touches, for example a &lt;code&gt;gdpr_IV_32&lt;/code&gt; tag that points to article 32 of the GDPR on security of processing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://macsouverain.com/content/images/2026/06/capture-05-gdpr-wazuh-tout-en-un-siem-souverain-1.png&quot; alt=&quot;GDPR compliance dashboard, alerts tagged by requirement&quot;&gt;&lt;/p&gt;
&lt;p&gt;A necessary honesty note on NIS2. Wazuh provides all the functional bricks that NIS2 demands, continuous monitoring, file integrity, vulnerability analysis, configuration control, reporting. But it doesn’t have a &lt;strong&gt;NIS2&lt;/strong&gt; compliance dashboard ready to click like it does for GDPR.&lt;/p&gt;
&lt;p&gt;To follow NIS2 finely, you’ll build your own views, leaning on the GDPR and NIST tags already present. Wazuh gives you the compliance toolkit, it doesn’t make you compliant all by itself. The calibration of rules, retention policy, incident response, that’s all human work. We called it out right from the opening, the hard part isn’t the tech, it’s the adjustment.&lt;/p&gt;
&lt;p&gt;For now, your SIEM is seeing itself. It’s watching its own machine, and that’s already precious for validating your hardening. The real jump is when it starts seeing the rest of your network. That’s episode 3, deploying agents, the moment when your SIEM starts really seeing your network.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;when-all-in-one-isnt-enough-anymore&quot;&gt;When all-in-one isn’t enough anymore&lt;/h2&gt;
&lt;p&gt;The single-node setup isn’t magic, and I’m not going to sell you the opposite. It has a ceiling, and it’s important to know where it is before you hit it.&lt;/p&gt;
&lt;p&gt;The metric that matters is &lt;strong&gt;EPS&lt;/strong&gt;, events per second that your machine can handle. A well-dimensioned node, around 16 GB of RAM and 8 vCPUs, can handle around 5,000 events per second. For a small business with up to 50 or 100 machines being watched, with normal log activity, you’re well below saturation. The all-in-one mode holds up just fine.&lt;/p&gt;
&lt;p&gt;The day you approach saturation, the symptom is unpleasant. When the ingestion queue saturates, Wazuh doesn’t slow down politely, it &lt;strong&gt;drops events&lt;/strong&gt; it can’t process fast enough. And an event dropped is an alert you’ll never see. A camera that stops recording during rush hour.&lt;/p&gt;
&lt;p&gt;When that happens, you switch to multi-node, manager on one side, indexer on the other, or even several of each. Detail against intuition but important, Wazuh &lt;strong&gt;scales better horizontally than vertically&lt;/strong&gt;. Two nodes with medium resources are better than one big node. That’s another project, outside this series, but you know now that the door exists.&lt;/p&gt;
&lt;p&gt;For a small business just starting out, remember this, all-in-one is perfect for starting, not designed for infinity. And there’s plenty of room between the two.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-it-would-have-cost-you-elsewhere&quot;&gt;What it would have cost you elsewhere&lt;/h2&gt;
&lt;p&gt;We’ve been teasing this figure since the series opened. Time to put it down, for this specific component.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wazuh’s licensing cost is zero.&lt;/strong&gt; It’s 100% open source, under GPLv2 license, and there’s no paid tier. No agent limit, no user limit, no log ingestion limit. Your only expense is the VPS you set up in episode 1, between 15 and 30 euros per month depending on the size, plus your installation and calibration time. And that’s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Splunk’s bill has a different face.&lt;/strong&gt; A warning first, Splunk doesn’t publish its prices officially, so everything that follows is an order of magnitude estimate based on secondary serious sources, not the official quote. With that reservation, the principle is simple, you pay by the gigabytes of logs ingested per day, counted in gigabytes per day.&lt;/p&gt;
&lt;p&gt;The challenge is to translate that into a real-world park size, because a price per gigabyte doesn’t mean anything until you know how many gigabytes a small business produces. Useful benchmark, with reasonable security logging, count around fifty megabytes of logs per workstation per day, so around one gigabyte per day for fifteen to twenty workstations. From there, we can put some numbers on it, licensing only, keeping Wazuh in the mirror.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;15 workstations&lt;/strong&gt;, around 1 GB of logs per day. Splunk, around 2,000 to 5,000 dollars per year. Wazuh, the VPS, 180 to 360 euros per year. That’s the point.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;50 workstations&lt;/strong&gt;, around 4 to 5 GB per day. Splunk, around 8,000 to 12,500 dollars per year. Wazuh, the same VPS, to the euro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;100 workstations&lt;/strong&gt;, around 8 to 10 GB per day. Splunk, around 15,000 to 25,000 dollars per year. Wazuh, still the same VPS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beyond a hundred workstations surveilled, we’re in another world on both sides, multi-node clusters on Wazuh, paliers in the tens or hundreds of thousands of dollars per year on Splunk. That’s another scale, outside the perimeter of this series thought for the small business.&lt;/p&gt;
&lt;p&gt;The difference isn’t just about money. It’s about &lt;strong&gt;trajectory&lt;/strong&gt;. With Wazuh, your infrastructure cost is flat, you ingest more logs, your VPS handles it, your bill doesn’t change. With Splunk, the meter spins with every additional gigabyte. The more your SIEM sees wide and deep, the more it costs you dear, whereas seeing wide and deep is literally its job.&lt;/p&gt;
&lt;p&gt;And there’s the question that started this series, who controls the data. Your logs, they’re the complete fingerprints of your network. With Wazuh, they’re on your machine, in Switzerland, under your control.&lt;/p&gt;
&lt;p&gt;With the SaaS American vendor, they’re subject to the CLOUD Act. The price, that’s one thing. Who holds the data, that’s the thing that matters the most.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;
&lt;p&gt;You started with an empty safe, and you’re leaving with a security console running.&lt;/p&gt;
&lt;p&gt;You installed &lt;strong&gt;Wazuh’s three components in one command&lt;/strong&gt;, manager, indexer, and dashboard on your single node. You set the &lt;strong&gt;memory trap that breaks most installs&lt;/strong&gt;, the indexer’s heap to half of RAM, with identical lower and upper bounds, which justifies the 12 GB recommended in episode 1.&lt;/p&gt;
&lt;p&gt;You took back control of security, regenerated passwords, certificates already in place, and especially the dashboard locked down to the Tailnet, invisible from the internet. And you took your first tour of the owner’s deck, SCA, vulnerabilities, file integrity monitoring, local log analysis, compliance dashboards ready to go, all on your own machine, without deploying any remote agents yet.&lt;/p&gt;
&lt;p&gt;All for zero euros in licensing, where the same perimeter with an American vendor would run from a few thousand to tens of thousands of dollars per year, depending on the size of your fleet, with your logs stored in a very unfavorable jurisdiction.&lt;/p&gt;
&lt;p&gt;But your SIEM only sees itself so far. It’s watching its own machine, and that’s already precious for validating your hardening. The real jump is when it starts seeing the rest of your network. That’s episode 3, deploying agents, the moment when your SIEM starts really seeing your network.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;series-reminder&quot;&gt;Series reminder&lt;/h2&gt;
&lt;p&gt;Seven episodes to build your sovereign security plumbing, brick by brick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;Episode 0, the bedrock of the series.&lt;/a&gt;&lt;/strong&gt; Why an SME needs a sovereign SIEM, NIS2, GDPR, and the cost of doing nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;Episode 1, the foundation.&lt;/a&gt;&lt;/strong&gt; The VPS hardened outside the CLOUD Act.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 2, Wazuh all-in-one.&lt;/strong&gt; Manager, indexer, and dashboard on a single node. You’ve just read it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/&quot;&gt;Episode 3, agents everywhere.&lt;/a&gt;&lt;/strong&gt; Deploying on your servers, Macs, and Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;Episode 4, community network defense.&lt;/a&gt;&lt;/strong&gt; Blocking known attackers before they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;Episode 5, mail filter.&lt;/a&gt;&lt;/strong&gt; Anti-spam and anti-phishing in front of your mail server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 6, Mac execution control.&lt;/strong&gt; Deciding which apps have the right to launch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 7, alerting and total cost.&lt;/strong&gt; Calibrated notifications and honest financial breakdown against SaaS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Unknown technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>wazuh</category><category>securite</category><category>tutoriels</category><enclosure url="https://macsouverain.com/content/images/2026/06/feature-wazuh-tout-en-un-siem-souverain-1.png" length="0" type="image/png"/></item><item><title>Your AI can be turned off by the US, build your own</title><link>https://macsouverain.com/en/ton-ia-peut-etre-eteinte-monte-la-tienne/</link><guid isPermaLink="true">https://macsouverain.com/en/ton-ia-peut-etre-eteinte-monte-la-tienne/</guid><description>Access to cutting-edge AI models is becoming an American geopolitical lever. Here&apos;s what&apos;s running locally on your Mac, with 16 to 32GB RAM, and why that&apos;s your real foundation.</description><pubDate>Wed, 17 Jun 2026 13:40:54 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Update, July 2026.&lt;/strong&gt; Fable 5 is accessible again, the directive has been lifted. That doesn’t change the thesis, quite the opposite. Cut off yesterday, restored today, by a decision you don’t control: that’s exactly what depending on a foreign dictate looks like. Your local model, on the other hand, doesn’t need anyone’s permission.&lt;/p&gt;
&lt;p&gt;You open your Mac one morning. Your usual AI tool refuses to respond. Not a bug, not a server crash. A polite message explains that access is no longer available in your region. You haven’t done anything wrong. You’re paying your subscription. You’re perfectly in order. But you’re on the wrong side of a border, and someone in Washington has decided that’s enough.&lt;/p&gt;
&lt;p&gt;This isn’t science fiction anymore. In June 2026, the US government ordered Anthropic, through an export control directive, to suspend access to its two most advanced models, Mythos 5 and Fable 5, for all foreign nationals, worldwide, including its own employees.&lt;/p&gt;
&lt;p&gt;Anthropic had to shut them down for all its clients and is contesting the decision. Access to AI intelligence is becoming what oil, chips, and the dollar already are, &lt;strong&gt;a lever of power in the hands of a state&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And you’re at the end of the pipe that just got turned off.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-directive-as-a-revealer&quot;&gt;The directive as a revealer&lt;/h2&gt;
&lt;p&gt;The first reaction, when you read this, is to think geopolitics. Big maneuvers, blocs that clash, topics for editorialists. Except the cut-off doesn’t happen to a bloc. It happens to you, on your machine, on a Tuesday morning.&lt;/p&gt;
&lt;p&gt;The asymmetry is total. On one side, a supplier under US jurisdiction, subject to its administration’s directives, free to change its access terms overnight. On the other side, you, who’ve built part of your workflow around this tool. You have no say in the decision. You’re not even the target. You’re a collateral damage of a policy that only concerns you by your nationality or geolocation.&lt;/p&gt;
&lt;p&gt;That’s what the directive finally makes visible: &lt;strong&gt;access to a remote model has never been a technical given, it’s a political authorization&lt;/strong&gt;. As long as nothing changes, the authorization is tacit, invisible, comfortable. You end up confusing it with a right. The day it’s withdrawn, you discover you didn’t own anything. You were renting.&lt;/p&gt;
&lt;p&gt;Ask yourself one question. If access is cut off tomorrow, what keeps running? If the answer is “nothing,” you don’t have a work tool. You have a dependency.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-depending-on-a-remote-model-really-costs&quot;&gt;What depending on a remote model really costs&lt;/h2&gt;
&lt;p&gt;The remote model is great. That’s true, and acknowledging it doesn’t take away from the rest. It’s more powerful than anything you’ll run locally anytime soon. It updates without you lifting a finger. It doesn’t ask for RAM, installation, or maintenance. For many uses, it’s the most effective tool on the market.&lt;/p&gt;
&lt;p&gt;But comfort has a price, and that price doesn’t show up on the bill.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Every request you send to a remote model, it’s your text leaving your machine&lt;/strong&gt;. Your drafts, notes, documents, ongoing thoughts. They pass through infrastructure you don’t control, in a jurisdiction that isn’t yours, subject to rules you don’t vote for. End-to-end encryption protects the pipe, not the destination. At arrival, your text is read in plain sight by the machine that responds.&lt;/p&gt;
&lt;p&gt;Then there’s the continuity dependency, the one no one talks about until it bites. Your access depends on a subscription, a pricing policy, a business decision, and now a state directive. Four levers you don’t control, plus a fourth that a foreign government controls, and that’s the most dangerous one. The day one of them flips, your workflow stops. Not gradually. All at once.&lt;/p&gt;
&lt;p&gt;That’s exactly the trap we warned about for cloud storage. Your files on someone else’s server are convenient until the account is suspended. Remote AI is the same deal, applied to how you think and produce.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/cloud-ordinateur-quelquun-dautre/&quot;&gt;The cloud, it’s someone else’s computer&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-sovereignty-reflex-the-map-of-local-models&quot;&gt;The sovereignty reflex, the map of local models&lt;/h2&gt;
&lt;p&gt;Here’s the good news, and it’s more solid than you think. Running an AI model capable of directly on your Mac is no longer a tinkerer’s fantasy. Apple Silicon’s unified memory, the very thing Apple sells for app fluidity, is precisely what makes local inference possible on a consumer machine.&lt;/p&gt;
&lt;p&gt;Before the map, a budget rule, because everything starts there.&lt;/p&gt;
&lt;p&gt;First, total RAM isn’t available RAM. macOS and your applications consume some of it permanently. And behind the “Mac” label, there are two very different machines.&lt;/p&gt;
&lt;p&gt;The entry-level Mac mini comes with &lt;strong&gt;16 GB of unified RAM&lt;/strong&gt;. Subtract 6 to 8 GB for the system and your apps, and you’re left with 8 to 10 GB actually usable for AI, and that’s with closing what’s running.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;32 GB&lt;/strong&gt; machine follows the same principle, but leaves you around 20 GB of headroom. In this usable budget, two things need to fit at the same time: the &lt;strong&gt;weight&lt;/strong&gt; of the model (the model itself) and the &lt;strong&gt;context&lt;/strong&gt; (what you feed it and what it generates).&lt;/p&gt;
&lt;p&gt;The practical rule: never aim for a model that fills up the usable budget. On 16 GB, that means a 4 to 8 GB model once quantized. On 32 GB, you can go up to 14, or even 20 GB. If you overflow, the machine falls back on the disk as memory, and then it lags, or it crashes completely.&lt;/p&gt;
&lt;p&gt;So here’s the map of what runs, from most accessible to most demanding.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What a 16 GB Mac already runs&lt;/strong&gt;. That’s the accessible baseline, and it covers most of your daily volume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For light work&lt;/strong&gt;, sorting emails, classifying notes, extracting or anonymizing text, tiny 2 to 3 GB models like Llama 3.2 3B, Gemma 3 4B, and Phi-4-mini are more than enough.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For general work&lt;/strong&gt;, summarizing a document, drafting a memo, managing your correspondence, querying your own note base, a 7 to 8 billion parameter model around 5 GB does the job: Qwen2.5 7B, under Apache 2.0 license, or Llama 3.1 8B. That’s the workhorse of a 16 GB machine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To read a scanned PDF or an invoice&lt;/strong&gt; without sending it elsewhere, Qwen2.5-VL 7B (around 5 GB) or Llama 3.2 Vision 11B also work. The ceiling is a 12 to 14 billion parameter model in tight quantization, around 8 to 9 GB, like Qwen2.5 14B: it fits, but with everything else closed and a short context.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On these repetitive and well-defined tasks, local doesn’t just do the job, it does it better&lt;/strong&gt;: zero network latency, zero requests billed, and your data doesn’t leave your machine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What 32 GB unlocks&lt;/strong&gt;. The jump to 32 GB isn’t a luxury, it’s what opens the next category.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For sustained writing and long document analysis&lt;/strong&gt;, Mistral Small 3, a 24 billion parameter model under Apache 2.0 license, fits around 14 GB in its quantized version. Gemma 3 27B runs around 16 GB.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For multi-step reasoning&lt;/strong&gt;, 32 billion parameter models fit with some squeezing: QwQ 32B, DeepSeek-R1-distill 32B, or Qwen2.5 32B occupy 19 to 20 GB in Q4 quantization. Context becomes tight, and on the most demanding reasoning tasks, the gap with a remote model remains real. Local does a lot. It doesn’t do everything yet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On the coding side&lt;/strong&gt;, Qwen2.5-Coder 32B nearly matches remote models for everyday programming: completing, explaining, debugging, refactoring.&lt;/p&gt;
&lt;p&gt;And what doesn’t fit on 16 or 32 GB. Very large models like Llama 3.3 70B, or 405 billion parameter models like DeepSeek-R1 in its full version, require 64 GB of RAM or more. Don’t kid yourself otherwise.&lt;/p&gt;
&lt;p&gt;Now, sovereignty isn’t just about raw power. Two other axes matter.&lt;/p&gt;
&lt;p&gt;The first is provenance. Mistral is French and European, making it the natural sovereign choice for an European reader. Llama, Gemma, and Phi are American. Qwen and DeepSeek are Chinese.&lt;/p&gt;
&lt;p&gt;A caveat here: since the models run locally, &lt;strong&gt;no data leaves your machine, regardless of the model’s origin&lt;/strong&gt;. Provenance doesn’t matter for data exfiltration, it matters for trust, audibility, and not putting all your eggs in one geopolitical basket.&lt;/p&gt;
&lt;p&gt;Running a Chinese model locally doesn’t send anything to Beijing. Choosing an European model is about arbitrating the ecosystem you support and what you can inspect, not about a risk of leakage.&lt;/p&gt;
&lt;p&gt;The second axis is licensing. Not all “open” models are equal legally. Mistral Small 3 and several Qwen models are under Apache 2.0, a permissive license that lets you do anything, including professional use.&lt;/p&gt;
&lt;p&gt;The community license for Llama is usable, but comes with restrictions. For a sovereign baseline, the free license isn’t a legal detail, it’s the guarantee that no one can change the rules under your feet.&lt;/p&gt;
&lt;p&gt;My pick for sovereignty by default, in line with all this. On a 16 GB machine, a 7-8B model covers most of your daily volume: Qwen2.5 7B (Apache 2.0) as first choice, or Llama 3.1 8B. On a 32 GB machine, you upgrade to &lt;strong&gt;Mistral Small 3&lt;/strong&gt; as your daily workhorse (European, Apache 2.0), backed up by a 32B reasoning model like QwQ or DeepSeek-R1-distill, which you bring out for tougher tasks. To run them, three tools are enough: Ollama and LM Studio for simplicity, MLX for those who want to maximize Apple Silicon.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/38-apple-intelligence-ce-qui-sort-de-ton-mac/&quot;&gt;Apple Intelligence, what really leaves your Mac&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-realistic-threshold-what-local-does-well&quot;&gt;The realistic threshold, what local does well&lt;/h2&gt;
&lt;p&gt;It’s not about slamming the door on the cloud for fun. It’s about knowing what should live on your machine, and what can, eventually, leave.&lt;/p&gt;
&lt;p&gt;Local does very well with everything that’s repetitive, sensitive, or simply daily. Sorting, summarizing, writing, correcting, classifying, anonymizing, reading your own documents. For this part of your work, which is most of the volume, you don’t need anyone. It runs without a connection, without a fee per request, without a line of your text leaving your machine.&lt;/p&gt;
&lt;p&gt;The cloud remains the winner for the top of the pyramid, the most complex reasoning where every point of performance counts. But a supplement is still a supplement. &lt;strong&gt;You don’t lean your daily work on a tap someone else can turn off&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The right stance isn’t “all local” or “all cloud”. It’s &lt;strong&gt;partitioning&lt;/strong&gt;. Local becomes your base, what runs by default, what your daily work and anything touching sensitive data relies on.&lt;/p&gt;
&lt;p&gt;The cloud becomes a conscious supplement, something you use for a specific purpose, knowing what you’re sending and never sending what shouldn’t leave. The day they cut off your cloud access, you lose a supplement. You don’t lose your base.&lt;/p&gt;
&lt;p&gt;That’s where the argument loops back. If you’re reading this on a recent Mac, you’re already on Apple Silicon. The unified memory that runs these models, you’ve already paid for it. This shift to local doesn’t wait for an investment, or a new machine, or an engineer’s skill. It waits for a decision.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sovereignty in AI isn’t measured by the power of the model you rent. It’s measured by what keeps running the morning they cut off your access&lt;/strong&gt;. The remote model is comfort, and power when a task demands it.&lt;/p&gt;
&lt;p&gt;Your AI base is what lives on your machine. Install one. Run it once, on a real task, to see. You’ll know, concretely, what you have left when they turn off the tap.&lt;/p&gt;
&lt;p&gt;The most down-to-earth question left: how do you install all this, concretely? That’s the subject of the next article, step by step, from download to first prompt, without indigestible command lines.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read soon: Installing and running your first local model on Mac, the step-by-step guide&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The trigger, US directive and Anthropic&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Anthropic, Statement on the US government directive to suspend access to Fable 5 and Mythos 5&lt;/a&gt;, Anthropic’s official statement, applying the export order while contesting it (12 June 2026).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://techcrunch.com/2026/06/12/anthropics-safety-warnings-may-have-just-backfired-the-government-has-pulled-the-plug-on-its-most-powerful-ai/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;TechCrunch, Anthropic’s safety warnings may have just backfired&lt;/a&gt;, the global shutdown of Fable 5 and Mythos 5 (12 June 2026).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.theregister.com/ai-and-ml/2026/06/15/us-clampdown-on-anthropic-models-sends-eu-sovereignty-surge-into-overdrive/5255487&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;The Register, US clampdown on Anthropic models sends EU sovereignty surge into overdrive&lt;/a&gt;, how the cut-off accelerates Europe’s sovereignty shift, the very angle of this article (15 June 2026).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Open-weight models cited&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mistral.ai/news/mistral-small-3&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Mistral AI, Mistral Small 3&lt;/a&gt;, the 24B Apache 2.0 European pick (30 January 2025).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://qwenlm.github.io/blog/qwen2.5/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Qwen, Qwen2.5&lt;/a&gt;, the Qwen2.5 family, 7B variants under Apache 2.0.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.llama.com/llama3_1/license/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Meta, Llama 3.1 Community License&lt;/a&gt;, permissive license with restrictions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Local execution on Apple Silicon&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ollama.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Ollama&lt;/a&gt;, running models locally, data that doesn’t leave your machine.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lmstudio.ai&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;LM Studio&lt;/a&gt;, desktop app for running LLM privately, supports MLX on Mac.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ml-explore/mlx&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple, MLX&lt;/a&gt;, the framework optimized for Apple Silicon’s unified memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ia</category><category>souverainete</category><category>modele-local</category><category>macos</category><category>apple-silicon</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-ton-ia-peut-etre-eteinte-monte-la-tienne.png" length="0" type="image/png"/></item><item><title>Your sovereign SIEM&apos;s foundation, a hardened VPS outside the CLOUD Act</title><link>https://macsouverain.com/en/vps-durci-socle-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/vps-durci-socle-siem-souverain/</guid><description>A European VPS, Cloud Act-proof, hardened SSH, reduced attack surface via Tailscale, off-site encrypted backups.</description><pubDate>Fri, 12 Jun 2026 06:11:45 GMT</pubDate><content:encoded>&lt;p&gt;Before detecting anything, &lt;strong&gt;you need a place to install your SIEM&lt;/strong&gt;. A machine. Not just any machine, not configured any way.&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;the opening episode&lt;/a&gt;, we established why. &lt;strong&gt;GDPR already requires you to detect and notify a breach within 72 hours&lt;/strong&gt;, NIS2 has widened the net, and it won’t stop there. American SaaS does the job but hands over your most sensitive logs on demand to the US government. It’s all very unfavorable to your interests, you’ll agree.&lt;/p&gt;
&lt;p&gt;So, how to resolve this dilemma? The simple answer is, &lt;strong&gt;you build your own SIEM, GDPR and NIS2 compliant, on infrastructure you control entirely&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This article is the first brick. The foundation.&lt;/p&gt;
&lt;p&gt;The rest of the series will stack on top of it. Wazuh in episode 2, agents in episode 3, network defense, email filter, execution control. If the foundation is shaky, the whole stack is shaky. A SIEM that monitors your park but runs on a machine itself compromised, it’s like a surveillance camera plugged into an open door.&lt;/p&gt;
&lt;p&gt;The stack I recommend, I use daily. I’ll show you how to build your foundation, in order, with real commands. You can reproduce it today.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;choose-the-hoster-jurisdiction-first&quot;&gt;Choose the hoster, jurisdiction first&lt;/h2&gt;
&lt;p&gt;The first decision, and the most structuring one. &lt;strong&gt;Where your machine will live&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The temptation is to go for the cheapest or most well-known. AWS, Google Cloud, Azure. They’re excellent technically. But they’re all American nationality, and thus subject to the CLOUD Act, that wonderful 2018 law that allows US authorities to seize data from an American provider, wherever it’s stored in the world, including European datacenters.&lt;/p&gt;
&lt;p&gt;Storing your security logs there is exactly the problem we’re trying to solve. So, what we’re looking for is a hoster whose headquarters, servers, and capital are not subject to this US exception.&lt;/p&gt;
&lt;p&gt;Three criteria to really consider.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The jurisdiction of the headquarters&lt;/strong&gt;. An European company without an American parent company is not subject to the CLOUD Act. Switzerland, Germany, France, etc. The nuance is, a hoster with an entity in the US exposes resources hosted in that entity to the CLOUD Act. The headquarters alone isn’t enough, you need to look where your data physically lives.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The location of the datacenters&lt;/strong&gt;. Your logs need to stay on European servers, period. No transatlantic replication “for your availability”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Price, last&lt;/strong&gt;. A VPS to start a SIEM for an SME costs between 5 and 25 euros per month. At this level, the price difference between sovereign operators is marginal. You don’t choose your security hoster based on cents.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In practice, two names come up when crossing these criteria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.infomaniak.com/fr/hebergement/vps-cloud&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Infomaniak&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;Swiss hoster&lt;/strong&gt; based in Geneva, owned 100% by its founders and employees, without external investment funds. Servers exclusively in Switzerland, under nLPD, the Swiss federal law on data protection entered into force in September 2023, aligned with GDPR and recognized by the European Commission’s adequacy decision.&lt;/p&gt;
&lt;p&gt;No US subsidiary, not subject to the CLOUD Act by design, not part of the 5-eyes, therefore no extended cooperation with US intelligence. In Switzerland, all communication requests must go through justice, one of the most protective jurisdictions in the world.&lt;/p&gt;
&lt;p&gt;Their datacenters are certified ISO 27001 and ISO 50001. It’s the operator I use, on their VPS Cloud range, but the entry-level VPS Lite can suffice to start.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.hetzner.com/cloud/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Hetzner&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;German family-owned hoster&lt;/strong&gt; founded in 1997, unbeatable performance/price ratio in Europe, with an ARM cloud range at 4.49 euros HT per month, around 5.40 euros TTC, at the time of writing. Excellent choice, with one condition. Hetzner opened datacenters in the US in 2021, then in Singapore in 2023. You need to provision your machine exclusively on their European sites, Falkenstein, Nuremberg, or Helsinki, to stay outside the CLOUD Act.&lt;/p&gt;
&lt;p&gt;Two honest caveats in addition. Hetzner’s interface and support are only in English and German, and Hetzner sometimes suspends accounts deemed risky, without warning. Nothing blocking for a legitimate SIEM use, but good to know.&lt;/p&gt;
&lt;p&gt;For this guide, I’m going with Infomaniak. The logic is the same at Hetzner, just the interface names change.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read soon: Choosing your sovereign hoster, the complete comparison&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;size-the-machine-not-too-much-not-too-little&quot;&gt;Size the machine, not too much, not too little&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://documentation.wazuh.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Wazuh&lt;/a&gt;, which we’ll install in episode 2, isn’t lightweight. It comes with a manager, an indexer, and a dashboard. The indexer, in particular, loves RAM.&lt;/p&gt;
&lt;p&gt;For an SME with up to fifty machines to monitor, the right starting point is three numbers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4 vCPU&lt;/strong&gt;, to absorb indexing and rule correlations without saturation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8 Go of RAM&lt;/strong&gt;, the bare minimum for the Wazuh indexer. Below that, it struggles or stops. &lt;strong&gt;I recommend 12 Go&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;100 to 250 Go of SSD&lt;/strong&gt;, depending on the log retention you want. The more months of history you keep, the more space you’ll need. NIS2 and GDPR think in months, plan ahead.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A VPS of this caliber runs around 15 to 30 euros per month with a sovereign operator. You can start smaller to test, but don’t go below 8 Go of RAM if you plan to run Wazuh on it for real.&lt;/p&gt;
&lt;p&gt;For the system, choose a Linux distribution with long-term support. &lt;strong&gt;&lt;a href=&quot;https://ubuntu.com/server&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Ubuntu Server LTS&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href=&quot;https://www.debian.org/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Debian stable&lt;/a&gt;&lt;/strong&gt;. Both are well-documented, supported for years, and are what the Wazuh community tests first. I use Ubuntu Server LTS, that’s what I’ll use in the following commands.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-first-contact-and-the-first-hardening&quot;&gt;The first contact, and the first hardening&lt;/h2&gt;
&lt;p&gt;You’ve just ordered your machine. The hoster sends you an IP address, a &lt;code&gt;root&lt;/code&gt; ID, and a password. This is the most exposed moment in the entire life of the server, a &lt;code&gt;root&lt;/code&gt; accessible via password on a public IP is exactly what bots scan all the time.&lt;/p&gt;
&lt;p&gt;A precision before diving in. A server is administered via the command line, no graphical interface or mouse, the Terminal is your only cockpit. Each command in this guide is short and explained line by line.&lt;/p&gt;
&lt;p&gt;The first connection session serves to close this door. In order.&lt;/p&gt;
&lt;h3 id=&quot;create-a-non-root-user&quot;&gt;Create a non-root user&lt;/h3&gt;
&lt;p&gt;Working as &lt;code&gt;root&lt;/code&gt; daily is like driving without a seatbelt. The slightest command error executes with full privileges. We create a dedicated user, who can elevate their privileges when necessary via &lt;code&gt;sudo&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;adduser&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; mack&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;usermod&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -aG&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; mack&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first &lt;code&gt;adduser&lt;/code&gt; creates the account and asks for a password. The second adds the user to the &lt;code&gt;sudo&lt;/code&gt; group, allowing them to execute admin commands by prefixing them with &lt;code&gt;sudo&lt;/code&gt;. From now on, log in with this account, never as &lt;code&gt;root&lt;/code&gt; directly.&lt;/p&gt;
&lt;h3 id=&quot;switch-to-key-based-authentication&quot;&gt;Switch to key-based authentication&lt;/h3&gt;
&lt;p&gt;A password can be guessed, forced with a dictionary, stolen. A cryptographic key, no. We generate a key pair on your local machine, install the public part on the server, and disable password-based authentication completely.&lt;/p&gt;
&lt;p&gt;On your Mac, in the Terminal:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;ssh-keygen&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ed25519&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -C&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &quot;your-comment&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;ssh-copy-id&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; mack@IP_OF_THE_SERVER&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first command generates the key pair, in Ed25519, the modern, short, and solid algorithm. The second copies your public key to the server. Then test that you can log in without a password, &lt;code&gt;ssh mack@IP_OF_THE_SERVER&lt;/code&gt;. If it works, we can cut off the rest.&lt;/p&gt;
&lt;h3 id=&quot;lock-down-ssh&quot;&gt;Lock down SSH&lt;/h3&gt;
&lt;p&gt;This is where the attack surface really closes. We edit the SSH daemon’s configuration.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; nano&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Three lines to set, these are the three that matter.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PermitRootLogin no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PasswordAuthentication no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PubkeyAuthentication yes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;PermitRootLogin no&lt;/code&gt; forbids direct &lt;code&gt;root&lt;/code&gt; logins. &lt;code&gt;PasswordAuthentication no&lt;/code&gt; disables passwords, only your key opens the door now. &lt;code&gt;PubkeyAuthentication yes&lt;/code&gt; confirms that we accept keys.&lt;/p&gt;
&lt;p&gt;Keep your current session open, restart the service, then test a new connection in a second window. An SSH config error, and you’re locked out of your own machine.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; systemctl&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; restart&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ssh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A known trap with cloud images, Ubuntu often leaves a file &lt;code&gt;/etc/ssh/sshd_config.d/50-cloud-init.conf&lt;/code&gt; containing &lt;code&gt;PasswordAuthentication yes&lt;/code&gt;, which overrides your configuration. Check the actual applied value with &lt;code&gt;sudo sshd -T | grep -i passwordauthentication&lt;/code&gt;, and if it comes back as &lt;code&gt;yes&lt;/code&gt;, fix this file too.&lt;/p&gt;
&lt;p&gt;Three commands, three config lines. You’ve just eliminated almost all automated attacks that target SSH. The bots that try &lt;code&gt;root&lt;/code&gt; via password are now hitting a wall.&lt;/p&gt;
&lt;h3 id=&quot;enable-automatic-security-updates&quot;&gt;Enable automatic security updates&lt;/h3&gt;
&lt;p&gt;A server that hasn’t been patched is a vulnerable server, and no one connects every morning to launch updates manually. We automate security patches.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unattended-upgrades&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; dpkg-reconfigure&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --priority=low&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; unattended-upgrades&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;a href=&quot;https://wiki.debian.org/UnattendedUpgrades&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;unattended-upgrades&lt;/code&gt;&lt;/a&gt; package automatically installs security updates published for your distribution, without touching the rest. Your known vulnerabilities close automatically, while you sleep.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-minimal-attack-surface-the-real-sovereign-goal&quot;&gt;The minimal attack surface, the real sovereign goal&lt;/h2&gt;
&lt;p&gt;The SSH hardening, that’s the basics. The level jump is here.&lt;/p&gt;
&lt;p&gt;The guiding principle is one sentence. &lt;strong&gt;A port that doesn’t listen can’t be attacked&lt;/strong&gt;. Each service exposed on a public IP is a door, and each door is a target. Maximum security isn’t the best lock on each door, it’s not having a door at all.&lt;/p&gt;
&lt;p&gt;That’s exactly the logic we saw for the &lt;a href=&quot;https://macsouverain.com/en/apple-silicon-et-securite-ce-que-secure-enclave-change-vraiment/&quot;&gt;Secure Enclave&lt;/a&gt;. The most secure component is the one that refuses access, not the one that defends it well.&lt;/p&gt;
&lt;h3 id=&quot;the-firewall-closed-by-default&quot;&gt;The firewall, closed by default&lt;/h3&gt;
&lt;p&gt;On Ubuntu, the firewall is managed with &lt;a href=&quot;https://documentation.ubuntu.com/server/how-to/security/firewalls/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;ufw&lt;/code&gt;&lt;/a&gt;. The right posture is the inverse, we block everything, then open only what’s necessary.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; deny&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; incoming&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; outgoing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; 22/tcp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; enable&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;default deny incoming&lt;/code&gt; refuses all incoming connections. &lt;code&gt;default allow outgoing&lt;/code&gt; lets your machine join the outside world, for updates, for example. We only open port 22, SSH, the bare minimum to administer the machine. And we enable.&lt;/p&gt;
&lt;p&gt;At this point, &lt;strong&gt;your server presents only one SSH door per key&lt;/strong&gt;. That’s already a profile radically more discreet than 90% of production VPS.&lt;/p&gt;
&lt;h3 id=&quot;tailscale-and-the-public-ip-disappears&quot;&gt;Tailscale, and the public IP disappears&lt;/h3&gt;
&lt;p&gt;We can do better. Instead of opening SSH on the public IP, even via key, we remove it entirely from internet view and expose it only on a private, encrypted network.&lt;/p&gt;
&lt;p&gt;That’s the role of &lt;strong&gt;&lt;a href=&quot;https://tailscale.com/kb/1017/install&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Tailscale&lt;/a&gt;&lt;/strong&gt;. Tailscale creates a &lt;a href=&quot;https://tailscale.com/blog/how-tailscale-works&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;private mesh&lt;/a&gt; between your devices, over &lt;a href=&quot;https://www.wireguard.com/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;WireGuard&lt;/a&gt;, the modern tunneling protocol. Your machines see each other via private addresses, like they’re on the same local network, even if they’re scattered between a Swiss datacenter, your office, and your home. The rest of the internet, meanwhile, sees nothing.&lt;/p&gt;
&lt;p&gt;Here’s the concrete flow. You install Tailscale on the server and on your Mac. Both join your private network. Your Mac gets a Tailscale address, the server does too. You log in to the server via its Tailscale address, not its public IP. And you close port 22 on the public IP. To reach SSH, you have to already be a member of your private network. An attacker on the internet can’t even see that the port exists.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://tailscale.com/install.sh&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tailscale&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The command displays a link, you open it in your browser, authenticate the machine, it joins your network. Repeat on your Mac. Retrieve the server’s Tailscale address:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;tailscale&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ip&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Test the SSH connection via this private address. Once it works, we close port 22 on the public IP:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; delete&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; 22/tcp&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; ufw&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; allow&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; on&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tailscale0&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; any&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; port&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 22&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; proto&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first line removes the SSH opening on all interfaces. The second reopens it only on the &lt;code&gt;tailscale0&lt;/code&gt; interface, your private network. SSH only listens on the encrypted mesh.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The result is a machine with only one admin door, invisible from the internet&lt;/strong&gt;. Not locked, invisible. A port scan on your public IP reveals nothing exploitable.&lt;/p&gt;
&lt;p&gt;For the rest of the series, that’s also how your Wazuh agents will send their logs to the server, never through the open internet. The network foundation we’re putting in place today serves the whole stack.&lt;/p&gt;
&lt;h3 id=&quot;and-the-services-that-must-remain-public&quot;&gt;And the services that must remain public?&lt;/h3&gt;
&lt;p&gt;Not everything can live behind the private network. If your server hosts a website or a service that needs to be reachable by anyone, that service has to listen on the public IP. It’s inevitable.&lt;/p&gt;
&lt;p&gt;The rule, then, isn’t “zero public ports” but “zero unnecessary public ports”. You open exactly what the service requires, nothing more. A website, that’s port 443 in HTTPS, and port 80 while renewing certificates. Nothing else. Everything else, administration, databases, internal dashboards, stays on Tailscale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For our SIEM foundation&lt;/strong&gt;, at this point, the simple answer is &lt;strong&gt;no public services&lt;/strong&gt;. The server exposes nothing to the world. Wazuh, which we’ll install later, lives entirely behind Tailscale, accessible only to you.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-backups-encrypted-off-site&quot;&gt;The backups, encrypted off-site&lt;/h2&gt;
&lt;p&gt;A hardened server isn’t an immortal server. A datacenter can burn down, as we saw with OVH Strasbourg in March 2021, clients without backups lost everything. A ransomware can still pass on one of your production machines. A finger slip on a wrong command can erase a database.&lt;/p&gt;
&lt;p&gt;The rule is non-negotiable. &lt;strong&gt;Your backups live elsewhere than on the machine they protect, and they’re encrypted before they leave&lt;/strong&gt;. Encrypted by you, on your machine, before sending. Not encrypted by the storage provider, by you. That way, even the storage provider can’t read what it’s storing.&lt;/p&gt;
&lt;p&gt;The tool I use is &lt;strong&gt;&lt;a href=&quot;https://kopia.io/docs/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Kopia&lt;/a&gt;&lt;/strong&gt;. Open source, fast, and it does exactly what we want, client-side encryption before transfer, deduplication to not explode your storage volume, and sending to an S3-compatible storage.&lt;/p&gt;
&lt;p&gt;And the off-site storage, I take it with &lt;strong&gt;&lt;a href=&quot;https://www.infomaniak.com/fr/swiss-backup&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Swiss Backup&lt;/a&gt;&lt;/strong&gt;, Infomaniak’s backup service. Same logic of sovereignty as for the VPS, Swiss servers, not subject to the CLOUD Act, and an S3 endpoint that Kopia consumes directly.&lt;/p&gt;
&lt;p&gt;The concrete flow. Kopia runs on your server. Once a day, or several times, it takes a snapshot of the folders that matter, your system configuration, your Wazuh data, your logs.&lt;/p&gt;
&lt;p&gt;It encrypts this snapshot locally, with a key that only you hold. Then it sends it to Swiss Backup. The day the server dies, you provision a new machine, reinstall Kopia, point it to the remote repository with your key, and restore.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; https://kopia.io/signing-key&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; gpg&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; --dearmor&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /usr/share/keyrings/kopia-keyring.gpg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; &quot;deb [signed-by=/usr/share/keyrings/kopia-keyring.gpg] http://packages.kopia.io/apt/ stable main&quot;&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; tee&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc/apt/sources.list.d/kopia.list&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;color:#24292E&quot;&gt; &amp;#x26;&amp;#x26; &lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; apt&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; kopia&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;kopia&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; repository&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; s3&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;  --bucket=YOUR_BUCKET&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;  --endpoint=s3.swiss-backup.infomaniak.com&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;  --access-key=YOUR_KEY&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#005CC5&quot;&gt;  --secret-access-key=YOUR_SECRET&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first three lines install Kopia from its official repository. The last command creates the encrypted repository on the remote storage, using the exact endpoint displayed in your Swiss Backup console, it varies depending on the cluster you’re assigned. Kopia asks for a passphrase when creating the repository, that’s the key to encrypt all your backups. &lt;strong&gt;Note it down somewhere other than on the server&lt;/strong&gt;. If you lose it, your backups are permanently unreadable, including to you. That’s the price of client-side encryption, and that’s exactly what we want.&lt;/p&gt;
&lt;p&gt;Then automate. We create a daily snapshot of the critical folders, then schedule it with a &lt;code&gt;cron&lt;/code&gt; job.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;kopia&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; snapshot&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; create&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /etc&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /home&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /var/log&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command captures the current state of the three folders. You schedule it to run every night, and occasionally check that your snapshots are there with &lt;code&gt;kopia snapshot list&lt;/code&gt;. A backup you don’t test is not a backup, it’s a hope. So we’ll need to plan a test restore of your data every quarter.&lt;/p&gt;
&lt;p&gt;This SIEM foundation will serve the rest of the series. Every brick we add, Wazuh and its data, the rules you calibrate, will be captured in the same encrypted snapshot, off-site, ready for the day you need it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;
&lt;p&gt;The foundation is four gestures that build on each other.&lt;/p&gt;
&lt;p&gt;You’ve chosen &lt;strong&gt;a hoster whose jurisdiction protects you&lt;/strong&gt;, not just whose datacenter is in Europe. You’ve &lt;strong&gt;hardened access&lt;/strong&gt;, non-root user, key-based authentication, &lt;code&gt;root&lt;/code&gt; forbidden, automatic updates. You’ve &lt;strong&gt;reduced the attack surface to nothing&lt;/strong&gt;, closed firewall by default, admin behind a private encrypted network, no unnecessary public ports. And you’ve &lt;strong&gt;put encrypted backups off-site&lt;/strong&gt;, unreadable to anyone without your key, ready for the day when.&lt;/p&gt;
&lt;p&gt;None of these steps are complicated. Together, they turn a rented machine into a fortress you control. It’s the exact opposite of what you sign up for with an American SaaS, where the data is yours but the infrastructure and jurisdiction aren’t.&lt;/p&gt;
&lt;p&gt;An afternoon’s work. Not a weekend.&lt;/p&gt;
&lt;p&gt;The foundation is in place. In episode 2, we fill the vault. Wazuh all-in-one, manager, indexer, and dashboard on this single node. The functional equivalent of a Splunk, for the price of the VPS you’ve just built. Your SIEM starts to exist.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;series-reminder&quot;&gt;Series reminder&lt;/h2&gt;
&lt;p&gt;Seven episodes to build your sovereign security plumbing, brick by brick.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/&quot;&gt;Episode 0, the bedrock of the series.&lt;/a&gt;&lt;/strong&gt; Why an SME needs a sovereign SIEM, NIS2, GDPR, and the cost of doing nothing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 1, the foundation.&lt;/strong&gt; The hardened VPS outside the CLOUD Act. You’ve just read it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/&quot;&gt;Episode 2, Wazuh all-in-one.&lt;/a&gt;&lt;/strong&gt; Manager, indexer, and dashboard on a single node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/&quot;&gt;Episode 3, agents everywhere.&lt;/a&gt;&lt;/strong&gt; Deployment on your servers, Macs, and Windows machines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;Episode 4, community network defense.&lt;/a&gt;&lt;/strong&gt; Block known attackers before they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;Episode 5, the mail filter.&lt;/a&gt;&lt;/strong&gt; Anti-spam and anti-phishing in front of your mail server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 6, Mac execution control.&lt;/strong&gt; Decide which applications have the right to launch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Episode 7, alerting and total cost.&lt;/strong&gt; Calibrated notifications and honest financial breakdown against SaaS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>vps</category><category>securite</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/06/feature-vps-durci-socle-siem-souverain-1.png" length="0" type="image/png"/></item><item><title>Build your sovereign SIEM for SMEs, compliant with GDPR/NIS2 without CLOUD Act</title><link>https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/</link><guid isPermaLink="true">https://macsouverain.com/en/nis2-splunk-pourquoi-pme-siem-souverain/</guid><description>You&apos;re already forced by GDPR to detect a breach within 72 hours. NIS2 just widened the net by 30x. Build your SIEM now, it&apos;s security today and compliance amortised before it lands on you.</description><pubDate>Fri, 05 Jun 2026 12:00:56 GMT</pubDate><content:encoded>&lt;p&gt;You don’t have a SIEM. You tell yourself it’s not for you, that your SME is too small or outside a regulated sector, so under the radar of the big cyber obligations. You’re wrong on two counts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Now, GDPR.&lt;/strong&gt; Since 2018, any company that processes personal data must notify the CNIL of a breach within &lt;strong&gt;72 hours&lt;/strong&gt;. That’s Article 33. Not a recommendation, an obligation. Notifying within 72 hours means you know something happened, that you can characterise it, that you have the logs to trace the chain back. Without a system that centralises your logs and raises alerts, this obligation is unenforceable. You’re in breach the first time a ransomware gets through.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tomorrow, the widening.&lt;/strong&gt; NIS2 has just multiplied by thirty the number of French entities subject to reinforced cyber obligations, from 500 to around 15,000. DORA has applied since January 2025 to the extended financial sector, subcontractors included. The Cyber Resilience Act applies fully from December 2027 to any product with a digital component sold in the EU. NIS3 isn’t voted on yet, the indicative timeline aims for the end of 2027. But the trajectory is legible, every two to three years the net widens. Betting your SME stays out of scope in 2028 or 2029 is betting against Brussels and against the GDPR case law that has done nothing but harden.&lt;/p&gt;
&lt;p&gt;The word that keeps coming back in all these texts is SIEM, for &lt;strong&gt;Security Information and Event Management&lt;/strong&gt;, centralised management of security events. They never name it, but they make it impossible to avoid. Detecting an incident, keeping exploitable logs, notifying the regulator within short deadlines, those are the functions of a SIEM.&lt;/p&gt;
&lt;p&gt;And what is a SIEM, concretely? Picture the CCTV of your shop, but for your IT. Every server, every firewall, every workstation, every mailbox constantly produces a log of what happens on it. Who logged in, at what time, from where, which file was opened, which process started.&lt;/p&gt;
&lt;p&gt;A SIEM is the system that brings all these logs to one place, keeps them for several months, and raises an alert when it detects suspicious behaviour.&lt;/p&gt;
&lt;p&gt;An account that logs in at 3 in the morning from Pakistan, ten thousand files encrypted in two minutes, a burst of failed passwords on the director’s account, these are signals a human will never catch with the naked eye on a fleet of fifty machines.&lt;/p&gt;
&lt;p&gt;The SIEM sees them, cross-references them, and warns you. Behind this consultant’s acronym hides a very concrete assembly, which we take apart further down in this article.&lt;/p&gt;
&lt;p&gt;The problem is what’s being sold to you today under that name. &lt;a href=&quot;https://www.splunk.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;Splunk&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&quot;https://learn.microsoft.com/azure/sentinel/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;Microsoft Sentinel&lt;/strong&gt;&lt;/a&gt;, &lt;a href=&quot;https://www.crowdstrike.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;CrowdStrike&lt;/strong&gt;&lt;/a&gt;. At a modest SME’s entry ticket the prices look affordable, but the bill climbs with every gigabyte and every seat, and we do the full accounting at the end of the series. And the price isn’t even the worst of it. These products store your incident logs in a jurisdiction that isn’t yours, under the CLOUD Act. The real question is who holds your most sensitive data.&lt;/p&gt;
&lt;p&gt;There’s a third path. The sovereign one. It’s the path of this series.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;nis2-in-five-minutes-and-why-it-concerns-you-even-outside-the-scope&quot;&gt;NIS2 in five minutes, and why it concerns you even outside the scope&lt;/h2&gt;
&lt;p&gt;NIS2 is the European directive on the security of networks and information systems, replacing NIS1. NIS1 covered around 500 French entities. NIS2 covers &lt;strong&gt;around 15,000&lt;/strong&gt;, spread across eighteen sectors. Health, energy, transport, digital, financial services, agri-food, waste, manufacturing. If your company exceeds &lt;strong&gt;50 employees or 10 million euros in revenue&lt;/strong&gt; in one of these sectors, you’re directly concerned. Probably as an “important entity”, sometimes as an “essential entity” depending on your size and criticality.&lt;/p&gt;
&lt;p&gt;If you’re smaller or outside a listed sector, you’re not off the hook for all that. &lt;strong&gt;Two mechanisms catch you.&lt;/strong&gt; First the supply chain, Article 21 requires NIS2 entities to assess the cyber-resilience of their subcontractors. If you sell service or software to a 60-person SME in health or finance, it’s going to ask you for your proof. No SIEM, no contract. Then the regulatory trajectory itself, NIS3 is in preparation at the Commission, the scope always widens from one revision to the next.&lt;/p&gt;
&lt;p&gt;The heart of the mechanism is &lt;strong&gt;Article 21&lt;/strong&gt;. Ten categories of minimum measures, risk analysis, incident management, logging, continuity, training, encryption, access control, supply chain security. And the notification obligation, in three steps, &lt;strong&gt;early warning within 24 hours, structured notification within 72 hours, final report within 30 days&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The triptych holds for NIS2 as for GDPR, without a detection and logging foundation, the obligation is unenforceable.&lt;/p&gt;
&lt;p&gt;Article 20 adds the detail that changes everything for the director. &lt;strong&gt;Liability falls on the natural person who runs the company.&lt;/strong&gt; Not on the IT manager, nor on the provider. On you.&lt;/p&gt;
&lt;p&gt;On the sanctions side, it’s calibrated to hurt. Essential entity, up to &lt;strong&gt;10 million euros or 2% of worldwide revenue&lt;/strong&gt;, whichever is higher. Important entity, up to 7 million euros or 1.4% of worldwide revenue. For an SME with 30 million in revenue, we’re talking a maximum sanction of several hundred thousand euros.&lt;/p&gt;
&lt;p&gt;The law of 30 April 2025 transposes NIS2 into French law. The implementing decrees and the exact scope of the entities concerned are being specified over the course of 2026. As long as it’s fuzzy you tell yourself you have time, but the directive already applies, the case law will be built on the first disputes. The question is when, not if.&lt;/p&gt;
&lt;p&gt;We already saw in &lt;a href=&quot;https://macsouverain.com/en/nis2-csar-contradiction-ue-chiffrement-surveillance/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;a previous article&lt;/a&gt; how NIS2 contradicts CSAR on encryption. Here, we look at the other obligation, the one that becomes concrete for your infrastructure, &lt;strong&gt;detect, log, notify&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;you-have-three-options-and-two-of-them-are-bad&quot;&gt;You have three options, and two of them are bad&lt;/h2&gt;
&lt;h3 id=&quot;option-1-us-saas&quot;&gt;Option 1, US SaaS&lt;/h3&gt;
&lt;p&gt;Splunk, Microsoft Sentinel, CrowdStrike, &lt;a href=&quot;https://www.datadoghq.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Datadog&lt;/a&gt;, &lt;a href=&quot;https://www.elastic.co/cloud&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Elastic Cloud&lt;/a&gt;. They work. They’re mature. And at a modest SME’s entry price, they’re not out of reach. The trap is elsewhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Microsoft Sentinel&lt;/strong&gt; charges around &lt;strong&gt;$4.30 per gigabyte ingested&lt;/strong&gt; in the East US region, in the simplified billing model that combines Log Analytics ingestion and Sentinel analytics. &lt;strong&gt;CrowdStrike Falcon&lt;/strong&gt; charges per endpoint, between &lt;strong&gt;$60 and $185 per seat per year&lt;/strong&gt; depending on the tier, Go, Pro, Enterprise or Complete. &lt;strong&gt;Splunk&lt;/strong&gt; is more opaque, the vendor doesn’t publish its prices, but serious secondary sources converge around &lt;strong&gt;$8,000 to $12,500 per year&lt;/strong&gt; for an entry ticket of 5 gigabytes of logs per day, licence only, in Cloud or self-hosted Enterprise.&lt;/p&gt;
&lt;p&gt;Take a 50-employee SME that generates five gigabytes of logs per day. On Microsoft Sentinel, around &lt;strong&gt;$7,800 per year&lt;/strong&gt;. On CrowdStrike Falcon Pro for 50 endpoints, around &lt;strong&gt;$5,000 per year&lt;/strong&gt;. On Splunk Cloud at entry, around &lt;strong&gt;$8,000 per year&lt;/strong&gt;. Let’s be honest, &lt;strong&gt;$13,000 per year for Sentinel and CrowdStrike combined, on an SME with $10 million in revenue, is 0.13% of turnover&lt;/strong&gt;. The entry cost isn’t the obstacle.&lt;/p&gt;
&lt;p&gt;The obstacle is what you sign up for at the same time. &lt;strong&gt;Your logs go to the United States&lt;/strong&gt;, or to a European subsidiary of an American company. The &lt;strong&gt;CLOUD Act&lt;/strong&gt;, passed in 2018, lets US authorities requisition this data from the provider, even when it’s physically stored in Europe. Microsoft Ireland, Splunk Cloud, CrowdStrike, all are subject to it through their parent company.&lt;/p&gt;
&lt;p&gt;And your incident logs aren’t just any data. They’re &lt;strong&gt;the complete fingerprints of your network&lt;/strong&gt;, the usernames, the application flows, the internal behaviours, the vulnerabilities exposed at the moment of the attack. The most sensitive material your information system produces. Handing it to a provider requisitionable by a foreign jurisdiction is a real operational risk.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Data Privacy Framework&lt;/strong&gt;, the EU-US legal bridge, survived first instance before the EU General Court in September 2025. It’s &lt;strong&gt;on appeal before the CJEU since 31 October 2025&lt;/strong&gt;. The CNIL, in its February 2025 decision on health hosting, is clear, &lt;em&gt;the only recognised marker for materialising a sovereign cloud remains the SecNumCloud qualification&lt;/em&gt;. None of the three SaaS providers cited has it.&lt;/p&gt;
&lt;p&gt;One last point. The reasonable entry cost is today. The billing mechanism gets worse as you grow. Every additional gigabyte ingested is charged, every additional endpoint too. At 50 gigabytes of logs per day, the Sentinel ticket climbs above &lt;strong&gt;$78,000 per year&lt;/strong&gt;, Splunk rises in proportion depending on the licence mode. You sign a modest entry price, you also sign a tariff lock-in that closes in as your SIEM sees wider and deeper.&lt;/p&gt;
&lt;p&gt;Conclusion, you pay a reasonable price for the plumbing today, by handing the most strategic data in your information system to a jurisdiction that isn’t yours, in an unfavourable legal framework, with a meter running against you at every extension of scope.&lt;/p&gt;
&lt;h3 id=&quot;option-2-do-nothing&quot;&gt;Option 2, do nothing&lt;/h3&gt;
&lt;p&gt;It’s tempting. It’s the most common strategy among SMEs, whether or not they’re in the NIS2 scope. Wait. See. Hope.&lt;/p&gt;
&lt;p&gt;The calculation is wrong on three fronts. &lt;strong&gt;GDPR today&lt;/strong&gt;, the CNIL has already sanctioned SMEs for failure to notify, the absence of any detection means is an aggravating factor. &lt;strong&gt;NIS2 tomorrow&lt;/strong&gt; if you enter through the supply chain or through a revision, the maximum sanction for an essential entity exceeds GDPR’s, &lt;strong&gt;the director’s personal liability&lt;/strong&gt; exists in black and white. &lt;strong&gt;Ransomware any time&lt;/strong&gt;, encryption of production, ransom, loss of operations, that’s another order of magnitude than getting into compliance.&lt;/p&gt;
&lt;p&gt;Doing nothing isn’t saving. It’s postponing, at the risk of worsening the final bill.&lt;/p&gt;
&lt;h3 id=&quot;option-3-sovereign-self-hosted&quot;&gt;Option 3, sovereign self-hosted&lt;/h3&gt;
&lt;p&gt;You build your SIEM with mature open-source bricks, deployed on an infrastructure you control. Four bricks, four complementary roles.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wazuh.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;Wazuh&lt;/strong&gt;&lt;/a&gt;, it’s the brain of the setup, the central platform that brings all the logs to one place, stores them, analyses them and raises the alerts. It’s your “home-made Splunk”.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.crowdsec.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;CrowdSec&lt;/strong&gt;&lt;/a&gt;, it’s the bouncer at the door. A community network defence that automatically blocks the IP addresses already flagged as attackers by the other users of the network. When a bot scans a thousand sites before yours, it’s blacklisted before it reaches you.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://rspamd.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;Rspamd&lt;/strong&gt;&lt;/a&gt;, it’s the filter in front of your mail server. It intercepts spam and phishing attempts before they reach your employees’ inboxes. Mail remains the number one intrusion vector for SMEs, that’s where prevention pays off most.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://northpole.security/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;strong&gt;Santa&lt;/strong&gt;&lt;/a&gt;, it’s the execution controller on your Macs. It decides which applications are allowed to start on each machine, according to an allowlist you build. A ransomware downloaded by mistake can’t run, because it isn’t signed by a vendor you’ve approved. It’s the brick that turns an everyday Mac into a hardened workstation, without the user having to change their habits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these bricks is experimental. Wazuh is used by Fortune 100 companies. CrowdSec, a French company founded in 2019, aggregates 10 million signals a day, shared by more than 70,000 users across 190 countries. Rspamd powers Mailcow, Zimbra, Mailu, which set the reference. Santa, originally developed at Google and now maintained by North Pole Security, runs in production at Figma.&lt;/p&gt;
&lt;p&gt;The cost, it’s a correctly sized VPS, the installation time, and an internal competence you build. Not zero, but nowhere near the figures above.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-a-siem-really-is-for-someone-who-doesnt-do-blue-team&quot;&gt;What a SIEM really is, for someone who doesn’t do blue team&lt;/h2&gt;
&lt;p&gt;The word is scary. It smells of black screens, 24/7 teams and analysts speaking a dialect your IT manager doesn’t understand. Once demystified, it’s simpler.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A SIEM is plumbing.&lt;/strong&gt; Not a product, an assembly. Four functions that chain together:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Collect&lt;/strong&gt; the logs from your equipment, servers, firewalls, workstations, applications, mailboxes. Everything that produces a log, you bring to one place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centralise and keep&lt;/strong&gt; these logs in an exploitable format, with a retention that lets you investigate an incident going back several months.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detect&lt;/strong&gt; abnormal behaviours. An account logging in at 3 in the morning from an unusual country, a burst of failed authentications, a process that modifies 10,000 files in one minute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alert&lt;/strong&gt; and keep the trace, for your ANSSI notification within 24 hours, and for your final report within 30 days.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s it. No magic. A system that sees, that remembers, and that shouts when something’s wrong.&lt;/p&gt;
&lt;p&gt;The hard work isn’t the technology, it’s the adjustment. Which rules you enable, which thresholds you calibrate, who you send the alert to, how you respond. It’s the same thing on Splunk or on Wazuh. And it’s that internal competence you’re going to build across this series.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-short&quot;&gt;In short&lt;/h2&gt;
&lt;p&gt;Building your SIEM in 2026 pays you on two horizons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Short term, it’s operational security.&lt;/strong&gt; A ransomware detected in hours instead of weeks, an exfiltration intercepted before the ransom, a GDPR breach you can characterise and notify within the deadlines. That ROI depends on no text that isn’t yet voted, it’s immediate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Medium term, it’s amortised compliance.&lt;/strong&gt; You build the infrastructure and the internal competence &lt;em&gt;before&lt;/em&gt; the obligation lands on your head. Your competitors will build it under pressure, in a hurry, at three times the price of a flash-mission consultant. You’ll have taken a five-year lead on them for the price of a few weekends spread over a quarter.&lt;/p&gt;
&lt;p&gt;US SaaS does the job and isn’t out of price on the entry ticket. It just delivers your most strategic data into an unfavourable jurisdiction, and locks you into a model where every extra gigabyte is charged. Self-hosting demands an initial time investment. In the end, you’re master of the data, of the marginal cost and of the compliance schedule. Real sovereignty against a little of your time, which we’ll make a point of optimising across our articles.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;seven-episodes-to-build-your-plumbing&quot;&gt;Seven episodes to build your plumbing&lt;/h2&gt;
&lt;p&gt;It’s the stack I use in production. Not a blogger’s fantasy, an infrastructure that runs day to day, that detects, that logs, that notifies. Seven episodes, seven bricks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/vps-durci-socle-siem-souverain/&quot;&gt;Episode 1, the foundation.&lt;/a&gt;&lt;/strong&gt; A hardened VPS, on a European host outside American reach. Choice of operator, base configuration, minimal attack surface, encrypted off-site backups.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-tout-en-un-siem-souverain/&quot;&gt;Episode 2, Wazuh all-in-one.&lt;/a&gt;&lt;/strong&gt; Installing the manager, the indexer, the dashboard on a single node. Hardening, first dashboards. The functional equivalent of a Splunk for the price of a VPS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/wazuh-agents-parc-siem-souverain/&quot;&gt;Episode 3, agents everywhere.&lt;/a&gt;&lt;/strong&gt; Deploying Wazuh agents on your servers, Macs and Windows. Collecting system logs, security events, file activity. The moment your SIEM starts to see.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/crowdsec-premiere-ligne-siem-souverain/&quot;&gt;Episode 4, CrowdSec on the front line.&lt;/a&gt;&lt;/strong&gt; The community network defence that blocks known attackers before they reach your services. Wazuh integration, signal sharing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/rspamd-mail-siem-souverain/&quot;&gt;Episode 5, Rspamd for the mail.&lt;/a&gt;&lt;/strong&gt; The anti-spam and anti-phishing filter that plugs in front of your mail server, or integrates with your existing solution. Phishing detection, logging into Wazuh.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/santa-controle-execution-mac-siem-souverain/&quot;&gt;Episode 6, Santa on the Macs.&lt;/a&gt;&lt;/strong&gt; Execution control on Apple machines. North Pole Security fork, the project actively maintained since Google handed it over in 2024. Progressive lockdown, Wazuh integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://macsouverain.com/en/alerting-cout-total-siem-souverain/&quot;&gt;Episode 7, alerting and total cost.&lt;/a&gt;&lt;/strong&gt; Calibrated notifications, escalation, honest financial breakdown, episode-by-episode comparison with what the equivalent SaaS would have cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The links light up as the episodes publish, come back and plug into the new ones as they come out.&lt;/p&gt;
&lt;p&gt;Each episode is standalone. You can stop at 3 and already have covered the essentials of NIS2. You can push to 7 and have a stack with nothing to envy in those of large companies.&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>ms-pro</category><category>nis2</category><category>siem</category><category>securite</category><category>tutoriel</category><enclosure url="https://macsouverain.com/content/images/2026/06/feature-nis2-splunk-pourquoi-pme-siem-souverain-1.png" length="0" type="image/png"/></item><item><title>Apple Intelligence: What&apos;s Really Leaving Your Mac</title><link>https://macsouverain.com/en/38-apple-intelligence-ce-qui-sort-de-ton-mac/</link><guid isPermaLink="true">https://macsouverain.com/en/38-apple-intelligence-ce-qui-sort-de-ton-mac/</guid><description>Your Mac switched Apple Intelligence to ON without telling you. Three layers of processing, only one stays with you. And no one mentions the linked OpenAI account trap.</description><pubDate>Thu, 28 May 2026 07:48:57 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Update of June 21, 2026.&lt;/strong&gt; Since June 8, 2026, PCC no longer runs solely on Apple silicon: for the heaviest queries (agentic, complex reasoning), Apple switches to Google Cloud hardware, NVIDIA GPU, Intel CPU, and Titan chip. Apple swears that the five guarantees hold, that it keeps software control, and that Google sees nothing in the clear. Perhaps. But the “all stays with Apple” argument for the general public has just fallen: it’s now also Google iron under Apple guarantees.&lt;/p&gt;
&lt;p&gt;You’ve updated your Mac. You’ve accepted the TOS without reading (like everyone else). A few weeks later, you realize that the “Apple Intelligence” toggle is on, when you had turned it off. It’s not a hallucination: since macOS 15.3 released on January 27, 2025, &lt;strong&gt;Apple Intelligence has switched from opt-in to opt-out.&lt;/strong&gt; And some users who had turned it off found it turned back on after 15.3.1, a bug confirmed by MacRumors and 9to5Mac, inconsistent from one device to another. Not a systematic rule, but frequent enough to check after each update.&lt;/p&gt;
&lt;p&gt;It’s time to understand what happens when you click “Summarize” on a long email. Because between your Neural Engine and a California data center, there are three processing layers. &lt;strong&gt;Only one stays really on your machine.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-this-question-is-not-harmless&quot;&gt;Why this question is not harmless&lt;/h2&gt;
&lt;p&gt;Apple sells Apple Intelligence as an IA “privacy-first”. The slogan is everywhere on the product site: aware of your personal information without collecting your personal information. It’s technically true for part of the perimeter, and technically false for the rest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A generative AI, by construction, needs calculation.&lt;/strong&gt; When the model running on your Mac isn’t enough, the request goes out. Either to Apple servers or those of OpenAI. In both cases, &lt;strong&gt;your text leaves your machine.&lt;/strong&gt; The question isn’t whether it goes out. It’s where, under what guarantees, and how Apple informs you (spoiler: badly).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;layer-1-the-local-model-what-stays-really-on-your-machine&quot;&gt;Layer 1: the local model, what stays really on your machine&lt;/h2&gt;
&lt;p&gt;On Apple Silicon (M1 and later), Apple runs a foundation model of about 3.18 billion parameters. Quantified 2 bits per weight via Quantization-Aware-Training, memory footprint of about 1 Go, shared KV-cache that saves 37.5% RAM. The calculation happens on the Neural Engine, the GPU, and the CPU of the chip, never on a server.&lt;/p&gt;
&lt;p&gt;In concrete terms, here’s what stays 100% local:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Writing Tools&lt;/strong&gt; short version: Proofread, Rewrite, Summarize on short texts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart Reply&lt;/strong&gt; in Mail and Messages&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notification summaries&lt;/strong&gt; and Priority Notifications&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Short Mail summaries&lt;/strong&gt; in the inbox list&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Genmoji&lt;/strong&gt; (generation of custom emoji)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image Playground&lt;/strong&gt; (Animation, Illustration, Sketch)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image Wand&lt;/strong&gt; in Notes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Basic Siri&lt;/strong&gt; (understanding, type-to-Siri)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clean Up Photos&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For these uses, &lt;strong&gt;your text does not leave the Apple Silicon.&lt;/strong&gt; No logs, no server, no content telemetry. That’s the honest perimeter of Apple’s promise, and it’s real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The problem starts when you ask for something else.&lt;/strong&gt; Long summary of an 80-message Mail thread, generated text composition, multi-step Siri reasoning: &lt;strong&gt;your Mac knows it can’t handle the load. It switches.&lt;/strong&gt; And Apple doesn’t display any indicator to signal it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;layer-2-private-cloud-compute-the-california-enclave&quot;&gt;Layer 2: Private Cloud Compute, the California enclave&lt;/h2&gt;
&lt;p&gt;This is Apple’s marketing strong point. PCC runs on custom-silicon Apple in their data centers, with five technical guarantees highlighted in the Security Research doc:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Stateless computation&lt;/strong&gt;: your text is used to respond, never stored after the request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enforceable guarantees&lt;/strong&gt;: the protections are technically applied, not contractually promised. An Apple admin can’t disable the mechanism.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No privileged runtime access&lt;/strong&gt;: no remote shell, no interactive debugging. Apple can’t extract your data, even voluntarily.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-targetability&lt;/strong&gt;: an attacker can’t route your request to a compromised specific node. Request diffusion to nodes is random and attested.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verifiable transparency&lt;/strong&gt;: each production build published in a cryptographically append-only log, binary images available for external inspection for 90 days.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Apple pushed its PCC server code on GitHub, opened a research environment to external researchers, and put up a $1 million bug bounty. As of today, it’s the most auditable cloud IA stack on the market.&lt;/p&gt;
&lt;p&gt;Now the nuances, because there are some.&lt;/p&gt;
&lt;p&gt;Trail of Bits, in its June 14, 2024 analysis, points out a point that Apple marketing glosses over: &lt;em&gt;“the data is decrypted on Apple’s server”&lt;/em&gt;. &lt;strong&gt;PCC is not homomorphic encryption&lt;/strong&gt; (the tech that calculates a model on encrypted data without ever decrypting it). It’s a hardened enclave, signed, attested, but &lt;strong&gt;your text is indeed decrypted on the Apple side&lt;/strong&gt; during the calculation. Security relies on the integrity of the enclave and the signing of the binaries, not on cryptographic magic. Apple is honest about this in the tech doc. The consumer slogan, however, leaves room for misunderstanding.&lt;/p&gt;
&lt;p&gt;Second nuance, more uncomfortable. Matthew Green, cryptographer at Johns Hopkins, on Mastodon in June 2024: &lt;em&gt;“Apple does not have explicit plans to announce when your data is going off-device for Private Compute, and you won’t opt into this or necessarily even be told it’s happening”&lt;/em&gt;. Translation: &lt;strong&gt;you don’t know if the summary of your mail stayed on your M2&lt;/strong&gt; or if it made a round trip to California. &lt;strong&gt;No visual indicator, no notification&lt;/strong&gt;, no user-side journal. Apple’s transparency is cryptographically verifiable but visually invisible.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;layer-3-chatgpt-the-opt-in-and-its-trap&quot;&gt;Layer 3: ChatGPT, the opt-in and its trap&lt;/h2&gt;
&lt;p&gt;ChatGPT is grafted onto Apple Intelligence since macOS 15.2. Turned off by default, activatable explicitly in &lt;code&gt;Apple Intelligence &amp;#x26; Siri → Extensions → ChatGPT&lt;/code&gt;. When you turn it on, Apple adds two protections over the standard OpenAI contract:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Your IP is masked&lt;/strong&gt; by the Apple relay (verbatim Apple Legal: &lt;em&gt;“your IP address is obscured from ChatGPT”&lt;/em&gt;). Approximate location passed, for legal compliance and anti-fraud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No-logs and no-training&lt;/strong&gt; on OpenAI’s side, &lt;em&gt;provided you haven’t linked your OpenAI account&lt;/em&gt;. Apple Legal: OpenAI &lt;em&gt;“must process your information solely for the purpose of fulfilling your request”, “must not store your information”, “must not use your information to improve or train its models”&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Read the conditional carefully. &lt;strong&gt;If you link &lt;em&gt;any&lt;/em&gt; OpenAI account&lt;/strong&gt; (free, Plus, Pro, Team) to retrieve your history or access GPT-5, &lt;strong&gt;you immediately opt out of Apple’s contract&lt;/strong&gt; and fall back under OpenAI’s standard TOS. Logs, conversation history, potential training, all under US jurisdiction. Apple mentions this in the legal text, in small print, after three paragraphs. Most users link their account without realizing they’ve just turned off the protection that made them choose Apple.&lt;/p&gt;
&lt;p&gt;Second detail. &lt;strong&gt;The “Confirm ChatGPT Requests” toggle is on by default&lt;/strong&gt;: Siri asks for confirmation before sending the text. You can turn it off. But especially, if you start your voice request with “Ask ChatGPT…”, confirmation is bypassed. It’s a documented shortcut on Apple’s side, that circumvents the only visible safeguard of the device. Photos and files keep confirmation, they do, in all cases.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-four-toggles-to-check&quot;&gt;The four toggles to check&lt;/h2&gt;
&lt;p&gt;Four paths to know on Sequoia 15.x and Tahoe 26. The English titles are guaranteed (tested by Apple Support on US Macs), the French ones are the titles you’ll likely see, to be confirmed on your Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. The master Apple Intelligence&lt;/strong&gt;
&lt;code&gt;System Settings → Apple Intelligence &amp;#x26; Siri&lt;/code&gt; (toggle at the top of the panel).
Default state since macOS 15.3: &lt;strong&gt;ON&lt;/strong&gt; on compatible Macs. Documented cases of reactivation on 15.3.1 (bug, not design). Rare afterwards, but check after each update. Turn off if you want nothing, really nothing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. ChatGPT master&lt;/strong&gt;
&lt;code&gt;System Settings → Apple Intelligence &amp;#x26; Siri → Extensions → ChatGPT → Use ChatGPT&lt;/code&gt;.
Default state: OFF. Activate only if you want it, and especially: don’t link your OpenAI account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Confirm ChatGPT Requests&lt;/strong&gt;
&lt;code&gt;System Settings → Apple Intelligence &amp;#x26; Siri → Extensions → ChatGPT → Confirm ChatGPT Requests&lt;/code&gt;.
Default state: ON. Leave it on. The confirmation friction is your only visual indicator that a request is going off your Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Improve Siri &amp;#x26; Dictation&lt;/strong&gt;
&lt;code&gt;System Settings → Privacy &amp;#x26; Security → Analytics &amp;#x26; Improvements → Improve Siri &amp;#x26; Dictation&lt;/code&gt;.
Default state: OFF. Check that it stayed OFF. It decides if Apple stores audio snippets of your Siri interactions for human review. Random ID, hourly rotation, no Apple ID link, they insist. You choose to trust them or not.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;apple-microsoft-google-who-does-what&quot;&gt;Apple, Microsoft, Google: who does what&lt;/h2&gt;
&lt;p&gt;Five criteria that matter to someone wondering about sovereignty. Vendor by vendor verdict.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apple Intelligence.&lt;/strong&gt; Local by default, yes: 3B on-device model, explicit PCC switch for heavy queries. Public cryptographic attestation, yes: transparency log, dedicated research environment (VRE), server code published on GitHub. Cloud opt-in, half and half: implicit and invisible PCC, explicit and confirmed ChatGPT requests. Third-party LLM integrated, OpenAI ChatGPT, opt-in, OFF by default, no-logs as long as you don’t link your OpenAI account. Server jurisdiction, USA, Apple custom-silicon data centers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Microsoft Copilot+/Recall.&lt;/strong&gt; Local by default, partial: Recall makes its snapshots locally and never sends them to the cloud, Copilot general runs in Azure. Public attestation, no: local VBS encryption plus TPM, no opposing auditable server. Cloud opt-in, depends on the feature: Recall purely local, Copilot general cloud by design, the user doesn’t always distinguish which triggers what. Third-party LLM integrated, Azure OpenAI GPT-4, commercial integration without separate opt-in. Server jurisdiction, USA plus global Azure regions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Gemini.&lt;/strong&gt; Local by default, no: cloud Google by default, Gemini Nano local exists but remains limited to high-end Pixel devices. Public attestation, no. Cloud opt-in, the opposite: cloud by default, partial opt-out via Activity, and you lose features along the way. Third-party LLM integrated, none, Google’s stack locked down. Server jurisdiction, EEE/Switzerland via Google Ireland for EU accounts, rest of the world via Google LLC (USA).&lt;/p&gt;
&lt;p&gt;A quick read: on this specific dossier, Apple does better. Recall version 2025 is solid locally but remains an attack vector on shared devices (Kevin Beaumont has documented it repeatedly). Gemini keeps a subset of chats for up to three years for human review, even when you turn off activity. Apple is the only one to publish its server code and pay $1 million to have it broken.&lt;/p&gt;
&lt;p&gt;Apple spent $1 million to have its code broken. The others spent $1 million on TV spots. That doesn’t make PCC an E2EE. It makes it the least opaque cloud IA option on the market in 2026.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;macks-verdict&quot;&gt;Mack’s verdict&lt;/h2&gt;
&lt;p&gt;Apple has built the most auditable cloud IA architecture on the mass market. That’s a fact. Trail of Bits, Matthew Green, and Schneier all recognize it, each in their own way, while pointing out what’s wrong.&lt;/p&gt;
&lt;p&gt;What’s wrong is three UX decisions that betray &lt;strong&gt;a marketing intent superior to privacy intent&lt;/strong&gt;: the opt-out by default since 15.3, the complete absence of a visual indicator when a request switches to PCC, and the silent OpenAI account link trap. None of these three points is a bug. &lt;strong&gt;They’re choices.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What you can reasonably do: turn off the master if you don’t need it, keep the ChatGPT confirmation toggle on if you use it, &lt;strong&gt;never link your OpenAI account&lt;/strong&gt;, check Improve Siri &amp;#x26; Dictation after each major update. That’s five minutes of settings, to be redone two or three times a year.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Also read: &lt;a href=&quot;https://macsouverain.com/en/cloud-ordinateur-quelquun-dautre&quot;&gt;The cloud, it’s someone else’s computer&lt;/a&gt;, &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement&quot;&gt;Privacy macOS: the settings to change immediately&lt;/a&gt;, and &lt;a href=&quot;https://macsouverain.com/en/convergence-libertes-numeriques&quot;&gt;Convergence of digital freedoms&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Apple, primary sources&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://machinelearning.apple.com/research/introducing-apple-foundation-models&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple Machine Learning Research, Introducing Apple’s On-Device and Server Foundation Models&lt;/a&gt;, official publication of the on-device model specifications (June 10, 2024).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://machinelearning.apple.com/research/apple-foundation-models-tech-report-2025&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple Machine Learning Research, Foundation Models Tech Report 2025&lt;/a&gt; and &lt;a href=&quot;https://arxiv.org/abs/2507.13575&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;arXiv 2507.13575&lt;/a&gt;, technical details of the 2-bit QAT, PT-MoE, 15 languages (July 17, 2025).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://security.apple.com/blog/private-cloud-compute/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple Security Research, Private Cloud Compute: A new frontier for AI privacy in the cloud&lt;/a&gt; and &lt;a href=&quot;https://security.apple.com/blog/pcc-security-research/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Security research on PCC&lt;/a&gt;, the complete PCC doc and the bug bounty.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.apple.com/legal/privacy/data/en/chatgpt-extension/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple Legal, ChatGPT Extension and Privacy&lt;/a&gt; and &lt;a href=&quot;https://support.apple.com/guide/mac-help/use-chatgpt-with-apple-intelligence-mchlfc5cf131/mac&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple Support, Use ChatGPT with Apple Intelligence on Mac&lt;/a&gt;, reference source for IP masking and conditional no-logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Independent analyses&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.trailofbits.com/2024/06/14/pcc-bold-step-forward-not-without-flaws/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Trail of Bits, PCC: a bold step forward, not without flaws&lt;/a&gt;, recognized security firm, the most cited technical analysis of PCC’s limits (“data decrypted on Apple’s server”).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://threadreaderapp.com/thread/1800291897245835616.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Matthew Green, Mastodon/X thread on PCC&lt;/a&gt;, cryptographer at Johns Hopkins University, on the absence of a visual indicator when a request switches to PCC.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://doublepulsar.com/microsoft-recall-on-copilot-pc-testing-the-security-and-privacy-implications-ddb296093b6c&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Kevin Beaumont (DoublePulsar), Microsoft Recall privacy implications&lt;/a&gt;, Windows security expert, on the residual risks of Recall version 2025.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.macrumors.com/2025/01/21/macos-sequoia-15-3-apple-intelligence-opt-out/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;MacRumors, macOS 15.3 enables Apple Intelligence automatically&lt;/a&gt;, coverage of the opt-in to opt-out switch (January 21, 2025).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ironcorelabs.com/blog/2024/apple-chatgpt-privacy-issues/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;IronCore Labs, Privacy Guide to Apple Intelligence with ChatGPT&lt;/a&gt;, for the OpenAI account link trap.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Comparison with competing IAs&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/windows/privacy-and-control-over-your-recall-experience-d404f672-7647-41e5-886c-a3c59680af15&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Microsoft Support, Privacy and control over your Recall experience&lt;/a&gt;, Microsoft’s official Recall doc after the April 2025 relaunch.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.google.com/gemini/answer/13594961?hl=en&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Google Gemini Apps Privacy Hub&lt;/a&gt;, Google’s doc on retention, activity, and human review.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>apple-intelligence</category><category>confidentialite</category><category>apple</category><category>ia</category><enclosure url="https://macsouverain.com/content/images/2026/06/feature-38-apple-intelligence-ce-qui-sort-de-ton-mac-1.png" length="0" type="image/png"/></item><item><title>Your Mac was patched by XProtect without your knowledge, it&apos;s for your own good</title><link>https://macsouverain.com/en/ton-mac-patche-a-ton-insu-xprotect/</link><guid isPermaLink="true">https://macsouverain.com/en/ton-mac-patche-a-ton-insu-xprotect/</guid><description>On May 11, 2026, 170 npm packages in the TanStack ecosystem were compromised in six minutes. The next day, Apple pushed an XProtect signature onto your Mac without telling you. Here&apos;s how to check.</description><pubDate>Tue, 19 May 2026 07:25:30 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;While you were sleeping, on the evening of May 11th, 170 software packages, used by half of the web, became malicious in just six minutes. The next day, Apple pushed an XProtect signature onto your Mac, without telling you.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The two events are likely connected. However, you’ll never know for sure. This incident has a name, &lt;strong&gt;TanStack&lt;/strong&gt;. The mechanism that may have reacted on your Mac is called &lt;strong&gt;XProtect&lt;/strong&gt;. You didn’t see anything, neither did I. Apple makes sure of that.&lt;/p&gt;
&lt;p&gt;Welcome to the silent defense system of your Mac.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-tanstack-incident-in-30-seconds&quot;&gt;The TanStack Incident in 30 Seconds&lt;/h2&gt;
&lt;p&gt;On the evening of May 11th, 2026, the &lt;strong&gt;TanStack&lt;/strong&gt; ecosystem, an ultra-popular JavaScript toolkit used by millions of developers (including those from OpenAI, Netflix, Shopify), was compromised. In six minutes, &lt;strong&gt;170 packages&lt;/strong&gt; were released with malicious versions. The most visible one, &lt;code&gt;react-router&lt;/code&gt;, is downloaded &lt;strong&gt;12 million times a week&lt;/strong&gt;. In other words, a significant portion of the web that updates this week is getting infected without knowing it.&lt;/p&gt;
&lt;p&gt;The malware is called &lt;strong&gt;Mini Shai-Hulud&lt;/strong&gt;, a variant of the npm worm that has been around since 2024. Its target is whatever is on the developer’s Mac: passwords, cloud access keys, GitHub tokens, session files. On macOS, it installs itself discreetly and relaunches every time a session is opened. Clean, professional.&lt;/p&gt;
&lt;p&gt;The worrying detail is the vector. The attacker didn’t steal any passwords or exploit any code flaws. They just &lt;strong&gt;submitted a false contribution&lt;/strong&gt; to the open-source TanStack project, exploiting an imprudent automation system configuration.&lt;/p&gt;
&lt;p&gt;Any contribution was executed with the real publication rights. A malicious pull request was enough to retrieve the signature token and publish 170 packages under the legitimate identity of the project. On npm’s side, everything seemed normal, signed, and verified. Stamped by TanStack itself.&lt;/p&gt;
&lt;p&gt;OpenAI was affected by association, via one of its dependencies. Officially, &lt;strong&gt;there’s no proof of any product or user data compromise&lt;/strong&gt;. But they still &lt;strong&gt;rotated all their applicative signature keys&lt;/strong&gt; on macOS, iOS, Windows, and Android, and republished all their apps under new certificates.&lt;/p&gt;
&lt;p&gt;You don’t do that when everything’s fine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apple reacted the next day&lt;/strong&gt;. No communiqué, no notification, no tab in Settings. &lt;strong&gt;An XProtect signature was silently pushed&lt;/strong&gt;. Macs picked it up over the hours, one by one, without telling anyone.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;xprotect-apples-silent-antivirus&quot;&gt;XProtect, Apple’s Silent Antivirus&lt;/h2&gt;
&lt;p&gt;XProtect is macOS’s integrated antivirus. It’s been there since Snow Leopard, and most users don’t even know it exists. That’s by design.&lt;/p&gt;
&lt;p&gt;It works in two parts. The first is the &lt;strong&gt;signature engine&lt;/strong&gt;: a file that macOS consults before executing a downloaded app to check if it matches a known malware. The second is &lt;strong&gt;XProtect Remediator, XPR&lt;/strong&gt;, a scanner that runs in the background and inspects your disk for threats that are already installed. When it finds one, it neutralizes it.&lt;/p&gt;
&lt;p&gt;Signatures are pushed by Apple via &lt;strong&gt;CloudKit&lt;/strong&gt;, the same silent pipeline that synchronizes your iCloud photos and keychain. When a significant malware emerges, Apple compiles a signature, signs it, deposits it on CloudKit. Your Mac picks it up during the next check, usually within 24 to 72 hours.&lt;/p&gt;
&lt;p&gt;No notification. No restart. No “your Mac has been updated” message. Apple made an editorial choice not to alarm users. The downside is that you have no way of knowing, at a glance, if you’re properly patched for the recent incident.&lt;/p&gt;
&lt;p&gt;That’s where it gets interesting.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-push-5344-may-12th-the-day-after-tanstack&quot;&gt;The Push 5344, May 12th, the day after TanStack&lt;/h2&gt;
&lt;p&gt;The XProtect version published on May 12th, 2026, is called &lt;strong&gt;5344&lt;/strong&gt;. The previous one, 5342, was from May 5th. Perfect temporal match with TanStack, one day later.&lt;/p&gt;
&lt;p&gt;Except Apple never publicly documents the content of an XProtect signature. Howard Oakley, who dissects each release on eclecticlight.co, notes on 5344 “some adjustments on known malware families”. No TanStack or Shai-Hulud signature. Nothing officially saying “this is the response to yesterday’s incident”.&lt;/p&gt;
&lt;p&gt;Coincidence or targeted reaction? Apple isn’t saying. That’s precisely what justifies looking into it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;check-in-30-seconds-if-your-mac-is-patched&quot;&gt;Check in 30 Seconds if Your Mac is Patched&lt;/h2&gt;
&lt;p&gt;On macOS 15 Sequoia and macOS 26 Tahoe, Apple moved XProtect to a new location and provides a native command. That’s the recommended way. On macOS 14 Sonoma and earlier, the old location is still valid. I’ll give you both.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. The XProtect signature version&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On Sequoia and Tahoe:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; xprotect&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll get a number like &lt;code&gt;5344&lt;/code&gt; or &lt;code&gt;5347&lt;/code&gt;. That’s the signature base. The higher the number, the more recent it is.&lt;/p&gt;
&lt;p&gt;On Sonoma and earlier:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Info&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; CFBundleShortVersionString&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The old path still exists on Sequoia and Tahoe, but macOS doesn’t consult it first anymore. You can read it and get an outdated version while &lt;code&gt;sudo xprotect version&lt;/code&gt; gives you the real one. That’s exactly the kind of trap that makes you think your Mac is behind when it’s not.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. The XProtect Remediator version&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;defaults&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; read&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; /Library/Apple/System/Library/CoreServices/XProtect.app/Contents/Info&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; CFBundleShortVersionString&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll get a number like &lt;code&gt;157&lt;/code&gt;. That’s the scanner itself, updated much less often than the signatures.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. The installation history&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;system_profiler&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; SPInstallHistoryDataType&lt;/span&gt;&lt;span style=&quot;color:#D73A49&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -A&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#005CC5&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; xprotect&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You’ll see all the XProtect versions installed with their dates. Great for checking if your Mac isn’t stuck on an old base because CloudKit has a problem.&lt;/p&gt;
&lt;p&gt;To compare your version with what Apple publishes in real-time, the public tracker on Howard Oakley’s &lt;a href=&quot;https://eclecticlight.co/category/macos/security/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;eclecticlight.co&lt;/a&gt; keeps the list up-to-date. Oakley is a British engineer who’s been dissecting macOS for fifteen years. He’s the reference on the subject.&lt;/p&gt;
&lt;p&gt;And if your Mac is behind, force the check:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6F42C1&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; xprotect&lt;/span&gt;&lt;span style=&quot;color:#032F62&quot;&gt; update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On Sonoma and earlier, the old command &lt;code&gt;sudo softwareupdate --background-critical&lt;/code&gt; still works.&lt;/p&gt;
&lt;p&gt;At the time of publishing, the latest version is &lt;strong&gt;5344, on May 12th, 2026&lt;/strong&gt;. If your Mac shows less, your CloudKit channel is slow.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-sovereign-downside&quot;&gt;The Sovereign Downside&lt;/h2&gt;
&lt;p&gt;XProtect is a black box signed by Cupertino. You don’t know which signatures are pushed, what telemetry is sent back, or who decides that a binary is malicious. Apple decides, Apple pushes, your machine executes.&lt;/p&gt;
&lt;p&gt;The mechanism is useful, very useful even. Blocking known malwares before they execute is the base of modern defense, and doing it without bothering you will prevent you from disabling it when you’re fed up with that &lt;strong&gt;rognutudju!!&lt;/strong&gt; pop-up (look it up, if you’re under 50, you won’t get the reference).&lt;/p&gt;
&lt;p&gt;The three commands above give you a minimal right to look into what your OS does without asking. It’s a small step towards sovereignty, not taking control back, just knowing.&lt;/p&gt;
&lt;p&gt;The difference between a passive user and a sovereign user isn’t just in the tools they use. It’s also in the questions they ask. What version do I have? When was it pushed? What’s in it?&lt;/p&gt;
&lt;p&gt;Apple answers the first two with three Terminal lines. On the third, they stay silent. It’s Howard Oakley who dissects the content afterwards and publishes the diffs on &lt;a href=&quot;https://eclecticlight.co/category/macos/security/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;eclecticlight.co&lt;/a&gt;. You’ll never know directly what Apple has stamped as malicious that night.&lt;/p&gt;
&lt;p&gt;Every month, I still check the XProtect versions on my Macs. Nothing heroic, just a habit. The day CloudKit’s channel screws up, I’ll have a reference point.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read also: &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;The macOS settings to change immediately&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In Summary&lt;/h2&gt;
&lt;p&gt;XProtect is useful, silent, and out of your control. The topic is knowing that it exists, knowing the three commands that tell you where you stand, and understanding that in the 2026 JavaScript supply chain, like others, it patches the leaks.&lt;/p&gt;
&lt;p&gt;Run the three commands. Note your numbers. Compare them to &lt;a href=&quot;https://eclecticlight.co/category/macos/security/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;eclecticlight.co&lt;/a&gt; every now and then. It takes thirty seconds, and it lets you know if you’re properly patched and up-to-date.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read also: &lt;a href=&quot;https://macsouverain.com/en/lockdown-mode-face-a-coruna-toolkit-espionnage-gouvernemental/&quot;&gt;Lockdown Mode vs. Coruña, the government spy toolkit&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>securite</category><category>macos</category><category>xprotect</category><category>supply-chain</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/05/feature-37-xprotect-v3.png" length="0" type="image/png"/></item><item><title>kSuite vs Google Workspace, the honest comparison</title><link>https://macsouverain.com/en/ksuite-vs-google-workspace-le-comparatif-honnete/</link><guid isPermaLink="true">https://macsouverain.com/en/ksuite-vs-google-workspace-le-comparatif-honnete/</guid><description>kSuite Infomaniak or Google Workspace for your Mac? Pricing, encryption, jurisdiction, native Apple apps. The honest comparison, no marketing fluff.</description><pubDate>Sun, 10 May 2026 14:27:21 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Every month, you fork out cash for Google Workspace. You’re a MacSouverain reader, so privacy’s a big deal for you. Eventually, the cognitive dissonance gets unbearable.&lt;/p&gt;
&lt;p&gt;The question isn’t “Is Workspace bad?” It’s great, it’s the gold standard. The question is: what exactly are you paying for, and what are you trading for it? And is there an alternative that gives you your Mac, your jurisdiction, and your data back, without forcing you to downgrade?&lt;/p&gt;
&lt;p&gt;kSuite, brought to you by Infomaniak from Geneva, makes that very promise. Let’s see if it delivers.&lt;/p&gt;
&lt;h2 id=&quot;the-criteria-that-matter&quot;&gt;The Criteria That Matter&lt;/h2&gt;
&lt;p&gt;Comparing two collaborative suites without a grid is like doing a PR piece. Here are the six criteria I’ve chosen, and what I’ve deliberately left out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jurisdiction and Data Sovereignty.&lt;/strong&gt; Where data is stored, under which law, who can access it legally. This criterion trumps everything else for MacSouverain because it’s structural and non-negotiable with features.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real Encryption.&lt;/strong&gt; Not “encrypted” in general. At-rest, in-transit, and especially end-to-end: who holds the keys. This is the only grid that withstands a warrant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price and Transparency.&lt;/strong&gt; How much you pay per user, what you get, what changes when the editor does a “pricing update”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Native macOS and iOS Integration.&lt;/strong&gt; Apple Mail, Calendar, Contacts, Files. Can you work without installing a single app from the editor on your Mac. This is the “practical sovereignty” marker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Professional Functional Coverage.&lt;/strong&gt; Pro mail, shared drive, video conferencing, collaborative docs, admin console, SSO, MDM. A suite that forces you to keep another one nearby is a half-suite.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exit Strategy.&lt;/strong&gt; Export, standard formats, import from the competitor. You’re not married to your cloud provider, unless you choose to be.&lt;/p&gt;
&lt;p&gt;What I DID NOT evaluate: very specific use cases (Workspace for Education, HIPAA compliance in the US, FedRAMP). If you’re an American hospital, this comparison isn’t for you. If you’re a European SME, a freelancer, or a family office, we continue.&lt;/p&gt;
&lt;h2 id=&quot;ksuite-by-infomaniak&quot;&gt;kSuite, by Infomaniak&lt;/h2&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/05/capture-01-ksuite-admin-ksuite-vs-google-workspace-le-comparatif-honnete-1.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Infomaniak&amp;#x27;s Console Manager, kSuite dashboard view with sidebar and &amp;#x27;My day&amp;#x27; section listing Mail, Calendar, kMeet, kChat, kDrive&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;The philosophy in two sentences.&lt;/strong&gt; A collaborative suite edited by a Swiss hosting provider of 316 employee-owned people, ISO 27001 and 14001 certified, operating its own datacenters in Geneva and Winterthur. Not a reseller slapping a UI on third-party bricks, a vertically integrated editor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The strengths.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Swiss, no FADP, outside CLOUD Act.&lt;/strong&gt; Infomaniak is under Swiss jurisdiction, governed by the new Federal Act on Data Protection (FADP, in effect since 01/09/2023). No CLOUD Act applies. Switzerland benefits from an adequacy decision for GDPR transfers. For an EU client or anyone attached to keeping their data from making a legal detour to Washington, that’s argument enough.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Built-in, free, transparent OpenPGP in kMail.&lt;/strong&gt; &lt;a href=&quot;https://finance.yahoo.com/news/infomaniak-democratises-email-encryption-users-072800175.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Infomaniak enabled end-to-end encryption via OpenPGP in kMail webmail on June 17, 2025&lt;/a&gt;, for all plans, no add-on required. You enable, you exchange keys with your contact, your emails are encrypted end-to-end. Among major suites, only Proton and kSuite offer free OpenPGP in webmail. Google Workspace, Microsoft 365, and Zoho reserve their native encryption for Enterprise plans.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OnlyOffice under the hood of Docs, Grids, Points.&lt;/strong&gt; The office suite engine in kSuite is &lt;a href=&quot;https://www.infomaniak.com/en/ksuite/kdrive/onlyoffice&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;OnlyOffice, AGPLv3, open source&lt;/a&gt;. High-fidelity compatibility with.docx,.xlsx,.pptx, better than Google Docs with native Office files. If your accountant sends you a.xlsx with macros and a wonky layout, OnlyOffice renders it correctly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open protocols everywhere.&lt;/strong&gt; IMAP, SMTP, CalDAV, CardDAV, WebDAV. You configure Apple Mail, Calendar, Contacts, and Files.app without installing a single Infomaniak executable on your Mac. That’s rare, and it’s the purest integration criterion a cloud suite can tick.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;kMeet with optional, free E2E.&lt;/strong&gt; WebRTC video conferencing with optional end-to-end encryption activable when creating the meeting (shared key), &lt;a href=&quot;https://www.infomaniak.com/en/support/faq/2464/securing-a-kmeet-meeting-password-encryption-key&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;documented by Infomaniak&lt;/a&gt;. Limited to Chromium browsers and desktop app, but it exists. Google Workspace’s equivalent (CSE) requires Enterprise Plus.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Transparent, stable pricing.&lt;/strong&gt; kSuite Pro at 7.90 €/user/month for 3TB storage and full mail pro. No documented price increase since launch in 10/2022. The pricing promise holds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The weaknesses.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MDM and Apple Business Manager: the gaping hole.&lt;/strong&gt; No official ABM integration for kSuite. If you deploy a fleet of iPhones and Macs for business with federated authentication via Managed Apple ID, Workspace does it natively. kSuite requires a third-party MDM (Jamf, Mosyle, Kandji) with classic IMAP/CalDAV auth. It works, it’s less integrated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limited third-party marketplace.&lt;/strong&gt; Google Workspace Marketplace has over 4,500 connected apps. kSuite has mostly Infomaniak suite and standard integrations. If your workflow relies on fifteen SaaS connected to Google Calendar, plan for a transition.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mobile apps: solid, not reference.&lt;/strong&gt; Infomaniak Mail and kDrive iOS are clean, but Gmail and Google Drive iOS remain the UX reference. It’s an experience gap, not a blocker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-time co-editing: good, not excellent.&lt;/strong&gt; OnlyOffice handles multi-user co-editing, but Google Docs is the absolute reference for latency and collaborative undo. If you spend all day simultaneously editing the same document with six people, you’ll feel the difference. Otherwise, not so much.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Euria vs Gemini.&lt;/strong&gt; Infomaniak has its sovereign AI (Euria) for kMeet transcription and assistance. It’s decent, it’s not Gemini. If advanced AI-driven office suite is your top criterion, Google Workspace wins this point hands down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who it’s for.&lt;/strong&gt; The freelancer, the SME, the family office, the liberal profession that wants a complete pro suite without CLOUD Act and without installing another proprietary app on their Mac. The MacSouverain profile, in short.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prices (excerpts, real editor page on &lt;a href=&quot;https://www.infomaniak.com/en/ksuite/ksuite-pro/prices&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;infomaniak.com/en/ksuite/ksuite-pro/prices&lt;/a&gt;).&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;my kSuite&lt;/strong&gt; : free, 20GB, 1 @ksuite.infomaniak.com address, kMeet included. No personal domain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;my kSuite+&lt;/strong&gt; : CHF 5.75/month, 2TB, 1 domain + 5 aliases.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kSuite Standard&lt;/strong&gt; : 1.90 €/user/month, 15GB per user, pro mail with domain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kSuite Pro&lt;/strong&gt; : 7.90 €/user/month, 3TB per user, pro mail + aliases, SSO SAML.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kSuite Enterprise&lt;/strong&gt; : 14.90 €/user/month, 6TB per user, advanced admin.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;google-workspace-by-google-llc&quot;&gt;Google Workspace, by Google LLC&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Philosophy in two sentences.&lt;/strong&gt; The collaborative suite that redefined the standard since 2006. Market reference for Gmail, Docs, Sheets, and Meet, integrated with almost every SaaS worldwide, under US jurisdiction and CLOUD Act.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strengths.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reference anti-spam email.&lt;/strong&gt; Gmail filters better than anyone else, period. Fifteen years of machine learning feedback on billions of messages, that’s hard to beat. If you switch email providers, your spam folder will miss you for two months.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Co-editing Docs, Sheets, Slides.&lt;/strong&gt; The inventor of the genre is also the master of it. Latency, suggestions, mentions, granular history: Google Workspace’s online office suite remains the reference, and all other suites measure up to it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Giant third-party ecosystem.&lt;/strong&gt; &lt;a href=&quot;https://workspace.google.com/marketplace&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Google Workspace Marketplace&lt;/a&gt;, 4,500+ apps. Your CRM, your billing, your HR tool, your ATS: they all have a native Google connector. For kSuite, expect manual CalDAV/IMAP integrations when the third-party app allows it, or nothing when it doesn’t.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Official Apple Business Manager.&lt;/strong&gt; Federated authentication with Managed Apple ID, DEP token, MDM deployment Workspace Endpoint Management covering macOS, iOS, ChromeOS, Android, Windows. For an SME managing a heterogeneous fleet, this is a real operational argument.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gemini AI integrated into all plans.&lt;/strong&gt; Since March 17, 2025, Google has bundled Gemini into the core tariff of Workspace. NotebookLM, Gemini in Docs, Gemini in Sheets, Meet transcription: it’s powerful, and it’s available without additional add-ons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vault, eDiscovery, DLP, BigQuery audit.&lt;/strong&gt; If your profession has legal retention, legal hold, or serious data loss prevention obligations, Workspace Plus and Enterprise are mature on these topics for ten years. kSuite has audit logs, not the full regulatory stack.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Weaknesses.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CLOUD Act, the structural argument.&lt;/strong&gt; Google LLC is a US company, subject to the &lt;a href=&quot;https://wire.com/en/blog/cloud-act-eu-data-sovereignty&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;2018 CLOUD Act&lt;/a&gt;, which allows US authorities to demand data stored anywhere in the world from a provider under US jurisdiction. “European datacenter” doesn’t change anything: Microsoft France confirmed this under oath to the Senate. Workspace is not qualified SecNumCloud by ANSSI. The partnership with Thales S3NS to carry a qualification is underway, Workspace itself does not carry it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price increase in 03/2025, Gemini bundle imposed.&lt;/strong&gt; Google increased the core tariff of all Workspace plans by integrating Gemini into the package: +16.7% on Business Starter and Standard (annual), +22.2% on Business Plus. You don’t have generative AI in your workflow? You’re still paying. This is the second global increase after 2023, Workspace pricing is continuously increasing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End-to-end encryption reserved for Enterprise Plus.&lt;/strong&gt; S/MIME hosted and CSE (Client-Side Encryption) are only available in &lt;a href=&quot;https://workspace.google.com/learn-more/security/security-whitepaper/page-5/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Enterprise Plus and Education Plus&lt;/a&gt;, with an external KMS to configure (Thales, Fortanix, Stormshield, Flowcrypt). On Business Starter, Standard, and Plus, you have TLS in-transit and AES-256 at-rest with Google keys. That’s not E2E.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Native Apple apps: it works, but not great.&lt;/strong&gt; Apple Mail with Google Account works, but Gmail labels become IMAP folders, the experience is degraded. CardDAV is officially deprecated by Google in favor of People API (still functional via native Google Account iOS, but long-term signal). In practice, the Workspace user ends up opening Gmail web and Drive iOS app: the “100% native Apple apps” argument falls apart.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gmail lock-in.&lt;/strong&gt; Gmail’s labels, filters, categorization are specific. Google Takeout exports everything (.mbox, EML), but reformatting on the new provider’s side isn’t trivial. You can leave, but it won’t be comfortable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Customer data vs AI training.&lt;/strong&gt; Google contractually commits not to use Workspace B2B data to train Gemini. That’s a contractual commitment, evolvable, separate from the commercial Gmail consumer engagement (which does share signals). Keep an eye on this over time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who it’s for.&lt;/strong&gt; The company whose critical workflows depend on the Marketplace, the large group with serious eDiscovery needs, the US client where local compliance requires Google certifications, the team already set up with no operational argument to move.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prices HT (annual, editor page &lt;a href=&quot;https://workspace.google.com/pricing&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;workspace.google.com/pricing&lt;/a&gt;).&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Business Starter&lt;/strong&gt;: €6.80/user/month (annual), 30GB per user, Meet 100 participants, max 300 users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business Standard&lt;/strong&gt;: €13.60/user/month, 2TB pooled, Meet 150 + recording.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business Plus&lt;/strong&gt;: €21.10/user/month, 5TB pooled, Vault eDiscovery, Meet 500.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise&lt;/strong&gt;: quote-based, 5TB+, Meet 1,000, CSE, advanced DLP.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Launch promotion: 50% off for the first 3 months for the first 20 users, then standard pricing applies.&lt;/p&gt;
&lt;h2 id=&quot;face-to-face-on-the-criteria-that-matter&quot;&gt;Face-to-face on the criteria that matter&lt;/h2&gt;
&lt;p&gt;Instead of a flat table that levels everything, let’s look at the six criteria one by one.&lt;/p&gt;
&lt;h3 id=&quot;jurisdiction-and-sovereignty&quot;&gt;Jurisdiction and sovereignty&lt;/h3&gt;
&lt;p&gt;kSuite is Swiss, under the Swiss Federal Act on the Surveillance of Post and Telecommunications (FADP), hosted in Switzerland (datacenters in Geneva and Zurich region), outside the CLOUD Act, outside the GDPR (but with a valid EU adequacy decision). Workspace is US, under the CLOUD Act, global datacenters with the “data regions” Europe option in Enterprise plans. On this criterion, it’s not a comparison, it’s a difference in nature. If jurisdiction is decisive for you, the subject is already settled.&lt;/p&gt;
&lt;h3 id=&quot;real-encryption&quot;&gt;Real encryption&lt;/h3&gt;
&lt;p&gt;kSuite: Native and free OpenPGP E2E in kMail, optional in kMeet, AES-256 at-rest on kDrive with Infomaniak keys. No native E2EE drive. Workspace: TLS and AES-256 at-rest everywhere, hosted S/MIME and Customer-Supplied Encryption in Enterprise Plus only, BYOK with external KMS in Enterprise Plus. For email, kSuite wins hands down and for free. For the drive, both ask for a compromise: Infomaniak keeps the keys, or you pay for Workspace Enterprise Plus to have CSE.&lt;/p&gt;
&lt;h3 id=&quot;price-and-transparency&quot;&gt;Price and transparency&lt;/h3&gt;
&lt;p&gt;At equivalent tiers, kSuite is cheaper everywhere. Solo 2 To: my kSuite+ at 5.75 € against Business Starter at 6.80 € for 30 Go (a factor of 70 in storage). SME standard: kSuite Pro at 7.90 € against Business Standard at 13.60 € (kSuite 42% cheaper, 50% more storage). SME premium: kSuite Enterprise at 14.90 € against Business Plus at 21.10 € (kSuite 29% cheaper). And Workspace pricing goes up, kSuite’s hasn’t changed since 10/2022.&lt;/p&gt;
&lt;h3 id=&quot;native-macos-and-ios-integration&quot;&gt;Native macOS and iOS integration&lt;/h3&gt;
&lt;p&gt;kSuite exposes IMAP, SMTP, CalDAV, CardDAV, WebDAV. Apple Mail, Calendar, Contacts, Files.app work natively without a single proprietary app installed. It’s the “100% Apple” scenario pure and simple. Workspace also works natively, but the real experience pushes the user towards Gmail web and Drive iOS. On the criterion of “installing nothing from the vendor”, kSuite wins without moving; on the criterion of “polished experience”, Workspace keeps the lead with its own apps.&lt;/p&gt;
&lt;h3 id=&quot;professional-functional-coverage&quot;&gt;Professional functional coverage&lt;/h3&gt;
&lt;p&gt;Both suites cover email, drive, calendar, contacts, video conferencing, collaborative docs, admin console, SSO. Workspace adds native MDM, official ABM, Marketplace with 4500 apps, advanced DLP, Vault eDiscovery. kSuite adds high-fidelity OnlyOffice, free OpenPGP, E2E kMeet. On pure coverage, Workspace has more depth; on functional sovereignty, kSuite has an edge.&lt;/p&gt;
&lt;h3 id=&quot;exit-possibility&quot;&gt;Exit possibility&lt;/h3&gt;
&lt;p&gt;kSuite exports EML, MBOX, vCard, iCal, native OnlyOffice files. Workspace exports via Takeout (mbox, vCard, ics,.docx via conversion). Both let you leave. kSuite makes arrival easier: it has a documented Workspace import in the Manager console. The reverse (leaving Workspace for something else) works technically but isn’t guided.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;macks-recommendation&quot;&gt;Mack’s Recommendation&lt;/h2&gt;
&lt;p&gt;I’ll say it straight up because that’s my job: if you have a choice, &lt;strong&gt;kSuite is better than Workspace for your Privacy.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not because Workspace is bad. Workspace is an excellent collaborative suite. But the MacSouverain user isn’t the average Workspace user. The reader of this site is a freelancer, a European SME, a family office, an independent who pays for a service and wants to know who can read their files, who can force them to be communicated, and what happens when an audit arrives. On these three questions, Workspace answers “Google, the CLOUD Act, we’ll handle it”, and &lt;strong&gt;kSuite answers “you, nobody, and an export EML file”, total Privacy.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’re a freelancer or solo and budget matters.&lt;/strong&gt; my kSuite+ at CHF 5.75/month for 2TB is an obvious choice over Business Starter and its 30GB.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’re a 5-50 person SME in Europe.&lt;/strong&gt; kSuite Pro at €7.90/user. You save 42% compared to Business Standard, keep your pro mail with domain, can configure Apple Mail and Calendar on the whole fleet without installing an app, and you’re out of the CLOUD Act. The only question to ask: does your fleet need federated MDM via ABM? If yes, seriously evaluate the cost of a Mosyle or Jamf as a complement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’re already on Workspace with your whole workflow tied to it.&lt;/strong&gt; A migration costs. You don’t have to do it this quarter. But there are two moments when reconsidering it makes sense: every time Workspace raises its prices (the next one is coming), and when a critical workflow breaks due to a Google change. Both moments will happen, statistically.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’re a family office in Switzerland, Germany, or elsewhere in the EU and US jurisdiction bothers you.&lt;/strong&gt; You don’t pay an American cloud to store your pro correspondence and financial documents, it’s as simple as that. kSuite is the shortest answer.&lt;/p&gt;
&lt;p&gt;For my personal use, I made a different choice, &lt;a href=&quot;https://macsouverain.com/en/ma-stack/&quot;&gt;Proton Workspace&lt;/a&gt;, which makes the same sovereignty promise from a different angle (E2E everywhere by default, complete Proton ecosystem). If you’re hesitating between the two sovereign worlds, remember this grid: &lt;strong&gt;kSuite has the edge on pure native Apple integration&lt;/strong&gt; (standard CalDAV, CardDAV, IMAP) and &lt;strong&gt;high-fidelity OnlyOffice&lt;/strong&gt;; Proton has the edge on systematic E2E and the cohesive app suite. Neither brings you back to the CLOUD Act, that’s the essential part.&lt;/p&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;kSuite is cheaper&lt;/strong&gt; than its equivalent, more sovereign by design (Switzerland, nFADP, employee-owned, ISO 27001), &lt;strong&gt;exposes open protocols&lt;/strong&gt; that make native Apple apps fully usable, and &lt;strong&gt;includes free OpenPGP encryption&lt;/strong&gt; in mail. Workspace is more polished on Gmail, Docs, and third-party ecosystems, more integrated with Apple Business Manager, and much more mature on Vault and DLP topics, at the cost of a US jurisdiction and continuous price increases.&lt;/p&gt;
&lt;p&gt;In practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Freelance or solo, budget-conscious&lt;/strong&gt; → &lt;a href=&quot;https://www.infomaniak.com/fr/ksuite/myksuite&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;my kSuite+ at CHF 5.75/month&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;European SME 5-50 people&lt;/strong&gt; → &lt;a href=&quot;https://www.infomaniak.com/fr/ksuite&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;kSuite Pro at €7.90/user/month&lt;/a&gt;, with a third-party MDM if needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Critical Workspace workflow already in place&lt;/strong&gt; → stay, prepare migration for the next pricing update.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Heavy US regulatory compliance&lt;/strong&gt; → stay on Workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EU family office, non-negotiable jurisdiction&lt;/strong&gt; → &lt;a href=&quot;https://www.infomaniak.com/fr/ksuite&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;kSuite, no hesitation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Transparency: MacSouverain is affiliated with Infomaniak. Subscribing to kSuite via the links in this article supports the site, without changing the price you pay. If you want to help, &lt;a href=&quot;https://www.infomaniak.com/fr/ksuite&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;it’s this way&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&quot;the-editors-themselves&quot;&gt;&lt;strong&gt;The Editors Themselves&lt;/strong&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Infomaniak&lt;/strong&gt;, the employee-owned Swiss hoster from Geneva, has been editing &lt;strong&gt;kSuite&lt;/strong&gt; since 10/2022. Product page, prices, and public ISO 27001 / 14001 / 5001 certifications.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Workspace&lt;/strong&gt;, Mountain View, under US jurisdiction and CLOUD Act. Pricing page, security whitepaper, public ISO 27001.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;technical-documentation&quot;&gt;&lt;strong&gt;Technical Documentation&lt;/strong&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;kMail&lt;/strong&gt;’s free OpenPGP announcement, &lt;a href=&quot;https://finance.yahoo.com/news/infomaniak-democratises-email-encryption-users-072800175.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;picked up by Yahoo Finance&lt;/a&gt; on June 17, 2025.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://support.apple.com/guide/apple-business-manager/intro-to-google-workspace-axmaef1a0154/web&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple Business Manager × Workspace&lt;/a&gt;&lt;/strong&gt;, Apple’s official guide. Native Managed Apple ID federation on Google’s side, not kSuite’s.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;independent-analyses&quot;&gt;&lt;strong&gt;Independent Analyses&lt;/strong&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://wire.com/en/blog/cloud-act-eu-data-sovereignty&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Wire, CLOUD Act vs EU sovereignty&lt;/a&gt;&lt;/strong&gt;, Swiss messaging app &lt;strong&gt;Wire&lt;/strong&gt; explains why a European datacenter isn’t enough if the company is US-based.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://9to5google.com/2025/01/15/google-workspace-price-increase-2025/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;9to5Google, Workspace price hike 03/2025&lt;/a&gt;&lt;/strong&gt;, tech press documenting the forced Gemini bundle and updated pricing grid.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;also-see&quot;&gt;Also see&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;Digital sovereignty, in practice&lt;/a&gt;: the general grid of which kSuite is a case study.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/cloud-ordinateur-quelquun-dautre/&quot;&gt;The cloud, it’s someone else’s computer&lt;/a&gt;: the mental framework behind this comparison.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/dns-talon-achille-privacy/&quot;&gt;DNS, the Achilles heel of your privacy&lt;/a&gt;: same logic of jurisdiction on another layer.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>mac</category><category>comparatif</category><category>souverainete</category><category>suite-collaborative</category><category>infomaniak</category><category>google-workspace</category><category>comparatifs</category><enclosure url="https://macsouverain.com/content/images/2026/05/feature-ksuite-vs-google-workspace-le-comparatif-honnete-3.png" length="0" type="image/png"/></item><item><title>Little Snitch vs LuLu: Which outgoing firewall for your Mac?</title><link>https://macsouverain.com/en/little-snitch-vs-lulu-pare-feu-sortant-mac/</link><guid isPermaLink="true">https://macsouverain.com/en/little-snitch-vs-lulu-pare-feu-sortant-mac/</guid><description>Little Snitch paid and closed-source vs LuLu open-source and free. Max sovereignty on one side, max granularity on the other. How to choose without regrets.</description><pubDate>Tue, 05 May 2026 11:57:32 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;MAJ juillet 2026.&lt;/strong&gt; DNS4EU, cited below as the integrated encrypted DNS provider in Little Snitch, has closed at the end of May 2026 (insufficient resources). Little Snitch has replaced it with Quad9 in its presets. Whenever you read dns0.eu below, replace it with DNS4EU or Quad9.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update, July 2, 2026.&lt;/strong&gt; Little Snitch has moved to version 6.4.1 (June 2026): Touch ID unlock for settings, copy rules between profiles with drag and drop, hourly updates for block lists. Version 6.4.1 fixes rejection of old licenses. The comparison verdict remains unchanged, with the referenced versions below being up-to-date.&lt;/p&gt;
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;While you’re reading this article, your Mac is talking. To forty-seven servers, without asking for your opinion. Apple iCloud, Adobe, Microsoft Telemetry, the weather app that wakes up a CDN in Singapore, the Solitaire game that posts your scores to an editor you don’t know.&lt;/p&gt;
&lt;p&gt;No one, or almost no one, looks at the network output of their data.&lt;/p&gt;
&lt;p&gt;That’s where the outgoing firewall on Mac comes into play. Not the integrated ALF (Application Firewall, which only filters incoming), not &lt;code&gt;pf&lt;/code&gt; (powerful but blind to process). A real outgoing firewall &lt;em&gt;process-aware&lt;/em&gt; that says “such a binary is trying to connect to such a domain, do you allow it?”. On macOS, two tools dominate: &lt;strong&gt;Little Snitch&lt;/strong&gt; (paid, closed-source, Austrian) and &lt;strong&gt;LuLu&lt;/strong&gt; (free, open-source, American, signed by Patrick Wardle).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Read also: &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;The macOS privacy settings to change in 15 minutes&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-an-outgoing-firewall-process-aware&quot;&gt;Why an outgoing firewall &lt;em&gt;process-aware&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Outgoing firewall in two sentences.&lt;/strong&gt; A software that intercepts outgoing connections from your apps before they go to the internet and asks “do I allow or block it?”. An incoming firewall does the opposite, filtering what comes in from the network. Little Snitch and LuLu play on the outgoing side only, that’s their job.&lt;/p&gt;
&lt;p&gt;macOS natively provides two layers of security. ALF (Application Layer Firewall) filters incoming connections. XProtect and MRT scan binaries known to be malicious. That’s what you get out-of-the-box.&lt;/p&gt;
&lt;p&gt;If you want more serious protection, you can pile on more on top: Santa (NorthPoleSec, OSS) to block unwhitelisted executables, Wazuh to send events to a SIEM, and precisely what this article is about, an outgoing firewall process-aware. All these layers, native or added on, do what they’re supposed to do, complementing each other.&lt;/p&gt;
&lt;p&gt;An app can be signed, validated by Apple, run by a legitimate user, and send your address book to a third-party server. ALF sees nothing (it’s outgoing). Santa sees nothing (the binary is allowed to run). XProtect sees nothing (the binary isn’t in the malware database). That’s &lt;strong&gt;exactly what an outgoing firewall process-aware is for&lt;/strong&gt;: filling that gap. &lt;strong&gt;Filtering not by IP address, but by process and destination&lt;/strong&gt;, with an allow/drop verdict per connection.&lt;/p&gt;
&lt;p&gt;On macOS, since Big Sur, these tools use the Apple &lt;code&gt;NEFilterDataProvider&lt;/code&gt; framework (Network Extension). No more kernel extensions to load, no more risk of kernel panic linked to a third-party kext. Apple maintains the network path, the third-party tool just renders a verdict.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-protagonists&quot;&gt;The protagonists&lt;/h2&gt;
&lt;h3 id=&quot;little-snitch-641&quot;&gt;Little Snitch 6.4.1&lt;/h3&gt;
&lt;p&gt;Developed by &lt;strong&gt;Objective Development Software GmbH&lt;/strong&gt;, in Vienna, Austria, since 2003. Twenty-two years old, stable team, no takeover, no pivot. Perpetual license, &lt;strong&gt;proprietary closed-source&lt;/strong&gt;. One known security incident (code-signing flaw in 2018, fixed before public disclosure by Patrick Wardle). Since version 5 (2020), no more kernel extensions, only Network Extension Apple. Current version: 6.4.1, released on June 22, 2026, supports macOS Sonoma, Sequoia, and Tahoe. UI in English and German. No French.&lt;/p&gt;
&lt;h3 id=&quot;lulu-432&quot;&gt;LuLu 4.3.2&lt;/h3&gt;
&lt;p&gt;Developed by &lt;strong&gt;Patrick Wardle&lt;/strong&gt;, founder of Objective-See (USA), since 2017. Wardle is a global security Mac reference: ex-NSA, creator of the Mac Malware Project, regular speaker at Black Hat, DEFCON, and Objective by the Sea. &lt;strong&gt;Open source, GPL-3.0&lt;/strong&gt;, public sources on GitHub, compilable binary. 100% free model, funded by donations via Patreon (no freemium, no tiered pricing). Current version: 4.3.2, released on May 3, 2026. Supports macOS 10.15+, Tahoe included since version 4.0. UI mainly in English.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-they-do-what-they-dont-do&quot;&gt;What they do, what they don’t do&lt;/h2&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/05/capture-02-prompts-cote-a-cote-prepub-art35.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Little Snitch and LuLu prompts side by side, immediate difference in granularity&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Little Snitch (left) and LuLu (right) prompts. Official captures from obdev.at and objective-see.org. © Objective Development and © Objective-See, GPL-3.0.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shared core product.&lt;/strong&gt; Both are outgoing firewalls process-aware built on the same Apple &lt;code&gt;NEFilterDataProvider&lt;/code&gt; framework, so the network path is dictated by macOS, not the editor. Reference versions here: Little Snitch 6.4.1 (released on June 22, 2026, first macOS Tahoe 26 supported since version 6.3) and LuLu 4.3.2 (released on May 3, 2026, GPL-3.0). Native Apple Silicon on both sides.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rule granularity.&lt;/strong&gt; Little Snitch lets you target by process, domain, port, protocol, network interface, time, and profile. LuLu lets you target by process, domain or IP, scope (specific process or global), and duration. The difference isn’t cosmetic: allowing Spotify between 8 am and 10 pm, on a specific port, or on a dedicated profile for the train, that’s Little Snitch only.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Network profiles.&lt;/strong&gt; LS automatically switches to the Wi-Fi SSID or interface (trusted vs public network, adapted VPN profile). That’s the nomadic MacBook user’s argument that has no equivalent. LuLu has profiles since version 4.0, but the switch is manual. You choose before connecting, or you’ve forgotten.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integrated encrypted DNS.&lt;/strong&gt; LS offers DoH, DoT, DoQ to Quad9, Cloudflare, dns0.eu, Google (you get the idea, it’s not the MS choice), as an option directly in the app’s settings. You no longer need a separate system profile for encrypted DNS. LuLu has a basic toggle “Allow DNS Traffic” on UDP:53, encrypted DNS isn’t its problem, you handle it upstream (dnscrypt-proxy, AdGuard, etc.). And beware of the Network Extension conflict described below.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wildcard DNS and the Chrome trap.&lt;/strong&gt; LS handles CDN reroutings like Akamai or iCloud without breaking rules, because it does wildcard resolution on the domain side. LuLu doesn’t have wildcard hostname support (GitHub issue #379, requested for a long time, not implemented). The consequence is serious on the Chrome side: Chrome doesn’t use Apple’s &lt;code&gt;Network.framework&lt;/code&gt; for DNS resolutions, so with LuLu, hostname blocking is ineffective on Chrome, fallback IP-only only (issue #410). If you live in Chrome, that’s a major limitation that’s little known.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live Network Monitor and Research Assistant.&lt;/strong&gt; LS has a real-time network map, a 5-minute traffic graph, a connection inspector per connection, and a Research Assistant that tells you what the community has already judged for that process (reduces whitelist fatigue). LuLu has Netiquette as a separate tool, not integrated into the prompt. No community reputation base.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Little details that add up.&lt;/strong&gt; LS has a silent mode (auto-allow or auto-deny during a meeting or presentation), built-in blocklists (trackers, ads, malware, daily updates), configurable acoustic notifications per rule, bidirectional rules since LS 6, binary identification by code signature (resists replacement by a false binary at the same path), and usage statistics per rule.&lt;/p&gt;
&lt;p&gt;LuLu doesn’t have silent mode (GitHub issue #540), no built-in blocklists, no sounds, no bidir (outgoing only by design), identifies the process by path (more fragile), and doesn’t store stats.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CLI and automation.&lt;/strong&gt; LS offers a mature CLI &lt;code&gt;littlesnitch&lt;/code&gt; with &lt;code&gt;export-model&lt;/code&gt;, &lt;code&gt;restore-model&lt;/code&gt;, &lt;code&gt;diagnostics&lt;/code&gt;, &lt;code&gt;switch-profile&lt;/code&gt;, &lt;code&gt;write-rules&lt;/code&gt;. You can backup your rules model, version it, and restore it on another Mac (with user mapping if different and Keychain password if export is encrypted). Native JSON on the backup side, &lt;code&gt;.lsrules&lt;/code&gt; JSON on the subscription rule set side, both Git-friendly.&lt;/p&gt;
&lt;p&gt;LuLu doesn’t have an official CLI. The rule format is a fragile binary plist, user rule export exists since version 4.2.1 but remains less standardized. For a fleet of several Macs managed with infrastructure-as-code, the gap is direct.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Logs and SIEM.&lt;/strong&gt; LS writes to a &lt;code&gt;at.obdev.littlesnitch&lt;/code&gt; subsystem (macOS unified log), plus a local SQLite DB exploitable, plus a Wazuh decoder own decoder. LuLu writes to &lt;code&gt;os_log&lt;/code&gt; without a documented subsystem, so tailing Wazuh on the manager side requires more regex and less structure. If you send your events to a SIEM (Wazuh, Splunk, Elastic), LS gives you proper material, LuLu gives you best effort.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Common macOS limitation.&lt;/strong&gt; Only one active filtering provider at a time on the system. Activating LS, or LuLu, or a third-party encrypted DNS profile (NextDNS for example), not the three. That’s an Apple limitation, not a product flaw. LS works around it by integrating its encrypted DNS. LuLu doesn’t.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Release cycles.&lt;/strong&gt; LS is regular, 6.3.1, 6.3.2, 6.3.3 in September-November 2025 then 6.4 and 6.4.1 in June 2026, stable team since 22 years. LuLu is more erratic, 4.2.0 in October 2023, 4.3.0 in March 2026, 4.3.2 in May 2026, project maintained on the available time of Wardle and the Objective-See foundation. Neither has French UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Score:&lt;/strong&gt; Little Snitch covers about 22 complete features out of 24 checked. LuLu covers about 10 complete features, 5 partial features, 9 missing features.&lt;/p&gt;
&lt;p&gt;The gap is clear. And it won’t close with the next LuLu release: some absences (CLI, encrypted DNS, integrated Network Monitor) are architectural choices, not oversights.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sovereignty-lulu-wins&quot;&gt;Sovereignty: LuLu wins&lt;/h2&gt;
&lt;p&gt;This is the most misunderstood point in the French debate, so let’s be direct.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LuLu is more sovereign than Little Snitch. Period.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Why? Three reasons that pile up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. LuLu is open source GPL-3.0.&lt;/strong&gt; The entire code is on GitHub. You can read it, audit it, compile it yourself, fork it. No backdoor can be inserted without leaving a public trace. No editor kill-switch possible without a researcher noticing. No hidden telemetry holds up against a &lt;code&gt;grep&lt;/code&gt; on the sources. That’s the verifiable trust model, not the delegated trust model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Little Snitch is proprietary closed-source.&lt;/strong&gt; The Viennese editor could be impeccable (and it is, for 22 years), you have no way to verify it other than delegating trust. Apple’s signature guarantees that the binary comes from Objective Development. It doesn’t guarantee anything about what that binary does. No formal independent audit has been published on Little Snitch (nor on LuLu, for that matter). On the rigor formality, the two tools are at the same level: zero published audit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. The “Wardle is American so US jurisdiction” argument doesn’t hold.&lt;/strong&gt; An argument has been circulating since the release of the free Linux version of Little Snitch in 2025, especially on the marketing side of obdev: LuLu is American, so less sovereign than LS which is Viennese. That’s false, or at best misleading. For a simple reason: LuLu’s code is public, GPL-3.0, compilable locally. No US injunction can force Wardle to insert a backdoor without the community noticing in the next commit. The binary you compile from your local sources has no more jurisdictional link with Wardle. That’s precisely what open source auditable prevents: undetectable jurisdictional takeover. Meanwhile, Little Snitch remains closed-source on the EU side, so the sovereignty argument reverses literally when you look at audibility rather than the headquarters jurisdiction.&lt;/p&gt;
&lt;p&gt;And Wardle isn’t just anyone. Ex-NSA, founder of Objective-See, creator of the Mac Malware Project, regular speaker at Black Hat and DEFCON, organizer of Objective by the Sea. His research has documented several bypasses of macOS firewalls (BlackHat 2018), which directly nourishes the defense of his own product. On the outgoing firewall Mac layer, that’s an authority.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sovereignty verdict: LuLu, no debate.&lt;/strong&gt; If sovereignty is your absolute criterion, the arbitration is trivial. If someone sells you Little Snitch as “more sovereign because EU editor”, they’re confusing jurisdictional sovereignty (true for other layers: Proton, dns0.eu) and audibility (the real question on code that inspects your traffic).&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/05/LuLu-rules-window-01-prepub-art35.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;LuLu rules window, view authorized and blocked apps together&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;LuLu rules window, official capture from objective-see.org. © Objective-See, GPL-3.0.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;functionality-little-snitch-wins&quot;&gt;Functionality: Little Snitch wins&lt;/h2&gt;
&lt;p&gt;On the other axis, the gap is just as clear, but in the other direction.&lt;/p&gt;
&lt;p&gt;Five features tip the choice as soon as you go beyond “I just want an app to stop phoning home”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Automatic network profile switch on SSID.&lt;/strong&gt; You’re at home on your Wi-Fi: permissive rules. You push your MacBook onto a café’s Wi-Fi: strict rules (blocklist trackers activated, forced encrypted DNS, restricted business apps). You’re at the office: pro profile that allows internal tools. Little Snitch automatically switches to the SSID. LuLu has profiles, but the switch remains manual. For a nomadic MacBook user, that’s a point to consider.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Integrated encrypted DNS.&lt;/strong&gt; DoH, DoT, DoQ to Quad9, Cloudflare, dns0.eu, Google (you get the idea, it’s not the MS choice), as an option directly in the app’s settings. LuLu has a basic toggle “Allow DNS Traffic” on UDP:53, encrypted DNS isn’t its problem, you handle it upstream (dnscrypt-proxy, AdGuard, etc.). And beware of the Network Extension conflict described below.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Mature wildcard hostname.&lt;/strong&gt; iCloud, Akamai, Adobe, and most modern CDNs constantly rotate their IPs. An “allow *.icloud.com” rule holds up. An “allow 17.X.X.X” rule breaks at the first rotation. Little Snitch handles wildcards properly. LuLu doesn’t (GitHub issue #379, not implemented). And on Chrome, which doesn’t use Apple’s native network framework, LuLu falls back to IP-only filtering, which means your hostname blocking &lt;strong&gt;no longer works at all&lt;/strong&gt; on Chrome (issue #410). That’s a major limitation that’s little known.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/05/capture-05-ls-network-monitor-prepub-art35.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Little Snitch Network Monitor, live map + process list + traffic graph + connection inspector&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Little Snitch Network Monitor, official capture from obdev.at. © Objective Development.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Real-time Network Monitor.&lt;/strong&gt; During the whitelist phase, or during an audit, you want to see the live traffic: who’s talking to whom, what volume, what geographic destination. Little Snitch has a live map and a 5-minute graph integrated into the app. LuLu offers Netiquette, an Objective-See tool that you have to launch separately. It’s OSS and it does the job, but it’s less fluid.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Scriptable CLI for the fleet.&lt;/strong&gt; That’s the point that tips the scale as soon as you have more than two Macs to manage. Little Snitch exposes a &lt;code&gt;littlesnitch&lt;/code&gt; binary that knows how to do &lt;code&gt;export-model&lt;/code&gt; (backup JSON of the rules model), &lt;code&gt;restore-model&lt;/code&gt; (restore from JSON file, with user ID mapping and Keychain password if export is encrypted), &lt;code&gt;diagnostics&lt;/code&gt;, &lt;code&gt;switch-profile&lt;/code&gt;, &lt;code&gt;write-rules&lt;/code&gt;. The real-world workflow on a fleet looks like this: &lt;code&gt;ssh mac-source littlesnitch export-model &gt; rules.json&lt;/code&gt; on the reference Mac, you commit &lt;code&gt;rules.json&lt;/code&gt; to a Git repo, and on each target Mac you do &lt;code&gt;scp rules.json mac-target:&lt;/code&gt; then &lt;code&gt;littlesnitch restore-model -m oldUID&gt;newUID rules.json&lt;/code&gt;. Not a one-liner magic pipe stdin, but versioned, diff proper, code review possible. LuLu doesn’t have an official CLI. To push rules, you copy a fragile binary plist, which changes format between versions, without any guarantee of reproducibility.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Functionality verdict: Little Snitch, no debate.&lt;/strong&gt; If you want the maximum granularity, nomadic profiles, scriptable fleet, and proper SIEM integration, the arbitration is quick.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;common-limitations-that-no-one-else-tells-you-about&quot;&gt;Common limitations (that no one else tells you about)&lt;/h2&gt;
&lt;p&gt;Before you decide, four limitations that apply &lt;strong&gt;to both&lt;/strong&gt; tools. Honest radicalism, we don’t pretend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Apple apps that bypass Network Extensions.&lt;/strong&gt; Since Big Sur, Apple has a whitelist of system apps exempted from any third-party &lt;code&gt;NEFilterDataProvider&lt;/code&gt; filtering. Apple Mail, App Store, some iCloud services bypass Little Snitch like they bypass LuLu. Neither sees 100% of Apple’s native traffic. That’s not a product flaw, it’s Apple’s decision, and it’s documented (Michael Tsai 2020).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Network Extension conflict.&lt;/strong&gt; macOS only allows &lt;strong&gt;one&lt;/strong&gt; active filtering provider at a time. You activate Little Snitch, &lt;strong&gt;or&lt;/strong&gt; LuLu, &lt;strong&gt;or&lt;/strong&gt; a third-party encrypted DNS profile (NextDNS, dns0.eu), not the three. That’s a platform limitation, not a product flaw.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. No formal independent audit.&lt;/strong&gt; Neither Little Snitch nor LuLu has had a published third-party audit type Cure53, Trail of Bits, or ANSSI/CSPN. That’s a limitation to know. On the LuLu side, open source GPL-3.0 compensates (continuous community audit). On the Little Snitch side, the 22-year track record without a major incident partially compensates (one known code-signing vuln in 2018, fixed before public disclosure). But on the formal rigor, the two tools are at the same level: zero published audit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. The whitelist phase is a hidden cost.&lt;/strong&gt; During the first days of use, you’ll be prompted every two minutes. Your OS, your apps, your antivirus, your backup, your mail client, each wants to join something. Budget one to two weeks of serious friction before your rules model is stable. That’s true with both tools. If you’re not patient, disable rather than authorize everything without looking (auto-allow by default breaks the very purpose of the tool).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-much-it-really-costs&quot;&gt;How much it really costs&lt;/h2&gt;
&lt;p&gt;LuLu is zero euros. No freemium, no tiered pricing, donations via Patreon optional. If you want to support Wardle and the Objective-See foundation, do it. It’s not mandatory to use the product.&lt;/p&gt;
&lt;p&gt;Little Snitch is more subtle. The public obdev.at grid, last verified on May 5, 2026, offers five pricing options. The &lt;strong&gt;Single License&lt;/strong&gt; at €59 for one Mac. The &lt;strong&gt;Family License&lt;/strong&gt; at €115, on which obdev doesn’t specify how many Macs are covered on the order page, so clarify with support before purchasing. The &lt;strong&gt;Multi License&lt;/strong&gt; explicitly, 5 Macs at €239 (around €48 per Mac) or 10 Macs at €419 (around €42 per Mac). And the &lt;strong&gt;Snitch Bundle&lt;/strong&gt; (Little Snitch + Micro Snitch, the microphone/camera control of the same editor) at €63.49 for one Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perpetual license&lt;/strong&gt;, no subscription. Major upgrade (5 → 6 for example) = reduced price upgrade. Over time, you pay once, use until the next major version.&lt;/p&gt;
&lt;p&gt;For a fleet of 5 Macs in Multi License, the real cost is around &lt;strong&gt;€48 per Mac&lt;/strong&gt;, perpetual license. For 10 Macs, &lt;strong&gt;around €42 per Mac&lt;/strong&gt;. That’s a calculation no one makes, but it changes the comparison with the “€59 per Mac” cited everywhere.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;verdict-on-two-axes&quot;&gt;Verdict on two axes&lt;/h2&gt;
&lt;p&gt;No unique winner. Two axes, two winners, a choice that depends on &lt;strong&gt;your priority criterion&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If sovereignty is your absolute criterion: LuLu.&lt;/strong&gt;&lt;br&gt;
Open source GPL-3.0, verifiable code, binary compilable locally, author of reference security Mac. No undetectable jurisdictional takeover. Free. You accept in exchange a lower granularity, no automatic profiles, no integrated encrypted DNS, no CLI fleet. For a single Mac, personal use, basic process blocking, that’s more than sufficient.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If rich functionality is your absolute criterion: Little Snitch.&lt;/strong&gt;&lt;br&gt;
Automatic SSID profile switch, integrated encrypted DNS, mature wildcard hostname, real-time Network Monitor, scriptable CLI, proper SIEM integration. You accept in exchange proprietary closed-source (with a Viennese editor stable for 22 years, but not auditable), a cost license (around €42 to €48 per Mac depending on the pack), no French UI. For a nomadic MacBook user, fleet management, or serious SIEM integration, that’s the tool.&lt;/p&gt;
&lt;p&gt;Neither is “better in the absolute”. They answer two different questions.&lt;/p&gt;
&lt;p&gt;And if you’re still undecided: start with LuLu. Free, OSS, two clicks to install. If after two months you feel the granularity is lacking, the wildcard is frustrating, or the fleet scripting is a chore, switch to Little Snitch with knowledge of cause. The opposite (starting with LS paid and descending to LuLu) costs €59 more for nothing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;No affiliation with Objective Development, no commercial link with Objective-See. This article does not earn any money on Little Snitch purchases.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;see-also&quot;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;The macOS privacy settings to change in 15 minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/apple-silicon-et-securite-ce-que-secure-enclave-change-vraiment/&quot;&gt;Apple Silicon and Secure Enclave: what your Mac really protects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;Digital sovereignty in practice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Email security and mail client on Mac&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The editors themselves&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.obdev.at/products/littlesnitch/index.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Objective Development (obdev.at)&lt;/a&gt;, the Austrian company developing Little Snitch since 2003: product page, &lt;a href=&quot;https://www.obdev.at/littlesnitch/releasenotes.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;release notes&lt;/a&gt;, &lt;a href=&quot;https://obdev.at/press/pr/2024-05-21-Objective-Development-Releases-Little-Snitch-6.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;press releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://objective-see.org/products/lulu.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Objective-See (objective-see.org)&lt;/a&gt;, Wardle’s foundation publishing LuLu freely&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The code and the technical documentation&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/objective-see/LuLu&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;LuLu’s source code on GitHub&lt;/a&gt;, freely readable, with public discussions between the author and users (bugs, limitations: &lt;a href=&quot;https://github.com/objective-see/LuLu/issues/280&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;#280&lt;/a&gt;, &lt;a href=&quot;https://github.com/objective-see/LuLu/issues/379&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;#379&lt;/a&gt;, &lt;a href=&quot;https://github.com/objective-see/LuLu/issues/410&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;#410&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.apple.com/documentation/networkextension/nefilterdataprovider&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Apple’s documentation on NEFilterDataProvider&lt;/a&gt;, the interface both tools use since Apple closed the old method in 2019&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Independent analyses&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.macg.co/logiciels/2024/05/little-snitch-6-gere-encore-plus-finement-les-connexions-reseau-du-mac-143869&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;MacGeneration&lt;/a&gt;, French reference site on the Apple ecosystem, for the review of Little Snitch 6&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://eclecticlight.co/2019/08/09/firewalls-phoning-home-and-whitelists/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Howard Oakley (The Eclectic Light Company)&lt;/a&gt;, British engineer who dissects macOS internals, to understand how these firewalls integrate into the system&lt;/li&gt;
&lt;li&gt;Patrick Wardle himself, for the &lt;a href=&quot;https://www.patreon.com/posts/just-released-v4-137905009&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;announcement of LuLu v4 on his Patreon&lt;/a&gt; (2025) where he documents the complete refactoring of the firewall&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>mac</category><category>comparatif</category><category>pare-feu</category><category>little-snitch</category><category>lulu</category><category>securite</category><category>souverainete</category><category>comparatifs</category><enclosure url="https://macsouverain.com/content/images/2026/07/feature-little-snitch-vs-lulu-pare-feu-sortant-mac.png" length="0" type="image/png"/></item><item><title>Proton Meet: Encrypted Vision, End-to-End Encryption for Maximum Privacy</title><link>https://macsouverain.com/en/proton-meet-visio-chiffree/</link><guid isPermaLink="true">https://macsouverain.com/en/proton-meet-visio-chiffree/</guid><description>Proton encrypts your calls end-to-end using MLS. Even Proton can&apos;t snoop on your meetings. How it really differs from Zoom, Teams, and Google Meet.</description><pubDate>Thu, 30 Apr 2026 10:24:38 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You’re scheduling a Zoom meeting with your accountant to discuss numbers, or a Teams call with a client to finalize a contract. You trust the lock icon in the browser.&lt;/p&gt;
&lt;p&gt;Problem: that lock protects data transport, not content. Zoom, Teams, and Google Meet decrypt your call on their servers by default to process video, audio quality, and automatic captions. That’s called “transit encryption,” not “end-to-end.” All three offer an optional E2EE mode, but it disables most smart features and remains invisible to 99% of users.&lt;/p&gt;
&lt;p&gt;Proton launched &lt;a href=&quot;https://proton.me/meet&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton Meet&lt;/a&gt; on March 31, 2026. Its promise in one sentence: not even Proton can access your calls, screen sharing, or chat. The encryption keys never leave the participants’ devices. Let’s see what that means concretely, who it’s really for, and where the real limits are.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-zoom-and-teams-do-with-your-meetings&quot;&gt;What Zoom and Teams do with your meetings&lt;/h2&gt;
&lt;p&gt;Let’s set the context first. When you use Zoom, Google Meet, or Microsoft Teams, your audio and video data is encrypted as it travels between your device and their servers. Nothing shocking so far. But on their servers, that data is decrypted for processing.&lt;/p&gt;
&lt;p&gt;Why? Because all the “smart” features you use daily require it. Automatic captions, noise suppression, background blur, adaptive video quality optimization: all of that needs access to the raw content of your call. This model is called “transit encryption,” and it’s perfectly legal and well-documented in the terms of service no one reads.&lt;/p&gt;
&lt;p&gt;What that concretely means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zoom can be legally compelled (CLOUD Act) to hand over call content (unless you’ve enabled its optional E2EE mode, which is never the default)&lt;/li&gt;
&lt;li&gt;Google can feed the personal profile associated with your account with call metadata (who, when, duration) if you’re using a regular Google account. In Workspace, Google contractually doesn’t use it for ads. But they keep it anyway (audit, “service improvement,” CLOUD Act). Not zero-knowledge.&lt;/li&gt;
&lt;li&gt;Microsoft Teams stores meeting metadata (who, when, how long, with whom) in its systems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zoom probably doesn’t systematically listen to your business calls. But legally and technically, it could. That’s the problem, not the stated intention.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;What digital sovereignty means in practice&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-proton-meet-works-differently&quot;&gt;How Proton Meet works differently&lt;/h2&gt;
&lt;p&gt;End-to-end encryption, E2EE, changes the game. Your data is never accessible in plaintext on Proton’s servers because the decryption keys never leave your and your interlocutors’ devices.&lt;/p&gt;
&lt;p&gt;Proton Meet uses the &lt;strong&gt;MLS, Messaging Layer Security&lt;/strong&gt; protocol, developed by the IETF, the same organization that standardizes fundamental internet protocols. MLS is specifically designed for groups: it efficiently manages participant entries and exits during a call without having to re-encrypt the entire session every time, a technical problem that naive E2EE implementations struggled with.&lt;/p&gt;
&lt;p&gt;What that practically covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Audio and video, obviously&lt;/li&gt;
&lt;li&gt;Screen sharing, entirely&lt;/li&gt;
&lt;li&gt;Real-time chat during the call&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What “even Proton can’t see” means technically: Proton’s servers see encrypted packets they can’t decrypt. They know a meeting is happening (they manage the signaling), but not what’s being said, shown, or written.&lt;/p&gt;
&lt;p&gt;Proton Meet’s code is open source. Proton regularly has its products audited by independent firms (Mail, VPN, Drive, Pass); an audit dedicated to Meet is expected after launch. Open source allows any security researcher to verify that the claims match the actual implementation.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/28-capture-02-mls-v2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;The MLS section of Proton Meet: Messaging Layer Security explained on the official site&quot;&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-plans-and-what-they-cover&quot;&gt;The plans and what they cover&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Free version:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Up to 50 participants&lt;/li&gt;
&lt;li&gt;Maximum duration: 1 hour per call&lt;/li&gt;
&lt;li&gt;Proton account required to create the meeting; no account required for invited participants (a browser link suffices)&lt;/li&gt;
&lt;li&gt;Instant meeting link creation, share with one click&lt;/li&gt;
&lt;li&gt;Screen sharing and chat included&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For an independent who wants to have a client meeting without friction, this is immediately usable. You create the link, send it, your client clicks, and the call starts in their browser. No installation or Proton account required for participants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meet Professional (starting at $7.99 USD/user/month, included in Workspace plans):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Up to 250 participants&lt;/li&gt;
&lt;li&gt;Duration: up to 24 hours per call&lt;/li&gt;
&lt;li&gt;Advanced moderation features&lt;/li&gt;
&lt;li&gt;Proton Calendar integration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Proton Workspace (Standard and Premium), for teams:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Proton Workspace positions Meet as a component of a complete suite that includes Mail, Calendar, Drive, Docs, Sheets, VPN, Pass (team password manager), and Lumo, an AI privacy-first assistant available on the Premium plan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workspace Standard&lt;/strong&gt; (€12.99/user/month with annual billing): 1 TB per user, Meet up to 100 participants, 15 email domains, Mail, Calendar, Drive, Docs, Sheets, VPN, Pass.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workspace Premium&lt;/strong&gt; (€19.99/user/month with annual billing): 3 TB per user, Meet up to 250 participants, 20 email domains, Lumo (AI privacy-first) included, email composition assistant, configurable retention policies.&lt;/p&gt;
&lt;p&gt;Workspace targets teams looking to replace Google Workspace or Microsoft 365 with a fully encrypted alternative. It’s the direct PME target: you keep a complete collaborative organization (email, documents, meetings, passwords) but switch to a Swiss jurisdiction with an economic model based on subscriptions, not ads or data resale.&lt;/p&gt;
&lt;p&gt;Proton AG is ISO 27001 certified and audited SOC 2 Type II. Workspace is compatible with GDPR, HIPAA, and CCPA.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/28-capture-03-workspace-v2.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Proton Workspace Standard vs Premium, feature and storage comparison&quot;&gt;
&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-that-concretely-means-for-an-independent-or-a-sme&quot;&gt;What that concretely means for an independent or a SME&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;For situations where confidentiality matters:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Meeting with a lawyer to discuss a dispute. Meeting with your accountant about a restructuring. Exchange with a client sharing sensitive data. Code review with your team on a confidential project (and you should consider all your projects confidential).&lt;/p&gt;
&lt;p&gt;In these situations, the difference between “transit encrypted” and “end-to-end encrypted” isn’t theoretical. It’s the difference between a document in an envelope and a document in a safe that the courier can’t open.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zero friction for your counterparts:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your client doesn’t need to create an account, download an app, or ask “what’s Proton?” You send them a link, they click, they’re in the meeting from their browser. That’s the level of friction of Zoom or Google Meet, with the level of confidentiality of an architecture fully encrypted end-to-end. That’s the strongest argument to convince your team or a reluctant client.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For remote teams:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If your team is already in the Proton ecosystem (Mail, Drive), Workspace Standard or Premium gives you access to Meet with participant and duration limits that fit most professional uses. The promise of not having to leave the sovereign ecosystem for a video call is real.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What Proton Meet doesn’t do (yet):&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No cloud recording on Proton’s side: architecturally consistent with E2EE, the server can’t record what it can’t decrypt. Local recording on the host’s side remains possible if needed (compliance, documentation). No automatic transcription, real-time captions, or AI summaries either: these features require server-side processing of plaintext content, incompatible with strict E2EE. That’s the trade-off: privacy or server-side AI, not both.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;Apple Mail vs Gmail vs Proton Mail: the honest comparison&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-real-limits-to-know&quot;&gt;The real limits to know&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The free version is limited.&lt;/strong&gt; One hour per call might not be enough for a wide client interview, workshop, or training. 50 participants is sufficient for most team meetings, but it’s just enough for a webinar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Migrating your ecosystem has a cost.&lt;/strong&gt; If your team is used to Teams with its Office 365 integrations, switching to Workspace won’t be seamless. Proton’s docs (Docs, Sheets) are functional but haven’t yet reached the maturity of Google Workspace in advanced collaboration features. It’s a choice, not an improvement across the board.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Third-party integrations are limited.&lt;/strong&gt; Proton Meet natively integrates with Proton Calendar for inserting meeting links. Beyond that, integrations with tools like Slack, Notion, or CRMs are absent or limited, where Zoom and Teams have years of ecosystem behind them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The price compared to the competition.&lt;/strong&gt; The fair comparison isn’t Proton Meet vs another video conferencing service. You need to look at the suites as a whole.&lt;br&gt;
Proton Workspace Standard (€12.99/user/month with annual billing) vs Google Workspace Business Starter (~6.80 €/user/month) or Microsoft 365 Business Basic (~6 €/user/month).&lt;/p&gt;
&lt;p&gt;Proton is roughly twice as expensive. Google and Microsoft offer E2EE as an option, but it disables features like captions and transcription. Proton Meet doesn’t offer those features either, but that’s by design, assuming strict E2EE from the start. The price delta is the cost of a complete privacy service that lives off your subscription, not your data.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/proton-bridge-apple-mail-mac/&quot;&gt;Proton Bridge + Apple Mail on Mac: encryption without sacrificing comfort&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-those-in-a-hurry&quot;&gt;For those in a hurry&lt;/h2&gt;
&lt;p&gt;Proton Meet is an end-to-end encrypted video conferencing service using the MLS protocol, open source, independently audited, based in Switzerland. Launched on March 31, 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Free plan:&lt;/strong&gt; up to 50 participants, 1 hour. Your guests join from their browser, no account or installation needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Meet Professional:&lt;/strong&gt; up to 250 participants, up to 24 hours, starting at $7.99 USD/user/month (included in Workspace Standard and Premium plans).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proton Workspace:&lt;/strong&gt; a complete suite for teams with Mail, Calendar, Drive, Docs, Sheets, Meet, VPN, Pass, available in Standard and Premium (with Lumo AI included for Premium).&lt;/p&gt;
&lt;p&gt;It’s not a universal replacement for Zoom or Teams. It’s the right choice if the architectural confidentiality of your meetings matters to you, or if you’re already in the Proton ecosystem.&lt;/p&gt;
&lt;p&gt;If you want a fully encrypted suite for your team without relying on an American infrastructure subject to the CLOUD Act and the 5 Eyes jurisdiction, and you don’t want your data feeding a ad system, Proton Workspace is a very serious candidate to evaluate.&lt;/p&gt;
&lt;p&gt;For an independent with client calls under one hour, the free plan with a maximum of 50 participants is more than sufficient. For a team looking to migrate away from Google Workspace or Microsoft 365: Proton Workspace deserves a serious evaluation.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Need tech terms explained? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>visio</category><category>proton</category><category>pme</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/28-feature-proton-meet.png" length="0" type="image/png"/></item><item><title>Six months and nineteen global texts, the terrifying convergence</title><link>https://macsouverain.com/en/convergence-libertes-numeriques/</link><guid isPermaLink="true">https://macsouverain.com/en/convergence-libertes-numeriques/</guid><description>HR 8250, CSAR, verdict Meta, World ID, Online Safety Act. Six months, nineteen texts, four continents. One direction.</description><pubDate>Thu, 30 Apr 2026 08:43:55 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;JULY 2026 UPDATE.&lt;/strong&gt; No calendar on the CSAR side: the trilogue on May 4th took place, and on July 9th the Parliament allowed the renewal of Chat Control 1.0 (voluntary, E2E excluded) without the 361 votes needed to block it, majority against. Mandatory scanning (2.0) described in this map is not settled: it goes back to trilogue in September. &lt;a href=&quot;https://macsouverain.com/en/radar-chat-control-1-adopte-par-defaut/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Your Privacy? It’s not really yours anymore.&lt;/p&gt;
&lt;p&gt;No one took it from you all at once, no. That’s for rushed regimes. They’re just nibbling at it, slowly, so you don’t notice.&lt;/p&gt;
&lt;p&gt;A bill in Washington making your Mac an identity checkpoint. An EU regulation replacing your encrypted messages with a snitch. A jury in New Mexico slapping Meta with a $375 million fine for daring to deploy strong encryption.&lt;/p&gt;
&lt;p&gt;Six months. Nineteen texts. Four continents. One direction.&lt;/p&gt;
&lt;p&gt;Here’s the map.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;three-mechanics-one-trajectory&quot;&gt;Three mechanics, one trajectory&lt;/h2&gt;
&lt;p&gt;The nineteen texts I’m presenting don’t look alike on the surface. An American law, a European regulation, a court decision, a private product. But piled up, three mechanics emerge, and they work together.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;M1, universal identification.&lt;/strong&gt; No more anonymity on the internet, not even for adults. Every connection, every sign-up, every message demands an identity proof.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;M2, breaking end-to-end encryption.&lt;/strong&gt; Encryption stays on paper. But contents are scanned before it applies, or deploying it becomes legally risky.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;M3, centralization with two or three actors.&lt;/strong&gt; Apple, Google, Microsoft, or a Sam Altman eager to monopolize humanity verification. You no longer log in to a site, you log in through an identity broker.&lt;/p&gt;
&lt;p&gt;Most of these texts passed under the radar because they arrived one by one. When you see them together, the picture changes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;m1-universal-identification-without-adult-exception&quot;&gt;M1, universal identification without adult exception&lt;/h2&gt;
&lt;p&gt;On April 13, 2026, Josh Gottheimer (D-NJ) and Elise Stefanik (R-NY) introduced &lt;a href=&quot;https://www.congress.gov/bill/119th-congress/house-bill/8250/text&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;HR 8250 Parents Decide Act&lt;/a&gt; in the US House of Representatives. The bill requires Apple, Google, and Microsoft to demand a birthdate when creating any account, and then expose that information to app editors via a dedicated interface. No adult exception. You set up a new Mac in 2027, the system identifies you, and every app can read it.&lt;/p&gt;
&lt;p&gt;Andy Yen, CEO of Proton, &lt;a href=&quot;https://www.theregister.com/2026/04/23/proton_ceo_age_checks_id_checkpoint/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;summed up the issue in one sentence&lt;/a&gt;: « We cannot accept a world where every adult has to present an ID just to go online. » Eight days later, the Illinois HB 5511 was passed by the House, 82 to 27. The same logic, moving age verification from apps to the OS, harder to circumvent because the OS is linked to the verified account and the payment method.&lt;/p&gt;
&lt;p&gt;This logic isn’t just American. The UK &lt;a href=&quot;https://www.ofcom.org.uk/online-safety/protecting-children/age-checks-to-protect-children-online&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Online Safety Act&lt;/a&gt; came into effect on July 25, 2025. In the first quarter of 2026, the Ofcom opened over ninety investigations and issued six fines, including a £1.35 million fine against 8579 LLC. Australia activated its &lt;a href=&quot;https://www.esafety.gov.au/about-us/industry-regulation/social-media-age-restrictions&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Online Safety Amendment&lt;/a&gt; on December 10, 2025, extended to ten platforms. Brazil enacted law 15,211/2025 in September 2025. And on April 14, 2026, the European Commission unveiled its harmonized age verification app for the twenty-seven member states.&lt;/p&gt;
&lt;p&gt;By the way, it was hacked in two minutes by a British consultant, Paul Moore. For the details, you can read the radar at the link below. Either laughable or crying, depending on your perspective.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/radar-eu-age-verification-hackee-avril-2026/&quot;&gt;EU Age Verification, Hacked in 2 Minutes, the Poorly Coded Surveillance&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On March 2, 2026, &lt;a href=&quot;https://www.euronews.com/next/2026/03/02/dangerous-and-socially-unacceptable-experts-warn-against-rushed-rollout-of-online-age-chec&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;371 cybersecurity researchers from 29 countries&lt;/a&gt; signed an open letter. Ronald Rivest, Turing Award and co-inventor of RSA. Bart Preneel, president of the IACR. Not exactly Sunday activists.&lt;/p&gt;
&lt;p&gt;The letter argues that the method isn’t secure and risks exposing users to malware or scams on illegal sites that don’t implement age verification, or revealing more personal information to service providers. Their conclusion on the deployments in progress: « dangerous and socially unacceptable ».&lt;/p&gt;
&lt;p&gt;To make age verification work properly, they write, « state-issued IDs with strong cryptographic protection » are needed for every interaction with the service.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;m2-breaking-encryption-in-law-or-in-case-law&quot;&gt;M2, breaking encryption in law or in case law&lt;/h2&gt;
&lt;p&gt;On the EU side, the dossier is known, I’ve detailed it before.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/&quot;&gt;Chat Control 2.0: The EU Wants to Read Your Messages Before You Send Them&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/nis2-csar-contradiction-ue-chiffrement-surveillance/&quot;&gt;NIS2 Forces Companies to Encrypt. CSAR Prevents Them From Doing It Properly.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The novelty here is the admission. Vera Jourova, Vice-President of the Commission, &lt;a href=&quot;https://x.com/edri/status/1803775436633031048&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;publicly acknowledged&lt;/a&gt; at the EDPS summit that CSAR would break encryption. Three years of « CSAR doesn’t break encryption » discourse from Ylva Johansson, refuted by her own colleague. The next trilogue is set for May 4, 2026, with adoption targeted for July. The clock is ticking.&lt;/p&gt;
&lt;p&gt;But the most brutal attack on end-to-end encryption comes from the US, and it’s not a law. It’s case law, and it’s much worse.&lt;/p&gt;
&lt;p&gt;On March 24, 2026, a jury in New Mexico &lt;a href=&quot;https://nmdoj.gov/press-release/new-mexico-department-of-justice-wins-landmark-verdict-against-meta/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;condemned Meta to a $375 million fine&lt;/a&gt; for civil penalties. The attorney general used Meta’s decision to deploy end-to-end encryption in Messenger as proof of irresponsibility towards minors.&lt;/p&gt;
&lt;p&gt;And the sequence that follows is even more telling than the verdict: &lt;strong&gt;during the trial&lt;/strong&gt;, before even the sentence, &lt;strong&gt;Meta announced the withdrawal of end-to-end encryption from direct Instagram messages&lt;/strong&gt;. Effective on May 8, 2026. The mere existence of the trial was enough to decide them.&lt;/p&gt;
&lt;p&gt;And the real problem with case law is that one judge was enough to make all the others adopt his ruling in other judgments. With heavy fines to follow, which will discourage startups from aiming to encrypt their services in the very near future. Because $375M for Meta is pocket change. For a startup, it’s death.&lt;/p&gt;
&lt;p&gt;Even more effective than a law or a regulation.&lt;/p&gt;
&lt;p&gt;While it may be tempting, &lt;strong&gt;we can’t blame the judge alone&lt;/strong&gt;. Meta’s voluntary (?) irresponsible behavior shaped the decision. I’ll explain:&lt;/p&gt;
&lt;p&gt;An internal note signed by Monika Bickert (director of content policy at the time) ended up in the trial documents. Irony at its peak: « We’re about to do something bad as a company. It’s so irresponsible. » Bickert wasn’t criticizing encryption itself, she was warning her superiors about the timing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enabling end-to-end encryption by default&lt;/strong&gt; on Messenger without first finding a way to detect abuses involving minors &lt;strong&gt;was like voluntarily blinding Meta’s systems&lt;/strong&gt;. The prosecutor in New Mexico used this note to prove the hardest thing to prove in a civil case: that &lt;strong&gt;Meta knew its decision would let predators through&lt;/strong&gt;, and made the decision anyway.&lt;/p&gt;
&lt;p&gt;Here, it’s really important not to get the roles wrong. &lt;strong&gt;Meta isn’t the victim of the trial&lt;/strong&gt;. For Zuckerberg, end-to-end encryption was never a value, it was a marketing argument to stay competitive against WhatsApp and Signal.&lt;/p&gt;
&lt;p&gt;That’s exactly what separates Meta from Signal or Proton. Signal can’t remove end-to-end encryption, it would dissolve the product. Proton can’t either, its entire proposition rests on it. Meta can, because for them, end-to-end encryption was an optional feature, not a foundation.&lt;/p&gt;
&lt;p&gt;And that’s precisely what creates the precedent that judges can use against Signal or Proton later. « See, even Meta backed down, you can too. » &lt;strong&gt;Meta isn’t just the victim of the end-to-end encryption retreat. It’s actively participating in it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And that’s also Bruce Schneier’s conclusion. Deploying strong encryption on your product can now be attacked legally as an act of bad faith. Not illegal in itself. Just… harmful in civil court, before an American judge.&lt;/p&gt;
&lt;p&gt;The US picture is completed with &lt;strong&gt;FISA Section 702&lt;/strong&gt;. The law was set to expire on April 20, 2026. Congress voted a ten-day emergency extension and blocked the « warrant requirement » amendment in advance. &lt;strong&gt;The NSA is vacuuming up communications&lt;/strong&gt; of targeted foreigners outside the US, Americans who write to them then enter the base, &lt;strong&gt;the FBI queries it without a warrant&lt;/strong&gt;. Seven thousand US-person queries in 2025, under-declared by the DOJ itself.&lt;/p&gt;
&lt;p&gt;At the other end of the world, &lt;strong&gt;Hong Kong&lt;/strong&gt;. On March 23, 2026, the enforcement rules of the &lt;strong&gt;National Security Law&lt;/strong&gt; were modified, &lt;strong&gt;the police can now demand your passwords&lt;/strong&gt; and your encryption keys. Refusing is a criminal offense. &lt;a href=&quot;https://www.schneier.com/blog/archives/2026/04/hong-kong-police-can-force-you-to-reveal-your-encryption-keys.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Schneier wrote a blog note about it&lt;/a&gt;. Hong Kong is forcing it. Democracies, they’re circumventing it through contract (CSAR), through case law (Meta NM), or through age barriers at the OS level (US). Same result, different packaging.&lt;/p&gt;
&lt;p&gt;Convergence without coordination, but convergence nonetheless.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;m3-private-and-public-brokers-identity-as-infrastructure&quot;&gt;M3, private and public brokers, identity as infrastructure&lt;/h2&gt;
&lt;p&gt;Once HR 8250 is passed, or Illinois HB 5511, &lt;strong&gt;Apple and Google become age brokers&lt;/strong&gt;. Not by choice, by legal constraint. Technically, it’s just a regional option, the kind of switch Apple already flips for the GDPR. &lt;strong&gt;The real risk is that other governments will see the system running in the US and copy it&lt;/strong&gt;. Reverse GDPR effect, by mimicry.&lt;/p&gt;
&lt;p&gt;While states debate, &lt;strong&gt;Sam Altman is pushing his private alternative&lt;/strong&gt;. On April 17, 2026, &lt;a href=&quot;https://techcrunch.com/2026/04/17/sam-altmans-project-world-looks-to-scale-its-human-verification-empire-first-stop-tinder/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;World ID announced its integration&lt;/a&gt; with Tinder, Zoom, DocuSign, Okta, Shopify, and VanEck. &lt;strong&gt;Eighteen million users already verified by iris scan&lt;/strong&gt; (The Orb), in 160 countries. The pitch: « the first decentralized identity layer for humanity », against bots and deepfakes, which the same industry AI produces in bulk.&lt;/p&gt;
&lt;p&gt;It’s elegant. &lt;strong&gt;You create the problem (AI deepfakes), you sell the solution (iris scan)&lt;/strong&gt;, and in the process, you build a private global biometric database, connected to Tinder, Zoom, DocuSign, and Shopify. The scanned becomes a free beta tester of humanity, paying with their iris. &lt;strong&gt;The AI industry gets even more free, high-quality data, but especially qualified&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;You can’t really do better than that, can you?&lt;/p&gt;
&lt;p&gt;On the state side, the UK is advancing its &lt;a href=&quot;https://www.gov.uk/government/news/digital-driving-licence-coming-this-year&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;GOV.UK Wallet&lt;/a&gt; and its digital driving license, full deployment by the end of 2026. Not mandatory yet, physical cards still valid until 2030. But the infrastructure is there, ready to become mandatory whenever a future government decides.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Three actors&lt;/strong&gt; emerge as &lt;strong&gt;dominant identity brokers, Apple plus Google&lt;/strong&gt; on the OS side, &lt;strong&gt;World ID on the private global side&lt;/strong&gt;, GOV.UK Wallet and its twins on the state side. No one coordinated. &lt;strong&gt;The convergence is political, economic, structural&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-this-convergence&quot;&gt;Why this convergence&lt;/h2&gt;
&lt;p&gt;It’s not a conspiracy. It’s more boring than that, &lt;strong&gt;it’s systemic mechanics&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;First, transatlantic imitation&lt;/strong&gt;. The UK Online Safety Act passed in 2023 served as a model. Australia replicated it in 2025. The European Commission cited it explicitly as « good practice » for its age verification app. HR 8250 and Illinois HB 5511 picked up the same architecture six months later. No secret coordination, just « look, it works there, let’s copy it ».&lt;/p&gt;
&lt;p&gt;Next, &lt;strong&gt;the zero marginal cost for Apple, Google, and Microsoft&lt;/strong&gt;. Once the age verification infrastructure is built on the OS for one state, &lt;strong&gt;exporting it to other countries costs nothing more&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Finally, &lt;strong&gt;regulatory momentum creates the private market&lt;/strong&gt;. Platforms are looking for identity verification providers? Worldcoin raises its hand. States want their sovereign wallet? Integrators (Thales, IDEMIA, Entrust) position themselves on eIDAS 2.0 calls for tenders. Regulation creates need, the market sells the solution.&lt;/p&gt;
&lt;p&gt;The result is exactly what the letter from the 371 researchers warned about, a system where every interaction with an online service requires an identity proof issued by a state or a private broker.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-counter-movements&quot;&gt;The counter-movements&lt;/h2&gt;
&lt;p&gt;Ending on a totally defeatist note would be unfair.&lt;/p&gt;
&lt;p&gt;On April 1, 2026, Governor Brad Little signed &lt;a href=&quot;https://legislature.idaho.gov/sessioninfo/2026/legislation/S1299/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Idaho SB 1299&lt;/a&gt;, which prohibits government entities in the state from requiring a digital ID. The first US state to push back frontally, text legally solid and replicable.&lt;/p&gt;
&lt;p&gt;Two days later, Governor Tony Evers of Wisconsin exercised a &lt;a href=&quot;https://www.404media.co/wisconsin-age-verification-bill-vetoed/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;veto on AB 105&lt;/a&gt;, on an age verification bill for adult sites. The first governor veto in US history on an age verification bill, three well-argued objections, intrusion on adults’ privacy, no restrictions on sharing, vulnerabilities exposing users to theft and blackmail.&lt;/p&gt;
&lt;p&gt;On April 23, 2026, Thomas Massie (R-KY) and Lauren Boebert (R-CO) introduced &lt;a href=&quot;https://www.govtrack.us/congress/bills/119/hr8470/text&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;HR 8470 Surveillance Accountability Act&lt;/a&gt;. Warrant and probable cause required before any surveillance of Americans, close the « data brokers » loophole. Bipartisan in spirit, a sign that the surveillance debate is crossing both parties.&lt;/p&gt;
&lt;p&gt;And on April 8, the French &lt;a href=&quot;https://itsocial.fr/logiciel-agilite/logiciel-agilite-actualites/la-dinum-lache-windows-pour-linux-et-impose-un-plan-de-souverainete-numerique-a-chaque-ministere-avant-lautomne/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;DINUM&lt;/a&gt; announced the migration of 2.5 million administration posts to Linux. David Amiel, Minister of the Budget, requests ministerial plans before the autumn 2026. Seven axes for reducing dependence, sovereign video conferencing for 200,000 agents by the end of 2026, 2.5 million by 2027.&lt;/p&gt;
&lt;p&gt;Let’s be honest for two seconds. France isn’t migrating to protect the privacy of its civil servants, it doesn’t care. It’s migrating because depending on Microsoft costs between 500 and 800 million euros in licenses per year, and because a Trump 2.0 has finished reminding Brussels and Paris that an American provider can be shut down by a White House decree. Budget sovereignty and strategic sovereignty. Privacy nowhere.&lt;/p&gt;
&lt;p&gt;But that’s precisely why the example is interesting. &lt;strong&gt;A state exits a hegemonic stack for reasons of money and geopolitics&lt;/strong&gt;, not ideology.&lt;/p&gt;
&lt;p&gt;**And the result, by effect, is that its &lt;strong&gt;2.5 million civil servants stop being continuously telemetred&lt;/strong&gt; by Redmond.&lt;/p&gt;
&lt;p&gt;What a state does for its reasons, a citizen can do for theirs. And protecting your online privacy today is a political choice, not a crime, at least not yet.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sorting-it-out-technically-and-politically&quot;&gt;Sorting it out, technically and politically&lt;/h2&gt;
&lt;p&gt;I use Proton Mail and a self-hosted Stalwart mail server for emails, Matrix for instant messaging, a Tailscale wireguard mesh network with Mullvad exit node for security, an unbound self-host DNS resolver, and various other open source tools for my digital sovereignty.&lt;/p&gt;
&lt;p&gt;It’s not absolute, of course, but it’s already a huge independence, real privacy, a significant limitation for commercial or state third parties to continuously track you.&lt;/p&gt;
&lt;p&gt;Except for Proton, and Infomaniak’s VPS hosting, all these tools are free, open source, audited for the most part, and supported by dynamic communities. Proof that privacy isn’t dead, and it interests many people.&lt;/p&gt;
&lt;p&gt;You’re not obliged to go that far, of course, but for your professional activity in particular, I strongly recommend going that far. But every step you take for your privacy counts. It’s your inalienable right to dispose of your digital data as you see fit, and to define who you share it with. It’s as fundamental as the freedom to come and go.&lt;/p&gt;
&lt;p&gt;If CSAR passes, if HR 8250 progresses, and you feel concerned, the right reflex is to choose architectures whose technical design makes it impossible to scan your data, and tracking extremely difficult.&lt;/p&gt;
&lt;p&gt;Signal and Proton can’t implement client-side scanning without breaking their model. It’s not a policy, it’s an impossibility. Choosing them, or others built on the same model, protects you.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;What Digital Sovereignty Means in Practice&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Politically, if you’re interested, write to your representatives. The CSAR trilogue on May 4, 2026, is a tipping point. Public pressure worked on Chat Control 1.0, it can work on CSAR 2.0.&lt;/p&gt;
&lt;p&gt;EDRi, EFF, noyb maintain tools for direct contact with citizens. Use them and participate in the action, if it speaks to you.&lt;/p&gt;
&lt;p&gt;And follow the MacSouverain Radars. Every text, every verdict, every tightening is followed in real time. Vigilance for privacy is daily attention, not episodic.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-the-impatient&quot;&gt;For the impatient&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Six months, nineteen texts&lt;/strong&gt;, four continents. &lt;strong&gt;Three mechanics that fit together&lt;/strong&gt;, universal identification, breaking encryption, centralizing identity data with two or three brokers. This isn’t a conspiracy, it’s converging trajectories that will result in less privacy, or even no privacy at all, if they’re combined in each country.&lt;/p&gt;
&lt;p&gt;Everyone comes out winning, that’s how it’s sold, except for the final user, if you read carefully. Everyone else.&lt;/p&gt;
&lt;p&gt;Idaho SB 1299, Wisconsin veto Evers, Surveillance Accountability Act, 371 researchers, real points of support, demonstrate that another path is possible.&lt;/p&gt;
&lt;p&gt;Your technical choices today, Signal, Proton, well-configured and up-to-date MacOS, Linux why not, are also political choices. And supporting EDRi and EFF, refusing convenience features that pave the way, is also the right way to combine the two.&lt;/p&gt;
&lt;p&gt;What’s happening isn’t written yet, but it’s already inscribed in a trajectory.&lt;/p&gt;
&lt;p&gt;It’s up to you to choose what you make of it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Official texts and legislation&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HR 8250 Parents Decide Act, Congress.gov : &lt;a href=&quot;https://www.congress.gov/bill/119th-congress/house-bill/8250/text&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.congress.gov/bill/119th-congress/house-bill/8250/text&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Illinois HB 5511 Digital Age Assurance, ILGA : &lt;a href=&quot;https://ilga.gov/Legislation/BillStatus/FullText?GAID=18&amp;#x26;DocNum=5511&amp;#x26;DocTypeID=HB&amp;#x26;LegId=167486&amp;#x26;SessionID=114&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://ilga.gov/Legislation/BillStatus/FullText?GAID=18&amp;#x26;DocNum=5511&amp;#x26;DocTypeID=HB&amp;#x26;LegId=167486&amp;#x26;SessionID=114&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;HR 8470 Surveillance Accountability Act, GovTrack : &lt;a href=&quot;https://www.govtrack.us/congress/bills/119/hr8470/text&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.govtrack.us/congress/bills/119/hr8470/text&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Idaho SB 1299, Idaho Legislature : &lt;a href=&quot;https://legislature.idaho.gov/sessioninfo/2026/legislation/S1299/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://legislature.idaho.gov/sessioninfo/2026/legislation/S1299/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UK Online Safety Act enforcement, Ofcom : &lt;a href=&quot;https://www.ofcom.org.uk/online-safety/protecting-children/age-checks-to-protect-children-online&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.ofcom.org.uk/online-safety/protecting-children/age-checks-to-protect-children-online&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Australia Online Safety Amendment, eSafety : &lt;a href=&quot;https://www.esafety.gov.au/about-us/industry-regulation/social-media-age-restrictions&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.esafety.gov.au/about-us/industry-regulation/social-media-age-restrictions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New Mexico Department of Justice, Meta verdict : &lt;a href=&quot;https://nmdoj.gov/press-release/new-mexico-department-of-justice-wins-landmark-verdict-against-meta/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://nmdoj.gov/press-release/new-mexico-department-of-justice-wins-landmark-verdict-against-meta/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UK GOV.UK digital driving licence : &lt;a href=&quot;https://www.gov.uk/government/news/digital-driving-licence-coming-this-year&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.gov.uk/government/news/digital-driving-licence-coming-this-year&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Analyses and coalitions&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EDRi, ECtHR on encryption as a fundamental right : &lt;a href=&quot;https://edri.org/our-work/european-court-of-human-rights-confirms-weakening-of-encryption-can-violate-the-human-right-to-privacy/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://edri.org/our-work/european-court-of-human-rights-confirms-weakening-of-encryption-can-violate-the-human-right-to-privacy/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bruce Schneier on Meta NM ruling and encryption : &lt;a href=&quot;https://www.schneier.com/blog/archives/2026/04/new-mexicos-meta-ruling-and-encryption.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.schneier.com/blog/archives/2026/04/new-mexicos-meta-ruling-and-encryption.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bruce Schneier on Hong Kong NSL : &lt;a href=&quot;https://www.schneier.com/blog/archives/2026/04/hong-kong-police-can-force-you-to-reveal-your-encryption-keys.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.schneier.com/blog/archives/2026/04/hong-kong-police-can-force-you-to-reveal-your-encryption-keys.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open letter from 371 cybersecurity researchers, Euronews : &lt;a href=&quot;https://www.euronews.com/next/2026/03/02/dangerous-and-socially-unacceptable-experts-warn-against-rushed-rollout-of-online-age-chec&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.euronews.com/next/2026/03/02/dangerous-and-socially-unacceptable-experts-warn-against-rushed-rollout-of-online-age-chec&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Andy Yen, Proton CEO, on HR 8250, The Register : &lt;a href=&quot;https://www.theregister.com/2026/04/23/proton_ceo_age_checks_id_checkpoint/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.theregister.com/2026/04/23/proton_ceo_age_checks_id_checkpoint/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;EU age verification app hacked, Cybernews : &lt;a href=&quot;https://cybernews.com/security/eu-age-verification-app-hack/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://cybernews.com/security/eu-age-verification-app-hack/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;World ID partnerships, TechCrunch : &lt;a href=&quot;https://techcrunch.com/2026/04/17/sam-altmans-project-world-looks-to-scale-its-human-verification-empire-first-stop-tinder/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://techcrunch.com/2026/04/17/sam-altmans-project-world-looks-to-scale-its-human-verification-empire-first-stop-tinder/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;France DINUM, IT Social : &lt;a href=&quot;https://itsocial.fr/logiciel-agilite/logiciel-agilite-actualites/la-dinum-lache-windows-pour-linux-et-impose-un-plan-de-souverainete-numerique-a-chaque-ministere-avant-lautomne/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://itsocial.fr/logiciel-agilite/logiciel-agilite-actualites/la-dinum-lache-windows-pour-linux-et-impose-un-plan-de-souverainete-numerique-a-chaque-ministere-avant-lautomne/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wisconsin veto Evers, 404 Media : &lt;a href=&quot;https://www.404media.co/wisconsin-age-verification-bill-vetoed/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.404media.co/wisconsin-age-verification-bill-vetoed/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;see-also&quot;&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/&quot;&gt;Chat Control 2.0: The EU Wants to Read Your Messages Before You Send Them&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/nis2-csar-contradiction-ue-chiffrement-surveillance/&quot;&gt;NIS2 Forces Companies to Encrypt. CSAR Prevents Them From Doing It Properly.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/radar-eu-age-verification-hackee-avril-2026/&quot;&gt;Radar: EU Age Verification, Hacked in 2 Minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/radar-chat-control-2-espionnage-masse/&quot;&gt;Radar: Chat Control 2.0, The EU Wants to Scan All Your Messages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;What Digital Sovereignty Means in Practice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>securite</category><category>reglementation</category><category>surveillance</category><category>informatif</category><category>analyse</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-art33-hd.png" length="0" type="image/png"/></item><item><title>The DNS, your digital Achilles heel.</title><link>https://macsouverain.com/en/dns-talon-achille-privacy/</link><guid isPermaLink="true">https://macsouverain.com/en/dns-talon-achille-privacy/</guid><description>You encrypt your emails, pay for a VPN, enable Tailscale. Yet your ISP knows you visited Tinder.com last night. DNS, that&apos;s why.</description><pubDate>Sat, 25 Apr 2026 15:35:46 GMT</pubDate><content:encoded>&lt;h2 id=&quot;the-paradox-of-half-sovereignty&quot;&gt;The Paradox of Half-Sovereignty&lt;/h2&gt;
&lt;p&gt;You’ve paid for a serious VPN. You’ve migrated to Proton Mail. You’ve set up a mesh Tailscale between your Macs. You’ve turned on iCloud’s Advanced Data Protection, disabled half the analytics, switched Safari to privacy max.&lt;/p&gt;
&lt;p&gt;Yet your ISP still knows that last night, at 11:47 PM, you opened a tab on a dating site.&lt;/p&gt;
&lt;p&gt;Not because your VPN leaked. Not because Apple cracked. Because the most basic layer of the internet, the one everyone’s heard of but no one pays attention to, operates in plaintext by default. This layer is called DNS, and it’s the weak link no one notices, even in otherwise solid privacy stacks.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/01-dns-reglages-fai-1.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;macOS DNS Panel, Default ISP Resolver 192.168.1.1&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;This article explains why this link is broken, why easy answers like Cloudflare’s 1.1.1.1 and iCloud Private Relay aren’t really answers, and how to regain control in three graduated levels.&lt;/p&gt;
&lt;h2 id=&quot;whats-dns&quot;&gt;What’s DNS?&lt;/h2&gt;
&lt;h3 id=&quot;the-directory-that-makes-the-internet-usable&quot;&gt;The directory that makes the internet usable&lt;/h3&gt;
&lt;p&gt;Humans remember names: &lt;code&gt;proton.me&lt;/code&gt;, &lt;code&gt;apple.com&lt;/code&gt;, &lt;code&gt;macsouverain.fr&lt;/code&gt;. Machines, however, only speak in IP addresses: &lt;code&gt;185.70.43.10&lt;/code&gt;, &lt;code&gt;17.253.144.10&lt;/code&gt;, &lt;code&gt;83.228.215.109&lt;/code&gt;. Between the two, we need a real-time translator. That’s DNS, the &lt;em&gt;Domain Name System&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Imagine a landline phone without a directory. You know the name of your plumber but not their number. So, you first call directory assistance, get the number, then call your plumber back. DNS is exactly like that: an automatic directory assistance service, queried dozens of times per minute, without you even realizing it.&lt;/p&gt;
&lt;h3 id=&quot;the-full-flow-of-a-resolution&quot;&gt;The full flow of a resolution&lt;/h3&gt;
&lt;p&gt;When you type &lt;code&gt;signal.org&lt;/code&gt; into Safari, here’s what happens in a few dozen milliseconds:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your Mac checks its local cache. Has it asked for this address recently? If yes, it reuses it and that’s it.&lt;/li&gt;
&lt;li&gt;Otherwise, it queries the &lt;strong&gt;resolver&lt;/strong&gt; configured on the machine. By default, that’s the one your router pushed via DHCP, so your ISP’s.&lt;/li&gt;
&lt;li&gt;If the resolver doesn’t have the answer in cache, it hits the DNS hierarchy. It first queries a &lt;strong&gt;root server&lt;/strong&gt;, one of the thirteen reference addresses of the global directory (deployed on hundreds of physical instances in anycast), which tells it “for &lt;code&gt;.org&lt;/code&gt;, ask these servers”.&lt;/li&gt;
&lt;li&gt;It then queries the &lt;strong&gt;TLD&lt;/strong&gt; server for &lt;code&gt;.org&lt;/code&gt;, which tells it “for &lt;code&gt;signal.org&lt;/code&gt;, ask these servers”.&lt;/li&gt;
&lt;li&gt;It finally queries the &lt;strong&gt;authoritative&lt;/strong&gt; server for &lt;code&gt;signal.org&lt;/code&gt;, which holds the official truth and sends back the IP address.&lt;/li&gt;
&lt;li&gt;The resolver sends you the response, your Mac can establish the HTTPS connection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This descent of the hierarchy is called &lt;strong&gt;recursive&lt;/strong&gt; resolution. The resolver does the climbing for you.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/02-dns-flux-recursif-1.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Recursive DNS resolution, the Mac → ISP resolver FAI link in red identifies the point of failure&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;And it’s precisely on this first link, between your Mac and the resolver, that everything hangs.&lt;/p&gt;
&lt;h2 id=&quot;why-its-achilles-heel&quot;&gt;Why It’s Achilles’ Heel&lt;/h2&gt;
&lt;h3 id=&quot;by-default-everything-goes-in-the-clear&quot;&gt;By default, everything goes in the clear&lt;/h3&gt;
&lt;p&gt;Classic DNS runs on port 53, using UDP, without encryption. When your Mac asks your ISP for &lt;code&gt;proton.me&lt;/code&gt;, the question and answer travel in the clear over the network, readable by any equipment between the two: your modem, the neighborhood DSLAM, the operator’s router, and of course, the ISP’s own DNS server doing the work.&lt;/p&gt;
&lt;p&gt;HTTPS doesn’t change that. It encrypts the content of pages, not the DNS query that preceded them. Your ISP already noted the destination before the encrypted connection starts. You can have the best lock icon in the world on Safari, your ISP already knows where you’re going.&lt;/p&gt;
&lt;h3 id=&quot;your-isp-sees-every-domain-with-timestamps&quot;&gt;Your ISP sees every domain, with timestamps&lt;/h3&gt;
&lt;p&gt;It’s like knowing every store you visit in a day without knowing what you’re buying. For commercial profiling or judicial scrutiny, that’s more than enough.&lt;/p&gt;
&lt;p&gt;A visit to a divorce lawyer’s website speaks volumes. So does a 3 AM visit to a betting platform. Same goes for a morning visit to a specialized medical site. Your browsing data is a goldmine of free data, to sell or exploit.&lt;/p&gt;
&lt;p&gt;In France, ISPs are legally required to keep these metadata for a year (decree 2006-358, challenged but maintained despite CJEU rulings). In the US, ISPs have sold browsing histories to data brokers, legally, due to lack of federal protection. The risk isn’t targeted spying in everyday life, it’s structural exposure: data collected automatically, stored for months, accessible on request or via a leak.&lt;/p&gt;
&lt;h3 id=&quot;encrypted-at-isp--encrypted-end-to-end&quot;&gt;Encrypted at ISP ≠ Encrypted End-to-End&lt;/h3&gt;
&lt;p&gt;Many users think that because their router shows a lock icon in the admin interface or their plan mentions “secure DNS”, they’re protected. Wrong. Your ISP could very well encrypt the link between its own servers and an upstream, but that doesn’t change anything: it’s them who resolve, it’s them who see, it’s them who log.&lt;/p&gt;
&lt;p&gt;The only way to keep your DNS query away from your ISP is if it never goes through their servers. Not through them, not through their box, not through their “enhanced” resolver.&lt;/p&gt;
&lt;h3 id=&quot;and-even-with-a-vpn-it-can-leak&quot;&gt;And even with a VPN, it can leak&lt;/h3&gt;
&lt;p&gt;You’ve got a VPN running. All your traffic is encrypted in a WireGuard tunnel. Yet, your DNS queries can bypass the tunnel and go straight to your ISP. That’s a &lt;strong&gt;DNS leak&lt;/strong&gt;, one of the quietest flaws of poorly configured or cheap VPNs.&lt;/p&gt;
&lt;p&gt;The mechanism is simple: your device remembers the DHCP resolver of the modem, the VPN doesn’t push its own resolver hard enough, and some system queries go parallel to the tunnel. Your web traffic is protected, your DNS is exposed.&lt;/p&gt;
&lt;p&gt;Thirty-second test: &lt;code&gt;dnsleaktest.com&lt;/code&gt; or &lt;code&gt;dnscheck.tools&lt;/code&gt;. If your ISP appears in the list while your VPN is connected, you’re leaking.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/&quot;&gt;Why You Need a VPN, and What It Actually Does&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;the-doh-dot-and-private-relay-trap&quot;&gt;The DoH, DoT, and Private Relay Trap&lt;/h3&gt;
&lt;h3 id=&quot;encrypting-yes-but-with-whom&quot;&gt;Encrypting, yes, but with whom&lt;/h3&gt;
&lt;p&gt;To answer clear-text DNS, the industry has pushed two protocols: &lt;strong&gt;DoH&lt;/strong&gt; (DNS-over-HTTPS, port 443) and &lt;strong&gt;DoT&lt;/strong&gt; (DNS-over-TLS, port 853). In essence, they do the same thing: encapsulate the DNS query in an encrypted tunnel between your Mac and a resolver. But DoH blends in with normal HTTPS traffic and is harder to identify and block by network admins, while DoT is easier to spot.&lt;/p&gt;
&lt;p&gt;Enabling DoH or DoT finally gets your DNS queries out of your ISP’s sight. It’s a real improvement. But we haven’t really solved the problem; we’ve just moved it.&lt;/p&gt;
&lt;p&gt;Because the real question isn’t “Is it encrypted on the wire?” It’s “Who’s on the other end?”&lt;/p&gt;
&lt;h3 id=&quot;centralization-the-other-name-for-snooping&quot;&gt;Centralization, the other name for snooping&lt;/h3&gt;
&lt;p&gt;When you enable DoH by default on Chrome, Firefox, or via a generic macOS profile, you typically end up with Cloudflare, Google, or NextDNS. Cloudflare handles a huge chunk of global public DNS. So does Google. Both are American companies, subject to the CLOUD Act, meaning they can be forced by US justice to hand over data, regardless of the user’s nationality.&lt;/p&gt;
&lt;p&gt;You’ve replaced one snoop, your ISP, which can be compelled by French justice, with another, an American cloud service that can be forced by the US, no warrant needed, thanks to the 2018 CLOUD Act. The conversation isn’t in clear text on the wire; it’s just recorded elsewhere.&lt;/p&gt;
&lt;p&gt;This is where most DNS comparison guides look away. “Cloudflare 1.1.1.1 is free and it’s fast.” That’s true. “It’s private” is a claim that can be misleading and needs to be contextualized by the jurisdiction and business model of the operator.&lt;/p&gt;
&lt;h3 id=&quot;apple-private-relay-the-premium-illusion&quot;&gt;Apple Private Relay, the premium illusion&lt;/h3&gt;
&lt;p&gt;iCloud Private Relay, included with iCloud+, is an interesting twist on the same trap. The mechanism: Apple encrypts your DNS queries and Safari traffic, sends them first to an Apple server, then to a partner (Cloudflare or Fastly in most regions). The idea is that no single actor sees both who you are and where you’re going.&lt;/p&gt;
&lt;p&gt;On paper, it’s elegant. In practice, two major issues.&lt;/p&gt;
&lt;p&gt;First, Private Relay closes DNS at the OS level, for Safari and certain system apps, bypassing what you’ve configured. You thought you were using Quad9? Apple goes through Cloudflare or Fastly for Safari, without asking.&lt;/p&gt;
&lt;p&gt;Second, it only covers Safari and a fraction of iCloud traffic. Your Chrome, Firefox, Mail, Slack, Discord, SSH client, terminal, torrent client, third-party apps: Private Relay doesn’t touch their DNS queries.&lt;/p&gt;
&lt;p&gt;You’re paying for a “premium” service for partial coverage that shifts trust to an Apple+Cloudflare duo you can’t configure or replace. Apple sees you browsing, Cloudflare sees where you’re going, separately by design, but still two CLOUD Act actors you have no control over. For half the traffic, you’ve gained nothing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;Privacy macOS, the settings to change immediately&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;what-it-changes-in-practice&quot;&gt;What It Changes in Practice&lt;/h2&gt;
&lt;h3 id=&quot;what-your-isp-sees-and-doesnt-see&quot;&gt;What Your ISP Sees, and Doesn’t See&lt;/h3&gt;
&lt;p&gt;Without encrypted DNS, your ISP has a complete log: domain, timestamp, frequency, approximate session duration. They can deduce that you visit a banking site every day at 8 AM, that you check a specific medical site every Tuesday evening, that you spend time on alternative news sites, that you connect to &lt;code&gt;signal.org&lt;/code&gt; at certain times. They don’t read your messages; they don’t need to.&lt;/p&gt;
&lt;p&gt;With encrypted DNS and a trustworthy resolver, your ISP only sees TLS connections to IP addresses. They know you’re using the internet, not whom you’re connecting to first. Some IP addresses are still revealing, but it’s a huge qualitative leap from the default.&lt;/p&gt;
&lt;h3 id=&quot;what-can-still-be-correlated&quot;&gt;What Can Still Be Correlated&lt;/h3&gt;
&lt;p&gt;Let’s be clear about what’s still exposed even with sovereign DNS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server Name Indication (SNI)&lt;/strong&gt;: During the TLS handshake, your browser still announces in plaintext which domain it wants to connect to, so the server can present the correct certificate. This information is readable by network actors, regardless of DNS. The solution is &lt;strong&gt;Encrypted Client Hello (ECH)&lt;/strong&gt;. Major browsers support ECH on the client side, but server deployment is lagging. For sites without ECH on the server side, SNI remains readable by network actors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Destination IP Address&lt;/strong&gt;: Even if no one reads your DNS and SNI, connecting to a server reveals its IP address. For a service using a large shared CDN (Cloudflare, AWS), the IP address alone doesn’t say much. For a small self-hosted site, the IP address is enough to identify it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Browser Fingerprinting&lt;/strong&gt;: This is where it gets more concrete. Your browser passively divulges, when loading any page, a combination of signals: canvas rendering, GPU, installed fonts, screen resolution, time zone, active plugins. Together, they form a unique enough fingerprint to identify you across sites, without cookies, without visible identifiers.&lt;/p&gt;
&lt;p&gt;This is the post-cookie tracking technique used by adtech networks and data brokers, Meta Pixel, Google Analytics, and dozens of less visible actors. It works in private browsing. It survives cookie deletion. And it has nothing to do with your DNS resolver: you can use Quad9 encrypted, your browser fingerprint remains readable.&lt;/p&gt;
&lt;p&gt;Sovereign DNS is not a magic wand. It’s one layer of protection among others. It plugs the most visible, most systematic, and least noticed gap.&lt;/p&gt;
&lt;h2 id=&quot;myths-to-debunk&quot;&gt;Myths to Debunk&lt;/h2&gt;
&lt;h3 id=&quot;-i-have-a-vpn-so-dns-is-covered&quot;&gt;« I have a VPN, so DNS is covered »&lt;/h3&gt;
&lt;p&gt;Not necessarily. A serious VPN pushes its own DNS resolver and forces all queries through the tunnel. A free or cheap VPN doesn’t do this, or does it poorly. And even with a serious VPN, certain macOS configurations, apps that resolve through their own stack, DHCP fallbacks, can bypass it. Mandatory test at dnscheck.tools.&lt;/p&gt;
&lt;h3 id=&quot;-doh-equals-privacy&quot;&gt;« DoH equals privacy »&lt;/h3&gt;
&lt;p&gt;DoH encrypts the pipe. It doesn’t change the nature of the operator on the other end. Enabling DoH by default in Chrome typically means sending your DNS to Cloudflare or Google. Centralization and US jurisdiction are separate issues from encryption, and they don’t disappear with a lock added on top.&lt;/p&gt;
&lt;h3 id=&quot;-i-have-nothing-to-hide&quot;&gt;« I have nothing to hide »&lt;/h3&gt;
&lt;p&gt;The classic argument rests on a false assumption: that the problem is what &lt;strong&gt;you&lt;/strong&gt; do. The real problem is what &lt;strong&gt;others&lt;/strong&gt; can do with your data. Several months’ worth of DNS history, cross-referenced with third-party databases, paints a behavioral profile that you don’t control the usage, retention period, or future recipients of. “Nothing to hide” assumes you know all the ways this data could be reused against you. No one does.&lt;/p&gt;
&lt;h3 id=&quot;-apple-private-relay-is-great&quot;&gt;« Apple Private Relay is great»&lt;/h3&gt;
&lt;p&gt;On a subset of Safari traffic, Private Relay improves the status quo. On the rest, it does nothing. And it shifts trust towards Apple + Cloudflare/Fastly with no configurable alternatives. For someone who doesn’t want to touch settings, it’s better than nothing. For someone trying to have a cohesive sovereign stack, it’s a placebo that could give a false sense of security.&lt;/p&gt;
&lt;h3 id=&quot;-cloudflare-1111-is-fast-and-free&quot;&gt;« Cloudflare 1.1.1.1 is fast and free»&lt;/h3&gt;
&lt;p&gt;True. It’s also an American cloud whose business model relies on aggregated network data collection, and it’s subject to the CLOUD Act. For an ordinary user, it’s better than the router’s DNS. For someone wanting to get out of Five Eyes jurisdictions on their privacy stack, it’s a starting point, not the destination.&lt;/p&gt;
&lt;h1 id=&quot;take-back-control-at-three-levels&quot;&gt;&lt;strong&gt;Take Back Control, at Three Levels&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Three levels of engagement, from simplest to most sovereign. Each is a genuine improvement. Choose the one that fits your available time and technical tolerance threshold.&lt;/p&gt;
&lt;h3 id=&quot;level-1-instant-gain-two-minutes&quot;&gt;&lt;strong&gt;Level 1, Instant Gain, Two Minutes&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Switch your macOS system resolver to a respectful operator, using DoH or DoT, via a configuration profile. No app to install, no service to launch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concrete Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Choose a resolver. Two serious candidates, accessible without special technical knowledge: &lt;strong&gt;Quad9&lt;/strong&gt; (non-profit foundation, Switzerland, NLPD jurisdiction) and &lt;strong&gt;Mullvad DNS&lt;/strong&gt; (Sweden, declared no-logs, Cure53 audited infrastructure, transparent operator). Both: a &lt;code&gt;.mobileconfig&lt;/code&gt; file, two clicks, done.&lt;/li&gt;
&lt;li&gt;Get the official &lt;code&gt;.mobileconfig&lt;/code&gt; profile from &lt;code&gt;quad9.net&lt;/code&gt; or &lt;code&gt;mullvad.net&lt;/code&gt;, depending on your choice.&lt;/li&gt;
&lt;li&gt;Double-click the file on your Mac, go to System Preferences &gt; Privacy &amp;#x26; Security &gt; Profiles, validate the installation.&lt;/li&gt;
&lt;li&gt;Check the result on &lt;code&gt;dnscheck.tools&lt;/code&gt;: you should see the chosen resolver, plus your ISP.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/03-dns-profil-mobileconfig-1.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Quad9 and Mullvad DNS, downloading the.mobileconfig profile for macOS&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Advantage:&lt;/strong&gt; Two minutes, zero maintenance, instant gain. Your queries are no longer visible to your ISP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limit:&lt;/strong&gt; You’re still entrusting your queries to an external operator. Quad9 and Mullvad have verified no-log policies and independent audits, which is far better than your ISP. But they’re a foundation or a company, not you. For those who want to delegate less, we step up a notch.&lt;/p&gt;
&lt;h3 id=&quot;level-2-local-first-with-dnscrypt-proxy&quot;&gt;&lt;strong&gt;Level 2, Local-First with dnscrypt-proxy&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Install &lt;code&gt;dnscrypt-proxy&lt;/code&gt; on your Mac. It’s a local service that becomes your resolver. It handles DoH, DoT, DNSCrypt protocol, local caching, domain filtering, and especially &lt;strong&gt;anti-leak&lt;/strong&gt;: it intercepts all system queries and forces them into its encrypted tunnel, regardless of what macOS would have done by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Your Mac requests &lt;code&gt;proton.me&lt;/code&gt;. The query goes to &lt;code&gt;127.0.0.1:53&lt;/code&gt;, to &lt;code&gt;dnscrypt-proxy&lt;/code&gt; running locally. The proxy encrypts the query and sends it to one or more anycast resolvers (Quad9, Mullvad, community DNSCrypt servers). The responses come back, are cached locally, and serve your Mac. The whole process happens without your ISP seeing anything, and with the option to wake up multiple upstreams to avoid putting all your eggs in one basket.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concrete Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Installation: &lt;code&gt;brew install dnscrypt-proxy&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Configuration: Edit &lt;code&gt;/opt/homebrew/etc/dnscrypt-proxy.toml&lt;/code&gt; to enable DoH, disable clear DNS, choose a list of resolvers (Quad9, Mullvad, non-logging community ones).&lt;/li&gt;
&lt;li&gt;Startup: &lt;code&gt;sudo brew services start dnscrypt-proxy&lt;/code&gt;. The service registers and starts on boot.&lt;/li&gt;
&lt;li&gt;Configure macOS to use &lt;code&gt;127.0.0.1&lt;/code&gt; as the only resolver (System Preferences &gt; Network &gt; Advanced &gt; DNS).&lt;/li&gt;
&lt;li&gt;Check on &lt;code&gt;dnscheck.tools&lt;/code&gt;: you’ll see multiple upstreams running, never your ISP, never Cloudflare or Google.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/04-dnscrypt-proxy-config-1.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;dnscrypt-proxy.toml, sovereign configuration: no-log resolvers, DNSSEC mandatory&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Advantage:&lt;/strong&gt; 80% sovereign. Your Mac no longer trusts a single operator. You can distribute the load across multiple no-log European resolvers. Built-in anti-leak. Fast local cache.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limit:&lt;/strong&gt; One level higher in initial config, about thirty minutes the first time. Minimal maintenance afterwards, updates via brew. You’re still trusting external resolvers, just multiple ones instead of one, and with the ability to change them in two lines of config.&lt;/p&gt;
&lt;h3 id=&quot;level-3-full-control-recursive-unbound-on-personal-vps&quot;&gt;&lt;strong&gt;Level 3, Full Control, Recursive Unbound on Personal VPS&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Set up your own recursive resolver. No third parties at all. Your Mac queries your machine, which descends the root → TLD → authoritative hierarchy all by itself. No one facing sees the aggregate of your queries: each authoritative server only sees the query that concerns it, with no knowledge of the rest.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You have a VPS at a sovereign hoster (Infomaniak in Switzerland, Hetzner in Germany, etc.). On this VPS runs &lt;strong&gt;Unbound&lt;/strong&gt;, an open-source recursive DNS server renowned for the cleanliness of its code. You connect your Mac to this VPS via Tailscale, so through a WireGuard-encrypted tunnel on a private network. You configure your Mac to use the Tailscale IP of the VPS as the resolver. The queries are encrypted in Tailscale, land on Unbound which does the recursive resolution, and come back. And because all your traffic goes through the Tailscale WireGuard tunnel, your ISP only sees encrypted packets going to Tailscale endpoints.&lt;/p&gt;
&lt;p&gt;No commercial operator logs the entirety of your queries. The authoritative servers see a European datacenter IP, not your residential IP. The only residual link in the base config: the recursive queries of Unbound leave the VPS in unencrypted UDP. To eliminate this, configure Unbound in &lt;code&gt;forward-tls-upstream&lt;/code&gt; mode to Quad9 or Mullvad in DoT (port 853), and the whole path becomes encrypted, your hoster sees nothing more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concrete Steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provision a small VPS (1 vCPU, 1 Go RAM, more than sufficient) at a sovereign hoster.&lt;/li&gt;
&lt;li&gt;Install &lt;strong&gt;Unbound&lt;/strong&gt; + DNSSEC validation enabled.&lt;/li&gt;
&lt;li&gt;Join the VPS to the Tailscale mesh.&lt;/li&gt;
&lt;li&gt;Restrict Unbound to only listen on the Tailscale interface, never the public one.&lt;/li&gt;
&lt;li&gt;Configure macOS to use the Tailscale IP of the VPS as the only resolver.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/05-dig-dnssec-output-1.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;&amp;#x60;dig +dnssec&amp;#x60; output, the &amp;#x60;ad&amp;#x60; flag confirms end-to-end DNSSEC validation&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Advantage:&lt;/strong&gt; Maximum sovereignty over DNS. No third-party operators. End-to-end DNSSEC validation. You can add your own filtering lists (advertising, trackers, Apple telemetry, Microsoft telemetry) without relying on an external service. The resolver is yours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limit:&lt;/strong&gt; The barrier is the installation. Count on half a day the first time if you’ve never touched Unbound. Once set up, maintenance is minimal, monthly package update and occasional logs. You pay for a VPS, a few euros per month.&lt;/p&gt;
&lt;p&gt;Overkill for most individuals, but consistent when the rest of the stack is already sovereign (mail, drive, password manager, mesh) and the DNS would otherwise remain the last centralized link.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;Digital Sovereignty in Practice&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;whats-still-exposed-and-how-to-close-it&quot;&gt;What’s Still Exposed, and How to Close It&lt;/h2&gt;
&lt;p&gt;Sovereign DNS closes the most systematic gap. Three others remain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server Name Indication (SNI)&lt;/strong&gt;: During the TLS handshake, your browser announces the destination domain in plaintext. Even with perfect DNS, this info remains readable by network actors, until ECH is deployed server-side.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The destination IP address&lt;/strong&gt; remains visible. For services behind a shared CDN, the IP alone doesn’t reveal much. For a self-hosted site on a dedicated VPS, it’s enough for identification.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Browser fingerprinting&lt;/strong&gt;: Canvas, GPU, fonts, timezone create a cross-site fingerprint that adtech uses independently of DNS, and it survives private browsing. Neither sovereign DNS nor Tailscale affects this: it’s an application layer issue, in the browser. The solution lies in Firefox with arkenfox, Brave with its native randomization, or extensions like CanvasBlocker. A separate topic, article coming soon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The fix for SNI and IP: Tailscale with exit node&lt;/strong&gt;. All your traffic goes through a encrypted WireGuard tunnel. Your ISP no longer sees DNS queries, SNI, or the destination. Sovereign DNS + Tailscale exit node, that’s the combo closing these two doors at once.&lt;/p&gt;
&lt;p&gt;Sovereign DNS alone is the first brick. &lt;strong&gt;Sovereign DNS + Tailscale exit node, that’s the truly locked-down network stack&lt;/strong&gt;. Tailscale’s architecture is the follow-up, and we promise to explain it all in detail in an upcoming article soon.&lt;/p&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;
&lt;p&gt;DNS is the internet’s phone book. By default on most connections, it works in plaintext, and your ISP sees every domain you visit, timestamped. HTTPS doesn’t change that; it encrypts content, not destination. And a poorly configured VPN can leak DNS outside the tunnel without you realizing.&lt;/p&gt;
&lt;p&gt;Easy solutions are just problem shuffling. Enabling DoH by default typically means switching to Cloudflare or Google, American clouds subject to the CLOUD Act. iCloud Private Relay covers Safari and forgets the rest, giving keys back to Apple and Cloudflare for the part it covers. You haven’t removed the snoop, you’ve just swapped it.&lt;/p&gt;
&lt;p&gt;Taking control happens in three graduated levels: immediate gain with Quad9 or Mullvad DNS in DoH, two minutes via config profile. Local-first with &lt;code&gt;dnscrypt-proxy&lt;/code&gt; on your Mac, native anti-leak, multi-resolvers, in thirty minutes. Full control with Unbound recursive on a personal VPS via your Tailscale mesh, exit node enabled, half-day install, DNS and SNI sorted at once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concrete steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Test your DNS leaks now at &lt;code&gt;dnscheck.tools&lt;/code&gt;. If your ISP or Cloudflare show up and it wasn’t a conscious choice, you know what to do.&lt;/li&gt;
&lt;li&gt;Choose an honest level of engagement with your time. Level 1 immediate is better than Level 3 never.&lt;/li&gt;
&lt;li&gt;If you already have a privacy stack elsewhere (VPN, Proton, Tailscale), ensure DNS isn’t the weak link revealing what the rest protects.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DNS is the first brick in a coherent network sovereignty. Without it, the rest is partly theater. With it and Tailscale as exit node, it’s a stack truly armored.&lt;/p&gt;
&lt;h2 id=&quot;also-see&quot;&gt;Also see&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/&quot;&gt;Why you need a VPN, and what it actually does&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;Digital sovereignty in practice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/cloud-ordinateur-quelquun-dautre/&quot;&gt;The cloud, it’s someone else’s computer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;macOS privacy, settings to change immediately&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Need tech terms explained? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>dns</category><category>privacy</category><category>souverainete</category><category>reseau</category><category>securite</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-dns-draft-1.png" length="0" type="image/png"/></item><item><title>NIS2 forces companies to encrypt. CSAR prevents them from really doing it.</title><link>https://macsouverain.com/en/nis2-csar-contradiction-ue-chiffrement-surveillance/</link><guid isPermaLink="true">https://macsouverain.com/en/nis2-csar-contradiction-ue-chiffrement-surveillance/</guid><description>NIS2 forces encryption on businesses. CSAR wants to crack it. Same institution. Two incompatible texts. What it means for you.</description><pubDate>Sat, 18 Apr 2026 13:46:22 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;July Update 2026.&lt;/strong&gt; The calendar has shifted: on July 9, the European Parliament allowed the renewal of Chat Control 1.0 without the 361 votes needed to block it, despite the majority voting against it with end-to-end encryption explicitly excluded from the text. CSAR 2.0, the one that contradicts NIS2 and is described here, will resume trilogue talks in September: the “May 4” mentioned below is outdated. &lt;a href=&quot;https://macsouverain.com/en/radar-chat-control-1-adopte-par-defaut/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Brussels has a brilliant idea: forcing you to encrypt your data. They also have another idea, less brilliant but more totalitarian: being able to read it whenever they want.&lt;/p&gt;
&lt;p&gt;These are not two policies from two different institutions. It’s the same European Commission, a few months apart, signing both texts (yes, it’s possible, I assure you: welcome to Absurdistan).&lt;/p&gt;
&lt;p&gt;NIS2 forces you to secure yourself or face sanctions. CSAR 2.0 forces you to leave a backdoor open so they can spy on you cheaply.&lt;/p&gt;
&lt;p&gt;And, like any good mess of texts cooked up by our dear European technocrats, under the pressure of our dear politicians, the right hand doesn’t seem to know what the left hand is doing.&lt;/p&gt;
&lt;p&gt;Here’s what this means for your digital protection, and why this inconsistency isn’t an accident.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;nis2-the-eu-finally-discovers-cybersecurity&quot;&gt;NIS2: The EU finally discovers cybersecurity&lt;/h2&gt;
&lt;p&gt;The NIS2 directive came into effect in January 2023. It was called NIS1 before, covering around 500 entities in France. NIS2 expands the scope to &lt;strong&gt;15,000-18,000 French entities&lt;/strong&gt; according to the ANSSI.&lt;/p&gt;
&lt;p&gt;It’s no longer just operators of critical infrastructures; it’s any company with 50 employees and €10 million in turnover or assets in the covered sectors. Healthcare, energy, transport, digital, finance. The hospital sector is listed in Annex I as highly critical.&lt;/p&gt;
&lt;p&gt;Article 21 is the heart of the matter. It lists ten mandatory measures, including &lt;strong&gt;encrypting data in transit and at rest&lt;/strong&gt;, &lt;strong&gt;multifactor authentication&lt;/strong&gt; (MFA), and &lt;strong&gt;setting up secure communications&lt;/strong&gt;. In plain language: &lt;strong&gt;if you handle data in a sector covered by NIS2&lt;/strong&gt;, encryption is no longer a recommendation, it’s a legal obligation.&lt;/p&gt;
&lt;p&gt;The structural novelty of NIS2 is Article 20. Responsibility no longer lies solely with the company; it lies with the &lt;strong&gt;physical person in charge&lt;/strong&gt;. No more scapegoating the CISO, no more “our provider handled it”. &lt;strong&gt;The board members are personally responsible for compliance&lt;/strong&gt; (Doc, if you’re there, your office is going to be busy, I know some executives heading straight for the tranxene).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;France, however, is lagging behind&lt;/strong&gt; (Same as ever, huh?). The deadline for transposition set by the EU was &lt;strong&gt;October 17, 2024&lt;/strong&gt;. We’re approaching May 2026 (try meeting one of your deadlines and we’ll talk), and the text still hasn’t been voted on in the National Assembly. This delay doesn’t exempt anyone: &lt;strong&gt;NIS2 obligations are coming&lt;/strong&gt;, the question is when, not if.&lt;/p&gt;
&lt;p&gt;And in the French bill, one article stands out. &lt;strong&gt;&lt;a href=&quot;https://www.assemblee-nationale.fr/dyn/17/dossiers/DLR5L17N50731&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Article 16 bis&lt;/a&gt; of the bill explicitly prohibits imposing forced access in encryption tools&lt;/strong&gt;. No provider of encryption solutions can be forced to allow imposed access to their tools.&lt;/p&gt;
&lt;p&gt;That’s where things get interesting.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;csar-the-eu-wants-to-read-what-it-just-told-you-to-encrypt&quot;&gt;CSAR: The EU wants to read what it just told you to encrypt&lt;/h2&gt;
&lt;p&gt;CSAR, officially the Child Sexual Abuse Regulation, is the other text. For the full details of the mechanism and the political dossier, &lt;a href=&quot;https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/&quot;&gt;the article on Chat Control 2.0&lt;/a&gt; explains it all.&lt;/p&gt;
&lt;p&gt;You’ll see that while the goal is laudable and one we all share, the methods are more reminiscent of totalitarian practices of the past than of healthy democracy.&lt;/p&gt;
&lt;p&gt;The short version:&lt;/p&gt;
&lt;p&gt;CSAR would force messaging apps to scan the content of your messages on your device &lt;strong&gt;before&lt;/strong&gt; they’re encrypted. The technical term is “client-side scanning”.&lt;/p&gt;
&lt;p&gt;In practice: your message is read on your device before it’s encrypted and sent. In France, allowing a public agent to access the content of a correspondence without authorization is an aggravated offense. Apparently, when you’re the EU, you can do it, and it doesn’t bother you.&lt;/p&gt;
&lt;p&gt;End-to-end encryption remains “technically intact” during transport but is circumvented before it applies. &lt;strong&gt;Scanning before encryption is encryption for show&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The status of the dossier at the time of publication: the EU Council adopted its position on November 26, 2025. Trilogue talks, the opaque negotiations between Parliament, Council, and Commission where the final text is cooked up, have begun. Next trilogue: &lt;strong&gt;May 4, 2026&lt;/strong&gt;. Formal adoption targeted: &lt;strong&gt;July 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The terms have evolved since the first version: “client-side scanning” is now called “risk mitigation measures” in official documents. The packaging is more presentable. The effect on your device remains the same.&lt;/p&gt;
&lt;p&gt;The same European Commission that produced NIS2 is pushing CSAR. It’s not a metaphor.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/&quot;&gt;Chat Control 2.0: The EU wants to read your messages before you send them&lt;/a&gt;: mechanism, Signal, Proton, and what you can do.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-fundamental-contradiction&quot;&gt;The fundamental contradiction&lt;/h2&gt;
&lt;p&gt;Put the two texts side by side.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NIS2, Article 21&lt;/strong&gt;: encrypt data in transit and at rest, MFA, secure communications. Legal obligation, personal responsibility of the director, sanctions for non-compliance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSAR&lt;/strong&gt;: scanning messages &lt;strong&gt;before&lt;/strong&gt; encryption on every device, no judicial warrant, no user notification, for all communications, not just suspicious ones.&lt;/p&gt;
&lt;p&gt;The scan reads everything, and an AI decides your fate. False positives are going to be spectacular. Let’s bet that the dawn raid, with or without apologetic platitudes, will be too.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why these two texts are physically incompatible&lt;/strong&gt;: to scan content “before encryption”, it must be accessible, at some point, in plain text, by a third-party process. This process creates a &lt;strong&gt;mandatory access point&lt;/strong&gt;: assumed and legalized in the case of CSAR. This provision is totally incompatible with the objectives of NIS2.&lt;/p&gt;
&lt;p&gt;This is precisely what French law, in the NIS2 transposition bill, via its Article 16 bis, &lt;strong&gt;prohibits imposing on encryption providers&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The same Commission wrote both texts&lt;/strong&gt;. The commissioner for cybersecurity oversees NIS2. The commissioner for home affairs pushes CSAR. They’re not enemy ministries. In France, it’s the same story: the ANSSI publishes security guidelines, the DGSI reports its needs to its minister, and once again, interests diverge.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:52025DC0740&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;COM(2025)740 final (November 27, 2025)&lt;/a&gt;, the Commission’s own evaluation report, admits that &lt;strong&gt;the system does not allow a demonstrable link to be established between generated reports and actual convictions&lt;/strong&gt;, nor can it quantify the number of children actually identified through it.&lt;/p&gt;
&lt;p&gt;This isn’t external criticism. It’s the institution behind the text acknowledging, in its own balance sheet, the methodological impossibility of validating the tool it wants to impose on 450 million Europeans.&lt;/p&gt;
&lt;p&gt;We’re building infrastructure for mass surveillance.&lt;/p&gt;
&lt;p&gt;Its pretext doesn’t hold up, given the implemented technique and the unproven results.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-this-says-about-your-protection&quot;&gt;What this says about your protection&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;NIS2 remains a good text&lt;/strong&gt;. The obligation to encrypt, take cybersecurity seriously, and hold directors accountable are real advances. If you’re in a covered entity, NIS2 will force you to do what you should have done ten years ago. That’s not the problem.&lt;/p&gt;
&lt;p&gt;The problem is what this inconsistency reveals about the solidity of your protection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Individual digital protection cannot rely on the regulatory coherence of institutions&lt;/strong&gt;. They structurally contradict each other. NIS2 forces you to encrypt today. CSAR wants to make encryption circumventable tomorrow. The law protecting you and the law spying on you can coexist in the same legal corpus with equal formal legitimacy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What really protects you is technical design&lt;/strong&gt;, not legal compliance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Signal can’t implement client-side scanning&lt;/strong&gt; without breaking its architectural model. That’s why Meredith Whittaker said she’d rather leave the European market than do it. It’s not a stance; it’s a &lt;strong&gt;technical impossibility&lt;/strong&gt; disguised as a political position. &lt;strong&gt;Proton works on the same principle&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A tool whose architectural design prevents scanning is protected differently from one that “respects the law in force”. The law can change. Architecture remains. That’s your guarantee.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For entities covered by NIS2&lt;/strong&gt;, a caveat is in order: &lt;strong&gt;this compliance remains mandatory and necessary&lt;/strong&gt;. Encrypting your data in transit and at rest, implementing MFA, securing internal communications are real obligations with real sanctions if not met.&lt;/p&gt;
&lt;p&gt;Implementing them with tools whose design is solid, whose code is audited, whose jurisdiction is favorable, is stacking two layers of protection instead of one. &lt;strong&gt;NIS2 and prudent architectural design are not opposed&lt;/strong&gt;. They should complement each other.&lt;/p&gt;
&lt;p&gt;What doesn’t hold up is believing that “NIS2 compliance = complete protection” if CSAR passes. Legal compliance becomes an insufficient safety net when another law creates a breach in what the first one demanded be built.&lt;/p&gt;
&lt;p&gt;The French bill’s Article 16 bis, which prohibits scanning in encryption tools, is a real line of defense. The fact that it coexists in the same bill as NIS2 obligations is encouraging. The fact that it’s in political friction with CSAR, pushed by the same Commission, gives an idea of the terrain on which this tension will play out in the coming months.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;
&lt;p&gt;Two texts, one institution, two opposing directions. NIS2 forces you to encrypt, holds directors accountable, and in the French bill, explicitly prohibits scanning in encryption tools. CSAR wants to scan before encryption, i.e., circumvent encryption by design, without a judicial warrant, for all your communications.&lt;/p&gt;
&lt;p&gt;This isn’t a contradiction that can be overcome with an amendment. It’s a structural incoherence between two institutional priorities that are incompatible: securing and surveilling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concretely, the points to watch&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; If you’re covered by NIS2, get a head start on compliance without waiting for the French vote. Obligations are coming, transposition delay or not.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Choose tools whose technical design makes forced access impossible, not just tools that “respect current regulations”. Regulations change. Architecture less so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Follow CSAR trilogue talks: May 4, 2026, is the next turning point. Public pressure worked on Chat Control 1.0.&lt;/p&gt;
&lt;p&gt;For a deeper dive into end-to-end encryption and why it remains the only solid bulwark, the upcoming article on the subject will explain.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/&quot;&gt;Chat Control 2.0: The EU wants to read your messages before you send them&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If digital sovereignty concerns you beyond just the regulatory framework, the concept is laid out in the foundational article.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;Digital sovereignty: What is it, really?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The ANSSI’s dedicated NIS2 page lists the covered sectors and obligations in detail.&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>securite</category><category>chiffrement</category><category>reglementation</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/art31-nis2-csar-feature.png" length="0" type="image/png"/></item><item><title>Chat Control 2.0: The EU wants to read your messages before you send them</title><link>https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/</link><guid isPermaLink="true">https://macsouverain.com/en/chat-control-csar-surveillance-messageries-chiffrees/</guid><description>The CSAR regulation would force messaging apps to scan your messages before encryption. Signal threatens to leave Europe. Here&apos;s what you can do.</description><pubDate>Sat, 18 Apr 2026 13:46:19 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;JULY UPDATE 2026.&lt;/strong&gt; The timeline of this article is outdated: the trilogue on May 4th took place, and on July 9th the European Parliament allowed the renewal of Chat Control 1.0 (voluntary scanning), not by a vote for but due to the lack of the 361 votes required to block it, while the majority voted against. End-to-end encryption is explicitly excluded from this text. The real fight, CSAR (2.0) described below, will restart in trilogue in September. &lt;a href=&quot;https://macsouverain.com/en/radar-chat-control-1-adopte-par-defaut/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You send a message to a friend on Signal. End-to-end encrypted, no one can read it between you two. That’s the principle, that’s the promise, that’s what makes hundreds of millions of people use encrypted messaging.&lt;/p&gt;
&lt;p&gt;The European Union finds this problematic.&lt;/p&gt;
&lt;p&gt;Under the guise of fighting child pornography, the European Commission is pushing a regulation that would force every messaging app to scan the content of your messages &lt;em&gt;before&lt;/em&gt; they are encrypted. Signal threatens to leave Europe. Proton says it would rather be blocked. Apple hasn’t said anything. And that might be the most worrying part.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/radar-chat-control-2-espionnage-masse/&quot;&gt;Radar Chat Control 2.0: EU wants to scan all your messages&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-problem-a-snitch-on-your-own-device&quot;&gt;The Problem: A Snitch on Your Own Device&lt;/h2&gt;
&lt;p&gt;Imagine a postman who reads every letter you send, compares it to a blacklist, then puts it in a sealed envelope. The envelope is well-sealed, no one can open it in transit. But the postman has already read it.&lt;/p&gt;
&lt;p&gt;That’s exactly what the CSAR (Child Sexual Abuse Regulation) would impose on encrypted messaging apps. The technical term is “client-side scanning”. In human terms: your device scans the content of your messages, photos, and files &lt;em&gt;before&lt;/em&gt; they are encrypted and sent. The scan result is compared to a database of illegal content. If a match is detected, automatic reporting to authorities.&lt;/p&gt;
&lt;p&gt;End-to-end encryption remains “technically” intact. The message is encrypted during transport. Except it’s read beforehand.&lt;/p&gt;
&lt;p&gt;Encryption that’s bypassed before it applies is just window dressing.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-mechanism-how-it-works-in-practice&quot;&gt;The Mechanism: How It Works in Practice&lt;/h2&gt;
&lt;p&gt;Client-side scanning relies on three steps, all performed on your device.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pre-encryption interception&lt;/strong&gt;: When you type a message or attach a photo, the content is captured in plaintext before the end-to-end encryption protocol applies. That’s the key to the mechanism: encryption is never “broken”, it’s bypassed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perceptual hash comparison&lt;/strong&gt;: The content is converted into a numerical fingerprint and compared to a database of known content fingerprints. The problem of false positives is well-documented: family photos, medical images, memes have already triggered false reports in existing systems from Google and Meta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic reporting&lt;/strong&gt;: If there’s a match, the authorities are notified without human intervention and without notification to the user. You don’t know you’ve been reported. You can’t contest before the process starts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All this happens silently, in the background, on every message sent by every user. And without any judicial warrant. The door is open to all kinds of administrative abuses.&lt;/p&gt;
&lt;p&gt;It’s mass surveillance by design, under the guise of clean democracy.&lt;/p&gt;
&lt;p&gt;And that’s where the postman analogy falls short. The postman, you can see. If he gets caught, it’s aggravated offense direct. Likely prison time.&lt;/p&gt;
&lt;p&gt;The scanner integrated into your own device, though, it’s just chilling. If you don’t read my articles, you don’t even know it’s just there, working under your nose.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-it-changes-in-practice&quot;&gt;What It Changes in Practice&lt;/h2&gt;
&lt;h3 id=&quot;two-texts-two-fates&quot;&gt;Two Texts, Two Fates&lt;/h3&gt;
&lt;p&gt;It’s important to untangle two things that often get confused.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chat Control 1.0&lt;/strong&gt;, in its most aggressive form, wasn’t renewed, that’s true. But the reality is more nuanced. On March 11th, 2026, the European Parliament voted 458 to 1 to extend the ePrivacy derogation until August 3rd, 2027. The old derogation expired on April 3rd, 2026. The resolution explicitly protects end-to-end encryption: measures cannot apply to E2EE communications. It’s not “Chat Control 1.0 is dead”. It’s a partial victory: mandatory E2EE scanning is off the table, a limited extension was voted for, and time was given for the permanent CSAR text to be negotiated. Upcoming CSAR trilogues: May 4th and June 29th, 2026.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Chat Control 2.0, officially dubbed CSAR&lt;/strong&gt;, that’s another story. And it’s that one that’s at stake.&lt;/p&gt;
&lt;p&gt;The Council of the EU adopted its position on November 26th, 2025, with Poland and the Netherlands voting against. Since December 2025, the text has been in trilogue: the phase where the final text is crafted between Parliament, Council, and Commission. These negotiations are opaque by design. The positions of the three parties are not public, compromises are made behind closed doors.&lt;/p&gt;
&lt;p&gt;Next trilogue: &lt;strong&gt;May 4th, 2026&lt;/strong&gt;. Formal adoption targeted for &lt;strong&gt;July 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The terms have changed since the first version. “Client-side scanning” has become “risk mitigation measures” and “voluntary detection activities”. The packaging is more presentable. The practical effect is the same, according to the &lt;a href=&quot;https://edri.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;EDRi&lt;/a&gt;, the &lt;a href=&quot;https://www.eff.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;EFF&lt;/a&gt;, and &lt;a href=&quot;https://noyb.eu&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;noyb&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;signal-proton-apple-three-very-different-responses&quot;&gt;Signal, Proton, Apple: Three Very Different Responses&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://signal.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Signal&lt;/a&gt;&lt;/strong&gt; was direct. Meredith Whittaker, executive director, said in October 2025 that Signal would “unfortunately have to leave the European market” rather than compromise its encryption. Signal is a non-profit organization. No shareholders, no advertising revenue, no market obligations. When they say that, it’s credible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://proton.me&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton&lt;/a&gt;&lt;/strong&gt;, jurisdiction Switzerland, same stance: “we’d rather be blocked”. Switzerland isn’t in the EU, Proton benefits from real legal distance from European law. The CSAR would only apply to Proton if Proton operates in the EU via its European users, but the legal room for maneuver is wider than just “we comply or we close”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apple&lt;/strong&gt; hasn’t said anything publicly about the CSAR.&lt;/p&gt;
&lt;p&gt;This silence is significant. In December 2022, Apple abandoned its own client-side scanning project for iCloud photos after a massive backlash from the security research community. The message seemed clear: no client-side scanning.&lt;/p&gt;
&lt;p&gt;Unless Apple isn’t Signal. Apple is a publicly traded company, with physical Apple Stores across Europe, local subsidiaries, European revenue in the tens of billions. Signal can say “we close”. Apple, not so easily.&lt;/p&gt;
&lt;p&gt;For a Mac user who uses iMessage daily and trusts its end-to-end encryption, Apple’s silence on the most direct threat to that encryption is the most uncomfortable angle.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-global-pattern-same-excuse-same-infrastructure&quot;&gt;The Global Pattern: Same Excuse, Same Infrastructure&lt;/h2&gt;
&lt;p&gt;Europe isn’t acting in a vacuum.&lt;/p&gt;
&lt;p&gt;In the US, the EARN IT Act follows exactly the same logic: same excuse (protecting children from CSAM), same effect (destroying end-to-end encryption), same rhetorical strategy. Who could be against protecting children? No one. That’s precisely why it’s the chosen lever.&lt;/p&gt;
&lt;p&gt;It’s not a coincidence. It’s a pattern. On both sides of the Atlantic, legislators are using the most morally unassailable cause to create the infrastructure for generalized surveillance. Once built, that infrastructure doesn’t disappear.&lt;/p&gt;
&lt;h3 id=&quot;when-one-judge-suffices&quot;&gt;When One Judge Suffices&lt;/h3&gt;
&lt;p&gt;In March 2026, a New Mexico court ordered Meta to pay $375 million for unfair practices towards minors. In this case, the attorney general presented Meta’s decision to make Messenger end-to-end encrypted by default as a “design choice” that made it harder to transmit reports to law enforcement. The judge followed suit, creating a precedent.&lt;/p&gt;
&lt;p&gt;The “design choice” argument is formidable: if this legal angle catches on, every decision to improve user security could become evidence in a future lawsuit. Why add encryption? An attorney could make it “a deliberate tool for protecting criminals”. This logic is legally credible, and it’s just been tested successfully.&lt;/p&gt;
&lt;p&gt;This ruling only concerns Meta, in the US. But Apple is also legally exposed on US soil. If this precedent makes waves, the pressure on iMessage will be of a different nature than on Signal. Signal can say “we close” for a geographical area. Apple, not so easily.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;when-the-commission-admits-its-useless&quot;&gt;When the Commission Admits It’s Useless&lt;/h2&gt;
&lt;p&gt;The implementation report COM(2025)740, published by the European Commission itself, contains a remarkable admission: &lt;strong&gt;it’s currently not possible to establish a clear link between the reports submitted by providers and the convictions handed down, nor to provide a reliable overview of the number of children rescued&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This isn’t a libertarian argument. It’s the Commission, in its own document, acknowledging that the tool it wants to impose on 450 million Europeans has no demonstrable results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We’re creating an infrastructure for generalized scanning&lt;/strong&gt; of private communications &lt;strong&gt;without being able to prove it protects&lt;/strong&gt; anyone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The only guaranteed result is surveillance itself&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The categories are elastic by nature&lt;/strong&gt;. The infrastructure chosen creates the framework for expansion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-limits-myths-and-false-evidences&quot;&gt;The Limits: Myths and False Evidences&lt;/h2&gt;
&lt;h3 id=&quot;its-to-protect-children-so-its-legitimate&quot;&gt;”It’s to Protect Children, So It’s Legitimate”&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;The goal is legitimate&lt;/strong&gt;. The means aren’t. &lt;strong&gt;Everyone agrees we should fight pedocriminality&lt;/strong&gt;. But &lt;strong&gt;creating a system that scans every message from every citizen&lt;/strong&gt; to catch a tiny minority of criminals &lt;strong&gt;is mass surveillance&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It’s straight out of totalitarian states. The ones that Europe and France love to criticize for their lack of human rights and public freedoms.&lt;/p&gt;
&lt;p&gt;And specialists in child protection, including within European civil society, point to targeted alternatives: strengthening law enforcement resources, international cooperation, behavioral detection on non-encrypted platforms. Mass scanning isn’t the only tool. It’s the most intrusive one.&lt;/p&gt;
&lt;h3 id=&quot;encryption-is-protected-in-the-text&quot;&gt;”Encryption Is Protected in the Text”&lt;/h3&gt;
&lt;p&gt;The CSAR text does contain a clause protecting encryption. But this clause coexists with the obligation to scan content before encryption. It’s like guaranteeing the inviolability of mail while requiring the postman to read it before sealing it.&lt;/p&gt;
&lt;h3 id=&quot;it-only-concerns-criminals&quot;&gt;”It Only Concerns Criminals”&lt;/h3&gt;
&lt;p&gt;No. Scanning is systematic, applied to all communications, not just suspected ones. There’s no judicial warrant. There’s no targeting. If you use an encrypted messaging app in Europe, your messages would be scanned. All of them.&lt;/p&gt;
&lt;p&gt;False positives exist. Similar systems deployed by Google and Meta have reported parents sending photos of their children to their pediatrician. Innocent, scanned, reported.&lt;/p&gt;
&lt;h3 id=&quot;once-voted-the-law-is-irreversible&quot;&gt;”Once Voted, the Law Is Irreversible”&lt;/h3&gt;
&lt;p&gt;Not necessarily. The aggressive version of Chat Control 1.0 (mandatory E2EE scanning) was set aside thanks to citizen mobilization and the European Parliament’s vote. Public pressure changes votes. The trilogue on May 4th, 2026, is the next tipping point, and the text isn’t set in stone yet.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-political-precedent&quot;&gt;The Political Precedent&lt;/h2&gt;
&lt;p&gt;The real danger of CSAR goes beyond the technical issue of scanning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If the European Union, the jurisdiction that invented the GDPR&lt;/strong&gt; and presents itself as the global champion of personal data protection, &lt;strong&gt;normalizes mandatory scanning&lt;/strong&gt; of encrypted private communications, &lt;strong&gt;the signal sent to the rest of the world is devastating&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Every government that dreams of surveilling its citizens’ communications will have a ready-made model, validated by the EU, at its disposal.&lt;/p&gt;
&lt;p&gt;I’ve spent the last two years building a sovereign, encrypted, largely self-hosted digital infrastructure. Signal for everyday use. Matrix for internal messages, Proton for emails, encrypted DNS, hardened browsers. By principle, yes, but also for business.&lt;/p&gt;
&lt;p&gt;What’s shocking about this text is that it’s pushed by the same institution that created the GDPR. The one that prides itself on all the virtues attached to human rights and freedoms.&lt;/p&gt;
&lt;p&gt;Mass surveillance infrastructure never comes with an expiration date. Once in place, it only expands.&lt;/p&gt;
&lt;p&gt;The databases for comparison, currently limited to CSAM, could tomorrow include terrorist content, extremist content, disinformation content. Except to be characterized as such today, content must meet precise, legal criteria that a judge must confirm.&lt;/p&gt;
&lt;p&gt;Without judicial control, with a little push, we could easily slide into subjects like divergent political views, investigative journalism that ruffles feathers (Rhaaa! Mediapart and Le Canard Enchaîné, thorny issues for elected officials…), the labor sector, NGOs that make too much noise where it hurts, medical confidentiality, etc. All by simple administrative means, without a warrant, and without a judge. Franco must be kicking himself for missing this.&lt;/p&gt;
&lt;p&gt;The categories are elastic by nature. The infrastructure chosen creates the framework for expansion.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-you-can-do&quot;&gt;What You Can Do&lt;/h2&gt;
&lt;p&gt;You can’t prevent a trilogue from happening. But you can make surveillance more difficult on your own devices, and you can influence the political outcome.&lt;/p&gt;
&lt;h3 id=&quot;protect-your-communications&quot;&gt;Protect Your Communications&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Signal&lt;/strong&gt; for your conversations. It’s the only messaging app, with end-to-end encryption, whose operator has publicly stated they’d prefer to close the service in Europe rather than compromise its encryption.&lt;/p&gt;
&lt;p&gt;Open-source, no advertising, no data collection. Funded by donations, including $50 million from Brian Acton, co-founder of WhatsApp, when the Signal Foundation was created in 2018. No shareholders, no advertising revenue: no financial incentive to monetize your messages.&lt;/p&gt;
&lt;p&gt;I use Matrix/Elements because I self-host in maximum privacy mode, but Signal for everyday, easy encrypted messaging is the reference choice. If you had to use only one tool from this list, that’s my recommendation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://proton.me/mail&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton Mail&lt;/a&gt;&lt;/strong&gt; for your emails. End-to-end encryption, Swiss jurisdiction, same stance as Signal on the CSAR. Your professional, banking, administrative emails have no business on Gmail, and no one should be able to read them.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;Apple Mail vs Gmail vs Proton Mail: The Honest Comparison&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/migrer-gmail-proton-mail-mac/&quot;&gt;Migrating from Gmail to Proton Mail&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;reduce-your-exposure-surface&quot;&gt;Reduce Your Exposure Surface&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;VPN&lt;/strong&gt; as an additional layer. &lt;strong&gt;If Signal or Proton were to be geo-blocked&lt;/strong&gt; in Europe, &lt;strong&gt;a VPN with an IP outside the EU would give you access to the service&lt;/strong&gt;. Mullvad is the one I’d recommend: no account, no email, cash or crypto payment, Swedish jurisdiction. The VPN doesn’t replace messaging encryption, it complements it by masking your access.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sovereign DNS&lt;/strong&gt;. Change the DNS resolvers on all your devices. If European ISPs are forced to block domains, a resolver outside the EU’s jurisdiction circumvents that block. &lt;a href=&quot;https://www.quad9.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Quad9&lt;/a&gt; (9.9.9.9), run by a Swiss non-profit association, doesn’t log your queries.&lt;/p&gt;
&lt;p&gt;To natively encrypt DNS queries on Mac and iPhone, install the DoH profile configuration from Quad9’s documentation page (docs.quad9.net, under Apple). Ten minutes well-spent.&lt;/p&gt;
&lt;h3 id=&quot;if-signal-or-proton-leave-europe&quot;&gt;If Signal or Proton Leave Europe?&lt;/h3&gt;
&lt;p&gt;That’s the practical question. If the law passes and Signal or Proton make good on their threat, how do you keep using them?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Signal&lt;/strong&gt; distributes its Android APK directly on &lt;a href=&quot;https://signal.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;signal.org&lt;/a&gt;. On iOS, the Digital Markets Act, in effect since March 2024, opens the door to sideloading. Signal could distribute its app via an alternative channel, outside the App Store. It’s technically feasible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proton&lt;/strong&gt; is end-to-end encrypted by design: your emails and files are encrypted by default, Proton has no access. Maximum confidentiality by default. If a geographical block were to occur, a VPN with an IP outside the EU would suffice to bypass it. The VPN is also end-to-end encrypted: two independent layers.&lt;/p&gt;
&lt;p&gt;Important note: “leaving the market” would first be a negotiation threat, a political signal. Legal recourse would come first. Signal and Proton know this. So do the legislators. It’s a game of pressure, not an immediate ultimatum.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/&quot;&gt;Why You Need a VPN&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;weigh-in-on-the-outcome&quot;&gt;Weigh In on the Outcome&lt;/h3&gt;
&lt;p&gt;The trilogue on May 4th, 2026, is the next tipping point. Public pressure works: the vote on Chat Control 1.0 proves it. The aggressive version was set aside thanks to citizen mobilization.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://edri.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;EDRi&lt;/a&gt; (European Digital Rights) and &lt;a href=&quot;https://www.patrick-breyer.de/en/posts/chat-control/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Patrick Breyer&lt;/a&gt;, former Pirate MEP and one of the most consistent voices against this text, maintain tools for direct contact with MEPs. Use them. Write to your representatives. It’s not just activism, it’s applied democracy.&lt;/p&gt;
&lt;p&gt;The CSAR isn’t voted yet. It’s not dead yet either.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;in-summary&quot;&gt;In Summary&lt;/h2&gt;
&lt;p&gt;The European Union is preparing a regulation that would turn every smartphone into a silent snitch, scanning every message before it’s encrypted. The stated goal is protecting children. The real effect is mass surveillance infrastructure whose effectiveness the Commission itself can’t prove.&lt;/p&gt;
&lt;p&gt;Signal and Proton have drawn a line: rather than compromise encryption, they’d leave Europe. Apple hasn’t said anything. For a Mac user who trusts iMessage daily, this silence should raise questions.&lt;/p&gt;
&lt;p&gt;Install Signal. Use Proton Mail. Change your DNS. Contact your MEPs before the May 4th trilogue. These are concrete actions you can take today that reduce your exposure whatever happens.&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>securite</category><category>chiffrement</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/art30-chat-control-feature.png" length="0" type="image/png"/></item><item><title>Switching from Gmail to ProtonMail on Mac</title><link>https://macsouverain.com/en/migrer-gmail-proton-mail-mac/</link><guid isPermaLink="true">https://macsouverain.com/en/migrer-gmail-proton-mail-mac/</guid><description>Switching from Gmail to ProtonMail on Mac without losing any emails. Import, redirect, contacts, native app or Bridge, the whole process step-by-step.</description><pubDate>Thu, 09 Apr 2026 12:15:14 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;July Update 2026.&lt;/strong&gt; The Hide My Email flaw is unmasking Apple aliases (public disclosure on July 1st, still not fixed). Another argument for sovereign aliases: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;see the email comparison update&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;May Update 2026.&lt;/strong&gt; Another reason to migrate: Proton Mail now offers post-quantum encryption for new emails, included for free. Your communications remain unreadable even by a future quantum computer that stored today’s encrypted versions. &lt;a href=&quot;https://macsouverain.com/en/radar-proton-mail-post-quantum-mai-2026/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Gmail is like that roommate apartment where the landlord reads your mail. Not maliciously, just systematically. Since 2004. To show you ads.&lt;/p&gt;
&lt;p&gt;Switching to Proton Mail is getting your keys back. Emails between Proton users are end-to-end encrypted, keys generated on your devices, Proton has no technical access. For incoming emails from outside (like from Gmail), Proton encrypts them upon receipt with your public key, and only you can decrypt them. In both cases, Proton can’t read your emails, even if legally compelled.&lt;/p&gt;
&lt;p&gt;The migration itself is simpler than it sounds. Allow 30 minutes for a light account, 1 to 2 hours if you have years of Gmail archives. At the end, you’ll have all your old emails in Proton, your contacts imported, and Gmail will automatically forward new messages to your Proton box during the transition.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;Apple Mail vs Gmail vs Proton Mail: The Honest Comparison&lt;/a&gt; to understand why Proton Mail is architecturally different.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;before-you-begin&quot;&gt;Before You Begin&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What you’ll need:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Mac running macOS 12 Monterey or later&lt;/li&gt;
&lt;li&gt;An active Gmail account with IMAP access enabled (enabled by default on most accounts)&lt;/li&gt;
&lt;li&gt;A Proton Mail account (the free plan is enough to test; if you have more than 1GB of emails, a paid plan is necessary, see Step 1)&lt;/li&gt;
&lt;li&gt;Between 30 minutes and 2 hours depending on your mail volume&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What will change:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your emails will now pass through Proton’s servers (Switzerland), encrypted on the server side&lt;/li&gt;
&lt;li&gt;You’ll access your mailbox through the Proton Mail app on Mac (paid, 14-day free trial available) or through the web on mail.proton.me, or through Apple Mail with Proton Bridge (paid plan required for Bridge)&lt;/li&gt;
&lt;li&gt;Your new address will be in &lt;code&gt;@proton.me&lt;/code&gt; (or &lt;code&gt;@protonmail.com&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What won’t change right away:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your existing emails on Gmail will remain there until you import them&lt;/li&gt;
&lt;li&gt;Your newsletter subscriptions and registered accounts will keep your old Gmail address until you update them manually&lt;/li&gt;
&lt;li&gt;You can keep Gmail active in parallel throughout the transition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The operation is entirely reversible.&lt;/strong&gt; You won’t delete anything at Google at this stage.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-1-create-your-proton-mail-account&quot;&gt;Step 1: Create Your Proton Mail Account&lt;/h2&gt;
&lt;p&gt;Go to &lt;a href=&quot;https://proton.me/mail&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;proton.me/mail&lt;/a&gt; and sign up.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Free plan:&lt;/strong&gt; 1 address &lt;code&gt;@proton.me&lt;/code&gt;, 500MB of base storage (expandable to 1GB by completing the Proton startup checklist), web and mobile app access. Easy Switch is available on the free plan, but the available storage acts as a ceiling for import: with 1GB, you can import about 1GB of old emails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plus Mail plan:&lt;/strong&gt; 15GB of storage, 10 addresses, custom domain support, access to &lt;strong&gt;Proton Bridge&lt;/strong&gt; if you want to use Apple Mail, and &lt;strong&gt;SimpleLogin&lt;/strong&gt; included (an email alias service, more on that in Step 6). Price: $3.99/month (annual billing).&lt;/p&gt;
&lt;p&gt;If your Gmail account exceeds 1GB of archives, you’ll need to upgrade to a higher plan or clean up before migrating.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tip:&lt;/em&gt; You can start on the free plan, import the last 12 months, and upgrade to a higher plan if necessary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Choose your address carefully.&lt;/strong&gt; &lt;code&gt;firstname.lastname@proton.me&lt;/code&gt; for professional use, something shorter for everyday use. You won’t be able to change it later.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-2-import-your-emails-from-gmail-via-easy-switch&quot;&gt;Step 2: Import Your Emails from Gmail via Easy Switch&lt;/h2&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/17-02-easy-switch-v5.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Easy Switch Proton, Gmail connection&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;Proton offers a built-in import tool that connects directly to your Gmail account via OAuth, without needing your Gmail password on Proton. Google generates a temporary authorization, Proton uses it to read your mailbox, and that’s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In Proton Mail web:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; (gear icon at the top right) &gt; &lt;strong&gt;All Settings&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Import via Easy Switch&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Gmail&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Connect to Google&lt;/strong&gt;, a Google OAuth window will open&lt;/li&gt;
&lt;li&gt;Log in with your Gmail account and authorize the access to your mailbox&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/17-03-oauth-flow-v7.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Google OAuth window, Proton authorization&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;Once connected, Easy Switch will display your Gmail folders (Inbox, Sent, Archives, etc.) and let you choose what you want to import. By default, it selects everything: Starred, All Mail, Important, contacts, and calendars.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Path:&lt;/strong&gt; Proton Mail web &gt; Settings &gt; All Settings &gt; Import via Easy Switch &gt; Gmail &gt; Connect to Google&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; a list of your Gmail folders with message counts, and an estimate of the import time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tip:&lt;/em&gt; If you have years of archives, the import can take several hours and will run in the background. You can close the tab and come back later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; import the last 12 months first to start using Proton quickly, then come back for the rest.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-3-import-your-contacts&quot;&gt;Step 3: Import Your Contacts&lt;/h2&gt;
&lt;p&gt;Emails without contacts are half as useful. Google Contacts exports easily.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;From Google Contacts:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&quot;https://contacts.google.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;contacts.google.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Export&lt;/strong&gt; in the left sidebar&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;All contacts&lt;/strong&gt; and the format &lt;strong&gt;vCard (.vcf)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Download the &lt;code&gt;.vcf&lt;/code&gt; file to your Mac&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Path:&lt;/strong&gt; contacts.google.com &gt; Export &gt; All contacts &gt; vCard format&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/17-04-google-contacts-export-v4.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Google Contacts, Export vCard&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;In Proton Mail web:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Contacts&lt;/strong&gt; tab (icon at the top left)&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Import&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Select the downloaded &lt;code&gt;.vcf&lt;/code&gt; file&lt;/li&gt;
&lt;li&gt;Confirm the import&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Path:&lt;/strong&gt; Proton Mail web &gt; Contacts &gt; Import &gt; select the.vcf file&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; a summary of the imported contacts, with any detected duplicates to merge.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-4-set-up-proton-mail-on-mac&quot;&gt;Step 4: Set Up Proton Mail on Mac&lt;/h2&gt;
&lt;p&gt;Two options depending on your plan.&lt;/p&gt;
&lt;h3 id=&quot;option-a-proton-mail-desktop-app-paid-plan-14-day-free-trial&quot;&gt;Option A: Proton Mail desktop app (paid plan, 14-day free trial)&lt;/h3&gt;
&lt;p&gt;Download the Proton Mail app from &lt;a href=&quot;https://proton.me/mail/download&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;proton.me/mail/download&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It’s an Electron app (like VSCode), not a native AppKit app. It’s not as smooth as Apple Mail, but it handles encrypted emails without any additional configuration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; the desktop app is only for paid plans. Free accounts get a 14-day trial, after which access is limited to the web version on &lt;a href=&quot;https://mail.proton.me&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;mail.proton.me&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Launch the app, log in with your Proton account, and you’ll access your mailbox directly.&lt;/p&gt;
&lt;h3 id=&quot;option-b-apple-mail-via-proton-bridge-paid-plan&quot;&gt;Option B: Apple Mail via Proton Bridge (paid plan)&lt;/h3&gt;
&lt;p&gt;If you want to continue using Apple Mail with your encrypted Proton emails, you’ll need &lt;strong&gt;Proton Bridge&lt;/strong&gt;, a tool that translates between Apple Mail and Proton servers by decrypting locally on your Mac.&lt;/p&gt;
&lt;p&gt;Proton Bridge is only for paid plans.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/proton-bridge-apple-mail-mac/&quot;&gt;Proton Bridge + Apple Mail on Mac&lt;/a&gt;, the complete guide with all the setup steps.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-5-enable-gmail-forwarding-optional&quot;&gt;Step 5: Enable Gmail Forwarding (optional)&lt;/h2&gt;
&lt;p&gt;This step is optional but highly recommended during the transition period. It ensures you won’t miss any messages while updating your accounts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In Gmail:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Settings&lt;/strong&gt; (gear icon at the top right) &gt; &lt;strong&gt;See all settings&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Forwarding and POP/IMAP&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Add a forwarding address&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enter your Proton Mail address&lt;/li&gt;
&lt;li&gt;Gmail will send a verification email to your Proton address, retrieve the confirmation code&lt;/li&gt;
&lt;li&gt;Go back to Gmail, enter the code, and enable forwarding&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Path:&lt;/strong&gt; Gmail &gt; Settings &gt; See all settings &gt; Forwarding and POP/IMAP &gt; Add a forwarding address&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/17-06-gmail-forwarding-v4.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;Gmail Settings, Forwarding and POP/IMAP&quot;&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; your Proton address appears in the forwarding address list with the status “On”.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tip:&lt;/em&gt; Keep this forwarding active for 3 to 6 months. It protects against any forgotten updates while you’re updating your important accounts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-the-impatient&quot;&gt;For the Impatient&lt;/h2&gt;
&lt;p&gt;What this article does: migrate a Gmail mailbox to Proton Mail on Mac without losing any emails, while keeping a temporary forwarding active during the transition. The import is done through Proton’s Easy Switch tool (OAuth connection, no Gmail password needed on Proton).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In practice:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an account on proton.me/mail (free to start)&lt;/li&gt;
&lt;li&gt;Proton Mail web &gt; Settings &gt; Import via Easy Switch &gt; Gmail &gt; Connect to Google&lt;/li&gt;
&lt;li&gt;contacts.google.com &gt; Export &gt; All contacts &gt; vCard (.vcf)&lt;/li&gt;
&lt;li&gt;Proton Mail web &gt; Contacts &gt; Import &gt; select the.vcf file&lt;/li&gt;
&lt;li&gt;Proton Mail desktop app on proton.me/mail/download (paid, 14-day free trial available) or web version on mail.proton.me (free) or set up Proton Bridge + Apple Mail (paid plan required)&lt;/li&gt;
&lt;li&gt;Gmail &gt; Settings &gt; Forwarding and POP/IMAP &gt; Add a forwarding address = your Proton address&lt;/li&gt;
&lt;li&gt;Update important accounts in order of priority (banks, admin, services, networks)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;transparency&quot;&gt;Transparency&lt;/h2&gt;
&lt;p&gt;I use Proton Mail daily, it’s my main email service. The Proton links in this article are affiliate links: if you sign up for a paid plan via these links, MacSouverain earns a commission. That doesn’t change the price for you, and it doesn’t change what I write. If Proton messes up, I’ll say so.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Any technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>mac</category><category>tutoriel</category><category>proton-mail</category><category>gmail</category><category>migration</category><category>email</category><category>tutoriels</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-17-v3.png" length="0" type="image/png"/></item><item><title>Lockdown Mode, why you should enable it</title><link>https://macsouverain.com/en/lockdown-mode-face-a-coruna-toolkit-espionnage-gouvernemental/</link><guid isPermaLink="true">https://macsouverain.com/en/lockdown-mode-face-a-coruna-toolkit-espionnage-gouvernemental/</guid><description>An iOS toolkit designed for government agencies has leaked. Lockdown Mode stopped it dead in its tracks. Here&apos;s how it works and why it matters.</description><pubDate>Tue, 07 Apr 2026 09:05:30 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In late March 2026, news broke about Coruna, a surveillance toolkit for iOS developed by a U.S. military subcontractor for government agencies. The problem? It had been exploited for four years before being identified. Stolen internally, resold to a Russian broker, it ended up in the hands of Russian spy groups, then Asian cybercriminals specializing in crypto fraud.&lt;/p&gt;
&lt;p&gt;The tool exploits dozens of distinct iOS vulnerabilities spread across five full attack chains. It targets iPhones on iOS 13 to iOS 17.2.1, potentially exposing several hundred million devices.&lt;/p&gt;
&lt;p&gt;And Lockdown Mode held up against it. The Coruna code actively checks if Lockdown Mode is enabled on the target device, and if it is, it does nothing. No attempt. No bypass. Complete abandonment.&lt;/p&gt;
&lt;p&gt;This is concrete, verifiable information that says something important about the security philosophy behind this feature.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When a state tool becomes a criminal tool&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The story of Coruna follows a trajectory that security researchers have learned to recognize since the Shadow Brokers and the NSA tool leak in 2017: a tool designed for controlled state uses ends up proliferating far beyond its original framework.&lt;/p&gt;
&lt;p&gt;Coruna was developed by Trenchant, the spyware and surveillance division of L3Harris, a major U.S. defense company. The tool was intended for government agencies within a strictly defined legal and operational framework.&lt;/p&gt;
&lt;p&gt;What wasn’t planned was Peter Williams. The former general manager at Trenchant stole at least eight zero-days from the L3Harris internal system between 2022 and 2025, and sold them to Operation Zero, a Russian zero-day broker, for around $1.3 million in cryptocurrencies and luxury goods. In early 2026, he was sentenced to 87 months in federal prison.&lt;/p&gt;
&lt;p&gt;The rest is mechanical: tools move from Trenchant to Operation Zero, from Operation Zero to Russian spy groups, and inevitably, to actors with no operational constraints.&lt;/p&gt;
&lt;p&gt;In practical terms: the same framework that was supposed to target specific foreign adversaries ended up in 2025 in watering hole attacks against Ukrainian users (group UNC6353, identified by Google), and later on a network of fake crypto and financial sites targeting any vulnerable iPhone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The problem that Coruna illustrates&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Coruna isn’t a tool thrown together by opportunistic hackers. It’s five years of research and development, with JavaScript obfuscation techniques on four layers, and a chained exploitation of 23 distinct vulnerabilities.&lt;/p&gt;
&lt;p&gt;So the real question isn’t whether your iPhone can be compromised. It can be, if you’re using an unpatched version without taking precautions. The real question is how to protect yourself effectively.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Mechanism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coruna: how it works&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Coruna is what researchers call a watering hole exploit kit. You don’t need to click on a malicious link or open an attachment. You just need to visit a website hosting the malicious code, and your iPhone does the rest on its own.&lt;/p&gt;
&lt;p&gt;The kit chains five distinct techniques:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. WebKit RCE&lt;/strong&gt;: a remote code execution vulnerability in Apple’s web rendering engine. This is the point of entry. The JavaScript on the site triggers a vulnerability in the WebKit JIT (Just-In-Time compilation) engine to execute arbitrary code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Kernel privilege escalation&lt;/strong&gt;: from the browser context, Coruna exploits a kernel vulnerability to gain root privileges on the system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. System process injection&lt;/strong&gt;: the malicious code injects itself into legitimate iOS processes, &lt;code&gt;powerd&lt;/code&gt; and &lt;code&gt;locationd&lt;/code&gt;, to become invisible to common detection tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Module deployment&lt;/strong&gt;: from this position, the kit targets over a hundred crypto wallet and exchange apps to exfiltrate private keys and recovery phrases.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Persistent C2 communication&lt;/strong&gt;: communication with the command and control server passes through &lt;code&gt;imagent&lt;/code&gt;, Apple’s Messages daemon, to blend in with normal network traffic.&lt;/p&gt;
&lt;p&gt;This is precision work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The response: Lockdown Mode&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lockdown Mode was launched by Apple in 2022 with iOS 16. The promise was explicit: extreme protection for users exposed to state-level threats, such as journalists, human rights defenders, political opponents, and lawyers working on sensitive cases.&lt;/p&gt;
&lt;p&gt;The principle is simple but radical: reduce the attack surface as much as possible, even if it means breaking features.&lt;/p&gt;
&lt;p&gt;In practical terms, Lockdown Mode disables or restricts:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On the web (Safari and WebKit)&lt;/strong&gt;: the JavaScript JIT compiler is disabled. WebAssembly is disabled. Several advanced web technologies are blocked. Navigation performance drops significantly in benchmarks, sometimes up to 95%. This isn’t a bug. It’s the point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Messaging&lt;/strong&gt;: most attachment types are blocked. Link previews are disabled. Incoming calls from non-contacted people are blocked by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;: automatic connection to unsecured Wi-Fi networks is disabled. 2G networks, historically exploited for attacks, are blocked.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connected devices&lt;/strong&gt;: USB accessories require explicit approval, even if the iPhone is unlocked.&lt;/p&gt;
&lt;p&gt;The central idea is this: if you eliminate complex parsers, disable dynamic code execution paths, and remove surfaces that aren’t strictly necessary, then most exploits have nothing to latch onto.&lt;/p&gt;
&lt;p&gt;Coruna confirms this logic. The kit checks for Lockdown Mode via two specific probes on disabled APIs: &lt;code&gt;IndexedDB&lt;/code&gt; and &lt;code&gt;MathML&lt;/code&gt;. If these APIs don’t respond, Coruna concludes it’s facing a Lockdown Mode-enabled device and abandons the attack. No attempt at bypass. No Plan B. It leaves empty-handed.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/29-01-lockdown-mode-settings.png&quot; loading=&quot;lazy&quot; alt=&quot;Lockdown Mode enabled in macOS settings&quot;&gt;
&lt;p&gt;&lt;strong&gt;Four years of zero documented compromises&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apple stated at the end of March 2026: “We are not aware of any successful mercenary spyware attack against an Apple device with Lockdown Mode enabled.”&lt;/p&gt;
&lt;p&gt;Take this with a grain of salt, as it’s Apple talking. But the claim is independently corroborated.&lt;/p&gt;
&lt;p&gt;Donncha Ó Cearbhaill, director of Amnesty International’s Security Lab, confirmed he “hasn’t seen any evidence of an iPhone compromised by mercenary spyware with Lockdown Mode active at the time of the attack.”&lt;/p&gt;
&lt;p&gt;The Citizen Lab at the University of Toronto, which has been documenting spyware attacks for years, has confirmed at least two cases where Lockdown Mode actively blocked attacks: one linked to Pegasus from NSO Group, and another linked to Predator from Intellexa.&lt;/p&gt;
&lt;p&gt;Four years. Zero documented compromises. Against government-level tools.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Who Lockdown Mode is relevant for&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Investigative journalists&lt;/strong&gt; working on sensitive topics (corruption, organized crime, authoritarian governments).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Human rights defenders&lt;/strong&gt; operating in contexts where governments have documented the use of spyware against activists (NSO/Pegasus targeted journalists in Morocco, Saudi dissidents, Mexican opponents).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lawyers&lt;/strong&gt; working on confidential cases (states, corruption, money laundering, etc.).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Business leaders&lt;/strong&gt; holding digital assets or sensitive data (cryptocurrencies, patents, client files).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Political activists&lt;/strong&gt; in countries where the government has a history of using these types of tools against the opposition.&lt;/p&gt;
&lt;p&gt;Lockdown Mode imposes some compromises, that’s true. Apple designed it for high-risk profiles, but individual crypto wallet holders also have an interest in activating it, given the rise of stealers targeting macOS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An honest necessity: the daily frictions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lockdown Mode isn’t painless. Beyond disabled Safari extensions, there are little things that end up annoying you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FaceTime&lt;/strong&gt;: incoming calls from non-contacted people are blocked by default, and even some contacted people don’t get through. SharePlay and Live Photos are disabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Broken display on certain sites&lt;/strong&gt;: with WebAssembly and JavaScript JIT disabled, modern websites (cloud apps, online editors, certain dashboards) display poorly or don’t work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navigation slowdowns&lt;/strong&gt;: some complex sites take several seconds to load where they used to be instantaneous.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blocked configuration profiles&lt;/strong&gt;: you can’t install an MDM profile if you need it for work.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I tested Lockdown Mode full-time for a while and ended up turning it off. Not because it’s not effective, it is. But because the frictions accumulate and it becomes annoying in daily use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The best compromise for the majority&lt;/strong&gt;: activate it selectively. If you’re a SME director traveling to a high-risk area (professional event, foreign travel, hotel), or connecting to a sketchy public Wi-Fi, activate Lockdown Mode just for the exposed period. Turn it off once you’re back home.&lt;/p&gt;
&lt;p&gt;This gives you the best of both worlds: maximum protection when you really need it, comfort the rest of the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the story of Coruna says about the attack surface&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There’s a broader lesson in the philosophy of Lockdown Mode that Coruna illustrates: complexity is an attack surface.&lt;/p&gt;
&lt;p&gt;The WebKit JIT compiler is a marvel of engineering. It makes navigation fast. It’s also one of the most exploited surfaces in iOS history because it executes dynamic code, which is inherently difficult to secure exhaustively.&lt;/p&gt;
&lt;p&gt;Lockdown Mode doesn’t try to make the JIT more secure. It disables it. It’s brutal, and it costs some performance. But it’s effective.&lt;/p&gt;
&lt;p&gt;The same logic applies to WebAssembly, attachment previews, and advanced web technologies. Each complex parser is a zone where a bug can become a point of entry.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To understand what Apple Silicon brings to this security philosophy, see &lt;a href=&quot;https://macsouverain.com/en/apple-silicon-et-securite-ce-que-secure-enclave-change-vraiment&quot;&gt;Apple Silicon and security: what Secure Enclave really changes&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Limits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What Lockdown Mode doesn’t do&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lockdown Mode isn’t a universal shield, and Apple is the first to say so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn’t protect against human errors&lt;/strong&gt;. If you open a malicious attachment from an app outside the browser, Lockdown Mode doesn’t intervene on this attack vector.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn’t protect against non-web vulnerabilities&lt;/strong&gt;. Attacks via Bluetooth, vulnerabilities in non-covered system components, or physical vectors remain outside its perimeter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“No documented compromises” doesn’t mean “impossible to compromise”.&lt;/strong&gt; The nuance is important. We don’t know what we don’t know. A state actor with a functional Lockdown Mode bypass wouldn’t have any incentive to use it on targets that don’t justify exposing this capability.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It’s not retroactive&lt;/strong&gt;. If your iPhone was already compromised before activating Lockdown Mode, it won’t disinfect anything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coruna and patched iOS versions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The vulnerabilities exploited by Coruna target iOS 13 to iOS 17.2.1, versions released until December 2023. Apple patched most of these flaws in later iOS 17 versions and in iOS 18.&lt;/p&gt;
&lt;p&gt;If you’re using iOS 18.x and keeping it up to date, Coruna isn’t directly relevant to you, even without Lockdown Mode. Regularly updating iOS is the first line of defense.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For a complete overview of security and privacy settings to configure on macOS, see &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement&quot;&gt;macOS Privacy: the settings to change immediately&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;In Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Coruna is proof that no one is safe. A tool designed for state targets ended up on crypto phishing sites targeting individuals. The proliferation of digital weapons always follows the same path: from targeted to mass.&lt;/p&gt;
&lt;p&gt;And it’s an entire ecosystem that’s threatened. It takes Apple years to identify and patch a vulnerability. Coruna exploited 23 simultaneously, spread over four years of iOS versions. By the time patches arrive, the damage is done.&lt;/p&gt;
&lt;p&gt;Better to prevent than cure. Lockdown Mode doesn’t fix vulnerabilities, it removes the surfaces they rely on.&lt;/p&gt;
&lt;p&gt;Activate Lockdown Mode. Keep iOS up to date. Together, they’re the best defense available today.&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>securite</category><category>ios</category><category>iphone</category><category>apple</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature.png" length="0" type="image/png"/></item><item><title>The cloud is someone else&apos;s computer, so what?</title><link>https://macsouverain.com/en/cloud-ordinateur-quelquun-dautre/</link><guid isPermaLink="true">https://macsouverain.com/en/cloud-ordinateur-quelquun-dautre/</guid><description>iCloud, Google Drive, Dropbox: Practical, Not Sovereign. What It Means, and How to Take Back Control of Your Data.</description><pubDate>Sat, 04 Apr 2026 13:01:48 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You’ve got files on iCloud, or Google Drive, or Dropbox. It syncs everywhere, it works, you don’t think about it.&lt;/p&gt;
&lt;p&gt;Then you hear this phrase: “The cloud is someone else’s computer.” And you wonder vaguely if you should worry.&lt;/p&gt;
&lt;p&gt;The honest answer: it depends. On what you store there, on who that “someone else” is, and on what you’ve agreed to without necessarily realizing it. This article walks through the mechanism, without sensationalizing but without minimizing, so you can make an informed choice, rather than risk making no choice at all.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What “cloud” really means&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“Cloud” is a marketing term. What it actually means is simple: your files aren’t on your hard drive. They’re on a server, in a datacenter, owned by a company. When you open a document on iCloud from your Mac, your Mac downloads a copy from Apple’s servers, or from cloud infrastructure owned by American companies in Europe if you’re lucky.&lt;/p&gt;
&lt;p&gt;The phrase “someone else’s computer” comes from the free software world, used as a dig against centralization. It’s a bit simplistic, but it has the merit of pointing to something real: you’re using a computing resource that you don’t own, that you don’t control, and whose terms of use can change without your consent.&lt;/p&gt;
&lt;p&gt;That’s not a reason to stop. It’s a reason to understand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Three things you’re giving away without thinking&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you put your files on a third-party cloud service, you’re potentially giving away three things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Access.&lt;/strong&gt; The company can read your files if they want to, or if someone asks them to. With iCloud without Advanced Data Protection turned on, Apple holds the encryption keys. They can therefore access your photos, your documents, your iPhone backups, and hand them over to a government on request. Apple publishes a transparency report: in their transparency report, Apple indicates that they’ve provided data for the majority of American judicial requests.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Continuity.&lt;/strong&gt; The company can cut off your access at any time. Violation of TOS (real or algorithmically assumed), bankruptcy, merger-acquisition, unilateral decision. Your files are with them, not with you. The day they shut the door, you pick up what they’re willing to let you take.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jurisdiction.&lt;/strong&gt; The laws of the country where your files are stored apply, whether you like them or not. iCloud, Google Drive, Dropbox, OneDrive: all under American jurisdiction, subject to the CLOUD Act of 2018. This law allows the American government to demand access to data stored anywhere in the world if the company is American, without going through the usual international judicial assistance procedures. Even your files in a French datacenter.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Mechanism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How encryption changes (or doesn’t change) the game&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The standard response from cloud providers when you raise this issue: “Your data is encrypted.” That’s true. What matters is who holds the keys.&lt;/p&gt;
&lt;p&gt;There are two fundamentally different models.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server-side encryption (the most common).&lt;/strong&gt; Your files are encrypted on the company’s servers, with keys that the company manages. That’s better than nothing, it protects against pirates trying to break into datacenters, but it doesn’t protect against the company itself, or a judicial request. iCloud without Advanced Data Protection works this way for most data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End-to-end encryption, E2EE.&lt;/strong&gt; The encryption keys are generated on your device, not on the servers. The company stores a file that they can’t read, even if they wanted to, even under judicial order. That’s what &lt;a href=&quot;https://proton.me/drive&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton Drive&lt;/a&gt; does by design. That’s what iCloud does for certain categories of data when you turn on Advanced Data Protection.&lt;/p&gt;
&lt;p&gt;The practical nuance: E2EE comes at a cost. If you lose your password AND your recovery key, your data is inaccessible forever. The company can’t help you, because they never had the keys.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What “European jurisdiction” really changes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You often hear “My data is in Europe, so I’m protected by the GDPR.” That’s partially true, and partially false.&lt;/p&gt;
&lt;p&gt;The GDPR regulates how your data is collected and used within the European Union. It imposes strict rules on companies operating on the European territory. That’s not nothing.&lt;/p&gt;
&lt;p&gt;But it doesn’t protect from everything. If the company is American, the CLOUD Act takes precedence in practice. In 2023, the European Commission adopted the Data Privacy Framework (DPF), a new EU-US transfer agreement meant to replace the Privacy Shield invalidated by Schrems II. It’s already being challenged in European courts and its future remains uncertain. In the meantime, if the data is on European servers owned by an American subsidiary, American authorities can theoretically access it anyway.&lt;/p&gt;
&lt;p&gt;Jurisdiction matters. But “servers in Europe” isn’t the same as “company under European law with headquarters outside Five Eyes”. &lt;a href=&quot;https://www.infomaniak.com/fr/cloud-souverain&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Infomaniak&lt;/a&gt;, for example, is a Swiss company, with its servers in Switzerland, under Swiss law. That’s not an absolute shield, but it’s a significantly more protective jurisdiction than the US, and outside the CLOUD Act.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The three levels of trust in practice&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To see clearly, here’s how to read a cloud service according to this criterion:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 1, You trust the company AND its jurisdiction.&lt;/strong&gt; You’re using iCloud with Advanced Data Protection turned on: E2EE for most data, except iCloud Mail, Contacts, and Calendar which remain excluded (IMAP/CalDAV/CardDAV interoperability constraints). You’re staying with Apple, under American law. Good for everyday use, insufficient for sensitive data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 2, You trust the encryption, not the company.&lt;/strong&gt; You’re using an E2EE service like Proton Drive or &lt;a href=&quot;https://cryptomator.org/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Cryptomator&lt;/a&gt; on top of any cloud: even if the company receives an order, they hand over unreadable files. The weak link here is the code itself. If the encryption is badly implemented, or if there’s a flaw in the application, the E2EE promise doesn’t hold. That’s why two things matter: that the code is &lt;strong&gt;open source&lt;/strong&gt; (anyone can verify what’s running), and that it’s been &lt;strong&gt;audited by a third party&lt;/strong&gt; (Proton Drive has been audited by Securitum, code source published on GitHub).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 3, You control the infrastructure.&lt;/strong&gt; You self-host your own storage (Nextcloud on VPS or NAS, or self-host at home on a server). Zero third-party company in the loop. The weak link here is your own security: a misconfigured Nextcloud or a NAS exposed on the internet is worse than iCloud.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/schema-acces-donnees-06-v3.png&quot; loading=&quot;lazy&quot; alt=&quot;Infographic cloud GAFAM vs privacy vs sovereign E2EE&quot;&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;What It Actually Changes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For the individual who wants to do better without reinventing the wheel&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re using iCloud today, the first thing to do doesn’t cost anything: &lt;strong&gt;turn on Advanced Data Protection&lt;/strong&gt; (Settings → your name → iCloud → Advanced Data Protection). That switches most of your iCloud data to E2EE (exception: iCloud Mail, Contacts, and Calendar, which remain outside E2EE for interoperability reasons). You keep the Apple ecosystem, you get end-to-end encryption on the rest. The only real downside: if you lose access to your account without a recovery key, Apple can’t help you. You note your key somewhere safe.&lt;/p&gt;
&lt;p&gt;If you want to go further without leaving the cloud, &lt;a href=&quot;https://proton.me/drive&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton Drive&lt;/a&gt; is the most accessible E2EE alternative: native Mac app, iOS app, web interface, E2EE by default, audited code. Swiss jurisdiction. It’s not the cheapest option, but it’s the best balance between convenience and sovereignty available without technical expertise.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Coming soon: Proton Drive vs iCloud vs Infomaniak, where to store your files?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;For the freelancer with client data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The question becomes business, not just personal. Client data in an American cloud under CLOUD Act jurisdiction is a legal and contractual exposure. That’s not hypothetical, it’s the nature of the applicable law.&lt;/p&gt;
&lt;p&gt;The question also becomes legal. Since the Schrems II ruling (2020), storing European clients’ personal data on an American cloud without additional protective measures poses a real GDPR compliance problem. Fines are still rare, but the legal risk exists, and a client could raise it. In Europe, the GDPR applies to any company processing personal data. “iCloud is convenient” isn’t an acceptable response to a client or a supervisory authority.&lt;/p&gt;
&lt;p&gt;Pragmatic options: Proton Drive (E2EE) or Infomaniak kDrive, both under Swiss jurisdiction and GDPR-compliant for European companies’ data. Or self-hosted Nextcloud if you have the technical expertise. Article #13 details the differences in depth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What it doesn’t protect against&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cloud sovereignty doesn’t protect against everything. An end-to-end encrypted file in Proton Drive is unreadable to Proton, but if you open it on a compromised Mac, the decrypted file is there, in plaintext, at the mercy of whatever’s running on your machine. Cloud security doesn’t compensate for poor endpoint security.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Why your email client is a sieve, and how to plug it&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And a poorly configured self-hosted Nextcloud exposes more than Dropbox. Full control is also full responsibility.&lt;/p&gt;
&lt;p&gt;The real cost of sovereignty is also the price. Proton Drive and Infomaniak kDrive aren’t free. iCloud’s 50GB for €0.99/month is unbeatable. You pay for sovereignty, like you pay for Proton Mail E2EE instead of Gmail. It’s a conscious choice, not an obvious one.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Myths&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But Apple’s clouds are in Europe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apple has datacenters in Europe. That doesn’t change that the parent company is in Cupertino, that the master keys for encryption (outside Advanced Data Protection) are managed by Apple Inc., and that the CLOUD Act applies to American companies regardless of the physical location of the servers.&lt;/p&gt;
&lt;p&gt;“Servers in Europe” is a useful marketing argument for local GDPR compliance. Not an argument for sovereignty against a federal American injunction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sovereign providers are less practical&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That was true in 2018. Proton Drive in 2026 has a native Mac app, automatic folder synchronization, file sharing, and a good web interface. Infomaniak kDrive has a proper macOS integration. It’s not as seamless as iCloud Finder, but the gap has significantly narrowed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I’ve got nothing to hide&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The argument is flawed, not because you have nothing to hide, but because it rests on a incorrect assumption: that the problem is what you’re doing, not what others might do with your data.&lt;/p&gt;
&lt;p&gt;Your accounting documents in a cloud readable by third parties isn’t a problem if you’ve done nothing wrong. It’s a problem if your data is used to target you commercially, if it leaks during a breach, exposing client data, or if it’s handed over to a government in a way you hadn’t anticipated.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;In Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The cloud is indeed someone else’s computer. The question isn’t “should we use it”, but “do we understand what we’re agreeing to by using it”.&lt;/p&gt;
&lt;p&gt;Three parameters to look at for any cloud service: who holds the encryption keys (you or the company), what jurisdiction applies (not just the location of the servers), and what happens if the company disappears or cuts off your access.&lt;/p&gt;
&lt;p&gt;In practical terms: if you’re using iCloud, start by turning on Advanced Data Protection. If you have professional data, look at Proton Drive or Infomaniak kDrive. If you want full control, self-hosted Nextcloud is the next step, but it requires more technical expertise and maintenance.&lt;/p&gt;
&lt;p&gt;The detailed comparison of options, with prices, use cases, and real limits of each, is in article #13.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Coming soon: Proton Drive vs iCloud vs Infomaniak, where to store your files?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>cloud</category><category>privacy</category><category>stockage</category><category>souverainete</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-cloud-nb.png" length="0" type="image/png"/></item><item><title>Password Manager for Mac: Apple, Bitwarden, KeePassXC or 1Password</title><link>https://macsouverain.com/en/gestionnaire-mots-de-passe-mac-comparatif/</link><guid isPermaLink="true">https://macsouverain.com/en/gestionnaire-mots-de-passe-mac-comparatif/</guid><description>Apple, Bitwarden, KeePassXC, 1Password: Four radically different approaches. Which one fits your profile and budget?</description><pubDate>Wed, 01 Apr 2026 07:58:35 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Four options, four radically different philosophies.&lt;/p&gt;
&lt;p&gt;The Passwords app (Apple) is free, integrated, and already there. KeePassXC is a local vault, no server, no subscription, no company at the end of the chain. Bitwarden is open source with a free version and self-hostable. 1Password is paid, cross-platform, but proprietary cloud under 5 Eyes jurisdiction.&lt;/p&gt;
&lt;p&gt;The right choice depends on one thing: your usage profile and what you’re willing to entrust to whom.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;The privacy settings to change on macOS in 15 minutes&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-criteria-that-matter&quot;&gt;The criteria that matter&lt;/h2&gt;
&lt;p&gt;We keep the useful criteria, not the ones that look good in a table:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security architecture:&lt;/strong&gt; Who can technically access your data?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy and jurisdiction:&lt;/strong&gt; Under what law are your data submitted?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portability:&lt;/strong&gt; Does it work on Android, Windows, Linux?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advanced features:&lt;/strong&gt; Travel Mode, team sharing, integrated 2FA&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hosting:&lt;/strong&gt; Third-party cloud or your own&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free, subscription, or one-time purchase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent audits:&lt;/strong&gt; Have the claims been verified?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not evaluated: themes, number of widgets, and features no one uses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;apple-passwords-app&quot;&gt;Apple Passwords app&lt;/h2&gt;
&lt;h3 id=&quot;philosophy&quot;&gt;Philosophy&lt;/h3&gt;
&lt;p&gt;Apple built its manager around security and ease of use: everything happens on the devices you own, encrypted with your own keys. iCloud sync, passkeys for 2FA, unlock with Touch ID or Face ID, everything is designed to make your life easier.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/03/step-01-passwords-app.png&quot; loading=&quot;lazy&quot; alt=&quot;Apple Passwords app, main view with sidebar, list of accounts, and security detail&quot;&gt;
&lt;h3 id=&quot;strengths&quot;&gt;Strengths&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Free and integrated.&lt;/strong&gt; The Passwords app is available on macOS Sequoia (15.x) and Tahoe (26.x), iOS 18 and iPadOS 18. It manages passwords, credentials, 2FA codes (TOTP), passkeys, Wi-Fi passwords, and secure notes. Nothing to install, nothing to configure, nothing to pay.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;End-to-end encryption.&lt;/strong&gt; With &lt;strong&gt;Advanced Data Protection for iCloud&lt;/strong&gt; enabled, the data in the Passwords app is encrypted with locally generated keys. Apple cannot read it, even if legally compelled. Without this option, some metadata remains accessible to Apple.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/apple-silicon-et-securite-ce-que-secure-enclave-change-vraiment/&quot;&gt;Apple Silicon and Secure Enclave: What it really changes&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Passkeys.&lt;/strong&gt; The native integration of passkeys is probably the strongest point in 2026. Passkeys replace passwords with a pair of cryptographic keys: nothing is ever sent to the server. On Mac and iPhone, it works without friction with Face ID or Touch ID.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Family sharing.&lt;/strong&gt; The app allows creating shared vaults for the iCloud family: personal account credentials on one side, common access (Netflix, Wi-Fi) in the shared vault.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compromised password detection.&lt;/strong&gt; Automatic verification via a proprietary Apple system using the k-anonymity protocol: no passwords are sent as is. Apple does not communicate the leak bases used, but the mechanism checks your credentials against known compromises without exposing your data.&lt;/p&gt;
&lt;h3 id=&quot;honest-limitations&quot;&gt;Honest limitations&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Apple-only, almost.&lt;/strong&gt; Mac, iPhone, iPad, Apple Watch. On Windows, there is an iCloud Passwords extension for Chrome and Edge, but it’s a crutch. On Android? Nothing. If your setup goes beyond the Apple ecosystem, the Passwords app becomes a real hindrance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;American jurisdiction.&lt;/strong&gt; Apple is subject to the CLOUD Act, National Security Letters, and American surveillance. Advanced Data Protection for iCloud reinforces technical protection but doesn’t change the jurisdiction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Limited public audits.&lt;/strong&gt; Apple publishes white papers but no independent public audit on the Passwords app, unlike 1Password or Bitwarden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who it’s for:&lt;/strong&gt; 100% Apple users, individuals and professionals alike, families.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;keepassxc&quot;&gt;&lt;a href=&quot;https://keepassxc.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;KeePassXC&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;philosophy-1&quot;&gt;Philosophy&lt;/h3&gt;
&lt;p&gt;KeePassXC is in a category of its own. It’s not a cloud service, no subscription, no company with servers. It’s desktop software that encrypts a file on your disk. To understand KeePassXC, you need to understand its logic: your passwords are in a file (&lt;code&gt;.kdbx&lt;/code&gt;), encrypted, that you store wherever you want. That file is your vault. KeePassXC is the key that opens it.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/03/step-04-keepassxc-database.png&quot; loading=&quot;lazy&quot; alt=&quot;KeePassXC, main view with groups, list of entries, and password detail&quot;&gt;
&lt;h3 id=&quot;how-it-works-concretely&quot;&gt;How it works concretely&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;On Mac&lt;/strong&gt;, you install KeePassXC (a &lt;code&gt;.dmg&lt;/code&gt;, like any other app). You create a database, a &lt;code&gt;.kdbx&lt;/code&gt; file protected by your master password. This file contains all your credentials, encrypted. You store it in a synchronized folder (Nextcloud, NAS, or even iCloud if you want), and KeePassXC opens it on demand. A browser extension (KeePassXC-Browser) automatically fills in your credentials on websites. Touch ID works for quick unlocking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On iPhone&lt;/strong&gt;, you install &lt;strong&gt;&lt;a href=&quot;https://keepassium.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;KeePassium&lt;/a&gt;&lt;/strong&gt;, an open-source (GPLv3) app developed in Luxembourg, zero data collection. You point it to your &lt;code&gt;.kdbx&lt;/code&gt; file on Nextcloud via WebDAV (your Nextcloud address + your credentials, 10 minutes of setup). KeePassium downloads, caches locally, and synchronizes every time it’s opened. Touch ID and Face ID work for unlocking. You enable auto-fill in iOS settings, and that’s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Synchronization is bidirectional.&lt;/strong&gt; You add a password on iPhone? KeePassium writes to the &lt;code&gt;.kdbx&lt;/code&gt; file on Nextcloud. You open KeePassXC on Mac? It detects the change and reloads the database. The same goes the other way around. The file on Nextcloud serves as the synchronization point, always encrypted, whether at rest or in transit.&lt;/p&gt;
&lt;h3 id=&quot;strengths-1&quot;&gt;Strengths&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;No third-party server, no company, no jurisdiction.&lt;/strong&gt; The &lt;code&gt;.kdbx&lt;/code&gt; file is yours: on your Mac, your Nextcloud, your NAS. No one can access it without your master password because there’s no intermediary in the loop. It’s you who decides where your passwords live.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open source and certified.&lt;/strong&gt; KeePassXC is under the GPL license, the code is public. The application has undergone an independent audit in 2023 (Zaur Molotnikov, public report), with positive conclusions on cryptographic protection. Even better: KeePassXC 2.7.9 has obtained the &lt;strong&gt;CSPN security visa from ANSSI&lt;/strong&gt;, recognized in France and Germany (certification on v2.7.9 / Windows 10; the cryptographic architecture is common to all platforms). That’s an official certification, not an audit commissioned by the editor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;100% free, no limits.&lt;/strong&gt; KeePassXC isn’t freemium: there’s no premium version, no subscription, no feature behind a paywall. The project lives on voluntary contributions and donations. You install, you use, that’s it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;On iOS, it’s KeePassium&lt;/strong&gt; that takes over. The basic version is free; the premium version (multi-database, automatic unlock) is optional.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Complete features.&lt;/strong&gt; KeePassXC manages passwords, passkeys (since version 2.7.7), 2FA codes (TOTP), SSH agent integration (agent SSH for your keys), auto-fill via browser extension, support for physical security keys (YubiKey), and compromised password verification via &lt;strong&gt;Have I Been Pwned&lt;/strong&gt; (integrated in the app, k-anonymity request without exposing your data).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cross-platform desktop.&lt;/strong&gt; Mac, Windows, Linux. The interface is consistent across the three platforms.&lt;/p&gt;
&lt;h3 id=&quot;honest-limitations-1&quot;&gt;Honest limitations&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;No Safari extension.&lt;/strong&gt; Passkeys and auto-fill in KeePassXC work via a browser extension, available for Firefox, Chrome, and Edge. Safari isn’t supported. On Safari, you have to copy-paste from the app (Cmd+B for the credential, Cmd+C for the password, pasteboard automatically cleared). That’s the main limitation for a Mac user.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Austere interface.&lt;/strong&gt; KeePassXC is functional, not pretty. The interface has been modernized over the years but remains less intuitive than 1Password or Bitwarden. It’s not a deal-breaker, but there’s a learning curve.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No native iOS app.&lt;/strong&gt; On iPhone, you go through KeePassium, a third-party app, albeit sovereign (open-source, Luxembourg), but it’s an additional software to know. The experience is very good once configured, but it’s not as seamless as Bitwarden or 1Password where everything is integrated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Natural Travel Mode.&lt;/strong&gt; KeePassXC doesn’t have a “Travel Mode” button, but the file architecture does better: you have multiple &lt;code&gt;.kdbx&lt;/code&gt; files, you choose which ones are on which device. Before a trip, you don’t synchronize the sensitive file to your iPhone, that’s all. And if you use a key file in addition to the master password, you can revoke a device instantly: remove the key file from the device, and even if someone has the &lt;code&gt;.kdbx&lt;/code&gt; file, they can’t do anything. That’s the granularity that cloud solutions can’t offer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who it’s for:&lt;/strong&gt; Users with a slightly more technical profile, who don’t want any third-party server in the loop, integration with SSH or YubiKey.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;bitwarden&quot;&gt;&lt;a href=&quot;https://bitwarden.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Bitwarden&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;philosophy-2&quot;&gt;Philosophy&lt;/h3&gt;
&lt;p&gt;Bitwarden is the open-source answer to the problem of cloud password managers. The code is public, auditable by anyone, the business model is honest, and you can self-host if you don’t want to depend on their servers.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/03/step-05-bitwarden-vault.png&quot; loading=&quot;lazy&quot; alt=&quot;Bitwarden desktop, main view with sidebar, list of entries, and credential detail&quot;&gt;
&lt;h3 id=&quot;strengths-2&quot;&gt;Strengths&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Open source.&lt;/strong&gt; The code is on GitHub, under the GPL license. Audited annually by third parties independently (Cure53 in 2018, Fracture Labs in 2024, ETH Zurich in 2025 for cryptography), public reports on bitwarden.com/compliance. That’s maximum transparency for a security tool.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Functional free version.&lt;/strong&gt; Unlike 1Password (100% paid), Bitwarden has a real free version: unlimited password storage, cross-platform synchronization, sharing with one other person. The Premium version (19.80 $/year) adds 2FA codes (TOTP), security reports (detection of leaks via &lt;strong&gt;Have I Been Pwned&lt;/strong&gt;, weak or reused passwords), and encrypted attachments. Note that KeePassXC offers most of these Premium features (2FA, HIBP verification) for free, but without the integrated cloud sync.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Passkeys and 2FA.&lt;/strong&gt; Like Apple and KeePassXC, Bitwarden natively manages passkeys. 2FA codes (TOTP) are reserved for the Premium plan (19.80 $/year).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Physical security keys and storage.&lt;/strong&gt; Since the January 2026 increase, Premium has been beefed up to justify the price. You can now associate up to 10 physical keys (YubiKey, Nitrokey) with your account, up from 2 previously. Encrypted attachment storage goes up to 5 GB. A phishing blocker is also announced, not yet deployed at the time this article is published. For comparison: KeePassXC also supports YubiKey natively, without a subscription, but without the cloud behind it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cross-platform complete.&lt;/strong&gt; Mac, iPhone, iPad, Windows, Android, Linux, extensions for all browsers. Wider than 1Password on Linux support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-hosting.&lt;/strong&gt; You can run your own Bitwarden server on your NAS or your VPS. In practice, most people self-hosting use &lt;strong&gt;Vaultwarden&lt;/strong&gt;: it’s a community rewrite of the Bitwarden server in Rust (a language focused on security and performance, Apple is even migrating some macOS components to Rust). Vaultwarden is ultra-lightweight, runs on a Raspberry Pi, and remains 100% compatible with the official Bitwarden apps. Your passwords stay on your infrastructure, under your jurisdiction, at your security level. For MacSouverain’s audience, that’s the most sovereign option for a cloud password manager.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;American jurisdiction manageable.&lt;/strong&gt; Bitwarden is based in the US, which is unfavorable in itself. But with self-hosting, the question of the company’s jurisdiction becomes secondary because your data isn’t on their servers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;What digital sovereignty means in practice&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;honest-limitations-2&quot;&gt;Honest limitations&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Less polished interface than 1Password.&lt;/strong&gt; Bitwarden is functionally complete, but the user experience is less polished. It’s not a deal-breaker, but it’s noticeable in daily use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-hosting: installation is the barrier.&lt;/strong&gt; Hosting Vaultwarden on a VPS or NAS requires initial configuration (Docker, reverse proxy). Once in place, maintenance is minimal: an occasional update, a backup of the database, and it runs on its own. We’ll dive deeper into setting up a complete sovereign infrastructure in our future guides.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integrated 2FA (TOTP) only in the paid version.&lt;/strong&gt; The free version doesn’t manage 2FA codes directly in Bitwarden. You need to upgrade to Premium (19.80 $/year) or use a separate 2FA app.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No Travel Mode.&lt;/strong&gt; Bitwarden doesn’t have an equivalent to 1Password’s Travel Mode.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who it’s for:&lt;/strong&gt; Users who want open-source and/or self-hosting, tight budgets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free (basic) or 19.80 $/year for Premium (price increase in January 2026, from 10 $/year, with 5 GB storage and support for 10 physical keys in return).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1password&quot;&gt;&lt;a href=&quot;https://1password.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;1Password&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;philosophy-3&quot;&gt;Philosophy&lt;/h3&gt;
&lt;p&gt;1Password solves a specific problem: having a reliable, auditable, cross-platform password manager with advanced features for professional use. Its architecture relies on two factors: your master password and a &lt;strong&gt;secret key&lt;/strong&gt;, a 128-bit key generated locally and never sent to their servers. Even if their servers were compromised, your data would be unexploitable without this key.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/1pw-overview.png&quot; loading=&quot;lazy&quot; alt=&quot;1Password interface, Personal, Development, and Work vaults in the sidebar&quot;&gt;
&lt;h3 id=&quot;strengths-3&quot;&gt;Strengths&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Secret key: a structural difference.&lt;/strong&gt; The Passwords app mainly relies on your iCloud master password for recovery. 1Password adds a cryptographic layer that can’t be brute-forced from their servers. That’s not marketing, it’s engineering.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cross-platform complete.&lt;/strong&gt; Mac, iPhone, iPad, Windows, Android, Linux, extensions for Chrome, Firefox, Safari, Edge. If someone in your entourage has an Android or a Windows PC, 1Password works everywhere without friction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Travel Mode.&lt;/strong&gt; If you’re traveling to a country with border controls and you don’t want an inspection to access certain vaults, mark them as “non-travel”, and they’ll disappear from the app until you reactivate them on a trusted device. It doesn’t protect against an extorted password, but it protects against a physical search.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Watchtower.&lt;/strong&gt; Continuous monitoring via the &lt;strong&gt;Have I Been Pwned&lt;/strong&gt; database (14 billion compromised accounts): passwords present in leaks, weak or reused passwords, sites without 2FA enabled, expired SSL certificates, upcoming expiration dates. That’s the most comprehensive security audit of the four. In comparison, the Passwords app in iCloud detects leaks, weak and reused passwords, functional but basic. Bitwarden offers similar reports (Vault Health Reports) but requires manual generation and has dark web monitoring reserved for the paid plan. KeePassXC only checks strength and duplicates, no built-in leak detection.&lt;/p&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/04/watchtower-framed.png&quot; loading=&quot;lazy&quot; alt=&quot;1Password Watchtower, security dashboard with score, compromised passwords, reused and weak ones&quot;&gt;
&lt;p&gt;&lt;strong&gt;Independent audits.&lt;/strong&gt; Audited regularly by Cure53 between 2020 and 2022 (public reports). Since 2025, annual pentest reports are accessible via the Trust Center of 1Password (access on request). That’s an acceptable level of transparency for a paid security tool.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Team plans.&lt;/strong&gt; Access management, security policies, activity reports. For an independent contractor managing client accesses or a small team, that’s a real difference.&lt;/p&gt;
&lt;h3 id=&quot;honest-limitations-3&quot;&gt;Honest limitations&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Proprietary and paid.&lt;/strong&gt; 1Password isn’t open-source. You trust their audits, not verifiable code. The individual plan costs 2.74 €/month billed annually (promotional rate for new customers in the first year). Not expensive for a security tool, but not nothing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Canada, member of the 5 Eyes.&lt;/strong&gt; AgileBits is based in Toronto. Canada is a member of the 5 Eyes intelligence alliance, along with the US, UK, Australia, and New Zealand. The zero-knowledge architecture limits the risk, but the jurisdiction is still unfavorable compared to Switzerland or a self-hosted solution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No free version.&lt;/strong&gt; 14-day trial, then paid.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who it’s for:&lt;/strong&gt; Cross-platform users, professionals, frequent travelers, small teams.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; 2.74 €/month individual, 4.31 €/month family plan for 5 users (billed annually, promotional rate for new customers in the first year).&lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h2 id=&quot;macks-recommendation&quot;&gt;Mack’s recommendation&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;You’re 100% in the Apple ecosystem.&lt;/strong&gt; The Passwords app does the job, whether you’re an individual or a professional. It’s free, encrypted, has passkeys, family sharing, and especially: Touch ID and Face ID unlock your accounts without friction. Enable Advanced Data Protection for iCloud and you’re set.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You want your passwords to be in maximum sovereignty mode.&lt;/strong&gt; KeePassXC. Locally encrypted file, synchronization on your Nextcloud, no company in the loop. On iPhone, KeePassium (open-source, Luxembourg) takes over with Touch ID and Face ID. That’s maximum sovereignty on this topic, and the most elegant Travel Mode: you physically control what’s on each device. ANSSI certified.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You want open-source with the self-hosting option, or you’re on a tight budget.&lt;/strong&gt; Bitwarden. Mostly free, Premium at 19.80 $/year, and Vaultwarden on your NAS if you want full control. Open-source, audited, sovereign if you self-host it. Touch ID and Face ID supported everywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You have devices outside the Apple ecosystem and you need Travel Mode or team management.&lt;/strong&gt; 1Password does the job technically, and it does it well. The zero-knowledge architecture with the secret key is solid, Watchtower is the best security audit on the market, and Travel Mode is unique. But it’s a proprietary cloud under Canadian 5 Eyes jurisdiction. That’s why MacSouverain can’t recommend it as a privacy solution, despite its undeniable technical qualities.&lt;/p&gt;
&lt;p&gt;Transparency: I use the built-in password manager in iCloud daily, it’s my main solution. Bitwarden is the only one here that MacSouverain will have an affiliate link for in the future, and I genuinely recommend it, especially when self-hosted with Vaultwarden.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Why your email client is a sieve and how to integrate a password manager into a complete security posture&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>mac</category><category>comparatif</category><category>gestionnaire-mots-de-passe</category><category>1password</category><category>bitwarden</category><category>keepassxc</category><category>trousseau</category><category>comparatifs</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-mdp-nb.png" length="0" type="image/png"/></item><item><title>Why your mail client is a sieve, and how to fix it</title><link>https://macsouverain.com/en/securite-email-client-mail/</link><guid isPermaLink="true">https://macsouverain.com/en/securite-email-client-mail/</guid><description>Spy Pixels, HTML Exploits, Outlook Zero-Days. Your Email&apos;s Attack Surface is Way Bigger Than &quot;Gmail Reads You&quot;. Comprehensive Guide to Fix It.</description><pubDate>Wed, 25 Mar 2026 14:05:23 GMT</pubDate><content:encoded>&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UPDATE JULY 2026.&lt;/strong&gt; The Hide My Email flaw is compromising Apple aliases (public disclosure on July 1st, still not fixed). Another argument for sovereign aliases: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;see the email comparison update&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UPDATE MAY 2026.&lt;/strong&gt; The mainstream evolution of email encryption: Proton Mail now offers an option for post-quantum encryption, on OpenPGP standard, included for free. The first mail to do so on an open standard. &lt;a href=&quot;https://macsouverain.com/en/radar-proton-mail-post-quantum-mai-2026/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The debate on email security keeps going around one axis: “Gmail reads your emails for ads.” That’s true, problematic, and covered everywhere, including the &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;Apple Mail vs Gmail vs Proton Mail comparison&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But even if you migrate to Proton, your mailbox remains an important attack vector. An email is not an inert text file. It’s an HTML document interpreted by a rendering engine of millions of lines of code (WebKit for Apple Mail), loading remote resources, executing CSS, and carrying attachments you’ll open in other software just as complex.&lt;/p&gt;
&lt;p&gt;This tutorial covers the six real attack vectors and gives you the exact settings for each. You’ll need a Mac with Apple Mail, 15 minutes, and optionally a Proton Mail account if you want maximum protection. By the end, your email attack surface will be drastically reduced.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;before-you-start&quot;&gt;Before you start&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What you’ll need:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Mac on macOS Tahoe (26.x), Sequoia (15.x), or Sonoma (14.x)&lt;/li&gt;
&lt;li&gt;Apple Mail configured (with or without Proton Bridge)&lt;/li&gt;
&lt;li&gt;15 minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What will change:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pixel spies won’t track you&lt;/li&gt;
&lt;li&gt;HTML/CSS emails can’t fingerprinter you&lt;/li&gt;
&lt;li&gt;Attachments won’t open automatically&lt;/li&gt;
&lt;li&gt;You’ll know how to verify if an email is authentic (SPF/DKIM/DMARC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What won’t change:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Who reads your emails on the server side (that’s the provider’s choice, see the &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;email comparison&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Well-targeted phishing that exploits human trust&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;steps&quot;&gt;Steps&lt;/h2&gt;
&lt;h3 id=&quot;step-1-block-pixel-spies&quot;&gt;Step 1: Block pixel spies&lt;/h3&gt;
&lt;p&gt;A tracking pixel is a 1x1 pixel image, transparent, hosted on a remote server, embedded in the HTML body of the email. When your mail client loads the email, it loads the image, sending an HTTP request to the server. This request reveals your IP, mail client, timestamp, and a unique identifier linked to your email address.&lt;/p&gt;
&lt;p&gt;In one tiny image, the sender knows you opened their email, where you are, what OS you’re on, when, and how many times. Everyone uses them: newsletters, B2B sales (Mailchimp, HubSpot, Outreach), e-commerce services. It’s legal, almost invisible, and very common.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Until April 14, 2026, at least.&lt;/strong&gt; The CNIL adopted its recommendation on email tracking pixels on that day. We’ll come back to that later in a dedicated chapter. For now, keep in mind that your “Block all remote content” setting is now aligned with the regulator’s doctrine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Path:&lt;/strong&gt; Mail &gt; Preferences &gt; Privacy&lt;/p&gt;
&lt;p&gt;Two levels of protection, from least restrictive to most:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 1, “Protect Mail activity”&lt;/strong&gt;: Apple loads images remotely on your behalf via its own servers (proxy). The sender sees Apple’s IP, not yours. Pixel spies are neutralized, but images still load. It’s the minimum.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 2, “Block all remote content”&lt;/strong&gt;: no remote resources load at all. No images hosted on a server, no pixels, no external CSS. The email displays in text and embedded images (CID) only, with no network calls. A “Load remote content” button appears at the top of each email if you want to load on a case-by-case basis.&lt;/p&gt;
&lt;p&gt;Level 2 makes Level 1 redundant (if nothing loads, nothing to proxy). But enable both: if you click “Load remote content” on an email, Level 1 takes over and proxies images via Apple instead of loading them directly. Both belts and suspenders.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; both options checked.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;
&lt;img src=&quot;https://macsouverain.com/content/images/2026/07/step-01-mail-confidentialite.png&quot; class=&quot;kg-image&quot; loading=&quot;lazy&quot; alt=&quot;step-01-mail-confidentialite&quot;&gt;
&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;On Proton Mail: active by default, nothing to do. On Proton Mail + Bridge + Apple Mail: the protection operates on the Proton server before even reaching Apple Mail. Still enable the Apple Mail setting above, redundancy is a good practice.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-2-reduce-htmlcss-surface&quot;&gt;Step 2: Reduce HTML/CSS surface&lt;/h3&gt;
&lt;p&gt;An email HTML is a web page. And a web page has an execution engine with measurable characteristics that can identify you without cookies and without JavaScript, purely through CSS and HTML.&lt;/p&gt;
&lt;p&gt;Media queries can load different resources based on your dark mode, screen size, resolution. Advanced techniques can extract content via CSS alone. Unicode homoglyphs can make phishing URLs visually identical to the original.&lt;/p&gt;
&lt;p&gt;Apple Mail no longer offers a global “plain text” toggle on macOS Ventura+. Protection comes from two approaches:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 1, block remote content (already done in Step 1)&lt;/strong&gt;: with “Block all remote content” enabled, CSS rendering becomes inert. No external resources load.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 2, switch to plain text on a specific email:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the email in question&lt;/li&gt;
&lt;li&gt;Menu &lt;strong&gt;Presentation &gt; Message &gt; Alternative plain text&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;The email reverts to plain text, no CSS executes&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; emails displayed without rich formatting when remote content is blocked. Plain text option available on a case-by-case basis.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;With Proton Mail&lt;/strong&gt; (web or desktop app), you can enable plain text composition by default for all emails (Settings &gt; Appearance &gt; Compose in plain text). Image and attachment blocking are active by default. What you manually configure on Apple Mail is already set on Proton.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-3-attachments-the-habits-that-matter&quot;&gt;Step 3: Attachments, the habits that matter&lt;/h3&gt;
&lt;p&gt;Attachments are the most documented malware vector of the past decade. Office VBA macros, PDFs with embedded JavaScript (Adobe Reader executes it by default), TNEF files (winmail.dat) from Outlook.&lt;/p&gt;
&lt;p&gt;On older macOS versions, Apple Mail offered an “Open secure attachments automatically” option in Mail &gt; Preferences &gt; General. Apple removed it starting with macOS Sequoia: attachments no longer open automatically. The fact that Apple removed the user’s choice speaks volumes about the risk level it represented.&lt;/p&gt;
&lt;p&gt;The setting is set. What’s left is &lt;strong&gt;your habits&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Before opening an attachment: press &lt;strong&gt;Space&lt;/strong&gt; (Quick Look) directly from the email. The file displays in read-only without executing.&lt;/li&gt;
&lt;li&gt;For PDFs: use &lt;strong&gt;Preview&lt;/strong&gt; (Preview) instead of Adobe Reader, much smaller attack surface.&lt;/li&gt;
&lt;li&gt;For.docx /.xlsx from unknown sources: Quick Look first, not Office. Never enable macros in a received document, even from a known source (a compromised account sends credible macros).&lt;/li&gt;
&lt;li&gt;A.app,.dmg,.pkg, or.command file received by email? &lt;strong&gt;Immediate deletion.&lt;/strong&gt; No legitimate sender sends an executable by email.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-4-update-the-mail-client-without-delay&quot;&gt;Step 4: Update the mail client without delay&lt;/h3&gt;
&lt;p&gt;Zero-days on mail clients exist. CVE-2023-23397 on Outlook (CVSS 9.8): a malicious email triggered NTLM authentication towards an attacker’s server without any user interaction. Just receiving the email was enough. Exploited actively by APT28 before the patch.&lt;/p&gt;
&lt;p&gt;Apple Mail has a less extensive history than Outlook, but not nonexistent. CVE-2020-9922: Apple Mail could send emails in plaintext even with S/MIME enabled under certain conditions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Path:&lt;/strong&gt; System Preferences &gt; General &gt; Software Updates &gt; Automatically install system data files and security updates&lt;/p&gt;
&lt;p&gt;Enable everything, including &lt;strong&gt;“Install system data files and security updates”&lt;/strong&gt;. Never delay a macOS update that includes a Mail patch.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; all automatic update options checked.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’re using Proton Bridge: open Bridge &gt; menu bar icon &gt; Check for updates. Bridge has its own update cycle independent of macOS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-5-learn-to-verify-a-suspicious-email-spfdkimdmarc&quot;&gt;Step 5: Learn to verify a suspicious email (SPF/DKIM/DMARC)&lt;/h3&gt;
&lt;p&gt;Email was designed in the 70s without any authentication mechanism. Anyone can send an email with the &lt;code&gt;From:&lt;/code&gt; field they want. Three control mechanisms have been added:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPF&lt;/strong&gt;, Sender Policy Framework, verifies that the sending server is authorized for that domain&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DKIM&lt;/strong&gt;, DomainKeys Identified Mail, cryptographically signs the email to verify it hasn’t been modified in transit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC&lt;/strong&gt;, Domain-based Message Authentication, Reporting &amp;#x26; Conformance, ties SPF and DKIM together and defines what to do in case of failure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;On Apple Mail:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the suspicious email&lt;/li&gt;
&lt;li&gt;Menu &lt;strong&gt;View &gt; Message &gt; Long headers&lt;/strong&gt; (or &lt;code&gt;Cmd+Shift+H&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Search for the &lt;code&gt;Authentication-Results:&lt;/code&gt; line&lt;/li&gt;
&lt;li&gt;Read the three values: &lt;code&gt;spf=pass&lt;/code&gt; / &lt;code&gt;dkim=pass&lt;/code&gt; / &lt;code&gt;dmarc=pass&lt;/code&gt;. A &lt;code&gt;fail&lt;/code&gt; or &lt;code&gt;none&lt;/code&gt; on DMARC is a high alert signal&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; complete headers with authentication results.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;spf=pass dkim=pass dmarc=pass&lt;/code&gt;: authenticated email, legitimate sender. All good.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dmarc=fail&lt;/code&gt;: the sender doesn’t match the declared domain. Likely phishing. High alert.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dkim=fail&lt;/code&gt;: the email was modified in transit or came from an unauthorized server. High alert.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;spf=fail&lt;/code&gt; alone: less conclusive, SPF configs can be imperfect. Medium alert.&lt;/p&gt;
&lt;p&gt;All at &lt;code&gt;none&lt;/code&gt;: the domain hasn’t configured any authentication. Maximum caution.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Simple alternative: copy the full headers and paste them on &lt;a href=&quot;https://mxtoolbox.com/EmailHeaders.aspx&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;mxtoolbox.com/EmailHeaders.aspx&lt;/a&gt;, result readable in 10 seconds.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Apple Mail &lt;strong&gt;cannot automatically reject&lt;/strong&gt; an email that fails. It displays the authentication results in the headers, but filtering happens on the server side, by your email provider. That’s where the choice of provider makes a difference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;iCloud Mail&lt;/strong&gt;: applies DMARC, but Apple is less transparent about the strictness level. No advanced server-side filters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gmail&lt;/strong&gt;: applies DMARC, but may deliver to spam instead of rejecting. Powerful filters, but Google reads everything in the process.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proton Mail&lt;/strong&gt;: applies the sender domain’s DMARC policy on the server side. A &lt;code&gt;dmarc=fail&lt;/code&gt; with a &lt;code&gt;reject&lt;/code&gt; policy means the email never reaches your inbox. Plus, Proton offers &lt;strong&gt;Sieve filters&lt;/strong&gt;: a scripting language for server-side rules that lets you automatically sort, move, reject, or tag emails based on the sender, subject, headers, etc. Much more powerful than Apple Mail’s rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;To read soon: &lt;a href=&quot;https://macsouverain.com/en/proton-bridge-apple-mail-mac/&quot;&gt;Configure Proton Bridge with Apple Mail on Mac&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Habit to remember:&lt;/strong&gt; urgent request + &lt;code&gt;dmarc=fail&lt;/code&gt; = phone call before any action, no exceptions.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-6-configure-the-optimal-combination-proton-mail--bridge--apple-mail&quot;&gt;Step 6: Configure the optimal combination (Proton Mail + Bridge + Apple Mail)&lt;/h3&gt;
&lt;p&gt;If you want maximum protection on a Mac, the Proton Mail + Bridge + Apple Mail combination stacks three independent layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proton Mail&lt;/strong&gt;: can’t read your emails (end-to-end encryption, keys on your device), filters pixel spies and remote resources on the server before even transmitting them to you&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proton Bridge&lt;/strong&gt;: decrypts locally on your Mac, doesn’t transmit anything on the network&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apple Mail&lt;/strong&gt;: doesn’t execute JavaScript, blocks remote content (if configured as above)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;None of these three layers executes active code contained in an email. It’s structurally better than any webmail.&lt;/p&gt;
&lt;p&gt;Bridge is available starting with the &lt;strong&gt;Proton Mail Plus&lt;/strong&gt; plan (from €3.99/month on an annual subscription). The free Proton Mail plan doesn’t give access to Bridge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://proton.me/mail&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Try Proton Mail&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;To read soon: &lt;a href=&quot;https://macsouverain.com/en/proton-bridge-apple-mail-mac/&quot;&gt;Configure Proton Bridge with Apple Mail on Mac&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;pixel-tracking-what-changes-with-the-cnils-april-14-2026-recommendation&quot;&gt;Pixel tracking: what changes with the CNIL’s April 14, 2026 recommendation&lt;/h2&gt;
&lt;p&gt;On April 14, 2026, the CNIL adopted its recommendation on email tracking pixels, final after the public consultation of June 2025. It’s not a law or regulation, just a recommendation. But it’s the doctrine that the CNIL relies on to control you and those who write to you. And when the regulator publishes its reading grid, the audits that follow use it.&lt;/p&gt;
&lt;h3 id=&quot;a-tracking-pixel-in-three-lines&quot;&gt;A tracking pixel, in three lines&lt;/h3&gt;
&lt;p&gt;A tracking pixel is a 1x1 pixel image, transparent, hosted on a remote server. The sender slips it into the HTML body of their email, invisible to the eye. When your mail client displays the message, it loads the image. This simple load sends an HTTP request to the server, which logs your IP, mail client, timestamp, and a unique identifier linked to your email address.&lt;/p&gt;
&lt;p&gt;Result: the sender knows you opened, when, where approximately, what OS, how many times. You haven’t done anything special, you’ve just read. Multiplied by all the newsletters, business B2B emails, commercial notifications you receive, it builds a detailed profile of your attention.&lt;/p&gt;
&lt;h3 id=&quot;what-the-cnil-now-regulates&quot;&gt;What the CNIL now regulates&lt;/h3&gt;
&lt;p&gt;The legal basis is Article 82 of the Data Protection Act, which governs cookies and trackers. And the European Data Protection Board’s guidelines 2/2023, which explicitly include email pixels in the category of trackers. The CNIL’s April 14, 2026 recommendation applies this grid to the specific case of pixels in emails.&lt;/p&gt;
&lt;p&gt;Principle retained by the CNIL: a tracking pixel is a tracker. It reads and writes information on your terminal (your mail client, your phone, your Mac). Therefore, by default, it falls under the prior consent requirement, like an advertising cookie.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One exception to consent&lt;/strong&gt;: measuring individual deliverability linked to a service you’ve requested. In other words, for transactional emails, order confirmation, security alert, password reset, account activation, the sender can verify if the email reached you without asking for your consent. It’s seen as a technical component of the service you requested.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Everything else requires explicit consent&lt;/strong&gt;. Content personalization based on your behavior, marketing audience measurement, targeted advertising, commercial segmentation, fine analytics. If your sender uses the pixel for anything other than verifying that the email arrived, they must ask. Explicitly, at the standard GDPR consent level, not a buried banner at the bottom of a page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One exception to consent&lt;/strong&gt;: measuring individual deliverability linked to a service you’ve requested. In other words, for transactional emails, order confirmation, security alert, password reset, account activation, the sender can verify if the email reached you without asking for your consent. It’s seen as a technical component of the service you requested.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Everything else requires explicit consent&lt;/strong&gt;. Content personalization based on your behavior, marketing audience measurement, targeted advertising, commercial segmentation, fine analytics. If your sender uses the pixel for anything other than verifying that the email arrived, they must ask. Explicitly, at the standard GDPR consent level, not a buried banner at the bottom of a page.&lt;/p&gt;
&lt;h3 id=&quot;the-timeline-and-what-comes-next&quot;&gt;The timeline and what comes next&lt;/h3&gt;
&lt;p&gt;The CNIL gives three months to comply. In other words: mid-July 2026. After that, audits start. The recommendation isn’t binding in the strict sense, but it’s &lt;strong&gt;enforceable in inspection&lt;/strong&gt;. An audited actor can’t plead ignorance of the doctrine: it’s public, dated, detailed.&lt;/p&gt;
&lt;p&gt;And the CNIL has announced inspections. The first ones will likely target big B2C senders, commercial newsletters, e-commerce, media with massive tracking. But the grid applies to everyone: freelancers, SMEs, associations. If you send a newsletter with a Mailchimp pixel measuring opens for marketing purposes without collected consent, you’re off the mark.&lt;/p&gt;
&lt;h3 id=&quot;what-this-changes-for-you-who-reads-your-emails-on-mac&quot;&gt;What this changes for you who reads your emails on Mac&lt;/h3&gt;
&lt;p&gt;Nothing to do here. The settings for Step 1, “Protect Mail activity” and “Block all remote content” in Apple Mail, were already the best defense possible before the recommendation. They remain so. The difference: what was presented as “good privacy practice” by geeks is now &lt;strong&gt;the regulator’s position&lt;/strong&gt;. You’re no longer paranoid, you’re aligned with the CNIL.&lt;/p&gt;
&lt;p&gt;Proton Mail filters pixel spies by default, on the server side, before the email even reaches your inbox. This option isn’t a gadget: it’s exactly what the CNIL’s recommendation requires as the minimum standard for respecting the reader. Here too, the tool was ahead of the norm, the norm has caught up with the tool.&lt;/p&gt;
&lt;p&gt;The only real change on the user side: you can consider that &lt;strong&gt;any commercial email that tracks you without having asked for your consent is now in breach&lt;/strong&gt;. That doesn’t give you much directly, but it gives leverage to advocacy groups, the CNIL itself, and European competitors to the marketing automation giants. The power dynamic has shifted.&lt;/p&gt;
&lt;h3 id=&quot;and-if-youre-on-the-sending-side&quot;&gt;And if you’re on the sending side&lt;/h3&gt;
&lt;p&gt;If you send emails in a professional capacity, association, SME, freelance, independent with a newsletter, the recommendation concerns you directly. Three habits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Your transactional emails&lt;/strong&gt; (confirmation, alert, reset) can keep a delivery tracking pixel without consent, as long as it serves that purpose and nothing else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your marketing emails, newsletters, campaigns&lt;/strong&gt; must pass through explicit consent for tracking, separate from the simple opt-in to the newsletter. Reading and accepting to be measured are two separate acts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your emailing tools&lt;/strong&gt; (Mailchimp, Brevo, Sendinblue, Substack) must let you disable the pixel by default or condition it on consent. If your tool doesn’t offer that, you’ll have to change before mid-July.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It’s not the end of emailing. It’s the end of blind emailing, the end of “I open, therefore I’m measured”. For a site like MacSouverain that has recommended since the start the tools that respect the reader, it’s a silent victory.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;if-it-doesnt-work&quot;&gt;If it doesn’t work&lt;/h2&gt;
&lt;h3 id=&quot;problem-emails-are-unreadable-after-blocking-remote-content&quot;&gt;Problem: emails are unreadable after blocking remote content&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; the email doesn’t contain a text version, only HTML with images.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; click “Load remote content” at the top of the specific email. The global setting remains active for all other emails.&lt;/p&gt;
&lt;h3 id=&quot;problem-long-headers-dont-appear-in-the-menu&quot;&gt;Problem: long headers don’t appear in the menu&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; macOS variant. On some Sequoia/Tahoe versions, the path may differ.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; try View &gt; Message &gt; Custom headers, then check the desired fields.&lt;/p&gt;
&lt;h3 id=&quot;problem-a-colleague-sends-winmaildat-files&quot;&gt;Problem: a colleague sends winmail.dat files&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; they’re using Outlook in TNEF mode.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; ask them to send in HTML or plain text. If it’s recurrent, don’t open with non-maintained third-party tools. Quick Look often displays the content.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-the-impatient&quot;&gt;For the impatient&lt;/h2&gt;
&lt;p&gt;This article secures your mail client against the six main attack vectors: pixel spies, CSS fingerprinting, malicious attachments, zero-days client, email spoofing, and active code in emails. &lt;strong&gt;New since April 14, 2026&lt;/strong&gt;: the CNIL’s recommendation on pixel tracking makes blocking pixels enforceable in inspection starting mid-July 2026. Your Apple Mail and Proton Mail settings below were already compliant, they remain so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Concretely, the settings:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mail Privacy&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mail &gt; Preferences &gt; Privacy &gt; Protect Mail activity = &lt;strong&gt;Enabled&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;… &gt; Block all remote content = &lt;strong&gt;Enabled&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Attachments &amp;#x26; updates&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mail &gt; Preferences &gt; General &gt; Open secure attachments automatically = &lt;strong&gt;Disabled&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;System Preferences &gt; General &gt; Software Updates &gt; Automatically install system data files and security updates = &lt;strong&gt;Everything enabled&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Verify a suspicious email&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View &gt; Message &gt; Long headers (Cmd+Shift+H) → search for &lt;code&gt;Authentication-Results&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Maximum protection&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proton Mail + Bridge + Apple Mail (three independent layers, zero execution of active code)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Some technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>securite</category><category>email</category><category>privacy</category><category>tracking</category><category>proton</category><category>tutoriels</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-secu-nb.png" length="0" type="image/png"/></item><item><title>Apple Mail vs Gmail vs Proton Mail, the honest comparison</title><link>https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/</link><guid isPermaLink="true">https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/</guid><description>Apple Mail, Gmail or Proton Mail? Three philosophies, three contracts. The no-bullshit comparison to choose what really suits you.</description><pubDate>Wed, 25 Mar 2026 14:05:22 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Updated July 2026. The argument “Apple aliases are like SimpleLogin” has gone bust. Researcher Tyler Murphy showed back in June 2025 that you can trace the real address behind a Hide My Email alias. Apple claimed to fix it in March 2026: false. Public disclosure on July 1st (404 Media, picked up by 9to5Mac and MacRumors), the bug still holds, all tested aliases are traceable. A Hide My Email alias doesn’t protect you from someone who really wants to know. A Proton Pass or SimpleLogin alias, hosted outside the ecosystem that’s tracking you, yes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Updated May 2026. Proton Mail now offers post-quantum encryption for new emails, on all plans including free. Strong differentiating argument vs Apple Mail (PQ3 iMessage silo only) and Gmail (zero). &lt;a href=&quot;https://macsouverain.com/en/radar-proton-mail-post-quantum-mai-2026/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You’re on a Mac. You’ve probably been using Apple Mail for years without asking too many questions, or you switched to Gmail because “it’s convenient.” Maybe you’ve heard of Proton Mail and you’re wondering if it’s really worth migrating.&lt;/p&gt;
&lt;p&gt;In reality, the question is wrong. These aren’t three competing email clients. They’re three &lt;strong&gt;different contracts&lt;/strong&gt;, with your device, your provider, and your data.&lt;/p&gt;
&lt;p&gt;Apple Mail is a client. Gmail is a service (and a data collection ecosystem). Proton Mail is a architectural promise. Understanding the difference is 80% of the decision.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-three-approaches&quot;&gt;The Three Approaches&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Apple Mail + iCloud Mail&lt;/strong&gt;: Apple makes the client, hosts your emails if you use iCloud Mail. Perfect native integration on Mac and iPhone. Mail Privacy Protection blocks tracking pixels. But iCloud Mail isn’t end-to-end encrypted, Apple can technically access it, and the servers are partly in the US.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gmail&lt;/strong&gt;: free service funded by a ad network that’s still over 73% of Alphabet’s revenue (2025). Email isn’t the product, your public profile is. Very powerful, very smooth, US jurisdiction with all that implies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proton Mail&lt;/strong&gt;: fundamentally different contract. Encryption keys are generated on your device. Proton stores your encrypted emails but can’t read them. Swiss jurisdiction, outside 5/9/14 Eyes. Not a marketing promise, real security by architectural constraint.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;apple-mail--icloud-mail&quot;&gt;Apple Mail (+ iCloud Mail)&lt;/h2&gt;
&lt;h3 id=&quot;what-you-get&quot;&gt;What You Get&lt;/h3&gt;
&lt;p&gt;Perfect integration into the Apple ecosystem. Apple Mail natively syncs with your contacts, calendar, Siri, Handoff, Focus Modes. On Mac, it’s smooth. On iPhone, it’s the reference.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mail Privacy Protection&lt;/strong&gt; (iOS 15+, macOS Monterey+) masks your IP address from senders and preloads images in the background, so senders see “email opened” but don’t know when or where. Real protection against tracking pixels, on by default since iOS 15.&lt;/p&gt;
&lt;p&gt;For iCloud Mail, Apple uses the Secure Enclave on your devices to protect access keys. Emails in transit are encrypted. Apple also introduced &lt;strong&gt;Advanced Data Protection for iCloud&lt;/strong&gt; (opt-in), which extends end-to-end encryption to many iCloud data categories, but not emails, contacts, and calendars for interoperability reasons.&lt;/p&gt;
&lt;h3 id=&quot;honest-limitations&quot;&gt;Honest Limitations&lt;/h3&gt;
&lt;p&gt;iCloud Mail isn’t end-to-end encrypted. Apple can technically access your email content if legally compelled, and the iCloud servers are partly hosted by AWS and Google Cloud, ironically. Apple is subject to US law, National Security Letters, and the CLOUD Act.&lt;/p&gt;
&lt;p&gt;Dependence on the ecosystem is real: Apple Mail is excellent if you stay within the Apple world. Connecting a third-party client or automating workflows is more laborious than with Gmail. Advanced features (filters, aliases, multi-domain management) are still limited compared to Gmail or Proton.&lt;/p&gt;
&lt;h3 id=&quot;concrete-action&quot;&gt;Concrete Action&lt;/h3&gt;
&lt;p&gt;Turn on &lt;strong&gt;Mail Privacy Protection&lt;/strong&gt;: Settings &gt; Mail &gt; Privacy Protection &gt; Hide Mail Activity.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Securing Your Emails&lt;/a&gt; for full settings (plain text, block remote content, Bridge configuration).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;gmail-the-service-that-knows-everything-about-you&quot;&gt;Gmail: The Service That Knows Everything About You&lt;/h2&gt;
&lt;h3 id=&quot;the-business-model-clearly&quot;&gt;The Business Model, Clearly&lt;/h3&gt;
&lt;p&gt;Google is the largest ad network in history. Gmail is free because it funds this ad network, not because Google is philanthropic.&lt;/p&gt;
&lt;p&gt;In practice, Google analyzes your emails to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extract intent signals (running purchase confirmation, sports equipment targeting)&lt;/li&gt;
&lt;li&gt;Feed your Google Ads profile (inferred interests, estimated income, family situation)&lt;/li&gt;
&lt;li&gt;Cross with your Search, YouTube, Maps, and Chrome data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google officially stopped scanning for direct ad targeting in 2017, a voluntary decision to reassure enterprise clients (G Suite). Google already had enough targeting data without needing to read your emails. Metadata is still analyzed: who’s writing to you, when, how often, from which services.&lt;/p&gt;
&lt;h3 id=&quot;us-jurisdiction-the-legal-problem&quot;&gt;US Jurisdiction: The Legal Problem&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CLOUD Act (2018)&lt;/strong&gt;: US authorities can compel Google to hand over data stored abroad, including for European citizens, without going through international judicial cooperation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;National Security Letters&lt;/strong&gt;: secret orders, no prior judicial review, with a gag order preventing you from being informed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 Eyes&lt;/strong&gt;: the US participates in the most integrated surveillance alliance in the world&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The GDPR applies to Google in Europe in principle. In practice, US-EU data transfers are in permanent legal dispute, and the CJEU has invalidated successive EU-US data transfer frameworks: Safe Harbor in 2015 (Schrems I) and Privacy Shield in 2020 (Schrems II).&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;proton-mail-the-different-contract&quot;&gt;Proton Mail: The Different Contract&lt;/h2&gt;
&lt;h3 id=&quot;what-end-to-end-encryption-really-changes&quot;&gt;What End-to-End Encryption Really Changes&lt;/h3&gt;
&lt;p&gt;Encryption keys are generated on your device, not on Proton’s servers. Proton stores your encrypted emails but can’t read them. Even under judicial compulsion, they can only hand over unreadable text.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What this changes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emails between Proton users are only readable by you and the recipient&lt;/li&gt;
&lt;li&gt;Proton can’t analyze your content, it simply can’t read it&lt;/li&gt;
&lt;li&gt;In case of a server breach, stolen data is encrypted and unusable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What this doesn’t change:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emails to non-Proton accounts (Gmail, Outlook…) are transit-encrypted but readable on the recipient’s side&lt;/li&gt;
&lt;li&gt;Metadata (sender, recipient, timestamp) remains partially accessible&lt;/li&gt;
&lt;li&gt;Proton sees when you log in, from which IP address (unless you combine with Proton VPN)&lt;/li&gt;
&lt;li&gt;Full-text search is constrained: Proton can’t index what it can’t read. On desktop with Proton Bridge (paid plans), the index is local and improves. On mobile, it’s significantly less powerful than Gmail.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proton Bridge + Apple Mail&lt;/strong&gt;: if you’re on a Mac, the Bridge (paid plan) + Apple Mail combination works very well, you keep the native Apple interface with Proton’s encryption underneath. Probably the best of both worlds for a Mac user.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/proton-bridge-apple-mail-mac/&quot;&gt;Complete Bridge + Apple Mail Configuration&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;swiss-jurisdiction-the-structural-advantage&quot;&gt;Swiss Jurisdiction: The Structural Advantage&lt;/h3&gt;
&lt;p&gt;Proton is headquartered in Geneva. Switzerland is neither in the EU nor in the 5/9/14 Eyes alliances. A foreign access request must go through Swiss diplomatic channels, under control of a Swiss judge. Proton publishes an annual transparency report.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gmail and iCloud Mail = US = 5 Eyes.&lt;/strong&gt; Your provider can be legally compelled, secretly, to monitor your account and transmit data to other alliance countries without informing you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proton Mail = Switzerland = outside 14 Eyes.&lt;/strong&gt; Any access request goes through Swiss diplomatic channels, under judicial control. Longer, more transparent, structurally more protective.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Consult the Glossary&lt;/a&gt; for the full detail of the 5/9/14 Eyes alliances and the CLOUD Act.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;plain-text-html-and-surveillance-the-layer-the-comparison-doesnt-cover&quot;&gt;Plain Text, HTML, and Surveillance: The Layer the Comparison Doesn’t Cover&lt;/h2&gt;
&lt;p&gt;Choosing the right email service is good. Understanding what happens in your inbox before you even read a message is better.&lt;/p&gt;
&lt;p&gt;Tracking pixels, HTML/CSS exploits, fingerprinting by formatting: these surveillance vectors work independently of the service you use. Gmail, Proton, or Apple Mail, if you don’t have the right settings, you’re exposed.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Securing Your Emails: What End-to-End Encryption Doesn’t Do Alone&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;cnil-1404-tracking-pixels-now-regulated&quot;&gt;CNIL 14/04: Tracking Pixels Now Regulated&lt;/h2&gt;
&lt;p&gt;On April 14, 2026, the CNIL adopted its &lt;a href=&quot;https://www.cnil.fr/fr/recommandation-pixel-suivi-courriels&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;recommendation on tracking pixels in emails&lt;/a&gt;. In short: a pixel used to profile, measure, or target you with ads requires your explicit consent. Transactional emails, order confirmations, security alerts, password resets are exempt. Three months to comply, mid-July 2026, then inspections begin.&lt;/p&gt;
&lt;p&gt;In practice, who’s already in compliance by default?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proton Mail&lt;/strong&gt; blocks tracking pixels server-side before even delivering the email. Always aligned.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apple Mail&lt;/strong&gt; with Mail Privacy Protection masks your IP and proxies images via Apple’s servers. Pixels don’t know when you open or where. Active by default since iOS 15.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gmail&lt;/strong&gt; lets them through. Google loads images via its own proxy, masking your IP from the sender, but not blocking pixel triggering. Google knows you opened it. The sender too. Google’s compliance needs revisiting, especially for its European Workspace clients broadcasting campaigns without proper consent.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Securing Your Emails: The Full Chapter on the CNIL Recommendation&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-honest-comparison&quot;&gt;The Honest Comparison&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Apple Mail&lt;/strong&gt;
Free (5GB iCloud), iCloud+ from €0.99/month. Not end-to-end encrypted, Apple can technically read your emails. US jurisdiction, 5 Eyes. Not open source. Native Mac/iOS app excellent, local search solid, Apple ecosystem integration top. No native aliases. Decent privacy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gmail&lt;/strong&gt;
Free (15GB), Workspace from around €7/month. Not end-to-end encrypted, Google actively analyzes your emails. US jurisdiction, 5 Eyes. Not open source. Mature iOS + Android apps, excellent search, many integrations. No native aliases. Poor privacy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proton Mail&lt;/strong&gt;
Free (1GB), Plus from €3.99/month (annual). End-to-end encrypted, no one reads your emails (keys with you). Swiss jurisdiction, outside 14 Eyes. Open source (clients + crypto). Mature iOS + Android apps, native desktop app free. Limited search (local only). SimpleLogin aliases included from Unlimited. High privacy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;alternatives-to-know&quot;&gt;Alternatives to Know&lt;/h2&gt;
&lt;p&gt;If you want to explore other options without staying in this trio, two names deserve your attention.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Infomaniak K-Mail&lt;/strong&gt;: Swiss hoster, real European sovereignty, good option for SMEs wanting to leave Google without depending on an American startup. No native end-to-end encryption, but solid jurisdiction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tuta&lt;/strong&gt; (ex-Tutanota): End-to-end encrypted, open source, German jurisdiction (14 Eyes, note). Similar approach to Proton but lighter ecosystem. Consider if you want a Proton alternative.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Staying in the Apple ecosystem&lt;/strong&gt;: Apple Mail is the rational choice. Turn on Mail Privacy Protection, go plain text, and be aware that iCloud Mail isn’t end-to-end encrypted. Consider Proton Mail for very sensitive emails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In Google’s orbit&lt;/strong&gt;: if you use Google Docs, Calendar, Drive, Meet daily, migrating just your email to Proton doesn’t significantly reduce your Google data surface. The question is broader. Proton Mail is a good first step, not a complete solution on its own.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wanting to leave&lt;/strong&gt;: Proton Mail is the most coherent choice. Free plan to test seriously. Plus plan at €3.99/month for a truly replacing Gmail use: that’s the minimum viable. Proton’s desktop and mobile clients are solid and independent. If you prefer to stay in Apple Mail, Bridge (included in the Plus plan) lets you use the native interface with Proton’s encryption underneath.&lt;/p&gt;
&lt;p&gt;Realistic strategy: start with sensitive uses (banking, health, administrative services), gradually migrate over six months. Not in a weekend.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://proton.me/mail&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Try Proton Mail&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You manage a team? The question of complete suites (Google Workspace, Microsoft 365, sovereign alternatives) deserves its own article, coming soon.&lt;/p&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Consult the Glossary&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>email</category><category>comparatif</category><category>proton</category><category>gmail</category><category>apple-mail</category><category>comparatifs</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-mail-45.png" length="0" type="image/png"/></item><item><title>Proton Bridge + Apple Mail on Mac: Encryption Without Compromise</title><link>https://macsouverain.com/en/proton-bridge-apple-mail-mac/</link><guid isPermaLink="true">https://macsouverain.com/en/proton-bridge-apple-mail-mac/</guid><description>How to Set Up Proton Bridge with Apple Mail on Mac. Installation, Exact Settings, Troubleshooting. Zero-Knowledge Encryption + Native Interface.</description><pubDate>Wed, 25 Mar 2026 13:50:51 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;July 2026 Update.&lt;/strong&gt; The Hide My Email flaw is leaking Apple aliases (publicly disclosed on July 1st, still not fixed). Another argument for sovereign aliases: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;see the email comparison update&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;May 2026 Update.&lt;/strong&gt; If you’re using Proton Bridge with Apple Mail, keep Bridge up to date: Proton has enabled post-quantum encryption on the Mail side (manual activation required). Bridge supports it transparently, but a recent version is needed for newly encrypted emails to be readable on the Apple Mail side. &lt;a href=&quot;https://macsouverain.com/en/radar-proton-mail-post-quantum-mai-2026/&quot;&gt;Details in the radar&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Proton Mail encrypts your emails structurally, open-source, mathematical, verifiable. You can use it directly via its native app, free on Mac, iOS, and Android. It gets the job done.&lt;/p&gt;
&lt;p&gt;But if you want to stay in &lt;strong&gt;Apple Mail&lt;/strong&gt;, with Spotlight, your filtering rules, your keyboard shortcuts, your macOS notifications, you need &lt;strong&gt;Proton Bridge&lt;/strong&gt;. In 10 minutes, you’ll connect Proton Mail to Apple Mail via Bridge. No more web app. Everything in Mail.app, end-to-end encrypted.&lt;/p&gt;
&lt;p&gt;You’ll need a Mac on macOS Tahoe, Sequoia, or Sonoma, a Proton Mail Plus (or higher) account, and 10 minutes. At the end, Apple Mail will display your Proton emails natively, with zero-knowledge encryption running underneath.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Why your mail client is a sieve&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;before-you-start&quot;&gt;Before you start&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What you’ll need:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Mac on macOS Tahoe (26.x), Sequoia (15.x), or Sonoma (14.x)&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Proton Mail Plus&lt;/strong&gt; (or higher) account. The free plan doesn’t include Bridge.&lt;/li&gt;
&lt;li&gt;Apple Mail installed (pre-installed on macOS)&lt;/li&gt;
&lt;li&gt;10 minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What will change:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your Proton emails will appear in Apple Mail, with Spotlight, keyboard shortcuts, macOS notifications&lt;/li&gt;
&lt;li&gt;E2EE encryption is maintained: keys never leave your Mac&lt;/li&gt;
&lt;li&gt;Pixel spies and remote resources are filtered by Proton before reaching Apple Mail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What won’t change:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emails sent to non-Proton addresses (Gmail, Outlook) aren’t E2EE encrypted on the recipient’s side&lt;/li&gt;
&lt;li&gt;Bridge uses 150-300MB of RAM in the background&lt;/li&gt;
&lt;li&gt;No instant push: Apple Mail polls Bridge (~1 minute)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; If Bridge is closed or crashes, Apple Mail won’t receive anything until it’s relaunched. Make sure Bridge is in your macOS login items and its icon is visible in your active apps menu, top right of your screen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;On the pixel spy protection front, the Proton + Apple Mail combo plays on two fronts.&lt;/strong&gt; Proton filters tracking pixels on the server side, before emails even reach Bridge. Apple Mail, with “Protect Mail Activity” (Mail Privacy Protection), masks your IP and proxies images via Apple servers for the rest. The CNIL recommendation from April 14, 2026 on tracking pixels makes this double protection enforceable starting mid-July 2026. You don’t need to configure anything extra, both are active by default.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/securite-email-client-mail/&quot;&gt;Why your mail client is a sieve, including the CNIL chapter&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;steps&quot;&gt;Steps&lt;/h2&gt;
&lt;h3 id=&quot;step-1-download-proton-bridge&quot;&gt;Step 1: Download Proton Bridge&lt;/h3&gt;
&lt;p&gt;Go to &lt;a href=&quot;https://proton.me/mail/bridge&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;proton.me/mail/bridge&lt;/a&gt; and download the macOS version. It’s a standard &lt;code&gt;.dmg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; a &lt;code&gt;.dmg&lt;/code&gt; file in your Downloads folder.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-2-install-bridge&quot;&gt;Step 2: Install Bridge&lt;/h3&gt;
&lt;p&gt;Open the &lt;code&gt;.dmg&lt;/code&gt;, drag Bridge into &lt;code&gt;/Applications&lt;/code&gt;, launch it. A Proton icon appears in the menu bar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Allow Bridge to add itself to your macOS login items when prompted. Without this, Bridge won’t start automatically with your session, and Apple Mail will stay silent after each restart.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; the Proton Bridge icon in your menu bar.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-3-connect-to-bridge&quot;&gt;Step 3: Connect to Bridge&lt;/h3&gt;
&lt;p&gt;Click on the Bridge icon in the menu bar &gt; open the main interface &gt; &lt;strong&gt;Connect&lt;/strong&gt; &gt; enter your Proton Mail credentials &gt; validate the 2FA if you have it enabled (recommended).&lt;/p&gt;
&lt;p&gt;Bridge starts synchronizing your emails in the background. Give it a few minutes if your mailbox is large.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; your account displayed in the Bridge interface, synchronization in progress.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-4-retrieve-imap-credentials&quot;&gt;Step 4: Retrieve IMAP credentials&lt;/h3&gt;
&lt;p&gt;In the Bridge interface: click on your account &gt; &lt;strong&gt;Messaging Settings&lt;/strong&gt; section. Bridge generates a &lt;strong&gt;specific password&lt;/strong&gt; for Apple Mail, different from your Proton password. Copy it.&lt;/p&gt;
&lt;p&gt;Also note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Incoming server: &lt;code&gt;127.0.0.1&lt;/code&gt;, port &lt;code&gt;1143&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Outgoing server: &lt;code&gt;127.0.0.1&lt;/code&gt;, port &lt;code&gt;1025&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; the IMAP/SMTP settings displayed with a generated password.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-5-add-the-account-in-apple-mail&quot;&gt;Step 5: Add the account in Apple Mail&lt;/h3&gt;
&lt;p&gt;Open Apple Mail &gt; &lt;strong&gt;Mail&lt;/strong&gt; (menu) &gt; &lt;strong&gt;Add Account&lt;/strong&gt; &gt; &lt;strong&gt;Other Mail Account&lt;/strong&gt; (not iCloud, not Exchange, the generic option at the bottom).&lt;/p&gt;
&lt;p&gt;Fill in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Full Name:&lt;/strong&gt; your name&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email Address:&lt;/strong&gt; your &lt;code&gt;@proton.me&lt;/code&gt; address (or Proton alias)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password:&lt;/strong&gt; the Bridge password you just copied (not your Proton password)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apple Mail will try to connect automatically, it will probably fail. That’s normal. Click &lt;strong&gt;Next&lt;/strong&gt; to access manual configuration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Incoming Mail Server:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server: &lt;code&gt;127.0.0.1&lt;/code&gt;, Port: &lt;code&gt;1143&lt;/code&gt;, SSL/TLS: &lt;strong&gt;disabled&lt;/strong&gt;, Authentication: normal password&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Outgoing Mail Server:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server: &lt;code&gt;127.0.0.1&lt;/code&gt;, Port: &lt;code&gt;1025&lt;/code&gt;, SSL/TLS: &lt;strong&gt;disabled&lt;/strong&gt;, Authentication: normal password&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; your Proton account appears in the sidebar of Apple Mail.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Why SSL disabled? The connection between Apple Mail and Bridge only goes through &lt;code&gt;127.0.0.1&lt;/code&gt;, your own machine, never the network. Bridge handles TLS encryption with Proton servers itself. Enabling SSL on top would create a certificate conflict.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;step-6-check-synchronization&quot;&gt;Step 6: Check synchronization&lt;/h3&gt;
&lt;p&gt;Once the account is added, Apple Mail starts downloading your emails via Bridge. Depending on the volume, this can take a few minutes to a few hours. The Bridge icon in the menu bar shows the progress.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check three things:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;IMAP folders are imported.&lt;/strong&gt; Your inbox, custom folders, Sent, Trash, Spam should all appear in the sidebar of Apple Mail under your Proton account. If a folder is missing, force a resync: right-click on the account &gt; Synchronize.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Your identities are configured for replying.&lt;/strong&gt; If you have multiple Proton addresses (aliases, custom domain), check that you can reply from each. Go to &lt;strong&gt;Mail &gt; Preferences &gt; Accounts &gt; [your Proton account] &gt; Email Addresses&lt;/strong&gt;: all your Proton addresses should be listed. When writing an email, the “From:” field offers the choice. If an address is missing, Bridge should sync it normally, relaunch Bridge if necessary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Test email.&lt;/strong&gt; Send a test email from another account to your Proton address. If it arrives in Apple Mail, you’re good. Reply to it from Apple Mail to check sending works too.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;What you should see:&lt;/strong&gt; your Proton emails in Apple Mail, all folders visible, all your identities available in the “From:” field, test email received and reply sent.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;if-its-not-working&quot;&gt;If it’s not working&lt;/h2&gt;
&lt;h3 id=&quot;problem-bridge-wont-start--doesnt-appear-in-the-menu-bar&quot;&gt;Problem: Bridge won’t start / doesn’t appear in the menu bar&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; Bridge isn’t in the login items.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; System Preferences &gt; General &gt; Open (or Login Items depending on your macOS version). Check that Bridge is listed and enabled. If it’s not, launch it manually from /Applications.&lt;/p&gt;
&lt;h3 id=&quot;problem-emails-arent-sending-smtp-error&quot;&gt;Problem: Emails aren’t sending (SMTP error)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; SMTP credentials in Apple Mail are incorrect.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Mail &gt; Preferences &gt; Accounts &gt; [your Proton account] &gt; Outgoing Mail Server Settings. Check that the server is &lt;code&gt;127.0.0.1&lt;/code&gt; port &lt;code&gt;1025&lt;/code&gt;, the password is the Bridge one (not the Proton one), and SSL is disabled. If Apple Mail “auto-corrected” the port or enabled SSL during setup, that’s likely where the issue is.&lt;/p&gt;
&lt;h3 id=&quot;problem-sync-is-slow-emails-take-too-long-to-arrive&quot;&gt;Problem: Sync is slow, emails take too long to arrive&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; polling frequency is too low.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Mail &gt; Preferences &gt; Accounts &gt; [your account] &gt; Check for New Messages. Change it to “Every 30 seconds” if your Mac is always plugged in. Note that this slightly increases CPU usage.&lt;/p&gt;
&lt;h3 id=&quot;problem-bridge-asks-for-re-authentication-after-update&quot;&gt;Problem: Bridge asks for re-authentication after update&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; Proton updated Bridge, old credentials are invalid.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; in Bridge, reconnect. New IMAP credentials are generated automatically. Update the password in Apple Mail (account preferences, SMTP section). You don’t need to reconfigure everything, just the password.&lt;/p&gt;
&lt;h3 id=&quot;problem-cant-connect-at-startup&quot;&gt;Problem: “Can’t connect” at startup&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Probable cause:&lt;/strong&gt; Apple Mail started before Bridge was ready.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; wait a few seconds, then Mailbox &gt; Get All New Messages. Bridge needs a few seconds to start up.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;for-the-impatient&quot;&gt;For the impatient&lt;/h2&gt;
&lt;p&gt;This article connects Proton Mail to Apple Mail via Proton Bridge in 10 minutes. You keep the native macOS interface with Proton’s E2EE encryption underneath. Requirements: Proton Mail Plus account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In short:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download Bridge from proton.me/mail/bridge&lt;/li&gt;
&lt;li&gt;Install, launch, allow in macOS login items&lt;/li&gt;
&lt;li&gt;Connect with Proton credentials&lt;/li&gt;
&lt;li&gt;Copy the Bridge-generated password (not your Proton password)&lt;/li&gt;
&lt;li&gt;Apple Mail &gt; Add Account &gt; Other Mail Account&lt;/li&gt;
&lt;li&gt;IMAP server: &lt;code&gt;127.0.0.1&lt;/code&gt; port &lt;code&gt;1143&lt;/code&gt;, SSL disabled&lt;/li&gt;
&lt;li&gt;SMTP server: &lt;code&gt;127.0.0.1&lt;/code&gt; port &lt;code&gt;1025&lt;/code&gt;, SSL disabled&lt;/li&gt;
&lt;li&gt;Password: Bridge-generated one&lt;/li&gt;
&lt;li&gt;Send a test email to check&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://proton.me/mail&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Try Proton Mail Plus, starting at €3.99/month&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>tutoriels</category><category>proton</category><category>email</category><category>privacy</category><category>mac</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-bridge-nb.png" length="0" type="image/png"/></item><item><title>Apple Silicon and Security: What Secure Enclave Really Changes</title><link>https://macsouverain.com/en/apple-silicon-et-securite-ce-que-secure-enclave-change-vraiment/</link><guid isPermaLink="true">https://macsouverain.com/en/apple-silicon-et-securite-ce-que-secure-enclave-change-vraiment/</guid><description>Secure Enclave, Secure Boot, KIP, PAC. What Apple Silicon&apos;s architecture really protects, and what it doesn&apos;t. No bullshit.</description><pubDate>Wed, 25 Mar 2026 09:45:11 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apple talks a lot about the security of its chips. “The most secure chip ever designed for a Mac.” “Hardware-level security.” It’s marketing, sure. But for once, rare in the tech industry, the marketing is backed by a serious architectural reality.&lt;/p&gt;
&lt;p&gt;This article tears down what’s really happening in an Apple Silicon Mac in terms of security. No soft metaphors from a keynote, no claiming the chip does everything for you. Because it doesn’t do everything, no. But it does what it promises.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before Apple Silicon: The Intel Mess&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To understand what Apple Silicon changes, you need to know where we’re coming from.&lt;/p&gt;
&lt;p&gt;On pre-2020 Intel Macs, the security architecture relied on separate components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The main Intel processor handled all the calculations&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;T2&lt;/strong&gt; chip (on recent models) handled encryption, Touch ID, and Secure Boot, but it was a separate component connected via an internal bus&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Secure Enclave&lt;/strong&gt; already existed, integrated into the T2, but it communicated with the Intel CPU through a wider attack surface&lt;/li&gt;
&lt;li&gt;Memory, storage, CPU, and security coprocessors were separate chips on the motherboard&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This architecture is functional. It’s not optimal. Each communication between components is a potential attack surface. And traces on a physical motherboard can be tapped.&lt;/p&gt;
&lt;p&gt;For Macs without a T2 (pre-2018): the Secure Enclave didn’t exist at all. FileVault was software-only. It’s a generation to replace if security concerns you.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Mechanism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apple Silicon: All on One Die&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the M1 in 2020, Apple changed the game: a &lt;strong&gt;System on a Chip (SoC)&lt;/strong&gt; where CPU, GPU, Neural Engine, memory controller, Secure Enclave, and encryption engines coexist on the same silicon die.&lt;/p&gt;
&lt;p&gt;It’s not about convenience. It’s a security architecture decision.&lt;/p&gt;
&lt;p&gt;When everything’s on the same chip:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inter-component communications no longer traverse exposed physical buses&lt;/li&gt;
&lt;li&gt;The physical attack surface is dramatically reduced&lt;/li&gt;
&lt;li&gt;Memory encryption is handled directly by the integrated memory controller, without passing through an external component&lt;/li&gt;
&lt;li&gt;Isolation between domains (kernel, user space, Secure Enclave) is etched into the silicon, not implemented in software&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Secure Enclave: The Safe That Won’t Give You Its Keys&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Secure Enclave is an &lt;strong&gt;independent cryptoprocessor&lt;/strong&gt; inside the SoC. Independent means: it has its own microkernel, its own random number generator, its own memory zone isolated by a dedicated hardware filter, and it shares nothing with the main processor. The encryption keys are managed by the Secure Enclave, while the AES operations themselves are handled by an integrated hardware engine in the SoC’s storage controller.&lt;/p&gt;
&lt;p&gt;What it stores and manages:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Biometric Data&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fingerprints (Touch ID): transformed into encrypted mathematical representations, stored in the Secure Enclave, never accessible outside&lt;/li&gt;
&lt;li&gt;Face ID (on iPhones, not yet on Macs): same principle, the face data stays in the Secure Enclave&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Encryption Keys&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The master key for FileVault (disk encryption)&lt;/li&gt;
&lt;li&gt;The keys for the iCloud keychain&lt;/li&gt;
&lt;li&gt;The keys for decrypting Apple Pay tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;System Secrets&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;UID&lt;/strong&gt; (Unique ID) key: etched into the Secure Enclave at manufacture, never readable, not even by Apple or you&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The core mechanism: &lt;strong&gt;the Secure Enclave never gives you its keys&lt;/strong&gt;. It performs cryptographic operations at your request, but the keys don’t leave. When you unlock your Mac with your fingerprint, the Secure Enclave verifies the match and authorizes the operation, without the raw fingerprint or the encryption key ever leaving the Secure Enclave.&lt;/p&gt;
&lt;p&gt;It’s the difference between “hold this key for me and give it to me when I ask” and “use this key for me, I don’t want it”. The Secure Enclave is the second model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FileVault on Apple Silicon: Encryption Always On&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On an Apple Silicon Mac, FileVault uses &lt;strong&gt;XTS-AES-256&lt;/strong&gt; encryption accelerated by hardware.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encryption is permanent&lt;/strong&gt;. Internal storage is always encrypted at the hardware level, even if FileVault is turned off in preferences. What FileVault does on top is protect the decryption key behind your user password. Without FileVault enabled, the key is accessible at startup. With FileVault, the key is wrapped in another key derived from your password + the Secure Enclave.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remove the SSD, it’s useless&lt;/strong&gt;. The decryption key is tied to the chip + password pair. An SSD removed from an Apple Silicon Mac is unreadable on another machine because the other machine’s Secure Enclave doesn’t have the right UID key. Even Apple can’t recover these data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;. Encryption/decryption happens in the integrated memory controller. Zero impact on performance. You have no reason to disable FileVault on Apple Silicon.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Practical note: if you lose both your password and your FileVault recovery key, your data is permanently lost. That’s not a bug. That’s correct encryption implementation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Secure Boot in a Chain&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apple Silicon implements a chained boot process where each link verifies the next:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-light&quot; style=&quot;background-color:#fff;color:#24292e; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;BootROM (immutable, on the chip)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    → verifies → Low-Level Bootloader (LLB)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        → verifies → iBoot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            → verifies → macOS kernel&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                → verifies → system extensions&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;BootROM&lt;/strong&gt; is the absolute anchor. It’s physically etched into the chip at manufacture, impossible to modify, impossible to flash, impossible to logically corrupt. It’s the root of the entire trust chain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Three Security Modes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;macOS offers three levels in the Startup Options (hold the power button at startup on Apple Silicon):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full Security&lt;/strong&gt; (default): only the version of macOS signed by Apple. That’s the mode for 99% of users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reduced Security&lt;/strong&gt;: macOS + signed third-party extensions. For developers, kernel hackers, virtualization tools, security solutions like Acronis.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Permissive Security&lt;/strong&gt;: everything, including unsigned code. For security researchers and kernel hackers.&lt;/p&gt;
&lt;p&gt;These three modes control what’s allowed to touch the macOS kernel. The kernel is the heart of the system: it manages memory, processes, hardware access. A malicious software that installs at the kernel level has total control over your machine, invisible to traditional antivirus. That’s why Apple locks down so tight by default.&lt;/p&gt;
&lt;p&gt;The default is Full Security. If you don’t have a specific reason to change it, don’t change it. Certain security software like Acronis Cyber Protect need kernel extensions to function (low-level disk access for backup, real-time surveillance), which requires switching to Reduced Security. That’s a reasonable compromise: you open the door to signed extensions to reinforce your security from another angle.&lt;/p&gt;
&lt;p&gt;The difference with Intel: on old Macs, changing the security mode required a firmware password. On Apple Silicon, it’s linked to the &lt;strong&gt;Apple ID tied to the machine&lt;/strong&gt;, adding another layer that ties the machine to an identity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KIP and PAC: Kernel Protections&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Two lesser-known protections that close entire classes of attacks:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kernel Integrity Protection (KIP)&lt;/strong&gt; prevents any modification of the macOS kernel while it’s running. Even with root access, even with elevated privileges: the kernel code in memory is protected from writing by the hardware. An entire category of attacks that involved injecting malicious code into a Mac’s running kernel is structurally impossible on Apple Silicon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pointer Authentication Codes (PAC)&lt;/strong&gt; is an ARM architecture feature that Apple has aggressively implemented. Each function pointer is cryptographically signed. Before using a pointer, the processor verifies its signature. If someone’s modified it to redirect execution to malicious code, the verification fails and the system crashes cleanly. That blocks &lt;strong&gt;ROP&lt;/strong&gt; (Return-Oriented Programming) and &lt;strong&gt;JOP&lt;/strong&gt; (Jump-Oriented Programming) attacks, two of the most used exploitation techniques since 2000.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;What It Actually Changes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Real-life Scenarios&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario: theft&lt;/strong&gt;. The thief disassembles the SSD and connects it to another Mac: unreadable. They try to reactivate the machine: blocked by the Activation Lock, tied to your Apple ID. They send the SSD to a specialized lab: unreadable, the UID key is tied to &lt;em&gt;your&lt;/em&gt; Secure Enclave, not the SSD. Your data is cryptographically dead to anyone without your password.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario: judicial request&lt;/strong&gt;. An authority asks Apple for access to your data. Apple can’t provide it, structurally, not legally. The decryption key isn’t on their servers. It’s in your Secure Enclave, tied to your password. It’s a technical impossibility.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario: raid&lt;/strong&gt;. Machine seized while running, session locked: inaccessible without your password. Machine powered off: the SSD is inert without the correct Secure Enclave + password.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What that implies in return&lt;/strong&gt;. If you lose both your password &lt;em&gt;and&lt;/em&gt; your FileVault recovery key, your data is permanently lost. That’s not “hard to recover”. Lost. That’s the direct consequence of this level of security.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No Equivalent Among Competitors&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On Windows, &lt;strong&gt;BitLocker stores a copy of the recovery key on Microsoft’s servers by default&lt;/strong&gt;, meaning a judicial request to Microsoft could succeed. On standard PCs, hardware encryption depends on the manufacturer’s implementation, with huge variance in quality. On Linux, dm-crypt is solid but requires explicit configuration, it’s not active by default.&lt;/p&gt;
&lt;p&gt;Apple Silicon is currently the only major manufacturer to offer this level of hardware encryption &lt;strong&gt;by default, without third-party software, without additional configuration, without performance degradation&lt;/strong&gt;, and with an architecture that makes data recovery impossible even for Apple itself.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;macOS Tahoe / Sequoia: What’s Changed in Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tahoe (26.x) is the current version of macOS since September 2025, currently at 26.4. The points below apply to Sequoia and Tahoe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apple Intelligence on-device&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apple’s language models run entirely on the Neural Engine of the chip, in a sandboxed environment separate from the rest of the system. When Apple says “private cloud compute” for heavier requests, it’s an advanced architecture where requests are encrypted in transit, processed in secure enclaves that even Apple can’t inspect, and deleted after processing. Apple admits that end-to-end encryption isn’t possible for this type of remote calculation, the model relies on cryptographic verifiability and public auditing of the server code. It’s not like sending your request to OpenAI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lockdown Mode strengthened&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The extreme security mode for high-risk users has received additional restrictions on system APIs accessible to apps and on network features. Not relevant for daily use, but good to know if you’re working in a high-risk context. Basically, Western journalist on assignment in China, or US whistleblower.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;System Integrity Protection (SIP) evolves&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SIP continues to strengthen. On Tahoe, several additional system paths are protected from writing, even root can’t modify these folders without disabling SIP at startup (which requires physical access to the machine).&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Limits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Secure Enclave and Apple Silicon architecture are impressive. They don’t do everything.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Network&lt;/strong&gt;. Your chip doesn’t know what’s happening on your network. An unsecured DNS reveals every site you visit to your ISP, even on an M4 Mac. A VPN and encrypted DNS are still necessary.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/&quot;&gt;Why You Need a VPN&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Third-party Apps&lt;/strong&gt;. An app you download and give permissions to can collect whatever it wants within its scope. The Secure Enclave protects what it controls. It doesn’t control what the Weather app does with your location.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Social Engineering&lt;/strong&gt;. Your iCloud credentials entered on a clone site of the Apple page, that’s your problem. The most secure chip in the world can’t do anything about that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An Unattended Mac&lt;/strong&gt;. Encryption protects data at rest, when the Mac is powered off or locked. Once unlocked, data is accessible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Default System Settings&lt;/strong&gt;. The hardware architecture is solid. The software settings, less so, as seen in the article &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;Privacy macOS&lt;/a&gt;. The best SoC in the world with Siri listening in and analytics enabled, it’s a nice car with the windows open.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;In Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Apple Silicon is a real security advancement at the hardware level. The integrated SoC, the isolated Secure Enclave, the boot chain verified from an immutable BootROM, KIP, PAC: these are serious architectural protections that close entire classes of attacks. For an independent or small business handling client data, payments, sensitive information, switching to Apple Silicon is a rational security decision.&lt;/p&gt;
&lt;p&gt;But hardware isn’t everything. It creates the foundations. Software configuration, network habits, and access management, that’s what you build on top. Great foundation + cardboard walls = cardboard house anyway.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure Enclave&lt;/strong&gt;: protects your biometric keys, FileVault, Apple Pay. Limitation: doesn’t cover third-party apps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FileVault + Secure Enclave&lt;/strong&gt;: protects against theft and physical seizure. Limitation: useless if the machine is unlocked.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure Boot&lt;/strong&gt;: guarantees integrity at startup. Limitation: doesn’t protect running apps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KIP&lt;/strong&gt;: blocks kernel modifications. Limitation: doesn’t cover application vulnerabilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PAC&lt;/strong&gt;: blocks ROP/JOP attacks. Limitation: complicates exploitation, doesn’t eliminate it entirely.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lockdown Mode&lt;/strong&gt;: software layer that complements hardware protection by disabling most exploited attack surfaces (JIT WebKit, WebAssembly, complex parsers). Available on macOS since Ventura and iOS since iOS 16. To date, zero documented compromises by mercenary spyware on a device with Lockdown Mode active. Limitation: sacrifices performance and certain features to reduce the attack surface. &lt;em&gt;&lt;a href=&quot;https://macsouverain.com/en/lockdown-mode-face-a-coruna-toolkit-espionnage-gouvernemental&quot;&gt;Details in our dedicated article.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Memory Encryption&lt;/strong&gt;: protects against cold boot attacks on RAM. Limitation: doesn’t protect against logical software access.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>mac</category><category>securite</category><category>apple-silicon</category><category>hardware</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-silicon-nb.png" length="0" type="image/png"/></item><item><title>What&apos;s digital sovereignty and how to practice it</title><link>https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/</link><guid isPermaLink="true">https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/</guid><description>Digital sovereignty isn&apos;t some abstract concept. It&apos;s about deciding who gets access to your data, where it lives, and what happens if a provider vanishes.</description><pubDate>Tue, 24 Mar 2026 17:41:41 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The term “digital sovereignty” can sound scary. You might think of conferences in Brussels, debates on the European cloud, 300-page reports that no one reads. And yes, that exists. But it’s not what directly concerns you.&lt;/p&gt;
&lt;p&gt;What concerns you is the everyday version of the problem: who has access to your files, who can read your emails, and what happens when a service you rely on closes or decides you’re no longer welcome. This article sets the stage, jargon-free.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you delegate without knowing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let’s take a concrete example. You use Gmail. It’s free, it’s convenient, it works.&lt;/p&gt;
&lt;p&gt;Here’s what you agreed to by checking “I accept the terms”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google analyzes your emails.&lt;/strong&gt; For years, Google scanned the content of your messages to target ads. They stopped in 2017, not because they had to legally, but because they had enough data elsewhere. Your emails remain analyzed by their algorithms (spam, AI, automatic sorting), stored on their servers, and subject to American law.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google can close your account.&lt;/strong&gt; For violating terms of service (real or supposed), prolonged inactivity, or an algorithmic decision. Forums are full of stories of people who lost access to 15 years of emails overnight. With only a complaint form and a bot wishing you a good day as recourse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google is subject to American law.&lt;/strong&gt; A federal court, a National Security Letter, a FISA request, and your data is accessible to the American government. Without any obligation to notify you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You don’t have a backup.&lt;/strong&gt; If you don’t make one yourself, your emails exist in only one place: Google’s servers. If access is lost, everything is lost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And Gmail is just one example. Replace it with Google Drive, Dropbox, Slack, Notion: the pattern is the same. You use a service without controlling the conditions.&lt;/p&gt;
&lt;p&gt;Small nuance: not all providers are the same. Apple, for example, allows for end-to-end encryption of iCloud via Advanced Data Protection (which needs to be manually enabled), and its business model relies mainly on hardware and services, even if its advertising revenues are growing. It’s better than Google on privacy. But your data remains on their servers, subject to American law, and Apple can still disable your account. Better doesn’t mean truly sovereign.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Three questions to ask about each of your tools&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For an independent or small business, digital sovereignty boils down to three questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Who controls your data?&lt;/strong&gt; You, or a provider who could change their terms tomorrow?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Where are they stored?&lt;/strong&gt; In a jurisdiction that protects your privacy, or in a country where a government can demand access without notifying you?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens if the service closes or cuts off your access?&lt;/strong&gt; Do you have a Plan B, or is it total shutdown?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you can’t answer these three questions for each of your critical tools - email, storage, passwords, communication - then you’re not sovereign. You’re a tenant. With a lease that can be terminated without notice.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Mechanism&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sovereignty is a spectrum&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;No one is 100% sovereign. It’s neither realistic nor necessary. The goal isn’t to self-host everything in a submarine: it’s to make conscious choices.&lt;/p&gt;
&lt;p&gt;There’s a spectrum:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 0, all with GAFAM.&lt;/strong&gt; Gmail, Google Drive, Chrome. You control nothing, you pay nothing in cash. In fact, your data is the product. It’s not encrypted, your provider can read it, and they can be forced to hand it over to a government without even notifying you. And it’s not just Google: Microsoft with Outlook and OneDrive, Amazon with Alexa, same pattern. Servers you don’t control, and a right to look into your digital life that you gave up with one click, because their terms were written to confuse you. As for Meta, WhatsApp encrypts your messages, but collects who you call, when, and where. The content is protected, but the rest of your digital life, much less so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And if you’re all Apple?&lt;/strong&gt; It’s a significant step up. Apple doesn’t live off your data and takes privacy more seriously than its competitors. Advanced Data Protection encrypts a lot of iCloud end-to-end, but not everything: Mail, Contacts, and Calendar remain accessible on the server side. And above all, your data is on servers subject to American law, and you entrust everything to a single provider. If your Apple ID gets blocked, even temporarily, it’s email, photos, passwords, and apps that become inaccessible all at once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 1, privacy-first alternatives.&lt;/strong&gt; You migrate to services that respect your privacy by design. Proton Mail instead of Gmail. Proton Drive or encrypted storage instead of Google Drive. A dedicated password manager instead of the browser’s password manager. Brave or Firefox instead of Chrome. A VPN so your ISP stops profiling your browsing. You’re still hosted, but by providers whose business model aligns with privacy and your interests, not against them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 2, mastered hybrid.&lt;/strong&gt; You keep control of what’s critical: NAS for your files, Nextcloud for collaboration, local password manager. For what requires high availability, you choose trusted third parties aligned with privacy: Proton for email, an European host for encrypted multi-site backup. You control your DNS, you have a VPN, and you know exactly where each piece of data lives.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Level 3, complete infrastructure.&lt;/strong&gt; Dedicated server or VPS, secure mesh network, self-hosted files and messaging, all end-to-end encrypted. Your backups are distributed across multiple geographic sites. You no longer depend on anyone to access your data, and if a data center burns down, everything is replicated elsewhere. That’s what I do. It’s excessive, perhaps, for most individuals, but desirable for an entrepreneur concerned about business continuity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The right level is the one that corresponds to your real risk and the time you want to spend on it.&lt;/strong&gt; For most independents, level 1 is a massive improvement. Level 2 is ideal. Level 3 is real security for business.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The concrete pillars&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Email.&lt;/strong&gt; It’s the entry point for everything. Your email is your online identity, your account recovery key, your primary communication thread. The minimum: a provider that encrypts end-to-end, based in a solid jurisdiction. &lt;a href=&quot;https://proton.me/mail&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton Mail&lt;/a&gt; is the obvious choice, E2EE, based in Switzerland, open source, audited by third parties. &lt;a href=&quot;https://tuta.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Tuta&lt;/a&gt; (formerly Tutanota), based in Germany and open source, is a credible alternative.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/apple-mail-vs-gmail-vs-proton-mail/&quot;&gt;Apple Mail vs Gmail vs Proton Mail, the honest comparison&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;VPN.&lt;/strong&gt; Not to “become totally anonymous”, but to prevent your ISP from profiling your browsing and protect against malicious acts on public networks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/&quot;&gt;Why you need a VPN and how to choose one&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Storage.&lt;/strong&gt; Your files must be encrypted and under your control. iCloud with Advanced Protection enabled is already end-to-end encrypted: it’s a good start if you’re in the Apple ecosystem. To go further: Proton Drive (native E2EE, Swiss jurisdiction) or your own NAS with remote backup.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Passwords.&lt;/strong&gt; A dedicated manager. Apple’s built-in Passwords app (introduced with macOS Sequoia) is already a good starting point, encrypted, integrated, free. But if you want multi-platform or team sharing, consider 1Password, Bitwarden, or KeePassXC.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Private network (mesh network).&lt;/strong&gt; If you work from multiple locations or have a NAS, a server, distributed machines, you need to connect them securely. A mesh network like Tailscale creates a private, encrypted network between all your devices, wherever they are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DNS.&lt;/strong&gt; The weak link that everyone forgets. Your DNS queries pass in plaintext by default, your ISP sees every site you visit. DNS-over-HTTPS (DoH), DNS-over-TLS (DoT), or local DNS changes everything.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;What It Changes in Practice&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where to start&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re starting from scratch, here’s the order that makes the most difference with the least effort:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lock down macOS.&lt;/strong&gt; 15 minutes, zero tools to install. -&gt; &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;Privacy macOS: the settings to change immediately&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install a VPN.&lt;/strong&gt; One app, one click. -&gt; &lt;a href=&quot;https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/&quot;&gt;Why you need a VPN and how to choose one&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migrate your email.&lt;/strong&gt; The biggest task, but the most impactful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Manage your passwords.&lt;/strong&gt; A manager + unique passwords everywhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Take back control of your files.&lt;/strong&gt; Encrypted storage + backup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connect your machines.&lt;/strong&gt; A mesh network to access everything, everywhere, securely.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each step is an article on MacSouverain. You progress at your own pace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What it protects (and what it doesn’t)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Digital sovereignty doesn’t protect you from everything. It doesn’t protect against a weak password, well-targeted phishing, or human error. It doesn’t guarantee that your privacy-first providers won’t ever go bankrupt or change their terms.&lt;/p&gt;
&lt;p&gt;What it does: it reduces your dependence on a single provider, increases your ability to react if something goes wrong, and gives you a decision-making framework for every tool you add to your stack.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Limits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It’s not excessive&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There’s a trap to avoid: sliding into total paranoia. Wanting to self-host everything, refusing all third-party services, spending weekends configuring servers to replace tools that worked perfectly well.&lt;/p&gt;
&lt;p&gt;Digital sovereignty is a slider, not a switch. Moving it from “zero control” to “reasonable control” makes a huge difference. Moving it from “reasonable control” to “operational paranoia” has diminishing returns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compromises are inevitable&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You’ll probably still use some cloud services. The important thing is knowing which ones, why, and having an exit plan. Using iCloud for your vacation photos is an acceptable compromise. Storing your business contracts exclusively on Google Drive without a local backup is an uncontrolled risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Technique isn’t everything&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The best encryption in the world doesn’t protect against a collaborator sending a sensitive file on WhatsApp. Digital sovereignty includes a human dimension: raising awareness, training, defining clear rules.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;In Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Digital sovereignty isn’t a political concept for Brussels conferences. It’s a very practical approach: knowing where your data is, who can access it, and what happens if things go wrong. It’s practiced in progressive levels, from the simplest (migrating to an encrypted email provider) to the most advanced (self-hosted infrastructure).&lt;/p&gt;
&lt;p&gt;Your data, clients, invoices, contracts, exchanges, are the heart of your business. Leaving them in the hands of a third party without a backup or Plan B is like leaving the keys to your office in the lock when you leave at night. It’ll probably work. Until the day it doesn’t. Start at level 1: it’s already a massive improvement. The rest will come naturally.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>privacy</category><category>souverainete</category><category>macos</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-souverainete.png" length="0" type="image/png"/></item><item><title>Why you need a VPN and what it actually does</title><link>https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/</link><guid isPermaLink="true">https://macsouverain.com/en/pourquoi-tu-as-besoin-dun-vpn/</guid><description>Your ISP, or an attacker on a public network, sees every site you visit. A VPN changes that. But it also has its limits.</description><pubDate>Tue, 24 Mar 2026 12:16:03 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Open your Mac. Launch Safari. Go to any site. While the page loads, your ISP logs the domain, the time, your IP address, and the amount of data exchanged. Not out of curiosity. Because that’s how the network works, and in most jurisdictions, it’s allowed or required.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A VPN doesn’t make you invisible. It doesn’t turn your Mac into a digital fortress. But it solves a specific, real problem: preventing third parties from snooping on your browsing and potential malicious activities without your knowledge. This article explains how, why, and especially where it stops.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;your-isp-sees-everything-almost&quot;&gt;&lt;strong&gt;Your ISP Sees Everything (Almost)&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;When you type a URL into your browser, here’s what your ISP sees, even if the site uses HTTPS:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Your IP address&lt;/strong&gt;, which is basically you, at your physical address&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The domain you’re visiting&lt;/strong&gt;. DNS resolution happens in the clear on most networks (Chrome and Firefox can encrypt DNS via DNS over HTTPS, but it’s not universal, it depends on your configuration and region)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The time and frequency&lt;/strong&gt; of your connections&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The amount of data&lt;/strong&gt; exchanged&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HTTPS encrypts the content of pages. Not the metadata. And metadata is often more revealing than content itself. Regular calls to a labor law specialist lawyer say more than the conversation itself.&lt;/p&gt;
&lt;p&gt;In Europe, ISPs keep this metadata for several months to two years, depending on the country. In France, the law requires a one-year retention period (a controversial framework at the European level but maintained in France). In the US, in 2016 the FCC adopted rules requiring ISPs to protect your browsing data. In 2017, Congress repealed them before they took effect. Result: no obligation to protect, ISPs do what they want with your metadata. It’s not a dystopia, it’s the legal framework in effect.&lt;/p&gt;
&lt;h3 id=&quot;public-wi-fi-is-worse&quot;&gt;&lt;strong&gt;Public Wi-Fi is Worse&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;At a café, hotel, airport: the network isn’t owned by someone trustworthy. Anyone on this network, or its manager, can observe the domains you’re visiting, launch man-in-the-middle attacks on poorly configured connections, or serve you a fake captive portal that looks exactly like your bank’s page.&lt;/p&gt;
&lt;p&gt;HTTPS protects content. Not your IP address. Not the domains you visit. And not against a malicious Wi-Fi access point that mimics the “Starbucks_Free” network nearby.&lt;/p&gt;
&lt;h3 id=&quot;its-not-paranoia&quot;&gt;&lt;strong&gt;It’s Not Paranoia&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;If you’re self-employed, freelance, or run a small business, your browsing habits reveal your clients, suppliers, strategic research, and legal concerns. It’s intelligence economics served on a platter. For free.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/quest-ce-que-la-souverainete-digitale-en-pratique/&quot;&gt;What Digital Sovereignty Means in Practice&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Mechanism&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;A VPN (Virtual Private Network) creates an encrypted tunnel between your device and a remote server. All your internet traffic goes through this tunnel before reaching its destination.&lt;/p&gt;
&lt;p&gt;When you connect to a VPN:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Your Mac establishes an encrypted connection&lt;/strong&gt; with a VPN server (located in the country of your choice)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your DNS requests and web traffic&lt;/strong&gt; travel inside this tunnel, unreadable to anyone between you and the server&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The VPN server makes requests on your behalf&lt;/strong&gt; to the sites you’re visiting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The sites see the IP address of the VPN server&lt;/strong&gt;, not yours&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Simple analogy: instead of sending a letter with your name and address on the envelope, you hand it to a trusted intermediary who re-sends it from their own office. The recipient gets the letter, but they don’t know where it’s from. And the mail carrier who transported it between you and the intermediary can’t open it, it’s sealed.&lt;/p&gt;
&lt;h3 id=&quot;protocols-not-all-equal&quot;&gt;&lt;strong&gt;Protocols: Not All Equal&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Under the hood, a VPN uses an encryption protocol. The three you’ll encounter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.wireguard.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;WireGuard&lt;/a&gt;&lt;/strong&gt;, the modern standard. Minimalistic code (a few thousand lines), fast, auditable. That’s what you want.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://openvpn.net&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;OpenVPN&lt;/a&gt;&lt;/strong&gt;, the veteran. Reliable, proven, but heavier (tens of thousands of lines) and slower than WireGuard. Still very common.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IKEv2/IPSec&lt;/strong&gt;, supported natively by macOS, making it a solid choice on a Mac without installing third-party apps. Stable, quick to reconnect when you change networks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The trend is clear: WireGuard is becoming the reference protocol. If your VPN provider doesn’t offer it, it’s a red flag.&lt;/p&gt;
&lt;h3 id=&quot;why-its-designed-this-way&quot;&gt;&lt;strong&gt;Why It’s Designed This Way&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The VPN wasn’t invented for privacy. Originally, it’s a tool for businesses: allowing remote employees to access the internal network as if they were in the office. The encrypted tunnel between two points is the founding concept.&lt;/p&gt;
&lt;p&gt;The “privacy” use is an adaptation. Instead of connecting an employee to their company, you connect an individual to an intermediate server to hide their traffic from their ISP. The mechanism is the same. The intention has changed.&lt;/p&gt;
&lt;p&gt;This is important to understand because it explains the limits: a VPN does very well what it was designed for, creating a secure channel between two points. It doesn’t do the rest.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;What It Changes in Practice&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;before--after&quot;&gt;&lt;strong&gt;Before / After&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Without a VPN:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your ISP sees all the domains you visit and can profile your habits&lt;/li&gt;
&lt;li&gt;On public Wi-Fi, your traffic is exposed to local snoopers and potential malicious activities&lt;/li&gt;
&lt;li&gt;Sites see your real IP address and your geographical location&lt;/li&gt;
&lt;li&gt;Your DNS requests pass in the clear (Chrome and Firefox can encrypt via DoH, but it’s not guaranteed depending on your configuration)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;With a VPN:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your ISP only sees encrypted traffic to a single server, zero visibility on your browsing&lt;/li&gt;
&lt;li&gt;On public Wi-Fi, the encrypted tunnel makes your traffic unreadable to the local network and therefore immune to attacks or data siphoning&lt;/li&gt;
&lt;li&gt;Sites see the IP address of the VPN server, not yours&lt;/li&gt;
&lt;li&gt;Your DNS requests are resolved by the VPN server, not your ISP&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;real-life-use-cases&quot;&gt;&lt;strong&gt;Real-Life Use Cases&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Working from public places.&lt;/strong&gt; If you work regularly from cafés, coworking spaces, hotels, or airports, a VPN is cheap insurance. It’s the layer of protection between you and a network you don’t control.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Preventing your ISP from profiling you.&lt;/strong&gt; You might not have anything to hide. But that’s not the point. The point is: why should your ISP be able to build a complete profile of your browsing habits, and in some cases sell it?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keeping a stable IP address while traveling.&lt;/strong&gt; If you work in several countries, some services behave differently, or even block you, if your IP address changes jurisdictions every couple of days. A VPN lets you appear to be in a fixed country, no matter where you are physically.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bypassing censorship.&lt;/strong&gt; In some countries, entire parts of the internet are blocked. A VPN lets you access them. It’s less a use case for freelancers in Europe and more about freedom of information, but it’s worth mentioning.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Limits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is where most affiliate sites turn a blind eye.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A VPN doesn’t make you anonymous.&lt;/strong&gt; If you’re logged into Google, Facebook, your Apple account, they know who you are, VPN or not. The VPN hides your IP address at the network level. It doesn’t hide your identity at the application level. You log in with your credentials? The VPN doesn’t change anything. If you want real anonymity (and you know why), it’s &lt;a href=&quot;https://www.torproject.org&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Tor&lt;/a&gt; you need, and that’s another topic, with other compromises.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A VPN doesn’t protect against malware.&lt;/strong&gt; If you download an infected file, the VPN doesn’t care. It encrypts the transport, not the content. A VPN isn’t an antivirus, not a firewall, not an anti-phishing filter (even if some providers integrate a DNS blocker, it’s a bonus, not a guarantee).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The VPN changes the intermediary. It doesn’t remove the intermediary.&lt;/strong&gt; Without a VPN, your ISP sees your traffic. With a VPN, it’s the VPN provider that sees it. That’s why choosing the provider is critical: audited no-logs policy, open-source code, solid jurisdiction. If your VPN provider keeps logs or cooperates with intelligence agencies, you’ve just replaced one problem with another.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Free VPNs are (almost always) the problem, not the solution.&lt;/strong&gt; If the service is free and the company isn’t a non-profit, your traffic is probably what they’re monetizing. Hola was caught selling its users’ bandwidth as a botnet, SuperVPN let millions of users’ data leak despite a “no-logs” policy. You’d be solving one problem by creating a worse one. The only notable exception: free tiers of paid providers (&lt;a href=&quot;https://protonvpn.com&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Proton VPN&lt;/a&gt; free, for example), funded by paying customers, not your data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A VPN doesn’t bypass all geographical restrictions.&lt;/strong&gt; Netflix, Disney+, and streaming platforms have become very effective at detecting and blocking VPN server IP addresses. It works sometimes, it doesn’t work other times, and it can change from one day to the next. If your main use is geo-blocked streaming, adjust your expectations.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;In Summary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A VPN creates an encrypted tunnel between your device and a remote server. Your ISP no longer sees what you’re doing online, your real IP address is masked, and your traffic is protected from attacks on public networks. It’s not a magic armor, it’s a precise tool for specific problems, with clear limits: it doesn’t make you anonymous if you’re logged into Facebook or Instagram, it doesn’t block malware, and it shifts your trust to a provider you need to choose carefully.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In Practice:&lt;/strong&gt; if you work from public places, travel regularly, or the idea of your ISP building a complete profile of your browsing habits bothers you, a VPN is a very reasonable investment given the protection it provides. The choice of provider (audited no-logs policy, open-source code, jurisdiction outside surveillance alliances) will make all the difference between real protection and security theater. We’ll detail exactly how to choose, criteria, comparison, recommendations, in &lt;em&gt;a future dedicated article&lt;/em&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Read: &lt;a href=&quot;https://macsouverain.com/en/privacy-macos-les-parametres-a-changer-immediatement/&quot;&gt;Privacy macOS: The Settings to Change in 15 Minutes&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Technical terms? &lt;a href=&quot;https://macsouverain.com/en/glossaire/&quot;&gt;Check the glossary.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</content:encoded><dc:creator>Mac Souverain</dc:creator><category>vpn</category><category>privacy</category><category>securite</category><category>informatif</category><enclosure url="https://macsouverain.com/content/images/2026/04/feature-vpn-nb.png" length="0" type="image/png"/></item></channel></rss>