<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DEMARCQ.NET</title>
	<atom:link href="https://demarcq.net/feed" rel="self" type="application/rss+xml" />
	<link>https://demarcq.net</link>
	<description>Hébergement &#38; Infogérance depuis 1996</description>
	<lastBuildDate>Sat, 17 Oct 2026 08:52:39 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://demarcq.net/wp-content/uploads/2026/06/demarcq.net_.png</url>
	<title>DEMARCQ.NET</title>
	<link>https://demarcq.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Automatiser le nettoyage et la rotation des logs</title>
		<link>https://demarcq.net/automatiser-le-nettoyage-et-la-rotation-des-logs</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 14:18:50 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9350</guid>

					<description><![CDATA[<p>Automatiser le nettoyage et la rotation des logs avec Logrotate sans couper les services Définition : Logrotate est un utilitaire système Linux conçu pour automatiser l&#8217;administration des fichiers journaux (logs) en gérant leur rotation, leur compression, leur suppression et leur archivage afin d&#8217;éviter la saturation des disques durs. Sur un serveur à fort trafic, la [&#8230;]</p>
<p>The post <a href="https://demarcq.net/automatiser-le-nettoyage-et-la-rotation-des-logs">Automatiser le nettoyage et la rotation des logs</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/automatiser-le-nettoyage-et-la-rotation-des-logs-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/automatiser-le-nettoyage-et-la-rotation-des-logs.mp4"></video></p>
<div id="model-response-message-contentr_031ac014755bb195" class="markdown markdown-main-panel md-content enable-luminous-fast-follows enable-updated-hr-color" dir="ltr" aria-busy="false" aria-live="polite">
<h2 data-path-to-node="2">Automatiser le nettoyage et la rotation des logs avec Logrotate sans couper les services</h2>
<blockquote data-path-to-node="3">
<div class="" dir=""><b data-path-to-node="3,0" data-index-in-node="0">Définition :</b> <b data-path-to-node="3,0" data-index-in-node="13">Logrotate</b> est un utilitaire système Linux conçu pour automatiser l&#8217;administration des fichiers journaux (logs) en gérant leur rotation, leur compression, leur suppression et leur archivage afin d&#8217;éviter la saturation des disques durs.</div>
</blockquote>
<div class="" dir="">Sur un serveur à fort trafic, la gestion des journaux représente un enjeu critique. En l’absence d’une politique d’administration rigoureuse, les fichiers <code data-path-to-node="4" data-index-in-node="155">access.log</code> et <code data-path-to-node="4" data-index-in-node="169">error.log</code> générés par des services comme <b data-path-to-node="4" data-index-in-node="210">Nginx</b>, <b data-path-to-node="4" data-index-in-node="217">Apache</b> ou des applications tierces peuvent saturer l’espace de stockage et les inodes en quelques jours. Une partition racine ou <code data-path-to-node="4" data-index-in-node="346">/var</code> saturée engendre irrémédiablement des pannes en cascade : arrêts de services, incapacité d’écrire en base de données ou crash complet du serveur.</div>
<div class="" dir="">Heureusement, l&#8217;utilitaire natif <b data-path-to-node="5" data-index-in-node="33">Logrotate</b> permet d’automatiser l&#8217;intégralité du cycle de vie de ces fichiers. Toutefois, mal configuré, il peut provoquer des pertes de données ou contraindre à redémarrer brutalement les services en production.</div>
<div class="" dir="">Ce guide technique détaille comment configurer proprement <b data-path-to-node="6" data-index-in-node="58">Logrotate</b> pour automatiser vos logs sur des environnements à haute charge, <b data-path-to-node="6" data-index-in-node="133">sans jamais interrompre vos services</b>.</div>
<h2 data-path-to-node="8"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-9358" src="https://demarcq.net/wp-content/uploads/2026/08/logrotate-scaled.png" alt="rotation de logs" width="2560" height="1396" srcset="https://demarcq.net/wp-content/uploads/2026/08/logrotate-scaled.png 2560w, https://demarcq.net/wp-content/uploads/2026/08/logrotate-300x164.png 300w, https://demarcq.net/wp-content/uploads/2026/08/logrotate-1024x559.png 1024w, https://demarcq.net/wp-content/uploads/2026/08/logrotate-768x419.png 768w, https://demarcq.net/wp-content/uploads/2026/08/logrotate-1536x838.png 1536w, https://demarcq.net/wp-content/uploads/2026/08/logrotate-2048x1117.png 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /></h2>
<h2 data-path-to-node="8">1. Pourquoi la gestion des logs est critique sur les serveurs à fort trafic</h2>
<div class="" dir="">Sur une architecture fortement sollicitée par des requêtes de masse, les volumes de données textuelles écrites sur le disque s&#8217;accroissent de manière exponentielle. Sans automatisation via une tâche planifiée (<b data-path-to-node="9" data-index-in-node="210">cron</b> ou <b data-path-to-node="9" data-index-in-node="218">systemd timer</b>) :</div>
<ul data-path-to-node="10">
<li>
<div class="" dir=""><b data-path-to-node="10,0,0" data-index-in-node="0">Risque de saturation (Disk Full) :</b> Les fichiers de log grossissent indéfiniment jusqu&#8217;à épuiser les inodes ou l&#8217;espace disque disponible.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="10,1,0" data-index-in-node="0">Impact sur les I/O disque :</b> Manipuler ou analyser des fichiers de log titanesques (plusieurs dizaines de gigaoctets) sature les performances d&#8217;E/S du système, ralentissant l&#8217;ensemble des daemons.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="10,2,0" data-index-in-node="0">Dilution de la traçabilité :</b> Des fichiers trop volumineux deviennent inexploitable pour le débogage, l&#8217;analyse des performances ou les audits de sécurité.</div>
</li>
</ul>
<h2 data-path-to-node="12">2. Le piège classique : éviter la coupure des services</h2>
<div class="" dir="">Le comportement par défaut de Logrotate consiste à renommer le fichier de log actif (ex: <code data-path-to-node="13" data-index-in-node="89">app.log</code> devient <code data-path-to-node="13" data-index-in-node="105">app.log.1</code>), puis à créer un nouveau fichier <code data-path-to-node="13" data-index-in-node="149">app.log</code> vide.</div>
<div class="" dir="">Cependant, un processus en cours d&#8217;exécution (comme un serveur web) maintient ouvert le <b data-path-to-node="14" data-index-in-node="88">descripteur de fichier</b> (<i data-path-to-node="14" data-index-in-node="112">file descriptor</i>) de l&#8217;ancien fichier. Si le service n&#8217;est pas informé du changement, il continue d&#8217;écrire dans le fichier renommé, entraînant une perte sèche de données lors de la compression.</div>
<div class="" dir="">Pour éviter toute interruption, deux stratégies s&#8217;offrent à vous :</div>
<h3 data-path-to-node="16">Option A : Le rechargement à chaud (Reload via <code data-path-to-node="16" data-index-in-node="47">postrotate</code>) — <i data-path-to-node="16" data-index-in-node="61">Recommandé</i></h3>
<div class="" dir="">C&#8217;est la méthode propre par excellence. Le service est invité à fermer et rouvrir ses descripteurs de fichiers à la volée.</div>
<h3 data-path-to-node="18">Option B : La solution de repli (<code data-path-to-node="18" data-index-in-node="33">copytruncate</code>)</h3>
<div class="" dir="">Si l&#8217;application ne dispose d&#8217;aucun signal natif pour ré-ouvrir ses logs, la directive <code data-path-to-node="19" data-index-in-node="87">copytruncate</code> copie le contenu du fichier dans l&#8217;archive, puis vide (<i data-path-to-node="19" data-index-in-node="155">truncalise</i>) le fichier original sur place.</div>
<ul data-path-to-node="20">
<li>
<div class="" dir=""><i data-path-to-node="20,0,0" data-index-in-node="0">Inconvénient :</i> Un micro-laps de temps existe entre la copie et la troncature, ce qui peut causer la perte de quelques lignes si le trafic d&#8217;écriture est extrêmement dense.</div>
</li>
</ul>
<h2 data-path-to-node="22">3. Anatomie d&#8217;une configuration Logrotate haute performance</h2>
<div class="" dir="">Les configurations spécifiques résident dans le répertoire <code data-path-to-node="23" data-index-in-node="59">/etc/logrotate.d/</code>. Voici un modèle de configuration robuste taillé pour un service à fort trafic :</div>
<div class="code-block ng-tns-c1258300374-67 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ5gM">
<div class="formatted-code-block-internal-container ng-tns-c1258300374-67">
<div class="animated-opacity ng-tns-c1258300374-67">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1258300374-67 ng-star-inserted">
<p><span class="ng-tns-c1258300374-67">Plaintext</span></p>
<div class="buttons ng-tns-c1258300374-67 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1258300374-67"><code class="code-container formatted ng-tns-c1258300374-67" role="text" data-test-id="code-content">/var/log/monapp/*.log {
    daily
    size 500M
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    sharedscripts
    create 0640 monapp monapp
    postrotate
        systemctl reload monapp.service &gt; /dev/null 2&gt;&amp;1 || true
    endscript
}
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="25">Décryptage des directives clés :</h3>
<ul data-path-to-node="26">
<li>
<div class="" dir=""><b data-path-to-node="26,0,0" data-index-in-node="0"><code data-path-to-node="26,0,0" data-index-in-node="0">daily</code> / <code data-path-to-node="26,0,0" data-index-in-node="8">size 500M</code> :</b> Déclenche la rotation soit tous les jours, soit dès que le fichier atteint 500 Mo (le premier critère atteint l&#8217;emporte, idéal pour lisser la charge).</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,1,0" data-index-in-node="0"><code data-path-to-node="26,1,0" data-index-in-node="0">rotate 30</code> :</b> Conserve les 30 dernières archives avant de purger les plus anciennes de l&#8217;espace de stockage.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,2,0" data-index-in-node="0"><code data-path-to-node="26,2,0" data-index-in-node="0">compress</code> :</b> Compresse immédiatement les logs routés (par défaut au format <b data-path-to-node="26,2,0" data-index-in-node="73">gzip</b>).</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,3,0" data-index-in-node="0"><code data-path-to-node="26,3,0" data-index-in-node="0">delaycompress</code> :</b> Retarde la compression de l&#8217;archive de la veille au cycle suivant. <i data-path-to-node="26,3,0" data-index-in-node="83">Essentiel</i> sur les gros serveurs pour laisser le temps aux processus d&#8217;écriture de se finaliser sans surcharger le processeur.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,4,0" data-index-in-node="0"><code data-path-to-node="26,4,0" data-index-in-node="0">missingok</code> :</b> Empêche Logrotate de renvoyer une erreur si un fichier journal vient à manquer.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,5,0" data-index-in-node="0"><code data-path-to-node="26,5,0" data-index-in-node="0">notifempty</code> :</b> Ignore la rotation si le fichier est vide, évitant de générer des archives inutiles.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,6,0" data-index-in-node="0"><code data-path-to-node="26,6,0" data-index-in-node="0">sharedscripts</code> :</b> Garantit que le script de fin (<code data-path-to-node="26,6,0" data-index-in-node="47">postrotate</code>) ne s&#8217;exécutera qu&#8217;une seule fois globalement pour l&#8217;ensemble des fichiers correspondants au pattern.</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="26,7,0" data-index-in-node="0"><code data-path-to-node="26,7,0" data-index-in-node="0">postrotate ... endscript</code> :</b> Exécute un rechargement propre (<code data-path-to-node="26,7,0" data-index-in-node="59">systemctl reload</code>) permettant au processus de basculer instantanément sur le nouveau journal sans perte de requêtes.</div>
</li>
</ul>
<h2 data-path-to-node="28">4. Cas pratique : Optimisation pour Nginx</h2>
<div class="" dir="">Sur un reverse proxy ou serveur web <b data-path-to-node="29" data-index-in-node="36">Nginx</b> subissant des millions de requêtes quotidiennes, la configuration doit intégrer l&#8217;envoi du signal indiquant au daemon de ré-ouvrir ses fichiers de logs à chaud :</div>
<div class="code-block ng-tns-c1258300374-68 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ5wM">
<div class="formatted-code-block-internal-container ng-tns-c1258300374-68">
<div class="animated-opacity ng-tns-c1258300374-68">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1258300374-68 ng-star-inserted">
<p><span class="ng-tns-c1258300374-68">Plaintext</span></p>
<div class="buttons ng-tns-c1258300374-68 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1258300374-68"><code class="code-container formatted ng-tns-c1258300374-68" role="text" data-test-id="code-content">/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        if [ -d /run/systemd/system ]; then
            systemctl reload nginx.service &gt; /dev/null 2&gt;&amp;1 || true
        fi
    endscript
}
</code></pre>
</div>
</div>
</div>
<h2 data-path-to-node="32"><img decoding="async" class="aligncenter size-full wp-image-9360" src="https://demarcq.net/wp-content/uploads/2026/08/logs-serveurs-scaled.webp" alt="logs serveurs" width="1920" height="535" srcset="https://demarcq.net/wp-content/uploads/2026/08/logs-serveurs-scaled.webp 1920w, https://demarcq.net/wp-content/uploads/2026/08/logs-serveurs-300x84.webp 300w, https://demarcq.net/wp-content/uploads/2026/08/logs-serveurs-1024x285.webp 1024w, https://demarcq.net/wp-content/uploads/2026/08/logs-serveurs-768x214.webp 768w, https://demarcq.net/wp-content/uploads/2026/08/logs-serveurs-1536x428.webp 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></h2>
<h2 data-path-to-node="32">5. Bonnes pratiques et validation de vos scripts</h2>
<div class="" dir="">Avant de déployer une règle en production, il est impératif de valider sa syntaxe pour s&#8217;assurer que vos <a class="ng-star-inserted" href="https://www.google.com/search?q=https://demarcq.net/comment-securiser-ses-taches-planifiees&amp;authuser=1" target="_blank" rel="noopener" data-hveid="0" data-ved="0CAAQ_4QMahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ6AM">tâches planifiées</a> s&#8217;exécutent sans accroc.</div>
<ol start="1" data-path-to-node="34">
<li>
<div class="" dir=""><b data-path-to-node="34,0,0" data-index-in-node="0">Tester la configuration en mode simulation (<code data-path-to-node="34,0,0" data-index-in-node="44">-d</code>) :</b></div>
<div class="" dir="">Exécutez la commande suivante pour simuler le processus en mode verbeux sans modifier les fichiers réels :</div>
<div class="code-block ng-tns-c1258300374-69 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ6QM">
<div class="formatted-code-block-internal-container ng-tns-c1258300374-69">
<div class="animated-opacity ng-tns-c1258300374-69">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1258300374-69 ng-star-inserted">
<p><span class="ng-tns-c1258300374-69">Bash</span></p>
<div class="buttons ng-tns-c1258300374-69 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1258300374-69"><code class="code-container formatted ng-tns-c1258300374-69" role="text" data-test-id="code-content">sudo logrotate -d /etc/logrotate.d/monapp
</code></pre>
</div>
</div>
</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="34,1,0" data-index-in-node="0">Forcer l&#8217;exécution manuelle (<code data-path-to-node="34,1,0" data-index-in-node="29">-f</code>) :</b></div>
<div class="" dir="">Pour valider concrètement que le script postrotate fonctionne et que la compression s&#8217;effectue sans encombre :</div>
<div class="code-block ng-tns-c1258300374-70 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ6gM">
<div class="formatted-code-block-internal-container ng-tns-c1258300374-70">
<div class="animated-opacity ng-tns-c1258300374-70">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1258300374-70 ng-star-inserted">
<p><span class="ng-tns-c1258300374-70">Bash</span></p>
<div class="buttons ng-tns-c1258300374-70 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1258300374-70"><code class="code-container formatted ng-tns-c1258300374-70" role="text" data-test-id="code-content">sudo logrotate -f /etc/logrotate.d/monapp
</code></pre>
</div>
</div>
</div>
</li>
<li>
<div class="" dir=""><b data-path-to-node="34,2,0" data-index-in-node="0">Surveiller l&#8217;état de Logrotate :</b></div>
<div class="" dir="">Consultez le fichier d&#8217;état interne pour vérifier la date de la dernière rotation effectuée :</div>
<div class="code-block ng-tns-c1258300374-71 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ6wM">
<div class="formatted-code-block-internal-container ng-tns-c1258300374-71">
<div class="animated-opacity ng-tns-c1258300374-71">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1258300374-71 ng-star-inserted">
<p><span class="ng-tns-c1258300374-71">Bash</span></p>
<div class="buttons ng-tns-c1258300374-71 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1258300374-71"><code class="code-container formatted ng-tns-c1258300374-71" role="text" data-test-id="code-content">cat /var/lib/logrotate/status
</code></pre>
</div>
</div>
</div>
</li>
</ol>
<h2 data-path-to-node="36">FAQ : Tout savoir sur Logrotate et la gestion des logs</h2>
<h3 data-path-to-node="37">Quelle est la différence entre <code data-path-to-node="37" data-index-in-node="31">copytruncate</code> et un rechargement <code data-path-to-node="37" data-index-in-node="63">postrotate</code> ?</h3>
<div class="" dir="">Le rechargement <code data-path-to-node="38" data-index-in-node="16">postrotate</code> indique au service (comme Nginx) de basculer sur un nouveau descripteur de fichier de manière propre, garantissant 0% de perte. La méthode <code data-path-to-node="38" data-index-in-node="166">copytruncate</code> copie le fichier existant puis le vide sur place, ce qui présente un léger risque de perte de données sur des flux d&#8217;écriture extrêmement denses.</div>
<h3 data-path-to-node="39">Comment forcer Logrotate à s&#8217;exécuter immédiatement ?</h3>
<div class="" dir="">Il suffit d&#8217;utiliser l&#8217;option <code data-path-to-node="40" data-index-in-node="30">-f</code> (force) suivie du chemin vers votre fichier de configuration : <code data-path-to-node="40" data-index-in-node="96">sudo logrotate -f /etc/logrotate.d/monapp</code>.</div>
<h3 data-path-to-node="41">Pourquoi utiliser la directive <code data-path-to-node="41" data-index-in-node="31">delaycompress</code> sur un serveur à fort trafic ?</h3>
<div class="" dir=""><code data-path-to-node="42" data-index-in-node="0">delaycompress</code> permet de repousser la compression des logs de la veille au cycle suivant. Sur un serveur intensif, cela évite de consommer massivement des ressources CPU pour compresser un fichier tout juste fermé pendant que le disque gère de fortes requêtes d&#8217;E/S.</div>
<h2 data-path-to-node="44">Conclusion</h2>
<div class="" dir="">Une politique de rétention et de nettoyage bien ficelée via Logrotate est le garant de la résilience de votre <a class="ng-star-inserted" href="https://demarcq.net/hebergement-haute-disponibilite" target="_blank" rel="noopener" data-hveid="0" data-ved="0CAAQ_4QMahgKEwis8pWG24qWAxUAAAAAHQAAAAAQ7AM">infrastructure d&#8217;hébergement</a>. En combinant des déclencheurs par taille, une compression différée et un rechargement à chaud, vous éliminez tout risque de saturation disque tout en garantissant une continuité de service absolue.</div>
</div><p>The post <a href="https://demarcq.net/automatiser-le-nettoyage-et-la-rotation-des-logs">Automatiser le nettoyage et la rotation des logs</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/automatiser-le-nettoyage-et-la-rotation-des-logs.mp4" length="16422630" type="video/mp4" />

			</item>
		<item>
		<title>Sécuriser un serveur SSH : Bannir les mots de passe</title>
		<link>https://demarcq.net/securiser-un-serveur-ssh</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Tue, 04 Aug 2026 16:07:42 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9336</guid>

					<description><![CDATA[<p>Gestion des accès SSH : Bannir les mots de passe au profit des clés de sécurité (FIDO2 / YubiKey) Dans le paysage cybernétique moderne, le protocole SSH (Secure Shell) constitue l&#8217;épine dorsale de l&#8217;administration système. Pourtant, la méthode d&#8217;authentification la plus couramment répandue — le couple identifiant/mot de passe — représente l&#8217;un des maillons les [&#8230;]</p>
<p>The post <a href="https://demarcq.net/securiser-un-serveur-ssh">Sécuriser un serveur SSH : Bannir les mots de passe</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="model-response-message-contentr_5e316cfa103c6ba6" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" aria-busy="false" aria-live="off">
<h1 data-path-to-node="0">Gestion des accès SSH : Bannir les mots de passe au profit des clés de sécurité (FIDO2 / YubiKey)</h1>
<p data-path-to-node="1">Dans le paysage cybernétique moderne, le protocole SSH (<i data-path-to-node="1" data-index-in-node="56">Secure Shell</i>) constitue l&#8217;épine dorsale de l&#8217;administration système. Pourtant, la méthode d&#8217;authentification la plus couramment répandue — le couple identifiant/mot de passe — représente l&#8217;un des maillons les plus faibles de la chaîne de sécurité informatique. Attaques par force brute, hameçonnage ciblé, pulvérisation de mots de passe (<i data-path-to-node="1" data-index-in-node="394">password spraying</i>) ou réutilisation d&#8217;identifiants compromis : les vecteurs d&#8217;attaque exploitant cette vulnérabilité sont nombreux et redoutablement efficaces.</p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/securiser-un-serveur-ssh-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/securiser-un-serveur-ssh.mp4"></video></p>
<p data-path-to-node="2">L&#8217;authentification par clés SSH traditionnelles (RSA ou Ed25519 stockées sur le disque local) a apporté un gain de sécurité majeur, mais elle n&#8217;est pas exempte de risques. Un logiciel malveillant exécuté sur le poste d&#8217;un administrateur ou une sauvegarde de poste non chiffrée peut entraîner le vol pur et simple de la clé privée. Pour éliminer définitivement ces risques, l&#8217;industrie s&#8217;oriente désormais vers le modèle <b data-path-to-node="2" data-index-in-node="420">Zero Trust Hardware-Bound</b> en s&#8217;appuyant sur la norme <b data-path-to-node="2" data-index-in-node="473">FIDO2 / WebAuthn</b> via des clés de sécurité physiques comme la YubiKey.</p>
<div class="attachment-container search-images"><img decoding="async" class="aligncenter size-full wp-image-9342" src="https://demarcq.net/wp-content/uploads/2026/08/Bannir-les-mots-de-passe.jpeg" alt="" width="316" height="316" /></div>
<h2 data-path-to-node="5">Les limites des méthodes d&#8217;authentification traditionnelles</h2>
<p data-path-to-node="6">Pour comprendre l&#8217;impératif de migration vers FIDO2, il convient de dresser le bilan des faiblesses des mécanismes historiques.</p>
<h3 data-path-to-node="7">1. Le mot de passe : un risque permanent</h3>
<p data-path-to-node="8">L&#8217;utilisation de mots de passe pour se connecter à un serveur SSH expose l&#8217;infrastructure à :</p>
<ul data-path-to-node="9">
<li>
<p data-path-to-node="9,0,0"><b data-path-to-node="9,0,0" data-index-in-node="0"></b><b data-path-to-node="9,0,0" data-index-in-node="0"></b><b data-path-to-node="9,0,0" data-index-in-node="0">Des attaques automatisées continues :</b> Tout serveur exposé sur Internet subit quotidiennement des milliers de tentatives de connexion par mot de passe via des bots.</p>
</li>
<li>
<p data-path-to-node="9,1,0"><b data-path-to-node="9,1,0" data-index-in-node="0"></b><b data-path-to-node="9,1,0" data-index-in-node="0"></b><b data-path-to-node="9,1,0" data-index-in-node="0">L&#8217;ingénierie sociale :</b> Un mot de passe peut être saisi par inadvertance sur un portail de hameçonnage imitant une interface d&#8217;administration.</p>
</li>
<li>
<p data-path-to-node="9,2,0"><b data-path-to-node="9,2,0" data-index-in-node="0"></b><b data-path-to-node="9,2,0" data-index-in-node="0"></b><b data-path-to-node="9,2,0" data-index-in-node="0"></b><b data-path-to-node="9,2,0" data-index-in-node="0">La fatigue décisionnelle :</b> Les utilisateurs ont tendance à réutiliser ou à simplifier leurs mots de passe si aucune contrainte matérielle ne leur est imposée.</p>
</li>
</ul>
<h3 data-path-to-node="10">2. Les clés SSH classiques stockées sur disque</h3>
<p data-path-to-node="11">Bien que nettement supérieures aux mots de passe, les clés RSA ou Ed25519 standards stockées dans le répertoire <code data-path-to-node="11" data-index-in-node="112">~/.ssh/</code> posent d&#8217;autres défis :</p>
<ul data-path-to-node="12">
<li>
<p data-path-to-node="12,0,0"><b data-path-to-node="12,0,0" data-index-in-node="0">Le vol de clé privée :</b> Un <i data-path-to-node="12,0,0" data-index-in-node="26">malware</i> (ex: infostealer) présent sur la machine cliente peut lire le fichier <code data-path-to-node="12,0,0" data-index-in-node="104">id_ed25519</code> et l&#8217;exfiltrer. Même si le fichier est protégé par une phrase explicative (<i data-path-to-node="12,0,0" data-index-in-node="190">passphrase</i>), celle-ci peut être interceptée par un <i data-path-to-node="12,0,0" data-index-in-node="241">keylogger</i>.</p>
</li>
<li>
<p data-path-to-node="12,1,0"><b data-path-to-node="12,1,0" data-index-in-node="0"></b><b data-path-to-node="12,1,0" data-index-in-node="0"></b><b data-path-to-node="12,1,0" data-index-in-node="0"></b><b data-path-to-node="12,1,0" data-index-in-node="0">La prolifération des clés (<i data-path-to-node="12,1,0" data-index-in-node="27">Key Sprawl</i>) :</b> Sans gestion centralisée, suivre quelle clé appartient à qui et sur quels serveurs elle est autorisée devient rapidement ingérable.</p>
</li>
</ul>
<h2 data-path-to-node="14">La révolution FIDO2 et OpenSSH : Comment ça fonctionne ?</h2>
<p data-path-to-node="15">Depuis la version 8.2 d&#8217;OpenSSH (publiée au début de l&#8217;année 2020), le protocole intègre nativement la prise en charge des jetons de sécurité matériels <b data-path-to-node="15" data-index-in-node="152">FIDO2 / U2F</b>. Cette intégration repose sur deux nouveaux types de clés :</p>
<ul data-path-to-node="16">
<li>
<p data-path-to-node="16,0,0"><code data-path-to-node="16,0,0" data-index-in-node="0">ecdsa-sk</code> (ECDSA Security Key)</p>
</li>
<li>
<p data-path-to-node="16,1,0"><code data-path-to-node="16,1,0" data-index-in-node="0">ed25519-sk</code> (Ed25519 Security Key — vivement recommandée)</p>
</li>
</ul>
<p data-path-to-node="17">Le suffixe <code data-path-to-node="17" data-index-in-node="11">-sk</code> signifie <b data-path-to-node="17" data-index-in-node="24">Security Key</b>. Lorsqu&#8217;une clé de ce type est générée, la véritable clé privée ne réside jamais sous forme lisible sur le disque dur de l&#8217;ordinateur. Elle est soit générée et conservée exclusivement dans le composant cryptographique sécurisé de la YubiKey, soit chiffrée par le composant matériel sous la forme d&#8217;un <i data-path-to-node="17" data-index-in-node="338">key handle</i>.</p>
<h3 data-path-to-node="18">Les mécanismes de protection intégrés</h3>
<ol start="1" data-path-to-node="19">
<li>
<p data-path-to-node="19,0,0"><b data-path-to-node="19,0,0" data-index-in-node="0"></b><b data-path-to-node="19,0,0" data-index-in-node="0">Pression physique obligatoire (User Presence) :</b> Lors de chaque tentative de connexion SSH, la YubiKey clignote. L&#8217;utilisateur doit toucher physiquement le capteur de la clé pour valider la transaction. Un logiciel malveillant distant ne peut pas simuler cette interaction physique.</p>
</li>
<li>
<p data-path-to-node="19,1,0"><b data-path-to-node="19,1,0" data-index-in-node="0"></b><b data-path-to-node="19,1,0" data-index-in-node="0"></b><b data-path-to-node="19,1,0" data-index-in-node="0">Code PIN / Biométrie (User Verification) :</b> FIDO2 permet d&#8217;exiger la saisie d&#8217;un code PIN local configuré sur la YubiKey ou une empreinte digitale (pour les modèles YubiKey Bio). Il s&#8217;agit d&#8217;un véritable facteur d&#8217;authentification multifacteur (MFA) matériel : <i data-path-to-node="19,1,0" data-index-in-node="260">ce que j&#8217;ai</i> (la clé physique) + <i data-path-to-node="19,1,0" data-index-in-node="292">ce que je sais/ce que je suis</i> (le PIN ou l&#8217;empreinte).</p>
</li>
<li>
<p data-path-to-node="19,2,0"><b data-path-to-node="19,2,0" data-index-in-node="0"></b><b data-path-to-node="19,2,0" data-index-in-node="0"></b><b data-path-to-node="19,2,0" data-index-in-node="0">Résistance au hameçonnage :</b> Les mécanismes FIDO2 lient l&#8217;authentification à l&#8217;identité du matériel et au contexte, rendant les attaques par relais (<i data-path-to-node="19,2,0" data-index-in-node="148">Man-in-the-Middle</i>) inopérantes.</p>
</li>
</ol>
<h2 data-path-to-node="21">Clés résidantes (<i data-path-to-node="21" data-index-in-node="17">Resident Keys</i>) vs Clés non-résidantes</h2>
<p data-path-to-node="22">OpenSSH et FIDO2 proposent deux modes de fonctionnement distincts :</p>
<p><span data-path-to-node="23,2,0,0"><b data-path-to-node="23,2,0,0" data-index-in-node="0">Portabilité</b></span><span data-path-to-node="23,2,1,0">Il faut copier le fichier de clé publique/stump sur la machine cliente.</span><span data-path-to-node="23,3,0,0"><b data-path-to-node="23,3,0,0" data-index-in-node="0">Cas d&#8217;usage</b></span><span data-path-to-node="23,3,1,0">Poste de travail fixe d&#8217;un administrateur.</span></p>
<table data-path-to-node="23">
<thead>
<tr>
<td><strong>Fonctionnalité</strong></td>
<td><strong>Clés Non-Résidantes (Par défaut)</strong></td>
<td><strong>Clés Résidantes (Discoverable Keys)</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td><span data-path-to-node="23,1,0,0"><b data-path-to-node="23,1,0,0" data-index-in-node="0">Stockage</b></span></td>
<td><span data-path-to-node="23,1,1,0">Un fichier &#8220;stump&#8221; (contenant le <i data-path-to-node="23,1,1,0" data-index-in-node="33">key handle</i>) est enregistré dans <code data-path-to-node="23,1,1,0" data-index-in-node="65">~/.ssh/</code>.</span></td>
<td><span data-path-to-node="23,1,2,0">La clé est enregistrée directement dans la mémoire interne de la YubiKey.</span></td>
</tr>
<tr>
<td></td>
<td></td>
<td><span data-path-to-node="23,2,2,0">On peut brancher la YubiKey sur n&#8217;importe quel ordinateur et importer la clé avec <code data-path-to-node="23,2,2,0" data-index-in-node="82">ssh-add -K</code>.</span></td>
</tr>
<tr>
<td></td>
<td></td>
<td><span data-path-to-node="23,3,2,0">Administrateurs mobiles, postes de rebond, scénarios de secours (<i data-path-to-node="23,3,2,0" data-index-in-node="65">disaster recovery</i>).</span></td>
</tr>
</tbody>
</table>
<h2 data-path-to-node="25">Guide pratique de mise en œuvre</h2>
<h3 data-path-to-node="26">Étape 1 : Générer la clé SSH FIDO2 sur la YubiKey</h3>
<p data-path-to-node="27">Sur la machine cliente (qui doit disposer d&#8217;OpenSSH 8.2 ou supérieur et des bibliothèques <code data-path-to-node="27" data-index-in-node="90">libfido2</code>), exécutez la commande suivante :</p>
<div class="code-block ng-tns-c1683962018-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjQyqr9goeWAxUAAAAAHQAAAAAQsAI">
<div class="formatted-code-block-internal-container ng-tns-c1683962018-90">
<div class="animated-opacity ng-tns-c1683962018-90">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1683962018-90 ng-star-inserted">
<p><span class="ng-tns-c1683962018-90">Bash</span></p>
<div class="buttons ng-tns-c1683962018-90 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1683962018-90"><code class="code-container formatted ng-tns-c1683962018-90" role="text" data-test-id="code-content"><span class="hljs-comment"># Génération d'une clé Ed25519 sécurisée par matériel (mode résidant recommandé)</span>
ssh-keygen -t ed25519-sk -O resident -O verify-required -C <span class="hljs-string">"admin-secu@entreprise.com"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="29">Explication des options :</p>
<ul data-path-to-node="30">
<li>
<p data-path-to-node="30,0,0"><code data-path-to-node="30,0,0" data-index-in-node="0">-t ed25519-sk</code> : Spécifie le type d&#8217;algorithme sécurisé par matériel.</p>
</li>
<li>
<p data-path-to-node="30,1,0"><code data-path-to-node="30,1,0" data-index-in-node="0">-O resident</code> : Enregistre la clé dans le composant interne de la YubiKey pour pouvoir la récupérer sur n&#8217;importe quel poste.</p>
</li>
<li>
<p data-path-to-node="30,2,0"><code data-path-to-node="30,2,0" data-index-in-node="0">-O verify-required</code> : Force la vérification du code PIN de la YubiKey lors de chaque signature SSH (MFA strict).</p>
</li>
</ul>
<p data-path-to-node="31">Lors de l&#8217;exécution, le système vous demandera d&#8217;entrer le code PIN de votre YubiKey, puis de toucher le capteur lumineux.</p>
<h3 data-path-to-node="32">Étape 2 : Déployer la clé publique sur le serveur cible</h3>
<p data-path-to-node="33">Comme pour une clé classique, copiez la clé publique générée (<code data-path-to-node="33" data-index-in-node="62">~/.ssh/id_ed25519_sk.pub</code>) sur le serveur distant dans le fichier <code data-path-to-node="33" data-index-in-node="127">~/.ssh/authorized_keys</code> de l&#8217;utilisateur concerné :</p>
<div class="code-block ng-tns-c1683962018-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjQyqr9goeWAxUAAAAAHQAAAAAQsQI">
<div class="formatted-code-block-internal-container ng-tns-c1683962018-91">
<div class="animated-opacity ng-tns-c1683962018-91">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1683962018-91 ng-star-inserted">
<p><span class="ng-tns-c1683962018-91">Bash</span></p>
<div class="buttons ng-tns-c1683962018-91 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1683962018-91"><code class="code-container formatted ng-tns-c1683962018-91" role="text" data-test-id="code-content">ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@serveur-distant.com
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="35">Étape 3 : Endurcir la configuration du serveur SSH (<code data-path-to-node="35" data-index-in-node="52">sshd_config</code>)</h3>
<p data-path-to-node="36">Une fois la clé configurée et la connexion validée, il est impératif de désactiver totalement l&#8217;authentification par mot de passe sur le serveur. Éditez le fichier <code data-path-to-node="36" data-index-in-node="164">/etc/ssh/sshd_config</code> :</p>
<div class="code-block ng-tns-c1683962018-92 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjQyqr9goeWAxUAAAAAHQAAAAAQsgI">
<div class="formatted-code-block-internal-container ng-tns-c1683962018-92">
<div class="animated-opacity ng-tns-c1683962018-92">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1683962018-92 ng-star-inserted">
<p><span class="ng-tns-c1683962018-92">Extrait de code</span></p>
<div class="buttons ng-tns-c1683962018-92 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1683962018-92"><code class="code-container formatted ng-tns-c1683962018-92" role="text" data-test-id="code-content"># Désactivation totale des mots de passe
PasswordAuthentication no
ChallengeResponseAuthentication no
KbdInteractiveAuthentication no

# Interdiction de la connexion root par mot de passe
PermitRootLogin prohibit-password

# Exigence stricte des types de clés autorisés (optionnel mais recommandé)
PubkeyAcceptedKeyTypes sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="38">Rechargez ensuite le service SSH pour appliquer les modifications :</p>
<div class="code-block ng-tns-c1683962018-93 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjQyqr9goeWAxUAAAAAHQAAAAAQswI">
<div class="formatted-code-block-internal-container ng-tns-c1683962018-93">
<div class="animated-opacity ng-tns-c1683962018-93">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1683962018-93 ng-star-inserted">
<p><span class="ng-tns-c1683962018-93">Bash</span></p>
<div class="buttons ng-tns-c1683962018-93 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1683962018-93"><code class="code-container formatted ng-tns-c1683962018-93" role="text" data-test-id="code-content">sudo systemctl reload sshd
</code></pre>
</div>
</div>
</div>
<h2 data-path-to-node="41">Gestion de la résilience et des cas de perte</h2>
<p data-path-to-node="42">L&#8217;une des réticences majeures lors du passage aux clés physiques concerne la perte, le vol ou la détérioration de la YubiKey. Une stratégie d&#8217;accès basée sur la clé physique doit obligatoirement inclure un plan de secours :</p>
<ol start="1" data-path-to-node="43">
<li>
<p data-path-to-node="43,0,0"><b data-path-to-node="43,0,0" data-index-in-node="0"></b><b data-path-to-node="43,0,0" data-index-in-node="0">La règle des deux clés (Primary &amp; Backup) :</b> Tout administrateur doit configurer au minimum <b data-path-to-node="43,0,0" data-index-in-node="91">deux</b> YubiKeys physiques. La clé principale est portée au quotidien, tandis que la clé de secours est conservée dans un coffre-fort physique sécurisé. Les deux clés publiques sont inscrites dans le fichier <code data-path-to-node="43,0,0" data-index-in-node="296">authorized_keys</code>.</p>
</li>
<li>
<p data-path-to-node="43,1,0"><b data-path-to-node="43,1,0" data-index-in-node="0"></b><b data-path-to-node="43,1,0" data-index-in-node="0">L&#8217;utilisation de certificats SSH (OpenSSH CA) :</b> Pour les infrastructures d&#8217;envergure, plutôt que de copier des clés publiques sur des milliers de serveurs, il est préférable de déployer une Autorité de Certification (CA) SSH. La CA signe la clé publique temporaire de l&#8217;administrateur après validation par la YubiKey.</p>
</li>
<li>
<p data-path-to-node="43,2,0"><b data-path-to-node="43,2,0" data-index-in-node="0"></b><b data-path-to-node="43,2,0" data-index-in-node="0"></b><b data-path-to-node="43,2,0" data-index-in-node="0">Accès d&#8217;urgence d&#8217;infrastructures (<i data-path-to-node="43,2,0" data-index-in-node="35">Break-Glass</i>) :</b> Conserver un accès d&#8217;urgence hors-ligne (ex: console KVM/IPMI protégée par un mot de passe maître complexe stocké sous scellé) pour parer à tout blocage.</p>
</li>
</ol>
<h2 data-path-to-node="45">Bilan : Un alignement parfait sur les exigences NIS 2 et Zero Trust</h2>
<p data-path-to-node="46">En éliminant les mots de passe au profit des clés de sécurité matérielles FIDO2 / YubiKey, les organisations réduisent drastiquement leur surface d&#8217;attaque. Cette démarche s&#8217;inscrit pleinement dans les architectures de sécurité modernes <b data-path-to-node="46" data-index-in-node="237">Zero Trust</b> et répond aux exigences de renforcer la sécurité des accès à privilèges imposées par les réglementations européennes telles que <b data-path-to-node="46" data-index-in-node="376">NIS 2</b>. Le coût modéré d&#8217;un jeton physique est infiniment inférieur à celui d&#8217;une compromission globale issue d&#8217;un vol d&#8217;identifiant SSH.</p>
<h2 data-path-to-node="39">Pourquoi faire appel à un infogérant pour gérer vos accès FIDO2 / YubiKey ?</h2>
<p data-path-to-node="40">Bien que la technologie FIDO2 soit redoutablement efficace, sa mise en œuvre à l&#8217;échelle d&#8217;une entreprise implique des défis organisationnels et techniques. Faire appel à un <b data-path-to-node="40" data-index-in-node="174">expert en infogérance</b> permet de sécuriser cette transition.</p>
<h3 data-path-to-node="41">1. Expertise technique et intégration sur mesure</h3>
<p data-path-to-node="42">Un prestataire spécialisé en infogérance vous accompagne dans l&#8217;audit de votre parc (serveurs Linux, instances Cloud AWS/GCP/Azure) pour concevoir une politique d&#8217;accès <b data-path-to-node="42" data-index-in-node="169">Zero Trust</b> conforme aux exigences de l&#8217;ANSSI et aux directives européennes (<b data-path-to-node="42" data-index-in-node="245">NIS 2, DORA</b>).</p>
<h3 data-path-to-node="43">2. Déploiement d&#8217;une Autorité de Certification SSH (CA SSH)</h3>
<p data-path-to-node="44">Au lieu de copier manuellement des clés sur chaque serveur, un infogérant met en place une <b data-path-to-node="44" data-index-in-node="91">PKI / CA SSH</b>. Les administrateurs obtiennent des certificats éphémères signés via leur YubiKey, garantissant un contrôle d&#8217;accès dynamique et la suppression des accès résiduels.</p>
<h3 data-path-to-node="45">3. Gestion de la perte de clé et plan de secours (<i data-path-to-node="45" data-index-in-node="50">Break-Glass</i>)</h3>
<p data-path-to-node="46">Le risque principal lié aux clés physiques est la perte ou le vol du jeton. L&#8217;infogérant garantit la continuité d&#8217;activité grâce à :</p>
<ul data-path-to-node="47">
<li>
<p data-path-to-node="47,0,0">La mise en place de <b data-path-to-node="47,0,0" data-index-in-node="20">clés YubiKey de secours (<i data-path-to-node="47,0,0" data-index-in-node="45">Backup Keys</i>)</b> stockées sous scellé.</p>
</li>
<li>
<p data-path-to-node="47,1,0">Des procédures d&#8217;urgence sécurisées pour restaurer les accès sans compromettre la sécurité globale.</p>
</li>
</ul>
<h3 data-path-to-node="48">4. Supervision 24/7 et maintien en condition de sécurité (MCS)</h3>
<p data-path-to-node="49">Un infogérant centralise l&#8217;analyse des journaux de connexion (<i data-path-to-node="49" data-index-in-node="62">logs SSH</i>), détecte les anomalies en temps réel et assure la mise à jour continue de vos serveurs pour pare-feu et configurations OpenSSH.</p>
<h2 data-path-to-node="51">En résumé : Passez au Passwordless SSH</h2>
<p data-path-to-node="52">L&#8217;association d&#8217;OpenSSH et des clés de sécurité matérielles <b data-path-to-node="52" data-index-in-node="60">FIDO2 / YubiKey</b> supprime définitivement le maillon faible du mot de passe. En confiant cette transition et le maintien de votre infrastructure à un <b data-path-to-node="52" data-index-in-node="208">prestataire d&#8217;infogérance</b>, vous bénéficiez d&#8217;une sécurité maximale, d&#8217;une conformité réglementaire assurée et d&#8217;une gestion sereine au quotidien.</p>
</div><p>The post <a href="https://demarcq.net/securiser-un-serveur-ssh">Sécuriser un serveur SSH : Bannir les mots de passe</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/securiser-un-serveur-ssh.mp4" length="19771704" type="video/mp4" />

			</item>
		<item>
		<title>Infogérance Protection Attaque DDoS</title>
		<link>https://demarcq.net/protection-attaque-ddos</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Mon, 03 Aug 2026 14:45:35 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9314</guid>

					<description><![CDATA[<p>Protection contre les attaques DDoS : Le guide complet pour sécuriser votre infrastructure et vos applications À l’ère de la transformation numérique, la disponibilité continue de vos services web n&#8217;est plus une simple option : c&#8217;est un levier direct de rentabilité, de crédibilité et de confiance pour vos clients. Pourtant, la menace des attaques DDoS [&#8230;]</p>
<p>The post <a href="https://demarcq.net/protection-attaque-ddos">Infogérance Protection Attaque DDoS</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 data-path-to-node="2">Protection contre les attaques DDoS : Le guide complet pour sécuriser votre infrastructure et vos applications</h1>
<p data-path-to-node="3"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-9319" src="https://demarcq.net/wp-content/uploads/2026/08/protection-ddos-scaled.png" alt="Protection DDOS" width="2560" height="1429" /></p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/protection-attaque-ddos-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/protection-attaque-ddos.mp4"></video></p>
<p data-path-to-node="3">À l’ère de la transformation numérique, la disponibilité continue de vos services web n&#8217;est plus une simple option : c&#8217;est un levier direct de rentabilité, de crédibilité et de confiance pour vos clients. Pourtant, la menace des <b data-path-to-node="3" data-index-in-node="229">attaques DDoS (Distributed Denial of Service)</b> continue de progresser en fréquence, en intensité et en complexité. Qu&#8217;il s&#8217;agisse de paralyser un site e-commerce pendant une période stratégique comme les soldes ou d&#8217;interrompre l&#8217;accès aux outils de travail SaaS d&#8217;une entreprise, les répercussions financières et réputationnelles d&#8217;une indisponibilité réseau peuvent s&#8217;avérer dévastatrices.</p>
<p data-path-to-node="4">Pour prémunir efficacement vos serveurs dédiés ou instances Cloud contre ces paralysies, une approche globale s&#8217;impose. La sécurité informatique ne repose pas sur un outil unique, mais sur la superposition de plusieurs couches de protection. Une stratégie anti-DDoS performante doit impérativement combiner la <b data-path-to-node="4" data-index-in-node="310">sécurisation de l&#8217;infrastructure réseau</b>, la <b data-path-to-node="4" data-index-in-node="354">protection au niveau applicatif</b> et une <b data-path-to-node="4" data-index-in-node="393">gestion d&#8217;infogérance proactive</b>.</p>
<h2 data-path-to-node="6">1. Sécuriser l&#8217;infrastructure réseau : Bloquer les attaques volumétriques (Couches 3 et 4 OSI)</h2>
<p data-path-to-node="7">Les attaques au niveau réseau ciblant la couche transport (L4) et la couche réseau (L3) du modèle OSI ont un objectif simple : saturer la bande passante de votre hébergement web ou surcharger la capacité de traitement de vos équipements (routeurs, pare-feux hardware). Elles se manifestent principalement sous forme d&#8217;inondations de paquets (<i data-path-to-node="7" data-index-in-node="342">SYN Floods</i>, <i data-path-to-node="7" data-index-in-node="354">UDP Floods</i>, ou attaques par amplification DNS/NTP).</p>
<p data-path-to-node="8">Pour empêcher ces volumes massifs de données illégitimes d&#8217;atteindre votre serveur d&#8217;origine, plusieurs mécanismes d&#8217;infrastructure doivent être configurés :</p>
<h3 data-path-to-node="9">Les centres de nettoyage (<i data-path-to-node="9" data-index-in-node="26">Scrubbing Centers</i>) et le routage BGP</h3>
<p data-path-to-node="10">En cas d&#8217;attaque volumétrique majeure, l&#8217;un des moyens les plus efficaces consiste à utiliser un service de nettoyage de trafic basé sur le protocole BGP (<i data-path-to-node="10" data-index-in-node="155">Border Gateway Protocol</i>). En cas de pic anormal, le trafic destiné à votre IP est automatiquement réacheminé vers des centres de dépoussiérage capables d&#8217;absorber des terabits de données par seconde. Les paquets malveillants y sont filtrés, et seul le trafic &#8220;propre&#8221; est transmis à votre infrastructure.</p>
<h3 data-path-to-node="11">Le déploiement d’un réseau CDN (<i data-path-to-node="11" data-index-in-node="32">Content Delivery Network</i>)</h3>
<p data-path-to-node="12">Un CDN comme Cloudflare, Fastly ou KeyCDN joue un rôle de bouclier thermique entre les internautes et votre serveur web. En agissant comme un proxy inverse distribué à travers le monde, le CDN masque l&#8217;adresse IP réelle de votre serveur dédié. Les attaques volumétriques viennent alors butter sur le réseau mondial du CDN, préservant ainsi totalement votre serveur source.</p>
<h3 data-path-to-node="13">La répartition de charge (<i data-path-to-node="13" data-index-in-node="26">Load Balancing</i>) et la redondance</h3>
<p data-path-to-node="14">La haute disponibilité repose sur l&#8217;absence de point unique de défaillance (<i data-path-to-node="14" data-index-in-node="76">Single Point of Failure</i>). En plaçant un équilibreur de charge (type HAProxy ou un Load Balancer Cloud) en amont d&#8217;un cluster de serveurs, vous répartissez le flux de visiteurs de manière fluide. En cas d&#8217;attaque de taille modérée, la charge est lissée sur plusieurs machines au lieu d&#8217;effondrer un serveur isolé.</p>
<h2 data-path-to-node="16">2. Protéger la couche applicative : Faire face aux attaques complexes (Couche 7 OSI)</h2>
<p data-path-to-node="17">Plus insidieuses et souvent plus difficiles à détecter, les attaques applicatives (couche 7 OSI) ne cherchent pas à raturer la bande passante, mais à épuiser les ressources système internes du serveur (CPU, mémoire RAM, connexions actives à la base de données MySQL ou processus PHP-FPM). En envoyant des requêtes HTTP/HTTPS en apparence légitimes (<i data-path-to-node="17" data-index-in-node="349">HTTP Floods</i>), les pirates provoquent un effondrement des performances applicatives.</p>
<p data-path-to-node="18">Pour contrecarrer ces attaques ciblant la logique applicative, un paramétrage sur mesure des logiciels serveurs est obligatoire :</p>
<h3 data-path-to-node="19">Déploiement d&#8217;un WAF (<i data-path-to-node="19" data-index-in-node="22">Web Application Firewall</i>)</h3>
<p data-path-to-node="20">Un Pare-feu Applicatif Web (tel que ModSecurity, Nginx Naxsi ou la suite de règles Cloudflare WAF) analyse en temps réel le contenu et l&#8217;intention des requêtes HTTP entrantes. Il permet de bloquer les attaques automatisées, les robots malveillants, les injections SQL, le cross-site scripting (XSS) et les requêtes ciblant intentionnellement les scripts lourds de vos applications.</p>
<h3 data-path-to-node="21">Configuration du <i data-path-to-node="21" data-index-in-node="17">Rate Limiting</i> (Limitation de débit)</h3>
<p data-path-to-node="22">Indispensable sous Nginx, Apache ou HAProxy, le <i data-path-to-node="22" data-index-in-node="48">Rate Limiting</i> consiste à brider le nombre maximal de requêtes qu&#8217;une adresse IP peut soumettre dans un temps donné. Il est particulièrement crucial de l&#8217;appliquer sur les endpoints vulnérables, comme les pages de connexion (<i data-path-to-node="22" data-index-in-node="272">wp-login.php</i>, interfaces d&#8217;administration), les formulaires de recherche ou les API de paiement.</p>
<h3 data-path-to-node="23">Stratégie de mise en cache agressive (Redis, Varnish, Nginx FastCGI)</h3>
<p data-path-to-node="24">Le maillon le plus faible d&#8217;un serveur web est souvent l&#8217;exécution des scripts (PHP, Python, Node.js) et les appels en base de données. En configurant une couche de cache puissante (Redis pour le cache d&#8217;objets, Varnish ou Nginx pour le cache de pages complètes), le serveur répond instantanément aux requêtes en mémoire vive sans solliciter la base de données, rendant l&#8217;application extrêmement résiliente face aux surcharges de trafic.</p>
<h2 data-path-to-node="26">3. Le rôle clé de l’infogérance de serveur dans la lutte anti-DDoS</h2>
<p data-path-to-node="27">Disposer d&#8217;outils performants ne suffit pas : la cybersécurité exige une surveillance constante, des ajustements réguliers et une capacité d&#8217;intervention immédiate en cas d&#8217;attaque avérée. C&#8217;est précisément à ce niveau que l&#8217;<b data-path-to-node="27" data-index-in-node="225">infogérance de serveur</b> démontre toute sa valeur ajoutée.</p>
<h3 data-path-to-node="28">Une surveillance et un monitoring 24/7</h3>
<p data-path-to-node="29">Un prestataire spécialisé en infogérance met en place des sondes de monitoring réseau et système (Prometheus, Zabbix, Grafana) pour suivre en temps réel le trafic, la charge processeur et l&#8217;utilisation de la RAM. Toute anomalie ou pic de trafic suspect déclenche une alerte immédiate avant même que vos utilisateurs ne subissent de ralentissement.</p>
<h3 data-path-to-node="30">Un paramétrage sur-mesure et l&#8217;application des correctifs</h3>
<p data-path-to-node="31">Il n&#8217;existe pas de configuration de sécurité universelle. L&#8217;équipe d&#8217;infogérance adapte la configuration de vos pare-feux (IPTables/NFTables, WAF, règles Nginx) en fonction de l&#8217;architecture précise de votre projet web. De plus, elle assure la mise à jour préventive continuelle du système d&#8217;exploitation et des paquets logiciels pour combler les vulnérabilités du jour zéro (<i data-path-to-node="31" data-index-in-node="376">zero-day</i>).</p>
<h3 data-path-to-node="32">La gestion de crise et l&#8217;atténuation d&#8217;urgence</h3>
<p data-path-to-node="33">Lorsqu&#8217;une attaque DDoS complexe survient, chaque minute compte. Un administrateur système dédié est en mesure d&#8217;analyser l&#8217;empreinte des logs d&#8217;attaque en temps réel, de repérer les schémas des requêtes malveillantes et d&#8217;appliquer immédiatement des règles de blocage chirurgicales pour rétablir l&#8217;accès à vos services sans perturber le trafic légitime.</p>
<h2 data-path-to-node="35">En conclusion : Faites de la sécurité un avantage concurrentiel</h2>
<p data-path-to-node="36">Face à la fréquence des cybermenaces actuelles, la protection contre les attaques DDoS ne doit plus être perçue comme un coût, mais comme un investissement stratégique pour garantir la continuité de vos affaires. En combinant un bouclier d&#8217;infrastructure réseau solide, une optimisation fine du serveur web et l&#8217;expertise d&#8217;une <b data-path-to-node="36" data-index-in-node="328">équipe d&#8217;infogérance proactive</b>, vous transformez la disponibilité de votre site en un véritable gage de confiance pour vos clients.</p><p>The post <a href="https://demarcq.net/protection-attaque-ddos">Infogérance Protection Attaque DDoS</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/protection-attaque-ddos.mp4" length="19990034" type="video/mp4" />

			</item>
		<item>
		<title>Comment sécuriser ses tâches planifiées ?</title>
		<link>https://demarcq.net/comment-securiser-ses-taches-planifiees</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 14:38:54 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9284</guid>

					<description><![CDATA[<p>Comment sécuriser ses tâches planifiées (Cron jobs) sur un serveur de production ? Un script Cron qui s&#8217;exécute avec trop de privilèges, qui s&#8217;exécute en double ou qui échoue en silence représente un danger majeur pour la sécurité et l&#8217;intégrité de vos données. Règle 1 : Ne lancez jamais vos scripts sous l&#8217;utilisateur root Un [&#8230;]</p>
<p>The post <a href="https://demarcq.net/comment-securiser-ses-taches-planifiees">Comment sécuriser ses tâches planifiées ?</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>Comment sécuriser ses tâches planifiées (Cron jobs) sur un serveur de production ?</h1>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-9287" src="https://demarcq.net/wp-content/uploads/2026/07/Comment-securiser-ses-taches-planifiees.webp" alt="" width="800" height="336" srcset="https://demarcq.net/wp-content/uploads/2026/07/Comment-securiser-ses-taches-planifiees.webp 800w, https://demarcq.net/wp-content/uploads/2026/07/Comment-securiser-ses-taches-planifiees-300x126.webp 300w, https://demarcq.net/wp-content/uploads/2026/07/Comment-securiser-ses-taches-planifiees-768x323.webp 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p data-path-to-node="45">Un script Cron qui s&#8217;exécute avec trop de privilèges, qui s&#8217;exécute en double ou qui échoue en silence représente un danger majeur pour la sécurité et l&#8217;intégrité de vos données.</p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/comment-securiser-ses-taches-planifiees-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/comment-securiser-ses-taches-planifiees.mp4"></video></p>
<h3 data-path-to-node="46">Règle 1 : Ne lancez jamais vos scripts sous l&#8217;utilisateur <code data-path-to-node="46" data-index-in-node="58">root</code></h3>
<p data-path-to-node="47">Un script vulnérable exécuté en <code data-path-to-node="47" data-index-in-node="32">root</code> compromet instantanément l&#8217;intégralité du serveur dédié. Utilisez le cron de l&#8217;utilisateur applicatif dédié (ex: <code data-path-to-node="47" data-index-in-node="150">www-data</code>).</p>
<div class="code-block ng-tns-c1885327722-157 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQkgI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-157">
<div class="animated-opacity ng-tns-c1885327722-157">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-157 ng-star-inserted">
<p><span class="ng-tns-c1885327722-157">Bash</span></p>
<div class="buttons ng-tns-c1885327722-157 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-157"><code class="code-container formatted ng-tns-c1885327722-157" role="text" data-test-id="code-content"><span class="hljs-comment"># Modifier le cron d'un utilisateur spécifique</span>
crontab -u www-data -e
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="49">Règle 2 : Déclarer un environnement d&#8217;exécution (PATH) explicite</h3>
<p data-path-to-node="50">Contrairement à votre terminal interactif, l&#8217;environnement d&#8217;un Cron est extrêmement restreint. Spécifiez toujours les chemins absolus pour vos binaires ou déclarez le <code data-path-to-node="50" data-index-in-node="168">PATH</code> en haut de votre fichier crontab :</p>
<div class="code-block ng-tns-c1885327722-158 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQkwI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-158">
<div class="animated-opacity ng-tns-c1885327722-158">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-158 ng-star-inserted">
<p><span class="ng-tns-c1885327722-158">Extrait de code</span></p>
<div class="buttons ng-tns-c1885327722-158 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-158"><code class="code-container formatted ng-tns-c1885327722-158" role="text" data-test-id="code-content">PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Exemple de tâche sécurisée avec chemins absolus
0 4 * * * /usr/bin/php /var/www/mon-projet/artisan backup:run
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="52">Règle 3 : Éviter l&#8217;exécution simultanée (Overlap) avec <code data-path-to-node="52" data-index-in-node="55">flock</code></h3>
<p data-path-to-node="53">Si un script de synchronisation configuré pour tourner toutes les 5 minutes met finalement 10 minutes à s&#8217;exécuter, une deuxième instance va se lancer en parallèle. Cela provoque souvent des corruptions de données ou des surcharges CPU. Utilisez <code data-path-to-node="53" data-index-in-node="246">flock</code> pour verrouiller l&#8217;exécution :</p>
<div class="code-block ng-tns-c1885327722-159 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQlAI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-159">
<div class="animated-opacity ng-tns-c1885327722-159">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-159 ng-star-inserted">
<p><span class="ng-tns-c1885327722-159">Extrait de code</span></p>
<div class="buttons ng-tns-c1885327722-159 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-159"><code class="code-container formatted ng-tns-c1885327722-159" role="text" data-test-id="code-content">*/5 * * * * usr/bin/flock -n /tmp/mon_cron_sync.lock -c "/usr/bin/php /var/www/mon-projet/sync.php"
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="55"><i data-path-to-node="55" data-index-in-node="0">(Le commutateur <code data-path-to-node="55" data-index-in-node="16">-n</code> indique à flock de s&#8217;arrêter immédiatement sans attendre si le verrou est déjà actif).</i></p>
<h3 data-path-to-node="56">Règle 4 : Capturer et masquer la sortie standard, mais logger les erreurs</h3>
<p data-path-to-node="57">Ne laissez pas vos crons polluer les boîtes mail locales ou les fichiers de logs génériques. Redirigez la sortie standard (<code data-path-to-node="57" data-index-in-node="123">stdout</code>) vers le vide absolu <code data-path-to-node="57" data-index-in-node="151">/dev/null</code>, tout en capturant les erreurs (<code data-path-to-node="57" data-index-in-node="193">stderr</code>) :</p>
<div class="code-block ng-tns-c1885327722-160 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQlQI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-160">
<div class="animated-opacity ng-tns-c1885327722-160">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-160 ng-star-inserted">
<p><span class="ng-tns-c1885327722-160">Extrait de code</span></p>
<div class="buttons ng-tns-c1885327722-160 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-160"><code class="code-container formatted ng-tns-c1885327722-160" role="text" data-test-id="code-content">0 2 * * * /usr/bin/python3 /scripts/clean.py &gt; /dev/null 2&gt; /var/log/cron_e</code></pre>
</div>
</div>
</div><p>The post <a href="https://demarcq.net/comment-securiser-ses-taches-planifiees">Comment sécuriser ses tâches planifiées ?</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/comment-securiser-ses-taches-planifiees.mp4" length="13584674" type="video/mp4" />

			</item>
		<item>
		<title>Mettre en place une limitation de débit avec Nginx</title>
		<link>https://demarcq.net/limitation-de-debit-avec-nginx</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Thu, 16 Jul 2026 14:38:03 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9282</guid>

					<description><![CDATA[<p>Rate Limiting Nginx : Le guide complet pour bloquer le scraping et les attaques force brute Title SEO : Rate Limiting Nginx : Guide Complet Anti-DDoS &#38; Scraping Meta Description : Découvrez comment configurer la limitation de débit (Rate Limiting) avec Nginx. Protégez vos serveurs des attaques force brute et du scraping (exemples inclus). URL [&#8230;]</p>
<p>The post <a href="https://demarcq.net/limitation-de-debit-avec-nginx">Mettre en place une limitation de débit avec Nginx</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="model-response-message-contentr_d409b4504731d9cd" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" aria-busy="false" aria-live="polite">
<div id="model-response-message-contentr_d214d67de169623c" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" aria-busy="false" aria-live="polite">
<div id="model-response-message-contentr_4dadf2bd2a5d2db0" class="markdown markdown-main-panel enable-luminous-fast-follows enable-updated-hr-color md-content" dir="ltr" aria-busy="false" aria-live="polite">
<h1 data-path-to-node="2">Rate Limiting Nginx : Le guide complet pour bloquer le scraping et les attaques force brute</h1>
<p data-path-to-node="3"><b data-path-to-node="3" data-index-in-node="0">Title SEO :</b> Rate Limiting Nginx : Guide Complet Anti-DDoS &amp; Scraping</p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/limitation-de-debit-avec-nginx-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/limitation-de-debit-avec-nginx.mp4"></video></p>
<p data-path-to-node="4"><b data-path-to-node="4" data-index-in-node="0">Meta Description :</b> Découvrez comment configurer la limitation de débit (Rate Limiting) avec Nginx. Protégez vos serveurs des attaques force brute et du scraping (exemples inclus).</p>
<p data-path-to-node="5"><b data-path-to-node="5" data-index-in-node="0">URL suggérée :</b> <code data-path-to-node="5" data-index-in-node="15">/nginx-rate-limiting-guide-securite/</code></p>
<p data-path-to-node="7">À mesure que les applications web prennent de l&#8217;importance, la protection de votre infrastructure serveur contre l&#8217;inondation de requêtes devient un enjeu prioritaire. Qu&#8217;il s&#8217;agisse d&#8217;une <b data-path-to-node="7" data-index-in-node="189">attaque par force brute</b> ciblant vos formulaires d&#8217;authentification, d&#8217;un <b data-path-to-node="7" data-index-in-node="262">bot de web scraping agressif</b> qui aspire vos contenus, ou d&#8217;un <b data-path-to-node="7" data-index-in-node="324">déni de service applicatif (DDoS Layer 7)</b>, une surcharge non maîtrisée peut rapidement paralyser vos bases de données MySQL et vos processus PHP-FPM ou Node.js.</p>
<p data-path-to-node="8">Heureusement, le serveur web <b data-path-to-node="8" data-index-in-node="29">Nginx</b> intègre un module nativement conçu pour juguler ces abus : la limitation de débit (<i data-path-to-node="8" data-index-in-node="118">Rate Limiting</i>). Basé sur l&#8217;algorithme robuste du <b data-path-to-node="8" data-index-in-node="167">Leaky Bucket</b> (le « seau percé »), Nginx permet de filtrer les flux malveillants tout en garantissant une expérience fluide pour vos utilisateurs légitimes.</p>
<h2 data-path-to-node="10">1. Comprendre l&#8217;algorithme du Leaky Bucket dans Nginx</h2>
<p data-path-to-node="11">Pour paramétrer efficacement le Rate Limiting sous Nginx, il est essentiel d&#8217;en comprendre la mécanique sous-jacente :</p>
<ul data-path-to-node="12">
<li>
<p data-path-to-node="12,0,0"><b data-path-to-node="12,0,0" data-index-in-node="0">Le seau (La capacité d&#8217;accueil) :</b> Lorsqu&#8217;une requête arrive, elle pénètre dans un seau virtuel.</p>
</li>
<li>
<p data-path-to-node="12,1,0"><b data-path-to-node="12,1,0" data-index-in-node="0">La fuite (Le débit d&#8217;exécution) :</b> Si les requêtes arrivent à un rythme régulier (par exemple 1 requête par seconde), elles sont traitées instantanément.</p>
</li>
<li>
<p data-path-to-node="12,2,0"><b data-path-to-node="12,2,0" data-index-in-node="0">Le débordement (Le rejet) :</b> Si les requêtes arrivent trop rapidement et dépassent la capacité d&#8217;absorption réservée, le seau déborde : Nginx rejette immédiatement les requêtes excédentaires en retournant une erreur client.</p>
</li>
</ul>
<h2 data-path-to-node="14">2. Étape 1 : Définir les zones de stockage de mémoire (<code data-path-to-node="14" data-index-in-node="55">limit_req_zone</code>)</h2>
<p data-path-to-node="15">Avant d&#8217;appliquer une restriction sur une URL, vous devez déclarer des <b data-path-to-node="15" data-index-in-node="71">zones de mémoire partagée</b> dans le contexte global <code data-path-to-node="15" data-index-in-node="121">http</code> de votre fichier de configuration Nginx (<code data-path-to-node="15" data-index-in-node="167">/etc/nginx/nginx.conf</code>). Ces zones permettent à Nginx de suivre et de compter l&#8217;historique des requêtes émises par chaque adresse IP.</p>
<p data-path-to-node="16">Ouvrez la configuration générale :</p>
<div class="code-block ng-tns-c3330081303-83 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjb4O6P3IKWAxUAAAAAHQAAAAAQ5QI">
<div class="formatted-code-block-internal-container ng-tns-c3330081303-83">
<div class="animated-opacity ng-tns-c3330081303-83">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c3330081303-83 ng-star-inserted">
<p><span class="ng-tns-c3330081303-83">Nginx</span></p>
<div class="buttons ng-tns-c3330081303-83 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c3330081303-83"><code class="code-container formatted ng-tns-c3330081303-83" role="text" data-test-id="code-content"><span class="hljs-section">http</span> {
    <span class="hljs-comment"># 1. Prise en compte de la vraie IP client derrière un Proxy / CDN (Cloudflare, HAProxy)</span>
    <span class="hljs-attribute">set_real_ip_from</span> <span class="hljs-number">10.0.0.0</span>/<span class="hljs-number">8</span>; <span class="hljs-comment"># Plage IP de vos proxys internes</span>
    <span class="hljs-attribute">real_ip_header</span> X-Forwarded-For;
    <span class="hljs-attribute">real_ip_recursive</span> <span class="hljs-literal">on</span>;

    <span class="hljs-comment"># 2. Zone stricte pour les formulaires sensibles (ex: login, inscription, API)</span>
    <span class="hljs-comment"># Limite à 1 requête par seconde (1r/s) par adresse IP</span>
    <span class="hljs-attribute">limit_req_zone</span> $binary_remote_addr zone=login_limit:<span class="hljs-number">10m</span> rate=1r/s;

    <span class="hljs-comment"># 3. Zone globale pour le trafic général du site</span>
    <span class="hljs-comment"># Limite à 10 requêtes par seconde (10r/s) par adresse IP</span>
    <span class="hljs-attribute">limit_req_zone</span> $binary_remote_addr zone=global_limit:<span class="hljs-number">10m</span> rate=10r/s;
}
</code></pre>
</div>
</div>
</div>
<h3 data-path-to-node="18">Explications détaillées des directives :</h3>
<ul data-path-to-node="19">
<li>
<p data-path-to-node="19,0,0"><b data-path-to-node="19,0,0" data-index-in-node="0"><code data-path-to-node="19,0,0" data-index-in-node="0">$binary_remote_addr</code> :</b> Utilise l&#8217;adresse IP du client comme clé de comptage. Le format binaire est privilégié car il ne consomme que 4 octets (IPv4) ou 16 octets (IPv6) en mémoire, contre environ 15 octets pour la version texte classique.</p>
</li>
<li>
<p data-path-to-node="19,1,0"><b data-path-to-node="19,1,0" data-index-in-node="0"><code data-path-to-node="19,1,0" data-index-in-node="0">zone=login_limit:10m</code> :</b> Nomme la zone de stockage et lui alloue une taille mémoire (ici 10 Mégaoctets). À raison d&#8217;environ 64 octets par état d&#8217;IP conservé, 10 Mo permettent de tracer près de <b data-path-to-node="19,1,0" data-index-in-node="191">160 000 adresses IP distinctes</b>.</p>
</li>
<li>
<p data-path-to-node="19,2,0"><b data-path-to-node="19,2,0" data-index-in-node="0"><code data-path-to-node="19,2,0" data-index-in-node="0">rate=1r/s</code> :</b> Fixe le débit maximal toléré. Vous pouvez exprimer cette valeur en requêtes par seconde (<code data-path-to-node="19,2,0" data-index-in-node="101">1r/s</code>) ou en requêtes par minute (<code data-path-to-node="19,2,0" data-index-in-node="134">30r/m</code> pour des restrictions plus souples).</p>
</li>
</ul>
<h2 data-path-to-node="21">3. Étape 2 : Appliquer la limitation sur vos routes (<code data-path-to-node="21" data-index-in-node="53">limit_req</code>)</h2>
<p data-path-to-node="22">Une fois vos zones définies dans le bloc <code data-path-to-node="22" data-index-in-node="41">http</code>, vous pouvez appliquer vos règles à des contextes précis : un bloc <code data-path-to-node="22" data-index-in-node="113">server</code> entier ou des directives <code data-path-to-node="22" data-index-in-node="145">location</code> spécifiques dans les fichiers de vos hôtes virtuels (<code data-path-to-node="22" data-index-in-node="207">/etc/nginx/sites-available/</code>).</p>
<div class="code-block ng-tns-c3330081303-84 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjb4O6P3IKWAxUAAAAAHQAAAAAQ5gI">
<div class="formatted-code-block-internal-container ng-tns-c3330081303-84">
<div class="animated-opacity ng-tns-c3330081303-84">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c3330081303-84 ng-star-inserted">
<p><span class="ng-tns-c3330081303-84">Nginx</span></p>
<div class="buttons ng-tns-c3330081303-84 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c3330081303-84"><code class="code-container formatted ng-tns-c3330081303-84" role="text" data-test-id="code-content"><span class="hljs-section">server</span> {
    <span class="hljs-attribute">listen</span> <span class="hljs-number">443</span> ssl http2;
    <span class="hljs-attribute">server_name</span> exemple.com;

    <span class="hljs-comment"># Log des requêtes bloquées au niveau warning</span>
    <span class="hljs-attribute">limit_req_log_level</span> <span class="hljs-literal">warn</span>;

    <span class="hljs-comment"># Protection ciblée contre la force brute (Formulaire de connexion, wp-login, API)</span>
    <span class="hljs-attribute">location</span> /login {
        <span class="hljs-comment"># Applique la zone login_limit avec un tampon (burst) de 5 et l'option nodelay</span>
        <span class="hljs-attribute">limit_req</span> zone=login_limit burst=<span class="hljs-number">5</span> nodelay;

        <span class="hljs-comment"># Personnalisation de l'erreur : 429 au lieu du 503 par défaut</span>
        <span class="hljs-attribute">limit_req_status</span> <span class="hljs-number">429</span>;

        <span class="hljs-attribute">proxy_pass</span> http://127.0.0.1:8080;
    }

    <span class="hljs-comment"># Protection contre le scraping massif sur les pages produits / catalogue</span>
    <span class="hljs-attribute">location</span> /catalogue/ {
        <span class="hljs-attribute">limit_req</span> zone=global_limit burst=<span class="hljs-number">20</span> nodelay;
        <span class="hljs-attribute">limit_req_status</span> <span class="hljs-number">429</span>;

        <span class="hljs-attribute">try_files</span> $uri $uri/ /index.php?$query_string;
    }

    <span class="hljs-comment"># Restreindre l'accès à l'API GraphQL ou REST</span>
    <span class="hljs-attribute">location</span> /api/v1/ {
        <span class="hljs-attribute">limit_req</span> zone=login_limit burst=<span class="hljs-number">10</span>;
        <span class="hljs-attribute">limit_req_status</span> <span class="hljs-number">429</span>;
    }
}
</code></pre>
</div>
</div>
</div>
<h2 data-path-to-node="25">4. Démystifier les paramètres majeurs : <code data-path-to-node="25" data-index-in-node="40">burst</code> et <code data-path-to-node="25" data-index-in-node="49">nodelay</code></h2>
<p data-path-to-node="26">L&#8217;efficacité du Rate Limiting repose sur l&#8217;association judicieuse des directives <code data-path-to-node="26" data-index-in-node="81">burst</code> et <code data-path-to-node="26" data-index-in-node="90">nodelay</code> :</p>
<h3 data-path-to-node="27">Le paramètre <code data-path-to-node="27" data-index-in-node="13">burst</code> (La tolérance aux rafalages)</h3>
<p data-path-to-node="28">Un site web moderne charge simultanément des dizaines de ressources (scripts JS, CSS, images, requêtes AJAX). Si vous appliquez un <code data-path-to-node="28" data-index-in-node="131">rate=1r/s</code> strict, le navigateur d&#8217;un utilisateur légitime verra ses requêtes bloquées dès la seconde image.</p>
<p data-path-to-node="28">Le paramètre <code data-path-to-node="28" data-index-in-node="252">burst=5</code> autorise temporairement l&#8217;utilisateur à effectuer jusqu&#8217;à 5 requêtes en rafale au-delà du débit autorisé. Ces requêtes supplémentaires sont stockées dans la file d&#8217;attente du tampon.</p>
<h3 data-path-to-node="29">Le paramètre <code data-path-to-node="29" data-index-in-node="13">nodelay</code> (L&#8217;exécution sans latence)</h3>
<p data-path-to-node="30">Par défaut, si vous utilisez <code data-path-to-node="30" data-index-in-node="29">burst=5</code> sans l&#8217;option <code data-path-to-node="30" data-index-in-node="51">nodelay</code>, Nginx accepte les 5 requêtes excédentaires mais applique un délai artificiel pour les lisser dans le temps (ex: une requête traitée toutes les secondes). Cela ralentit considérablement la navigation des internautes réels.</p>
<p data-path-to-node="30">En ajoutant <b data-path-to-node="30" data-index-in-node="294"><code data-path-to-node="30" data-index-in-node="294">nodelay</code></b>, Nginx exécute immédiatement les requêtes contenues dans le <code data-path-to-node="30" data-index-in-node="362">burst</code>. Seules les requêtes dépassant à la fois le débit initial ET la capacité maximale du <code data-path-to-node="30" data-index-in-node="453">burst</code> seront instantanément rejetées avec le code d&#8217;erreur configuré.</p>
<h2 data-path-to-node="32">5. Cas avancés : Exclure des IP de confiance (Whitelisting)</h2>
<p data-path-to-node="33">Dans un environnement de production, vous souhaiterez souvent ignorer la limitation de débit pour vos propres équipes, des outils d&#8217;intégration continue ou des bots de surveillance d&#8217;infrastructure. Pour cela, combinez les modules <code data-path-to-node="33" data-index-in-node="231">geo</code> et <code data-path-to-node="33" data-index-in-node="238">map</code> de Nginx :</p>
<div class="code-block ng-tns-c3330081303-85 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjb4O6P3IKWAxUAAAAAHQAAAAAQ5wI">
<div class="formatted-code-block-internal-container ng-tns-c3330081303-85">
<div class="animated-opacity ng-tns-c3330081303-85">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c3330081303-85 ng-star-inserted">
<p><span class="ng-tns-c3330081303-85">Nginx</span></p>
<div class="buttons ng-tns-c3330081303-85 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c3330081303-85"><code class="code-container formatted ng-tns-c3330081303-85" role="text" data-test-id="code-content"><span class="hljs-section">http</span> {
    <span class="hljs-comment"># 1. Cartographie des IP de confiance</span>
    <span class="hljs-attribute">geo</span> $white_ip {
        <span class="hljs-attribute">default</span> <span class="hljs-number">1</span>;
        127.0.0.1 0;          <span class="hljs-comment"># Localhost</span>
        192.168.1.0/24 0;     <span class="hljs-comment"># Réseau interne de l'entreprise</span>
        203.0.113.42 0;       <span class="hljs-comment"># IP publique de vos administrateurs</span>
    }

    <span class="hljs-comment"># 2. Associe l'IP au compteur uniquement si elle n'est pas "white-listée"</span>
    <span class="hljs-attribute">map</span> $white_ip $limit_key {
        0 "";                 <span class="hljs-comment"># Si l'IP est de confiance, la clé est vide (pas de calcul)</span>
        1 $binary_remote_addr;<span class="hljs-comment"># Sinon, la clé utilise l'IP client</span>
    }

    <span class="hljs-comment"># 3. La zone utilise la clé dynamique $limit_key</span>
    <span class="hljs-attribute">limit_req_zone</span> $limit_key zone=smart_limit:<span class="hljs-number">10m</span> rate=2r/s;
}
</code></pre>
</div>
</div>
</div>
<h2 data-path-to-node="36">6. Bonnes pratiques de maintenance et suivi</h2>
<p data-path-to-node="37">Une stratégie de limitation de débit ne doit jamais être déployée « à l&#8217;aveugle » :</p>
<ol start="1" data-path-to-node="38">
<li>
<p data-path-to-node="38,0,0"><b data-path-to-node="38,0,0" data-index-in-node="0">Remplacer l&#8217;erreur HTTP 503 par la 429 :</b> Par défaut, Nginx retourne le code HTTP <code data-path-to-node="38,0,0" data-index-in-node="81">503 (Service Temporarily Unavailable)</code>. Il est fortement recommandé d&#8217;utiliser <code data-path-to-node="38,0,0" data-index-in-node="159">limit_req_status 429;</code> pour spécifier explicitement le standard HTTP <code data-path-to-node="38,0,0" data-index-in-node="227">429 (Too Many Requests)</code>.</p>
</li>
<li>
<p data-path-to-node="38,1,0"><b data-path-to-node="38,1,0" data-index-in-node="0">Surveiller les journaux d&#8217;erreurs :</b> Analysez régulièrement vos logs pour détecter d&#8217;éventuels faux positifs ou au contraire ajuster des seuils trop permissifs :</p>
<div class="code-block ng-tns-c3330081303-86 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjb4O6P3IKWAxUAAAAAHQAAAAAQ6AI">
<div class="formatted-code-block-internal-container ng-tns-c3330081303-86">
<div class="animated-opacity ng-tns-c3330081303-86">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c3330081303-86 ng-star-inserted">
<p><span class="ng-tns-c3330081303-86">Bash</span></p>
<div class="buttons ng-tns-c3330081303-86 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c3330081303-86"><code class="code-container formatted ng-tns-c3330081303-86" role="text" data-test-id="code-content">tail -f /var/<span class="hljs-built_in">log</span>/nginx/error.log | grep <span class="hljs-string">"limiting requests"</span>
</code></pre>
</div>
</div>
</div>
</li>
<li>
<p data-path-to-node="38,2,0"><b data-path-to-node="38,2,0" data-index-in-node="0">Associer le Rate Limiting à Fail2ban :</b> Pour les attaquants particulièrement tenaces qui génèrent des milliers de réponses <code data-path-to-node="38,2,0" data-index-in-node="122">429</code>, configurez l&#8217;outil <b data-path-to-node="38,2,0" data-index-in-node="146">Fail2ban</b> pour parser le fichier d&#8217;erreur de Nginx et bannir directement leurs IP au niveau du pare-feu Kernel (<code data-path-to-node="38,2,0" data-index-in-node="257">iptables</code> / <code data-path-to-node="38,2,0" data-index-in-node="268">nftables</code>).</p>
</li>
</ol>
<h2 data-path-to-node="40">7. Foire Aux Questions (FAQ)</h2>
<h3 data-path-to-node="41">Quelle est la différence entre HTTP 503 et HTTP 429 sous Nginx ?</h3>
<p data-path-to-node="42">Par défaut, Nginx renvoie une erreur <code data-path-to-node="42" data-index-in-node="37">503 Service Temporarily Unavailable</code>. Ajouter la directive <code data-path-to-node="42" data-index-in-node="95">limit_req_status 429;</code> permet d&#8217;envoyer le code HTTP <code data-path-to-node="42" data-index-in-node="147">429 Too Many Requests</code>. Ce code est plus précis et indique clairement aux API, robots et navigateurs qu&#8217;ils ont dépassé leur quota de requêtes.</p>
<h3 data-path-to-node="43">Le Rate Limiting Nginx risque-t-il d&#8217;impacter mon référencement (SEO) ?</h3>
<p data-path-to-node="44">Non, à condition d&#8217;utiliser correctement le paramètre <code data-path-to-node="44" data-index-in-node="54">burst</code> combiné à <code data-path-to-node="44" data-index-in-node="70">nodelay</code>. Cela permet aux crawlers des moteurs de recherche (comme Googlebot) d&#8217;explorer rapidement vos assets (CSS, JS) sans subir de blocage, tout en vous prémunissant contre les bots malveillants.</p>
<h2 data-path-to-node="46">Conclusion : L&#8217;accompagnement par l&#8217;infogérance</h2>
<p data-path-to-node="47">Si la syntaxe de Nginx paraît accessible, l&#8217;ajustement fin des seuils (<code data-path-to-node="47" data-index-in-node="71">rate</code>, <code data-path-to-node="47" data-index-in-node="77">burst</code>, <code data-path-to-node="47" data-index-in-node="84">nodelay</code>) sur des environnements complexes à fort trafic exige une analyse précise du comportement de vos utilisateurs.</p>
<p data-path-to-node="48">Faire appel à un service d&#8217;<b data-path-to-node="48" data-index-in-node="27">infogérance de serveur</b> vous assure un paramétrage sur-mesure de votre serveur web, l&#8217;intégration des règles de contournement pour les CDN, une surveillance pro active 24/7 et la garantie de bloquer les attaques force brute et le scraping sans jamais pénaliser le SEO ni le parcours de vos clients.</p>
</div>
</div>
</div><p>The post <a href="https://demarcq.net/limitation-de-debit-avec-nginx">Mettre en place une limitation de débit avec Nginx</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/limitation-de-debit-avec-nginx.mp4" length="16927465" type="video/mp4" />

			</item>
		<item>
		<title>Comment analyser les logs système</title>
		<link>https://demarcq.net/comment-analyser-les-logs-systeme</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Wed, 15 Jul 2026 23:00:57 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9277</guid>

					<description><![CDATA[<p>Comment analyser les logs système (journald, syslog, dmesg) pour identifier une panne matérielle ou système imminente ? Attendre que votre serveur s&#8217;éteigne pour agir est une erreur critique. Le noyau Linux et le système d&#8217;exploitation envoient des signaux d&#8217;alerte bien avant la panne finale. Voici comment les traquer. dmesg : Le journal du noyau (Kernel) [&#8230;]</p>
<p>The post <a href="https://demarcq.net/comment-analyser-les-logs-systeme">Comment analyser les logs système</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>Comment analyser les logs système (journald, syslog, dmesg) pour identifier une panne matérielle ou système imminente ?</h1>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-9278" src="https://demarcq.net/wp-content/uploads/2026/07/Capture-decran-du-2026-07-16-00-58-41.webp" alt="" width="750" height="507" srcset="https://demarcq.net/wp-content/uploads/2026/07/Capture-decran-du-2026-07-16-00-58-41.webp 750w, https://demarcq.net/wp-content/uploads/2026/07/Capture-decran-du-2026-07-16-00-58-41-300x203.webp 300w, https://demarcq.net/wp-content/uploads/2026/07/Capture-decran-du-2026-07-16-00-58-41-420x284.webp 420w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p data-path-to-node="26">Attendre que votre serveur s&#8217;éteigne pour agir est une erreur critique. Le noyau Linux et le système d&#8217;exploitation envoient des signaux d&#8217;alerte bien avant la panne finale. Voici comment les traquer.</p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/comment-analyser-les-logs-systeme-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/comment-analyser-les-logs-systeme.mp4"></video></p>
<h3 data-path-to-node="27">dmesg : Le journal du noyau (Kernel)</h3>
<p data-path-to-node="28"><code data-path-to-node="28" data-index-in-node="0">dmesg</code> affiche les messages du tampon circulaire du noyau. C&#8217;est l&#8217;outil numéro un pour repérer les défaillances physiques directes.</p>
<ul data-path-to-node="29">
<li>
<p data-path-to-node="29,0,0"><b data-path-to-node="29,0,0" data-index-in-node="0">Vérifier les erreurs d&#8217;écriture disque / SATA :</b></p>
<div class="code-block ng-tns-c1885327722-151 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjAI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-151">
<div class="animated-opacity ng-tns-c1885327722-151">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-151 ng-star-inserted">
<p><span class="ng-tns-c1885327722-151">Bash</span></p>
<div class="buttons ng-tns-c1885327722-151 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-151"><code class="code-container formatted ng-tns-c1885327722-151" role="text" data-test-id="code-content">dmesg | grep -Ei <span class="hljs-string">"ata|scsi|sd|sector|ext4|io error"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="29,0,2"><i data-path-to-node="29,0,2" data-index-in-node="0">Signe d&#8217;alerte :</i> Des erreurs de type <code data-path-to-node="29,0,2" data-index-in-node="37">I/O error</code> ou <code data-path-to-node="29,0,2" data-index-in-node="50">Buffer I/O error on dev sda</code> indiquent que votre disque dur ou SSD est en train de rendre l&#8217;âme.</p>
</li>
<li>
<p data-path-to-node="29,1,0"><b data-path-to-node="29,1,0" data-index-in-node="0">Traquer l&#8217;instabilité de la mémoire RAM :</b></p>
<div class="code-block ng-tns-c1885327722-152 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjQI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-152">
<div class="animated-opacity ng-tns-c1885327722-152">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-152 ng-star-inserted">
<p><span class="ng-tns-c1885327722-152">Bash</span></p>
<div class="buttons ng-tns-c1885327722-152 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-152"><code class="code-container formatted ng-tns-c1885327722-152" role="text" data-test-id="code-content">dmesg | grep -i <span class="hljs-string">"MCE"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="29,1,2"><i data-path-to-node="29,1,2" data-index-in-node="0">Signe d&#8217;alerte :</i> Les erreurs MCE (<i data-path-to-node="29,1,2" data-index-in-node="34">Machine Check Exception</i>) sont générées directement par le processeur lorsqu&#8217;il détecte une défaillance matérielle (souvent un problème de RAM ECC ou de surchauffe CPU).</p>
</li>
</ul>
<h3 data-path-to-node="30">journald et syslog : Les journaux du système</h3>
<p data-path-to-node="31">Avec <code data-path-to-node="31" data-index-in-node="5">systemd</code>, <code data-path-to-node="31" data-index-in-node="14">journalctl</code> centralise la majorité des logs.</p>
<ul data-path-to-node="32">
<li>
<p data-path-to-node="32,0,0"><b data-path-to-node="32,0,0" data-index-in-node="0">Lister uniquement les erreurs graves et critiques depuis le dernier démarrage :</b></p>
<div class="code-block ng-tns-c1885327722-153 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjgI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-153">
<div class="animated-opacity ng-tns-c1885327722-153">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-153 ng-star-inserted">
<p><span class="ng-tns-c1885327722-153">Bash</span></p>
<div class="buttons ng-tns-c1885327722-153 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-153"><code class="code-container formatted ng-tns-c1885327722-153" role="text" data-test-id="code-content">journalctl -p 0..3 -b
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="32,0,2"><i data-path-to-node="32,0,2" data-index-in-node="0">(Le paramètre <code data-path-to-node="32,0,2" data-index-in-node="14">-p 0..3</code> cible les niveaux Emergency, Alert, Critical et Error).</i></p>
</li>
<li>
<p data-path-to-node="32,1,0"><b data-path-to-node="32,1,0" data-index-in-node="0">Surveiller les kills par manque de mémoire (Out of Memory) :</b> Si votre serveur s&#8217;arrête de répondre de façon aléatoire ou si vos services (comme MySQL) coupent tout seuls :</p>
<div class="code-block ng-tns-c1885327722-154 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjwI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-154">
<div class="animated-opacity ng-tns-c1885327722-154">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-154 ng-star-inserted">
<p><span class="ng-tns-c1885327722-154">Bash</span></p>
<div class="buttons ng-tns-c1885327722-154 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-154"><code class="code-container formatted ng-tns-c1885327722-154" role="text" data-test-id="code-content">journalctl -ke | grep -i <span class="hljs-string">"oom-killer"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="32,1,2">L&#8217;OOM-Killer intervient pour tuer les processus gourmands lorsque la RAM est totalement saturée.</p>
</li>
</ul>
<p>&nbsp;</p><p>The post <a href="https://demarcq.net/comment-analyser-les-logs-systeme">Comment analyser les logs système</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/comment-analyser-les-logs-systeme.mp4" length="15383808" type="video/mp4" />

			</item>
		<item>
		<title>Comment configurer PHP-FPM pour maximiser les performances ?</title>
		<link>https://demarcq.net/comment-configurer-php-fpm-pour-maximiser-les-performances</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Wed, 15 Jul 2026 22:53:12 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9271</guid>

					<description><![CDATA[<p>PHP-FPM : Comment configurer les modes dynamic, static ou ondemand pour maximiser les performances ? Le choix et la configuration du gestionnaire de processus (process manager ou pm) dans votre pool PHP-FPM déterminent la réactivité de vos applications PHP sous forte charge. Comparatif des 3 modes PHP-FPM Mode Fonctionnement Cas d&#8217;usage idéal Avantages / Inconvénients [&#8230;]</p>
<p>The post <a href="https://demarcq.net/comment-configurer-php-fpm-pour-maximiser-les-performances">Comment configurer PHP-FPM pour maximiser les performances ?</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>PHP-FPM : Comment configurer les modes dynamic, static ou ondemand pour maximiser les performances ?</h1>
<p data-path-to-node="15"><img loading="lazy" decoding="async" class="wp-image-6568 pk-pin-it-ready lazyautosizes ls-is-cached pk-lazyloaded" title="Gestionnaires de processus PHP-FPM : « à la demande », « dynamique » et « statique »" src="https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static-1024x426.png" sizes="675px" srcset="https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static-300x125.png 300w, https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static-1024x426.png 1024w, https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static.png 1280w" alt="Gestionnaires de processus PHP-FPM : « à la demande », « dynamique » et « statique »" width="1024" height="426" data-pk-sizes="auto" data-ls-sizes="auto, (max-width: 1024px) 100vw, 1024px" data-pk-src="https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static-1024x426.png" data-pk-srcset="https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static-300x125.png 300w, https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static-1024x426.png 1024w, https://cdn.dakidarts.com/image/PHP-FPM-Process-Managers-ondemand-vs-dynamic-vs-static.png 1280w" />Le choix et la configuration du gestionnaire de processus (process manager ou <code data-path-to-node="15" data-index-in-node="78">pm</code>) dans votre pool PHP-FPM déterminent la réactivité de vos applications PHP sous forte charge.</p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/comment-configurer-php-fpm-pour-maximiser-les-performances-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/comment-configurer-php-fpm-pour-maximiser-les-performances.mp4"></video></p>
<h3 data-path-to-node="16">Comparatif des 3 modes PHP-FPM</h3>
<table data-path-to-node="17">
<thead>
<tr>
<td><strong>Mode</strong></td>
<td><strong>Fonctionnement</strong></td>
<td><strong>Cas d&#8217;usage idéal</strong></td>
<td><strong>Avantages / Inconvénients</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td><span data-path-to-node="17,1,0,0"><b data-path-to-node="17,1,0,0" data-index-in-node="0"><code data-path-to-node="17,1,0,0" data-index-in-node="0">static</code></b></span></td>
<td><span data-path-to-node="17,1,1,0">Un nombre fixe de processus (<code data-path-to-node="17,1,1,0" data-index-in-node="29">pm.max_children</code>) est lancé au démarrage et reste en mémoire.</span></td>
<td><span data-path-to-node="17,1,2,0">Serveurs dédiés de production avec un trafic stable et important.</span></td>
<td><span data-path-to-node="17,1,3,0"><b data-path-to-node="17,1,3,0" data-index-in-node="0">Le plus performant</b> (zéro latence de création de processus) mais consomme de la RAM en continu.</span></td>
</tr>
<tr>
<td><span data-path-to-node="17,2,0,0"><b data-path-to-node="17,2,0,0" data-index-in-node="0"><code data-path-to-node="17,2,0,0" data-index-in-node="0">dynamic</code></b></span></td>
<td><span data-path-to-node="17,2,1,0">Ajuste le nombre de processus de manière dynamique entre une valeur minimale et maximale.</span></td>
<td><span data-path-to-node="17,2,2,0">Hébergement mutualisé ou serveurs aux ressources modérées.</span></td>
<td><span data-path-to-node="17,2,3,0">Équilibré, mais la création/destruction de processus à la volée induit un léger overhead CPU.</span></td>
</tr>
<tr>
<td><span data-path-to-node="17,3,0,0"><b data-path-to-node="17,3,0,0" data-index-in-node="0"><code data-path-to-node="17,3,0,0" data-index-in-node="0">ondemand</code></b></span></td>
<td><span data-path-to-node="17,3,1,0">Aucun processus n&#8217;est lancé par défaut. Ils sont créés uniquement lorsqu&#8217;une requête arrive.</span></td>
<td><span data-path-to-node="17,3,2,0">Serveurs de dev, petits sites, ou serveurs hébergeant des dizaines de petits pools isolés.</span></td>
<td><span data-path-to-node="17,3,3,0"><b data-path-to-node="17,3,3,0" data-index-in-node="0">Économie maximale de RAM</b>, mais latence perceptible (le temps de spawner le process) sur la première requête.</span></td>
</tr>
</tbody>
</table>
<h3 data-path-to-node="18">Comment calculer vos limites de processus (<code data-path-to-node="18" data-index-in-node="43">pm.max_children</code>) ?</h3>
<p data-path-to-node="19">La mauvaise configuration de cette directive provoque l&#8217;erreur classique : <i data-path-to-node="19" data-index-in-node="75"><code data-path-to-node="19" data-index-in-node="75">[Server deadlocks / Gateway Timeout]</code></i>.</p>
<ol start="1" data-path-to-node="20">
<li>
<p data-path-to-node="20,0,0">Calculez la mémoire RAM moyenne consommée par un seul de vos processus PHP. Exécutez :</p>
<div class="code-block ng-tns-c1885327722-149 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQigI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-149">
<div class="animated-opacity ng-tns-c1885327722-149">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-149 ng-star-inserted">
<p><span class="ng-tns-c1885327722-149">Bash</span></p>
<div class="buttons ng-tns-c1885327722-149 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-149"><code class="code-container formatted ng-tns-c1885327722-149" role="text" data-test-id="code-content">ps -o rss -C php-fpm | tail -n +2 | awk <span class="hljs-string">'{sum+=$1} END {print sum/NR/1024 " MB"}'</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="20,0,2"><i data-path-to-node="20,0,2" data-index-in-node="0">(Disons que le résultat est de 50 MB par processus).</i></p>
</li>
<li>
<p data-path-to-node="20,1,0">Déterminez la RAM maximale que vous souhaitez allouer à PHP-FPM (ex: laissez au moins 1-2 GB pour le système, MySQL et Nginx). Sur un serveur de 8 GB, vous décidez d&#8217;allouer 5 GB à PHP.</p>
</li>
<li>
<p data-path-to-node="20,2,0">Calculez <code data-path-to-node="20,2,0" data-index-in-node="9">pm.max_children</code> : <span class="math-inline" data-math="5000 text{ MB} / 50 text{ MB} = 100" data-index-in-node="27">$5000 text{ MB} / 50 text{ MB} = 100$</span>.</p>
</li>
</ol>
<h3 data-path-to-node="21">Exemple de configuration optimale (<code data-path-to-node="21" data-index-in-node="35">static</code> pour production)</h3>
<p data-path-to-node="22">Modifiez le fichier de configuration de votre pool (ex: <code data-path-to-node="22" data-index-in-node="56">/etc/php/8.x/fpm/pool.d/www.conf</code>) :</p>
<div class="code-block ng-tns-c1885327722-150 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQiwI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-150">
<div class="animated-opacity ng-tns-c1885327722-150">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-150 ng-star-inserted">
<p><span class="ng-tns-c1885327722-150">Ini, TOML</span></p>
<div class="buttons ng-tns-c1885327722-150 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-150"><code class="code-container formatted ng-tns-c1885327722-150" role="text" data-test-id="code-content"><span class="hljs-attr">pm</span> = static
<span class="hljs-attr">pm.max_children</span> = <span class="hljs-number">100</span>
<span class="hljs-attr">pm.max_requests</span> = <span class="hljs-number">1000</span> <span class="hljs-comment"># Évite les fuites de mémoire en recyclant les processus après 1000 requêtes</span>
</code></pre>
</div>
</div>
</div>
<h2 data-path-to-node="25">3. Comment analyser les logs système (journald, syslog, dmesg) pour identifier une panne matérielle ou système imminente ?</h2>
<p data-path-to-node="26">Attendre que votre serveur s&#8217;éteigne pour agir est une erreur critique. Le noyau Linux et le système d&#8217;exploitation envoient des signaux d&#8217;alerte bien avant la panne finale. Voici comment les traquer.</p>
<h3 data-path-to-node="27">dmesg : Le journal du noyau (Kernel)</h3>
<p data-path-to-node="28"><code data-path-to-node="28" data-index-in-node="0">dmesg</code> affiche les messages du tampon circulaire du noyau. C&#8217;est l&#8217;outil numéro un pour repérer les défaillances physiques directes.</p>
<ul data-path-to-node="29">
<li>
<p data-path-to-node="29,0,0"><b data-path-to-node="29,0,0" data-index-in-node="0">Vérifier les erreurs d&#8217;écriture disque / SATA :</b></p>
<div class="code-block ng-tns-c1885327722-151 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjAI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-151">
<div class="animated-opacity ng-tns-c1885327722-151">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-151 ng-star-inserted">
<p><span class="ng-tns-c1885327722-151">Bash</span></p>
<div class="buttons ng-tns-c1885327722-151 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-151"><code class="code-container formatted ng-tns-c1885327722-151" role="text" data-test-id="code-content">dmesg | grep -Ei <span class="hljs-string">"ata|scsi|sd|sector|ext4|io error"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="29,0,2"><i data-path-to-node="29,0,2" data-index-in-node="0">Signe d&#8217;alerte :</i> Des erreurs de type <code data-path-to-node="29,0,2" data-index-in-node="37">I/O error</code> ou <code data-path-to-node="29,0,2" data-index-in-node="50">Buffer I/O error on dev sda</code> indiquent que votre disque dur ou SSD est en train de rendre l&#8217;âme.</p>
</li>
<li>
<p data-path-to-node="29,1,0"><b data-path-to-node="29,1,0" data-index-in-node="0">Traquer l&#8217;instabilité de la mémoire RAM :</b></p>
<div class="code-block ng-tns-c1885327722-152 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjQI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-152">
<div class="animated-opacity ng-tns-c1885327722-152">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-152 ng-star-inserted">
<p><span class="ng-tns-c1885327722-152">Bash</span></p>
<div class="buttons ng-tns-c1885327722-152 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-152"><code class="code-container formatted ng-tns-c1885327722-152" role="text" data-test-id="code-content">dmesg | grep -i <span class="hljs-string">"MCE"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="29,1,2"><i data-path-to-node="29,1,2" data-index-in-node="0">Signe d&#8217;alerte :</i> Les erreurs MCE (<i data-path-to-node="29,1,2" data-index-in-node="34">Machine Check Exception</i>) sont générées directement par le processeur lorsqu&#8217;il détecte une défaillance matérielle (souvent un problème de RAM ECC ou de surchauffe CPU).</p>
</li>
</ul>
<h3 data-path-to-node="30">journald et syslog : Les journaux du système</h3>
<p data-path-to-node="31">Avec <code data-path-to-node="31" data-index-in-node="5">systemd</code>, <code data-path-to-node="31" data-index-in-node="14">journalctl</code> centralise la majorité des logs.</p>
<ul data-path-to-node="32">
<li>
<p data-path-to-node="32,0,0"><b data-path-to-node="32,0,0" data-index-in-node="0">Lister uniquement les erreurs graves et critiques depuis le dernier démarrage :</b></p>
<div class="code-block ng-tns-c1885327722-153 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjgI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-153">
<div class="animated-opacity ng-tns-c1885327722-153">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-153 ng-star-inserted">
<p><span class="ng-tns-c1885327722-153">Bash</span></p>
<div class="buttons ng-tns-c1885327722-153 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-153"><code class="code-container formatted ng-tns-c1885327722-153" role="text" data-test-id="code-content">journalctl -p 0..3 -b
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="32,0,2"><i data-path-to-node="32,0,2" data-index-in-node="0">(Le paramètre <code data-path-to-node="32,0,2" data-index-in-node="14">-p 0..3</code> cible les niveaux Emergency, Alert, Critical et Error).</i></p>
</li>
<li>
<p data-path-to-node="32,1,0"><b data-path-to-node="32,1,0" data-index-in-node="0">Surveiller les kills par manque de mémoire (Out of Memory) :</b></p>
<p data-path-to-node="32,1,0">Si votre serveur s&#8217;arrête de répondre de façon aléatoire ou si vos services (comme MySQL) coupent tout seuls :</p>
<div class="code-block ng-tns-c1885327722-154 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQjwI">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-154">
<div class="animated-opacity ng-tns-c1885327722-154">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-154 ng-star-inserted">
<p><span class="ng-tns-c1885327722-154">Bash</span></p>
<div class="buttons ng-tns-c1885327722-154 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-154"><code class="code-container formatted ng-tns-c1885327722-154" role="text" data-test-id="code-content">journalctl -ke | grep -i <span class="hljs-string">"oom-killer"</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="32,1,2">L&#8217;OOM-Killer intervient pour tuer les processus gourmands lorsque la RAM est totalement saturée.</p>
</li>
</ul><p>The post <a href="https://demarcq.net/comment-configurer-php-fpm-pour-maximiser-les-performances">Comment configurer PHP-FPM pour maximiser les performances ?</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/comment-configurer-php-fpm-pour-maximiser-les-performances.mp4" length="20817543" type="video/mp4" />

			</item>
		<item>
		<title>Comment diagnostiquer un goulot d&#8217;étranglement sur une base de données</title>
		<link>https://demarcq.net/comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Wed, 15 Jul 2026 22:49:41 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9269</guid>

					<description><![CDATA[<p>Comment diagnostiquer un goulot d&#8217;étranglement (bottleneck) sur une base de données MySQL / PostgreSQL Pourquoi votre base de données rame-t-elle et comment y remédier ? Dans toute architecture logicielle, la base de données est souvent le cœur battant de l&#8217;application&#8230; mais aussi son maillon le plus sensible. Un temps de réponse qui grimpe, des requêtes [&#8230;]</p>
<p>The post <a href="https://demarcq.net/comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees">Comment diagnostiquer un goulot d’étranglement sur une base de données</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>Comment diagnostiquer un goulot d&#8217;étranglement (bottleneck) sur une base de données MySQL / PostgreSQL</h1>
<p data-path-to-node="3"><b data-path-to-node="3" data-index-in-node="0">Pourquoi votre base de données rame-t-elle et comment y remédier ?</b></p>
<p data-path-to-node="4">Dans toute architecture logicielle, la base de données est souvent le cœur battant de l&#8217;application&#8230; mais aussi son maillon le plus sensible. Un temps de réponse qui grimpe, des requêtes qui s&#8217;accumulent, un CPU à 100 % ou des entrées/sorties disque complètement saturées : les symptômes d&#8217;un <b data-path-to-node="4" data-index-in-node="295">goulot d&#8217;étranglement (<i data-path-to-node="4" data-index-in-node="318">bottleneck</i>)</b> peuvent paralyser l&#8217;intégralité de vos services et impacter directement l&#8217;expérience de vos utilisateurs.</p>
<p data-path-to-node="5">Identifier l&#8217;origine exacte d&#8217;une baisse de performance s&#8217;apparente parfois à une enquête. Est-ce une requête mal optimisée qui scanne toute une table ? Un manque de mémoire vive qui force des écritures permanentes sur le disque ? Ou encore un verrou (<i data-path-to-node="5" data-index-in-node="252">lock</i>) posé par une transaction trop longue qui bloque toutes les autres ?</p>
<p data-path-to-node="6">Que vous utilisiez <b data-path-to-node="6" data-index-in-node="19">MySQL</b> ou <b data-path-to-node="6" data-index-in-node="28">PostgreSQL</b>, la méthode de diagnostic reste structurée. Ce guide vous détaille les étapes clés et les outils incontournables pour isoler le problème, analyser les métriques système et SQL, et restaurer la fluidité de votre base de données.</p>
<p>&nbsp;</p>
<p data-path-to-node="3"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-9274" src="https://demarcq.net/wp-content/uploads/2026/07/Comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees.png" alt="" width="624" height="576" srcset="https://demarcq.net/wp-content/uploads/2026/07/Comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees.png 624w, https://demarcq.net/wp-content/uploads/2026/07/Comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees-300x277.webp 300w" sizes="(max-width: 624px) 100vw, 624px" /></p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees.mp4"></video></p>
<p data-path-to-node="3">Un goulot d&#8217;étranglement sur une base de données ralentit l&#8217;ensemble de votre pile applicative. Pour diagnostiquer efficacement l&#8217;origine de la lenteur (disque, CPU, verrouillage), suivez cette méthodologie d&#8217;analyse.</p>
<h3 data-path-to-node="4">Étape 1 : Analyser l&#8217;utilisation des ressources système</h3>
<p data-path-to-node="5">Avant de plonger dans le moteur SQL, utilisez des outils système pour identifier la ressource saturée :</p>
<ul data-path-to-node="6">
<li>
<p data-path-to-node="6,0,0"><b data-path-to-node="6,0,0" data-index-in-node="0"><code data-path-to-node="6,0,0" data-index-in-node="0">htop</code> ou <code data-path-to-node="6,0,0" data-index-in-node="8">top</code> :</b> Vérifiez si le processus <code data-path-to-node="6,0,0" data-index-in-node="39">mysqld</code> ou <code data-path-to-node="6,0,0" data-index-in-node="49">postgres</code> s&#8217;accapare l&#8217;intégralité du CPU.</p>
</li>
<li>
<p data-path-to-node="6,1,0"><b data-path-to-node="6,1,0" data-index-in-node="0"><code data-path-to-node="6,1,0" data-index-in-node="0">iotop</code> ou <code data-path-to-node="6,1,0" data-index-in-node="9">iostat -xz 1</code> :</b> Surveillez la valeur <code data-path-to-node="6,1,0" data-index-in-node="45">%util</code> (utilisation du disque) et le temps d&#8217;attente d&#8217;écriture (<code data-path-to-node="6,1,0" data-index-in-node="109">await</code>). Un disque saturé est le bottleneck le plus fréquent en base de données.</p>
</li>
</ul>
<h3 data-path-to-node="7">Étape 2 : Traquer les requêtes lentes (Slow Queries)</h3>
<p data-path-to-node="8">Identifiez les requêtes SQL mal indexées qui lisent des millions de lignes inutilement.</p>
<ul data-path-to-node="9">
<li>
<p data-path-to-node="9,0,0"><b data-path-to-node="9,0,0" data-index-in-node="0">Pour MySQL :</b> Activez le <i data-path-to-node="9,0,0" data-index-in-node="24">Slow Query Log</i> dans votre fichier <code data-path-to-node="9,0,0" data-index-in-node="58">/etc/mysql/my.cnf</code> :</p>
<div class="code-block ng-tns-c1885327722-114 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQ3QE">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-114">
<div class="animated-opacity ng-tns-c1885327722-114">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-114 ng-star-inserted">
<p><span class="ng-tns-c1885327722-114">Ini, TOML</span></p>
<div class="buttons ng-tns-c1885327722-114 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-114"><code class="code-container formatted ng-tns-c1885327722-114" role="text" data-test-id="code-content"><span class="hljs-attr">slow_query_log</span> = <span class="hljs-number">1</span>
<span class="hljs-attr">slow_query_log_file</span> = /var/log/mysql/mysql-slow.log
<span class="hljs-attr">long_query_time</span> = <span class="hljs-number">1.0</span> <span class="hljs-comment"># Logge les requêtes de plus d'une seconde</span>
<span class="hljs-attr">log_queries_not_using_indexes</span> = <span class="hljs-number">1</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="9,0,2">Analysez ensuite ce fichier avec <code data-path-to-node="9,0,2" data-index-in-node="33">mysqldumpslow</code> ou l&#8217;outil <b data-path-to-node="9,0,2" data-index-in-node="58">pt-query-digest</b> (Percona Toolkit).</p>
</li>
<li>
<p data-path-to-node="9,1,0"><b data-path-to-node="9,1,0" data-index-in-node="0">Pour PostgreSQL :</b> Utilisez l&#8217;extension incontournable <code data-path-to-node="9,1,0" data-index-in-node="54">pg_stat_statements</code>. Ajoutez ceci dans <code data-path-to-node="9,1,0" data-index-in-node="92">postgresql.conf</code> :</p>
<div class="code-block ng-tns-c1885327722-115 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQ3gE">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-115">
<div class="animated-opacity ng-tns-c1885327722-115">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-115 ng-star-inserted">
<p><span class="ng-tns-c1885327722-115">Ini, TOML</span></p>
<div class="buttons ng-tns-c1885327722-115 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-115"><code class="code-container formatted ng-tns-c1885327722-115" role="text" data-test-id="code-content"><span class="hljs-attr">shared_preload_libraries</span> = <span class="hljs-string">'pg_stat_statements'</span>
</code></pre>
</div>
</div>
</div>
<p data-path-to-node="9,1,2">Puis exécutez cette requête pour lister les requêtes les plus gourmandes en temps cumulé :</p>
<div class="code-block ng-tns-c1885327722-116 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwidjrSl4sqVAxUAAAAAHQAAAAAQ3wE">
<div class="formatted-code-block-internal-container ng-tns-c1885327722-116">
<div class="animated-opacity ng-tns-c1885327722-116">
<div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1885327722-116 ng-star-inserted">
<p><span class="ng-tns-c1885327722-116">SQL</span></p>
<div class="buttons ng-tns-c1885327722-116 ng-star-inserted"></div>
</div>
<pre class="ng-tns-c1885327722-116"><code class="code-container formatted ng-tns-c1885327722-116" role="text" data-test-id="code-content"><span class="hljs-keyword">SELECT</span> query, calls, total_exec_time, <span class="hljs-keyword">rows</span> <span class="hljs-keyword">FROM</span> pg_stat_statements <span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> total_exec_time <span class="hljs-keyword">DESC</span> LIMIT <span class="hljs-number">10</span>;
</code></pre>
</div>
</div>
</div>
</li>
</ul>
<h3 data-path-to-node="10">Étape 3 : Diagnostiquer les verrous (Locks)</h3>
<p data-path-to-node="11">Deux requêtes concurrentes qui s&#8217;attendent mutuellement peuvent paralyser votre base.</p>
<ul data-path-to-node="12">
<li>
<p data-path-to-node="12,0,0"><b data-path-to-node="12,0,0" data-index-in-node="0">MySQL :</b> Visualisez l&#8217;état des verrous avec <code data-path-to-node="12,0,0" data-index-in-node="43">SHOW ENGINE INNODB STATUS;</code> ou examinez la table <code data-path-to-node="12,0,0" data-index-in-node="91">information_schema.innodb_trx</code>.</p>
</li>
<li>
<p data-path-to-node="12,1,0"><b data-path-to-node="12,1,0" data-index-in-node="0">PostgreSQL :</b> Détectez les blocages actifs grâce à la table système <code data-path-to-node="12,1,0" data-index-in-node="67">pg_locks</code> jointe à <code data-path-to-node="12,1,0" data-index-in-node="85">pg_stat_activity</code> pour repérer quelle transaction bloque les autres.</p>
</li>
</ul>
<h3 data-path-to-node="20">Conclusion / Étapes suivantes <i data-path-to-node="20" data-index-in-node="30">(Optionnel)</i></h3>
<p data-path-to-node="21">Une fois le problème localisé grâce à ce diagnostic, l&#8217;étape suivante consiste à appliquer le correctif adapté : <b data-path-to-node="21" data-index-in-node="113">ajouter un index pertinent</b>, revoir la modélisation des tables, ajuster le paramétrage de la mémoire (<code data-path-to-node="21" data-index-in-node="214">innodb_buffer_pool_size</code> sur MySQL ou <code data-path-to-node="21" data-index-in-node="251">shared_buffers</code> sur PostgreSQL), ou encore optimiser le code applicatif pour réduire le temps de maintien des verrous.</p><p>The post <a href="https://demarcq.net/comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees">Comment diagnostiquer un goulot d’étranglement sur une base de données</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/comment-diagnostiquer-un-goulot-detranglement-sur-une-base-de-donnees.mp4" length="10737177" type="video/mp4" />

			</item>
		<item>
		<title>Comment diagnostiquer une baisse de performance sur son serveur dédié ?</title>
		<link>https://demarcq.net/baisse-de-performance-sur-son-serveur-dedie</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 21:18:24 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9195</guid>

					<description><![CDATA[<p>Comment diagnostiquer une baisse de performance ou une panne sur son serveur dédié ? Lorsqu’un serveur dédié ralentit ou ne répond plus, chaque minute compte. Face à l&#8217;urgence, une méthodologie de diagnostic structurée permet de remonter rapidement à la source du problème, qu&#8217;il s&#8217;agisse d&#8217;une surcharge de ressources ou d&#8217;une erreur applicative. Voici le guide [&#8230;]</p>
<p>The post <a href="https://demarcq.net/baisse-de-performance-sur-son-serveur-dedie">Comment diagnostiquer une baisse de performance sur son serveur dédié ?</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/baisse-de-performance-sur-son-serveur-dedie-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/baisse-de-performance-sur-son-serveur-dedie.mp4"></video></p>
<h2 data-path-to-node="8,1,0"><b data-path-to-node="8,1,0" data-index-in-node="0">Comment diagnostiquer une baisse de performance ou une panne sur son serveur dédié ?</b></h2>
<p>Lorsqu’un serveur dédié ralentit ou ne répond plus, chaque minute compte. Face à l&#8217;urgence, une méthodologie de diagnostic structurée permet de remonter rapidement à la source du problème, qu&#8217;il s&#8217;agisse d&#8217;une surcharge de ressources ou d&#8217;une erreur applicative. Voici le guide de secours pour identifier le goulot d&#8217;étranglement.<br />
Étape 1 : Traquer les processus gourmands en temps réel</p>
<p>Le premier réflexe consiste à se connecter en SSH et à analyser l&#8217;état de la machine. Lancez la commande top ou, idéalement, htop (plus visuelle).</p>
<p>Regardez immédiatement la Load Average (charge moyenne) en haut à droite : si elle dépasse largement le nombre de cœurs de votre processeur, le serveur est saturé. Identifiez ensuite le coupable dans la liste : un processus PHP-FPM qui s&#8217;emballe ? Une requête MySQL mal optimisée qui bloque le CPU ? Un manque de mémoire RAM qui force le serveur à swapper ? htop vous donne la réponse en un coup d&#8217;œil.<br />
Étape 2 : Analyser les journaux système (Syslog)</p>
<p>Si le serveur a planté ou si un service s&#8217;est arrêté brusquement (comme MySQL victime du Out Of Memory Killer), la mémoire vive a probablement saturé. Pour le vérifier, examinez les logs système généraux avec la commande suivante :<br />
sudo tail -n 100 /var/log/syslog (ou /var/log/messages sur CentOS/RHEL). Vous y trouverez les alertes matérielles et les arrêts critiques de services.<br />
Étape 3 : Inspecter les logs des serveurs web (Apache / Nginx)</p>
<p>La panne peut aussi être causée par une surcharge de trafic ou une attaque par déni de service (DDoS). Inspectez les fichiers de votre serveur web :</p>
<p>Les Access Logs (/var/log/nginx/access.log ou /var/log/apache2/access.log) : Un volume anormal de requêtes identiques provenant d&#8217;une même adresse IP indique souvent une attaque ou un bot malveillant à bannir.</p>
<p>Les Error Logs (/var/log/nginx/error.log) : Ils révèlent les scripts PHP défaillants, les ruptures de communication avec la base de données ou les problèmes de permissions de fichiers.</p>
<p>En combinant l&#8217;analyse des ressources matérielles et la lecture des logs, vous transformez une panne inexpliquée en un problème technique simple à résoudre.</p><p>The post <a href="https://demarcq.net/baisse-de-performance-sur-son-serveur-dedie">Comment diagnostiquer une baisse de performance sur son serveur dédié ?</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/baisse-de-performance-sur-son-serveur-dedie.mp4" length="16397756" type="video/mp4" />

			</item>
		<item>
		<title>Plan de Reprise d’Activité (PRA) informatique</title>
		<link>https://demarcq.net/plan-de-reprise-dactivite-pra-informatique</link>
		
		<dc:creator><![CDATA[demarcq]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 21:16:42 +0000</pubDate>
				<category><![CDATA[infogerance]]></category>
		<guid isPermaLink="false">https://demarcq.net/?p=9193</guid>

					<description><![CDATA[<p>Plan de Reprise d’Activité (PRA) informatique : Comment garantir la continuité de vos services ? Incendie, cyberattaque par ransomware, panne matérielle majeure ou simple erreur humaine : le risque zéro n&#8217;existe pas en informatique. Face à un sinistre, la question n&#8217;est pas de savoir si vous allez être touché, mais quand vous le serez. Le [&#8230;]</p>
<p>The post <a href="https://demarcq.net/plan-de-reprise-dactivite-pra-informatique">Plan de Reprise d’Activité (PRA) informatique</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2>Plan de Reprise d’Activité (PRA) informatique : Comment garantir la continuité de vos services ?</h2>
<p data-path-to-node="0">Incendie, cyberattaque par ransomware, panne matérielle majeure ou simple erreur humaine : le risque zéro n&#8217;existe pas en informatique. Face à un sinistre, la question n&#8217;est pas de savoir <i data-path-to-node="0" data-index-in-node="188">si</i> vous allez être touché, mais <i data-path-to-node="0" data-index-in-node="220">quand</i> vous le serez.</p>
<p><video controls preload="none" playsinline width="1920" height="1080" poster="https://demarcq.net/wp-content/uploads/2026/10/plan-de-reprise-dactivite-pra-informatique-poster.jpg" style="max-width:100%;height:auto" src="https://demarcq.net/wp-content/uploads/2026/10/plan-de-reprise-dactivite-pra-informatique.mp4"></video></p>
<p data-path-to-node="1">Le <b data-path-to-node="1" data-index-in-node="3">Plan de Reprise d&#8217;Activité (PRA)</b> est la police d&#8217;assurance de votre infrastructure. Il regroupe l&#8217;ensemble des procédures techniques et organisationnelles permettant de reconstruire vos serveurs et de relancer vos services après un arrêt critique.</p>
<p data-path-to-node="2">Voici les clés pour bâtir un PRA solide, centré sur le véritable moteur de la reprise : <b data-path-to-node="2" data-index-in-node="88">la stratégie de sauvegarde</b>.</p>
<h2 data-path-to-node="4">1. Définir les deux indicateurs stratégiques : RTO et RPO</h2>
<p data-path-to-node="5">Avant de parler technique, vous devez fixer le seuil de tolérance de votre entreprise à travers deux métriques fondamentales :</p>
<ul data-path-to-node="6">
<li>
<p data-path-to-node="6,0,0"><b data-path-to-node="6,0,0" data-index-in-node="0">Le RPO (<i data-path-to-node="6,0,0" data-index-in-node="8">Recovery Point Objective</i> &#8211; Perte de données maximale admissible) :</b> Quelle quantité de données pouvez-vous vous permettre de perdre ? Si votre dernière sauvegarde a 24 heures et que votre serveur crash, vous perdez une journée de travail. Pour des données critiques, le RPO doit souvent être réduit à quelques minutes.</p>
</li>
<li>
<p data-path-to-node="6,1,0"><b data-path-to-node="6,1,0" data-index-in-node="0">Le RTO (<i data-path-to-node="6,1,0" data-index-in-node="8">Recovery Time Objective</i> &#8211; Durée maximale d&#8217;interruption admissible) :</b> Combien de temps votre entreprise peut-elle rester à l&#8217;arrêt ? C&#8217;est le temps nécessaire pour restaurer vos systèmes et rouvrir les accès aux utilisateurs.</p>
</li>
</ul>
<h2 data-path-to-node="8">2. Le cœur du PRA : L&#8217;automatisation des sauvegardes</h2>
<p data-path-to-node="9">Compter sur une action humaine pour effectuer une sauvegarde est le meilleur moyen d&#8217;échouer le jour où le sinistre survient. L&#8217;oubli d&#8217;une clé USB ou le report d&#8217;une manipulation à un lendemain &#8220;plus calme&#8221; sont des classiques du crash informatique.</p>
<ul data-path-to-node="10">
<li>
<p data-path-to-node="10,0,0"><b data-path-to-node="10,0,0" data-index-in-node="0">L&#8217;automatisation élimine le facteur humain.</b> Vos scripts (qu&#8217;il s&#8217;agisse de snapshots de machines virtuelles, de dumps de bases de données ou de synchronisations de fichiers) doivent s&#8217;exécuter à intervalles réguliers (toutes les heures, toutes les nuits) sans aucune intervention.</p>
</li>
<li>
<p data-path-to-node="10,1,0"><b data-path-to-node="10,1,0" data-index-in-node="0">Le monitoring des sauvegardes :</b> Une sauvegarde automatisée qui échoue en arrière-plan sans prévenir est invisible&#8230; jusqu&#8217;au jour de la restauration. Vos outils de supervision (ou des rapports quotidiens par email/Slack) doivent valider le succès de chaque tâche.</p>
</li>
</ul>
<h2 data-path-to-node="12">3. L&#8217;externalisation : La règle d&#8217;or du 3-2-1</h2>
<p data-path-to-node="13">Sauvegarder vos serveurs sur un disque dur posé sur la même baie informatique ou dans la même pièce ne sert à rien si le bâtiment subit un incendie ou un dégât des eaux. De même, si un ransomware chiffre votre réseau, il infectera également vos sauvegardes locales si elles sont accessibles.</p>
<p data-path-to-node="14">Pour sécuriser vos données, appliquez rigoureusement la <b data-path-to-node="14" data-index-in-node="56">stratégie de sauvegarde 3-2-1</b> :</p>
<ul data-path-to-node="15">
<li>
<p data-path-to-node="15,0,0"><b data-path-to-node="15,0,0" data-index-in-node="0">3</b> copies de vos données au total (la production + 2 sauvegardes).</p>
</li>
<li>
<p data-path-to-node="15,1,0"><b data-path-to-node="15,1,0" data-index-in-node="0">2</b> supports différents (par exemple : un stockage local NAS et un stockage Cloud).</p>
</li>
<li>
<p data-path-to-node="15,2,0"><b data-path-to-node="15,2,0" data-index-in-node="0">1</b> copie <b data-path-to-node="15,2,0" data-index-in-node="8">externalisée</b>, hors de votre infrastructure principale (Cloud sécurisé, deuxième centre de données géographiquement distant).</p>
</li>
</ul>
<blockquote data-path-to-node="16">
<p data-path-to-node="16,0"><b data-path-to-node="16,0" data-index-in-node="0">L&#8217;importance de l&#8217;immuabilité (Object Lock) :</b> Pour contrer les rançongiciels les plus agressifs qui cherchent à détruire vos sauvegardes cloud, optez pour des stockages externalisés dits <i data-path-to-node="16,0" data-index-in-node="187">immuables</i>. Une fois écrites, les données ne peuvent être ni modifiées ni supprimées pendant une période définie, même avec les identifiants administrateur.</p>
</blockquote>
<h2 data-path-to-node="18">4. Un PRA n&#8217;existe que s&#8217;il est testé</h2>
<p data-path-to-node="19">Le piège le plus courant est de rédiger un magnifique document de PRA, de configurer les sauvegardes, puis de refermer le dossier.</p>
<p data-path-to-node="20">Une stratégie de sauvegarde n&#8217;est valide que si la procédure de <b data-path-to-node="20" data-index-in-node="64">restauration</b> fonctionne. Un fichier de sauvegarde peut être corrompu, une clé de chiffrement peut être perdue, ou le temps de téléchargement depuis le cloud peut s&#8217;avérer beaucoup plus long que prévu (impactant directement votre RTO).</p>
<ul data-path-to-node="21">
<li>
<p data-path-to-node="21,0,0"><b data-path-to-node="21,0,0" data-index-in-node="0">Simulez des pannes :</b> Organisez au moins une à deux fois par an un &#8220;exercice de crise&#8221;.</p>
</li>
<li>
<p data-path-to-node="21,1,0"><b data-path-to-node="21,1,0" data-index-in-node="0">Restaurer à blanc :</b> Testez la reconstruction d&#8217;un serveur web ou d&#8217;une base de données sur un environnement isolé pour mesurer le temps réel de reprise et ajuster vos procédures.</p>
</li>
</ul>
<blockquote data-path-to-node="23">
<p data-path-to-node="23,0"><b data-path-to-node="23,0" data-index-in-node="0">En résumé :</b> Le PRA n&#8217;est pas un projet informatique optionnel, c&#8217;est une stratégie de survie d&#8217;entreprise. Automatiser pour ne pas oublier, externaliser pour se protéger des sinistres physiques, et tester pour garantir l&#8217;efficacité : voilà le triptyque d&#8217;une infrastructure résiliente.</p>
</blockquote><p>The post <a href="https://demarcq.net/plan-de-reprise-dactivite-pra-informatique">Plan de Reprise d’Activité (PRA) informatique</a> first appeared on <a href="https://demarcq.net">DEMARCQ.NET</a>.</p>]]></content:encoded>
					
		
		<enclosure url="https://demarcq.net/wp-content/uploads/2026/10/plan-de-reprise-dactivite-pra-informatique.mp4" length="19389085" type="video/mp4" />

			</item>
	</channel>
</rss>
