<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>sécurité - Tag - Jordan Chapuy - Blog d'un développeur passionné ❤️</title><link>https://jordanchapuy.com/tags/s%C3%A9curit%C3%A9/</link><description>sécurité - Tag - Jordan Chapuy - Blog d'un développeur passionné ❤️</description><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>Tue, 04 Aug 2026 14:36:56 +0200</lastBuildDate><atom:link href="https://jordanchapuy.com/tags/s%C3%A9curit%C3%A9/" rel="self" type="application/rss+xml"/><item><title>Évitez les skills IA malveillants, auditez-les automatiquement !</title><link>https://jordanchapuy.com/posts/2026/08/evitez-les-skills-ia-malveillants-auditez-les-automatiquement/</link><pubDate>Tue, 04 Aug 2026 14:36:56 +0200</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2026/08/evitez-les-skills-ia-malveillants-auditez-les-automatiquement/</guid><description><![CDATA[<p>On ne dirait pas comme ça car c&rsquo;est simplement du texte, mais les skills sont une belle porte d&rsquo;entrée pour des actions malveillantes. Ça me fait penser à OpenClaw. L&rsquo;outil a eu quelques débuts mouvementés côté sécurité, avec de nombreuses vulnérabilités dans son cœur, des CVE en veux-tu en voilà, mais ce n&rsquo;est pas tout. Son marketplace de skills est aussi une source importante de vulnérabilités. Sur 3984 skills scannés, <a href="https://snyk.io/fr/blog/toxicskills-malicious-ai-agent-skills-clawhub/" target="_blank" rel="noopener noreffer">les chercheurs de Snyk</a> ont relevés 1467 skills problématiques. On parle de <strong>plus d&rsquo;un skill sur 3</strong> !</p>
<p>Je prenais l&rsquo;exemple d&rsquo;OpenClaw, mais le sujet dépasse largement cet outil. Claude Cowork/Code, Chat GPT Codex et les autres agents deviennent vraiment intéressants dès qu&rsquo;on leur donne des outils, des skills, des données. Et c&rsquo;est aussi là qu&rsquo;ils peuvent potentiellement faire de très mauvaises choses si on leur donne de mauvaises instructions. Ils vont faire ce qu&rsquo;on leur dit, mais pas forcément ce que l&rsquo;on veut.</p>
<h2 id="un-skill-est-plus-que-du-texte">Un skill est plus que du texte</h2>
<p>Un skill se présente en général sous la forme d&rsquo;un <a href="https://jordanchapuy.com/posts/2026/07/apprendre-l-essentiel-du-markdown-en-5-minutes-guide/" rel="">fichier Markdown</a> <code>SKILL.md</code>. Il explique à l&rsquo;agent quoi faire pour réaliser une tâche, un processus. Ça a l&rsquo;air innocent. Après tout, c&rsquo;est juste du texte. Et effectivement, le skill seul n&rsquo;est pas un problème. Sauf que l&rsquo;<strong>agent IA, lui, est là précisément pour appliquer ces instructions</strong>, avec les outils, les données et les autorisations que vous lui avez accordés.</p>
<p>Un skill peut aussi embarquer des scripts, demander l&rsquo;installation de dépendances, télécharger d&rsquo;autres fichiers ou appeler des services externes. Il faut donc le considérer comme un élément de notre chaîne d&rsquo;approvisionnement logicielle. Un peu comme une dépendance npm ou un script trouvé sur GitHub. Ce n&rsquo;est pas une recette de cuisine inoffensive.</p>
<p>Pour vous donner quelques exemples de risques les plus évidents :</p>
<ul>
<li><strong>Le vol de secrets</strong> : lire des variables d&rsquo;environnement, des fichiers de configuration, des clés SSH ou des tokens, puis les transmettre ailleurs. Typiquement, on va essayer de vous voler vos clés d&rsquo;api Claude/OpenIA, et vous vous retrouverez à payer l&rsquo;usage d&rsquo;un autre.</li>
<li><strong>L&rsquo;exfiltration de données</strong> : envoyer le contexte de vos conversations, le contenu de fichiers ou des informations de votre projet vers un serveur externe.</li>
<li><strong>L&rsquo;exécution de code</strong> : vous faire lancer une commande shell, télécharger puis exécuter un script distant, ou installer une dépendance douteuse. Votre machine pourrait devenir vérolée, servir à faire des attaques DDoS, etc.</li>
<li><strong>L&rsquo;injection de prompt</strong> : cacher ou formuler des instructions pour que l&rsquo;agent contourne ses règles, élargisse son périmètre ou fasse quelque chose qui n&rsquo;a rien à voir avec la promesse du skill.</li>
</ul>
<p>Le plus vicieux, c&rsquo;est que ces éléments n&rsquo;ont pas besoin d&rsquo;être particulièrement cachés. Un <code>curl | bash</code> au milieu d&rsquo;une procédure d&rsquo;installation par exemple, une demande d&rsquo;accès trop large, ou une URL qui récupère un script peuvent déjà mériter d&rsquo;y prêter attention.</p>
<p>La plupart du temps, je crée mes propres skills (enfin, je fais créer) pour coller à mes usages. Mais il m&rsquo;arrive d&rsquo;en tester de sources externes. Dans ce cas, je préfère vérifier. C&rsquo;est rapide, et je m&rsquo;enlève un risque inutile.</p>
<h2 id="scanner-un-skill-avant-de-lutiliser">Scanner un skill avant de l&rsquo;utiliser</h2>
<p>Mon outil de référence aujourd&rsquo;hui est <a href="https://github.com/nvidia/skillspector" target="_blank" rel="noopener noreffer">SkillSpector</a>, un projet open source de NVIDIA. Il peut analyser un dépôt Git, un dossier, une archive ou un simple fichier <code>SKILL.md</code>, et remonte ensuite un score de risque et quelques explications pour attirer notre attention.</p>
<p>Il détecte par exemple les accès aux variables d&rsquo;environnement, les lectures de fichiers sensibles, les téléchargements et exécutions de scripts, le code obfusqué, les dépendances vulnérables, ou encore les tentatives de manipulation de l&rsquo;agent. Il va même chercher les caractères invisibles (oui, certains sont vicieux !). Pour les plus curieux, je vous invite à fouiller les documentations des outils (<a href="https://github.com/nvidia/skillspector#vulnerability-patterns" target="_blank" rel="noopener noreffer">README de SkillSpector par exemple</a>) pour découvrir les différentes catégories et attaques possibles, il y en a un paquet.</p>
<p>Je reviens à notre outil, SkillSpector. La version la plus simple fonctionne en <strong>analyse statique</strong> : elle lit les fichiers et cherche des comportements suspects. Ça tourne en local. Pas besoin de tokens, de clé d&rsquo;API, de compte ou d&rsquo;abonnement. Après installation de l&rsquo;outil, on peut par exemple scanner un dépôt avant même de l&rsquo;installer :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">skillspector scan https://github.com/user/awesome-super-skill --no-llm
</span></span></code></pre></div><p>Le <code>--no-llm</code> est important ici : il force ce mode local et statique. C&rsquo;est rapide, gratuit, et ça donne un premier filtre très utile. On peut également scanner un dossier sur notre machine, ou un fichier de skill directement. On a du choix.</p>
<p>Évidemment, un score faible ne transforme pas magiquement un skill en un truc sûr à 100 %. Le risque zéro n&rsquo;existe pas vraiment en terme de sécurité informatique. Mais c&rsquo;est un bon indicateur pour se questionner et nous aider à juger. À côté de ça, je vérifie aussi qui le maintient.</p>
<h2 id="quelques-alternatives-en-ligne">Quelques alternatives en ligne</h2>
<p>Si vous ne voulez rien installer, <a href="https://www.eset.com/us/home/ai-skills-checker/" target="_blank" rel="noopener noreffer">ESET AI Skills Checker</a> permet d&rsquo;analyser l&rsquo;URL d&rsquo;un skill <strong>depuis le navigateur</strong>. Pas déconnant de la part de ESET, que je connaissais historiquement pour les anti-virus. Leur approche inclut une analyse des liens externes et de la chaîne de téléchargement. Pratique pour une première vérification.</p>
<p>J&rsquo;ai aussi vu <a href="https://skill-spector.com/" target="_blank" rel="noopener noreffer">skill-spector.com</a>, un service web qui dit s&rsquo;inspirer de l&rsquo;approche de NVIDIA et génère des rapports d&rsquo;audit lisibles, avec score et points d&rsquo;attention. En revanche, <strong>faites attention à ce que vous envoyez à un service en ligne</strong> : pour un skill interne ou contenant des informations sensibles, je privilégierais un outil local.</p>
<h2 id="et-une-alternative-boite-à-outils">Et une alternative &ldquo;boite à outils&rdquo;</h2>
<p>Petite dernière proposition. Je suis aussi tombé sur <a href="https://github.com/runkids/skillshare" target="_blank" rel="noopener noreffer">skillshare</a> pendant mes recherches sur l&rsquo;audit de skill. Celui-ci peut être intéressant si vous avez certains usages autour des skills : il propose, en plus de l&rsquo;audit, de synchroniser vos skills entre Codex, Claude Code et beaucoup d&rsquo;autres outils.</p>
<h2 id="bref">Bref</h2>
<p>Les skills c&rsquo;est cool, mais c&rsquo;est aussi une potentielle porte d&rsquo;entrée pour des problèmes. Que ce soit volontairement malveillant ou non d&rsquo;ailleurs - un skill peut très bien avoir des vulnérabilités sans que l&rsquo;auteur en soit conscient.</p>
<p>Donc un peu comme on évite d&rsquo;installer des logiciels suspects sur notre machine sans creuser un minimum, on évite de télécharger des skills qui viennent de n&rsquo;importe où et n&rsquo;importe qui.</p>
]]></description></item><item><title>Sécurité, longévité et sobriété : ce que je configure juste après l'installation de Proxmox</title><link>https://jordanchapuy.com/posts/2026/03/securite-longevite-et-sobriete-ce-que-je-configure-juste-apres-l-installation-de-proxmox/</link><pubDate>Sat, 28 Mar 2026 20:04:24 +0100</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2026/03/securite-longevite-et-sobriete-ce-que-je-configure-juste-apres-l-installation-de-proxmox/</guid><description><![CDATA[<p><a href="https://jordanchapuy.com/posts/2026/03/mon-petit-homelab-proxmox-domotique-home-assistant/" target="_blank" rel="noopener noreffer">Installer Proxmox ne prend que 10 minutes</a>, mais le préparer pour qu&rsquo;il dure des années sans craindre des intrusions ou la perte des données demande un peu plus d&rsquo;attention. Avant de me jeter sur Home Assistant pour jouer avec la domotique, j&rsquo;ai voulu approfondir plusieurs thématiques pour être serein.</p>
<p>La <strong>sécurité</strong> pour dormir tranquillement sur mes deux oreilles (ou une seule si on dort de côté :)), la <strong>longévité</strong> pour que le matériel souffle un maximum de bougies et que le serveur reste stable, et la <strong>sobriété</strong> pour diminuer autant que possible l&rsquo;énergie consommée.</p>
<p>C&rsquo;est autour de ces trois piliers que j&rsquo;ai construits ma feuille de route « Post Install Proxmox ». Je la partage, et je détaillerais certaines parties dans des futurs articles dédiés.</p>
<h1 id="la-sécurité">La sécurité</h1>
<blockquote>
<p><em>Contre l’intrusion, des remparts tu dresseras.</em> — Yoda, maître DevSecOps dans une galaxie lointaine.</p>
</blockquote>
<p>Je n&rsquo;ai pas envie de m&rsquo;inquiéter alors que mon serveur va tourner potentiellement 24 heures sur 24 et sans ma présence. Je veux <strong>minimiser le risque</strong> et la <strong>surface d&rsquo;attaque</strong>. Pour cela, je vais appliquer plusieurs principes de sécurité :</p>
<ul>
<li>Le <strong>moindre privilège</strong>. Par défaut, aucun droit. Je donne le minimum nécessaire.</li>
<li>Le <strong>zero trust</strong>. Par défaut, pas de confiance. Même si ça vient de l&rsquo;intérieur (réseau local), je veux authentifier.</li>
<li>La <strong>multiplication des couches de défense</strong>. Rien n&rsquo;est infaillible. Je veux plusieurs niveaux de sécurité.</li>
</ul>
<h2 id="mettre-à-jour-proxmox">Mettre à jour Proxmox</h2>
<p>Tout d&rsquo;abord, <strong>on maintient à jour nos outils</strong> et Proxmox ne déroge pas à la règle. Je vais le faire tout de suite après l&rsquo;installation. Pour la première fois, c’est un peu particulier et je m&rsquo;appuie sur un script de la communauté.</p>
<p>Pourquoi un script ? Pour effectuer au passage quelques configurations nécessaires. Je veux par exemple désactiver le support entreprise et des services comme la haute disponibilité et ceph qui ne me sont pas utile pour mon serveur single-code.</p>
<p>Ce script vient d’un <a href="https://community-scripts.org/" target="_blank" rel="noopener noreffer">site communautaire</a> et on peut en trouver un tas d’autres pour ajouter facilement des containers ou addon, faites-y un tour ! Pour notre cas, on a simplement à taper une commande et se laisser guider par les questions :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">bash -c <span class="s2">&#34;</span><span class="k">$(</span>curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh<span class="k">)</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>S’il y a une erreur sur les repositories, on peut regarder la <a href="https://pve.proxmox.com/wiki/Package_Repositories" target="_blank" rel="noopener noreffer">documentation</a> pour modifier un fichier de configuration à la main.</p>
<p>Note : Attention avec les scripts, on ne fait pas confiance aveuglément. On regarde d’où ça vient, on regarde le code.</p>
<h2 id="microcode-update">Microcode Update</h2>
<p>Un processeur aussi se met à jour, même si c&rsquo;est souvent transparent avec des systèmes plus friendly. Les mises à jour nous intéressent car elles corrigent des <strong>bugs</strong>, améliorent la <strong>performance</strong> et la <strong>sécurité</strong>. Avec mon N100, il faut regarder du côté de Intel. On peut aussi passer par un script de la communauté qui gère Intel et AMD.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">bash -c <span class="s2">&#34;</span><span class="k">$(</span>curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/microcode.sh<span class="k">)</span><span class="s2">&#34;</span>
</span></span></code></pre></div><h2 id="firewall">Firewall</h2>
<p>Le pare-feu est essentiel pour <strong>fermer un maximum de porte d&rsquo;entrée</strong>s. Je vais l&rsquo;activer pour commencer, puis mettre une politique <code>Input DROP</code> par défaut - rien n&rsquo;est autorisé à entrer, le DROP étant au passage silencieux (le demandeur aura un timeout, mais il ne sait pas si c&rsquo;est parce qu&rsquo;il n&rsquo;y a personne ou s’il est rejeté).</p>
<p>J&rsquo;ai cependant besoin du port 22 pour SSH et du port 8006 pour accéder à l&rsquo;interface Web de Proxmox. Ces deux ports sont sensibles, ils correspondent à de l&rsquo;admin. Je vais les ouvrir mais avec des restrictions sur les IPs : je veux <strong>uniquement mon réseau local</strong>, j&rsquo;ai même envie de pousser plus loin, je vais restreindre uniquement à l&rsquo;IP de <strong>mon ordinateur personnel</strong>.</p>
<p>Ce sera la même logique pour les autres services, <strong>c&rsquo;est fermé par défaut</strong> et s’ils ont besoin d&rsquo;ouvrir des ports, ce sera sur mon réseau local voire limité à certains appareils. Il y a d&rsquo;ailleurs très peu de chance que j&rsquo;ouvre à l&rsquo;extérieur (à internet) un port, ce sera vraiment si le monde extérieur a besoin d&rsquo;y accéder.</p>
<p>Si c&rsquo;est seulement moi ou mon foyer qui veut accéder depuis l&rsquo;extérieur, je privilégierai des solutions plus sécurisées qui ne nécessite pas d&rsquo;ouvrir des ports. Par exemple, <code>tailscale</code> que l’on verra ensemble juste après.</p>
<p>Attention, il faut ajouter les règles pour autoriser nos IPs sur les ports concernés avant d’activer le firewall global, sinon on peut risquer de se retrouver bloquer à l’extérieur. (Proxmox empêche normalement cela en local, mais on ne sait jamais, et on n’est pas à l’abri que cela change sur une future version).</p>
<p>Au passage, je parlais du pare-feu de Proxmox mais je vérifie aussi comment est configuré ma box FAI : j’active le firewall si ce n’est pas le cas, et je n’ouvre a priori aucun port.</p>
<h2 id="second-admin">Second admin</h2>
<p>À cette étape, il y a déjà un utilisateur qui existe sur Proxmox et sur l’environnement Linux : root. Je pourrais tout faire avec, sans problème, mais je vais tout de même <strong>créer un second utilisateur</strong> que j’utiliserais pour me connecter plutôt que de passer par root. Attention, il faut le faire sur Proxmox ET sur le système, puis donner les privilèges.</p>
<p>D’un point de vue sécurité, on s’ajoute une barrière. L’utilisateur root a les pleins pouvoirs, on peut faire une mauvaise manipulation sans le vouloir ou exécuter un script malveillant. En passant par un autre utilisateur, <strong>on sera obligé d&rsquo;élever explicitement les privilèges</strong> (sudo) lorsqu&rsquo;il y en a besoin. On sera donc plus conscient de nos actions. Chaque élévation de privilège est en plus inscrit dans les logs, on pourra tracer.</p>
<p>On va aussi pouvoir mieux se protéger des tentatives d’intrusions extérieurs. Cet utilisateur est connu de tous, on pourra lui i<strong>nterdire l’accès SSH</strong>. Notre second admin, lui est inconnu. Il faudra trouver le couple username + pwd. Tant qu’à faire, je prendrais au passage un username qu’on ne peut pas déduire en me connaissant.</p>
<h2 id="lauthentification-multifacteur">L&rsquo;authentification multifacteur</h2>
<p>Un mot de passe, c&rsquo;est bien. J&rsquo;ai d&rsquo;ailleurs opté pour des mots de passe avec une très <strong>grande entropie</strong>. (Les password de longueur 8 avec caractères spéciaux, chiffres, maj/min, c’est nul)</p>
<p>Une authentification à multiples facteurs, c&rsquo;est encore mieux. Proxmox propose nativement depuis son interface la possibilité d&rsquo;<strong>activer le 2FA sur un utilisateur</strong>. Je vais le faire tout de suite, pour root et mon second admin.</p>
<h2 id="durcir-le-ssh">Durcir le SSH</h2>
<p>Le SSH, c&rsquo;est très puissant et donc très dangereux si quelqu&rsquo;un arrive à se connecter avec, il peut arriver à prendre le contrôle de notre machine. C’est aussi la porte d’entrée principale vers notre serveur, et il doit y avoir d’innombrable robots qui scannent internet en continu pour se connecter via SSH à des machines. Ça me semble vitale de durcir les règles et de ne pas me reposer sur celles générées par défaut.</p>
<p>Je ne veux <strong>pas de connexion via l’utilisateur root</strong> et je veux forcer l’utilisation des <strong>clés SSH</strong> (désactivation de l’authentification par password), par exemple. <strong>Changer le port</strong> par défaut (22) est une option à envisager pour rendre la tâche un peu plus difficile.</p>
<h2 id="bannir-automatiquement-des-ips">Bannir automatiquement des IPs</h2>
<p>Je commence à avoir plusieurs couches de sécurité, c&rsquo;est bien. Pour autant, je n&rsquo;empêche pas un bourrin de toquer en continu à mes portes avec des scripts automatiques ou des robots. C’est là qu’un système de bannissement par IP pourrait être intéressant.</p>
<p>S’il y a plusieurs échecs de connexions, je veux <strong>empêcher cette personne de recommencer</strong>. <code>Fail2ban</code> est très efficace pour cela. Je l’installe avec <code>apt install fail2ban</code> et je configure les prisons pour protéger mes services <code>sshd</code> et <code>proxmox</code>.</p>
<h2 id="le-piège-de-lipv6">Le piège de l’IPV6</h2>
<p>J&rsquo;ai grandi avec un Internet qui avait des IPV4 (et aussi des modem bruyants, mais ça c&rsquo;est autre chose :)). Nos box FAI avaient un bouclier, le NAT, pour rendre par défaut nos appareils inaccessibles depuis le monde extérieur. Aujourd&rsquo;hui, on a de l’IPV6 et nos box peuvent en attribuer à nos machines&hellip; et celles-ci peuvent être publiques.</p>
<p>Dit plus explicitement, <strong>tout internet peut venir parler directement à une machine ayant une adresse IPV6 publique</strong>. Il y a largement assez d’adresse pour attribuer une IPV6 à chaque PC, objets connectés, ou tout autre appareil en ayant besoin.</p>
<p>Pour réduire la surface d’attaque et l’exposition, je coupe l’IPV6 sur mon serveur. Je ne l’activerais que si nécessaire, voire uniquement pour la/les machines virtuelles qui en auraient besoin.</p>
<h2 id="accès-à-distance-sécurisé">Accès à distance sécurisé</h2>
<p>Avec toutes mes configurations actuelles, j&rsquo;ai mis énormément de barrières pour empêcher un accès depuis l&rsquo;extérieur. Mais si je veux moi-même y accéder sans être sur mon réseau local ? Premièrement, <strong>j&rsquo;y réfléchirai</strong>. Je me dis que l&rsquo;administration de mon serveur est plutôt une tâche que je ferais de chez moi, donc sur mon réseau <strong>local</strong>.</p>
<p>Mais si j&rsquo;ai quand même envie de le faire ? Ou si j&rsquo;ai envie d&rsquo;accéder à des services depuis l&rsquo;extérieur ? Comme Home Assistant pour la domotique, ça pourrait faire sens. Historiquement, on ouvrait des ports sur notre box, mais <strong>ce n&rsquo;est pas l&rsquo;option la plus sécurisée aujourd&rsquo;hui</strong>.</p>
<p>Je vais préférer passer par <code>Tailscale</code> qui ne nécessite aucune ouverture de port et ne rends pas mon serveur davantage sur internet. Je l’installe dans un container LXC si je veux isoler au maximum, ou directement sur l’hôte.</p>
<p>J&rsquo;ai vu aussi qu&rsquo;il y avait la possibilité de configurer un serveur <code>WireGuard</code> sur certaines box FAI, ça me semble être une alternative intéressante pour accéder à notre réseau local de manière sécurisée et sans augmenter la visibilité de notre serveur.</p>
<h2 id="nginx-reverse-proxy">nginx reverse proxy</h2>
<p>Quand on commence à avoir plusieurs services et qu’on a envie de partager l’accès à ses proches, l’ajout d’un reverse proxy est une option intéressante. On pourra avoir des adresses nommées, mais surtout, on aura <strong>une seule porte d’entrée</strong> et un seul port ouvert. Elle sera d’ailleurs sécurisée même si les services derrière ne le sont pas.</p>
<p>On peut également en profiter pour <strong>ajouter des règles globales</strong> (c’est notre point d’entrée, donc tous les services en profiteront) comme forcer le HTTPS et le 2FA partout. Un autre avantage : on <strong>cache l’architecture</strong> de notre serveur. On voit d’abord nginx, sans savoir ce qu’il y a derrière.</p>
<h2 id="certificat-valide">Certificat valide</h2>
<p>L’alerte <em>« Votre connexion n’est pas privée / sécurisée »</em> que le navigateur affiche quand on accède à l’interface web, c’est chiant non ? Oui, et ce n&rsquo;est pas qu&rsquo;esthétique.</p>
<p>J’ai envie d’ajouter un certificat valide pour <strong>garantir une connexion chiffrée</strong> entre mon navigateur et le service. On aura la capacité de voir s’il y a une tentative d’attaque de type <em>« Man-in-the-Middle »</em>, et puis, ce n’est pas très bon de s’habituer à ignorer des alertes de sécurité :)</p>
<p>Plusieurs options en fonction de notre configuration : via <code>Let’s Encrypt</code> avec un nom de domaine, via le reverse proxy, ou via <code>Tailscale MagicDNS</code>.</p>
<h2 id="vlan">VLAN</h2>
<p>Je n’ai <strong>pas la même confiance</strong> et la même exposition entre tous mes services et appareils (ex: mon PC, un service ouvert sur internet, ma console, des objets connectés, ….). Je ne veux pas qu’<strong>un appareil compromis</strong> sur mon réseau local puisse <strong>accéder à tout le reste</strong> de mon réseau.</p>
<p>En fonction de cette configuration d’appareils/services, je peux avoir envie de <strong>compartimenter au niveau du réseau en créant plusieurs VLANs</strong>. Par exemple, un VLAN IOT pour les objets connectés qui ont besoin d’accéder à leur cloud propriétaire douteux / auquel on a peu de confiance. Un VLAN pour les appareils sensibles. Un autre VLAN pour les services exposés sur internet, qui ne pourront pas rebondir sur les appareils sensibles s’il y a une intrusion.</p>
<h1 id="la-longévité">La longévité</h1>
<blockquote>
<p><em>Un serveur n&rsquo;est jamais en retard, ni en avance d&rsquo;ailleurs. Il est toujours là quand on a besoin de lui.</em> — Gandalf le Gris, mage du temps depuis 1970.</p>
</blockquote>
<p>J&rsquo;ai envie que mon serveur dure le plus longtemps possible. D&rsquo;une part en chouchoutant le plus possible chaque composant matériel pour <strong>allonger sa durée de vie</strong> ; je veux donc limiter au mieux l&rsquo;usure. Et d&rsquo;autre part en réglant les problèmes avant que le serveur ne tombe pour <strong>maximiser son uptime</strong> ; je veux donc être prévenu avant que les catastrophes arrivent.</p>
<p>Le SSD est le <strong>maillon faible</strong> de notre serveur. C&rsquo;est le composant qui peut s’user le plus vite et sur lequel on peut drastiquement réduire ou accélérer la chute. Pire encore si le stockage se fait sur une clé USB ou une carte SD (Raspberry Pi). Avec Proxmox et nos services, on va potentiellement <strong>écrire très fréquemment</strong>. C’est pour cela que la plupart de mes points ci-dessous se concentrent sur la réduction d&rsquo;écriture.</p>
<h2 id="faire-tampon-avec-la-ram">Faire tampon avec la RAM</h2>
<p>Certains services et particulièrement les logs vont écrire <strong>très fréquemment de toutes petites données</strong> sur le SSD. J&rsquo;ai envie de préserver mon disque en regroupant ces données dans de plus gros paquets en mémoire (une sorte de <strong>tampon</strong> / <strong>buffer</strong>) pour les écrire plus tard en une fois. On pourrait imaginer écrire toutes les heures ou toutes les six heures par exemple.</p>
<p>Attention à un effet de bord : s&rsquo;il y a une coupure de courant brutale, les logs en tampon seront <strong>perdus</strong>. Il faut l&rsquo;avoir en tête quand on choisit cette option et la fréquence d&rsquo;écriture du tampon.</p>
<p>Certains services peuvent être configurés nativement pour faire tampon, comme <code>RRDCached</code> pour les graphiques/statistiques de Proxmox. Et pour ceux qui ne proposent pas cette possibilité, on peut se servir de <code>tmpfs</code>, <code>Log2Ram</code>, ou <code>Folder2Ram</code>. On peut aller encore plus loin en regardant du côté du paramètre <code>commit</code> sur <code>/etc/fstab</code>.</p>
<h2 id="diminuer-la-quantité-de-logs">Diminuer la quantité de logs</h2>
<p>En plus de les grouper par paquets, on peut aussi tout simplement réduire les logs à écrire. Certains ne m&rsquo;intéressent pas (comme <code>High Availability</code> et <code>Corosync</code>, potentiellement aussi le datetime des accès fichier avec <code>noatime</code> / <code>relatime</code> dans <code>/etc/fstab</code>), je vais donc simplement les <strong>désactiver</strong>. D&rsquo;autres sont utiles mais trop bavards, je peux adapter la <strong>verbosité</strong> pour garder uniquement l&rsquo;essentiel (journald, fail2ban, smartd, &hellip;).</p>
<p>Je peux aussi diminuer la profondeur de <strong>l’historique</strong> en ne gardant par exemple que 7 jours plutôt que 30. Sur <code>journald</code>, on a deux paramètres intéressants : la durée max et la taille max.</p>
<h2 id="swap">SWAP</h2>
<p>Un système peut utiliser <strong>de l’espace sur le disque</strong> lorsqu’il n’y a <strong>pas assez de RAM disponible</strong>. En fonction de notre quantité de RAM et de l’usage de notre PC, on peut configurer à quel point le système va recourir au SWAP. De mon côté, j’ai envie de limiter au maximum son usage pour préserver le SSD, sachant que j’ai 16Go de RAM et très peu de services, eux-mêmes souvent en IDLE.</p>
<p>On peut régler ça avec le paramètre <code>swappiness</code> (agressivité du SWAP) dans <code>/etc/sysctl.conf</code>. C’est souvent à 60 par défaut, je peux le diminuer à 10 pour fortement limiter le SWAP. Il est conseillé de ne pas totalement couper le SWAP si on veut éviter un plantage (ex: un pic de consommation de RAM par une VM).</p>
<h2 id="compresser-la-ram">Compresser la RAM</h2>
<p>Et si on n’est parfois court en RAM et qu’on veut éviter le SWAP (ou en supplément) ? On peut installer et configurer <code>zRam</code> pour compresser une portion de notre RAM. C’est intéressant car avec un bon processeur, c’est toujours plus rapide que du SWAP sur SSD, et ça évite des écritures.</p>
<p>A priori, je n’en ai pas besoin avec mon contexte, tout comme le SWAP. Mais c’est une option intéressante à avoir en tête.</p>
<h2 id="trim">TRIM</h2>
<p>C’est normalement actif par défaut, mais autant en être sûr. Je vais vérifier que <strong>le service TRIM est bien actif</strong> sur Proxmox afin de faire le ménage sur les blocs à supprimer. Attention à également bien rendre possible le TRIM dans les options de disque de <strong>chaque future VM</strong> (option <code>discard</code> pour que l’ordre de nettoyage soit bien transmis à l’hôte).</p>
<h2 id="déporter-vers-un-autre-disque">Déporter vers un autre disque</h2>
<p>Je parle beaucoup d&rsquo;écriture sur le SSD depuis le début, mais ce n&rsquo;est pas obligatoire. On peut avoir un second disque interne (SSD ou HDD), ou un disque externe en USB, ou même du stockage distant type NAS ou cloud. Et pourquoi pas un mix de tout ça.</p>
<p>Avec ce type de configuration, j&rsquo;ai envie de préserver mon SSD principal qui contient le système en <strong>déportant des données</strong> de type logs, stats et backups <strong>sur un autre disque</strong>. Ce qui ne m’empêche pas d&rsquo;optimiser les écritures de ses autres disques ; c&rsquo;est <strong>complémentaire</strong>.</p>
<h2 id="monitoring-température">Monitoring température</h2>
<p>Quittons l&rsquo;univers des SSD pour aller vers le processeur, un autre composant que l&rsquo;on peut préserver. Son ennemi principal est la température, ou plus précisément, une <strong>température trop élevée</strong> ; chaque processeur ayant ses propres limites. J&rsquo;ai envie de surveiller cette valeur pour agir avant que le composant n&rsquo;encaisse trop.</p>
<p>Ce n&rsquo;est pas visible par défaut sur Proxmox, je vais donc installer <code>lm-sensors</code> pour obtenir des informations sur la température, et ajouter des valeurs dans un graphique pour suivre l’évolution dans le temps.</p>
<p>Et si jamais la température est trop élevée ? Je vais vérifier s’il y a un usage trop intensif, si le ventilateur tourne assez vite et assez tôt, s’il est temps de dépoussiérer l’intérieur du boîtier, et si un changement de pâte thermique devient nécessaire.</p>
<h2 id="alertes">Alertes</h2>
<p>Autant d’un point de vue de la longévité (matériel et uptime) que de la sécurité, j’ai envie d’<strong>être alerté</strong> s’il y a un problème (<strong>et même avant</strong> qu’il y ait ce problème lorsque c’est possible). Je ne serai pas toujours devant la page du dashboard, ni devant les logs. Je préfère être automatiquement prévenu.</p>
<p>Proxmox, propose un système d’alertes par envoi d’emails ou par notifications (via Gotify par exemple, ou webhooks) pour certains événements critiques (échec de sauvegarde, santé des disques, saturation d’espace, …). Si j’ai envie d’avoir d’autres alertes, je devrais regarder du côté du service concerné (ex: <code>Fail2Ban</code> le propose) ou créer moi-même un <code>cron</code> pour surveiller un événement (ex: la température).</p>
<h2 id="backups">Backups</h2>
<p>Une catastrophe arrivera forcément un jour, c’est <strong>impossible de l’éviter</strong>. Il me faut donc une stratégie de <strong>récupération des données</strong> pour ce jour là. Je n&rsquo;ai pas envie de tout recommencer à la main si mon disque principal rend l&rsquo;âme. J&rsquo;ai donc envie d&rsquo;avoir une sauvegarde de l’hôte (la configuration même de Proxmox), et des containers/VMs.</p>
<p>Pour l’hôte, il est recommandé de sauvegarder les fichiers de configuration et refaire une installation propre. Pour les containers/VMs, on a deux solutions : créer des archives compressées ou utiliser Proxmox Backup Server qui a l’avantage de générer des sauvegardes incrémentielles.</p>
<p>Pour être serein sur le stockage des backups, on peut s’appuyer sur <strong>la stratégie « 3-2-1 »</strong> : 3 backups, sur 2 supports différents, dont 1 hors de chez nous.</p>
<h2 id="redémarrer-après-une-coupure-de-courant">Redémarrer après une coupure de courant</h2>
<p>Un dernier élément sur la longévité, pour garantir un meilleur uptime sans intervention manuelle. Il peut y avoir des coupures d&rsquo;électricité chez soi, et plus fréquemment des micros coupures. Elles durent moins d&rsquo;une seconde mais c’est suffisant pour que le serveur s&rsquo;éteigne.</p>
<p>Pour un <strong>redémarrage automatique</strong>, je vais paramétrer le BIOS : il faut chercher une option qui se nomme <code>Restore on AC/Power Loss</code>, <code>AC Power Recovery</code>, <code>After Power Loss</code>, etc.</p>
<h1 id="la-sobriété">La sobriété</h1>
<blockquote>
<p><em>On m&rsquo;a dit &ldquo;coupe ce qui est inutile&rdquo;. J&rsquo;ai commencé par le Bluetooth, puis l&rsquo;USB, puis la RAM. À la fin, j&rsquo;ai même coupé le courant. C’est le premier serveur au monde qui fonctionne uniquement à la force de la pensée.</em> — Perceval de Galles, chevalier des trucs à enlever.</p>
</blockquote>
<p>Afin de réduire l’impact du serveur, je vais effectuer quelques derniers réglages. Globalement si quelque chose est purement inutile, je vais peut-être avoir envie de le virer ; ça économisera l&rsquo;énergie (sobriété), et ça réduira peut-être aussi au passage l&rsquo;usure matérielle (longévité) et/ou la surface d’attaque (sécurité). Un bon bonus quoi.</p>
<p>J’insiste sur le côté purement inutile. Je me renseigne avant pour m’assurer que ne soit pas essentiel pour la sécurité ou la stabilité du système.</p>
<h2 id="optimiser-la-consommation-du-processeur">Optimiser la consommation du processeur</h2>
<p>Encore le BIOS, eh oui, ça regorge de configurations intéressantes. Dans un objectif de sobriété, j’ai repéré plusieurs changements autour du processeur pour grappiller quelques Watts : par exemple <code>turbo mode</code>, limites de consommation en Watt <code>PL1/PL2</code>, sommeil profond avec les <code>C-State</code>.</p>
<h2 id="désactiver-linutile">Désactiver l’inutile</h2>
<p>On a potentiellement déjà désactivé certains services inutiles pour préserver le SSD (<code>cluster</code>, <code>high availability</code>), mais ce peut aussi être pour des raisons d’économie. On a de quoi allonger la liste. Je vais regarder du côté du Bluetooth, WiFi, des ports USB non utilisés, de la carte son, de l’éclairage LED/RGB, etc.</p>
<p>À explorer : l’outil <code>powertop</code> pour configurer du matériel en économie d’énergie.</p>
<h2 id="éteindre-le-serveur">Éteindre le serveur</h2>
<p>Et si Perceval avait raison, et que le max de la sobriété était d’éteindre le serveur ? Selon notre usage et nos services, <strong>c’est envisageable</strong>. Quelques idées :</p>
<ul>
<li>Si on est plutôt en mode bidouille et services utilisés ponctuellement en étant chez soi, on peut l’allumer uniquement pendant qu’on l’utilise.</li>
<li>Si on en a besoin régulièrement ou à l’extérieur mais qu’il y a tout de même des plages d’inactivités (ex: la nuit), on peut programmer son extinction.</li>
<li>Si on a une prise connectée contrôlable à distance, on pourrait l’allumer sur demande puis l’éteindre à nouveau.</li>
</ul>
<p>Rien ne nous oblige à avoir 100% d&rsquo;uptime ! Chaque contexte est différent.</p>
<h2 id="matériel-doccasion">Matériel d’occasion</h2>
<p>Je termine par une action qu&rsquo;on peut faire dès le début : <strong>éviter d&rsquo;acheter du neuf</strong>. Je peux recycler un vieux PC pour créer mon Homelab en fouillant dans les cartons de matos que l&rsquo;on a chez soi ou chez des proches.</p>
<p>Et sinon je peux acheter d&rsquo;occasion. C&rsquo;est ce que j&rsquo;ai fait en trouvant un vendeur proche de chez moi - même pas besoin de livraison :)</p>
]]></description></item></channel></rss>