{"id":481,"date":"2026-10-02T00:48:11","date_gmt":"2026-10-02T00:48:11","guid":{"rendered":"https:\/\/info.kpuc.dev\/?p=481"},"modified":"2026-10-02T02:23:22","modified_gmt":"2026-10-02T02:23:22","slug":"activite-cybersecurite-defense-dune-infrastructure-sous-attaque","status":"publish","type":"post","link":"https:\/\/info.kpuc.dev\/index.php\/2026\/10\/02\/activite-cybersecurite-defense-dune-infrastructure-sous-attaque\/","title":{"rendered":"Activit\u00e9 cybers\u00e9curit\u00e9 &#8211; D\u00e9fense d&#8217;une infrastructure sous attaque"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"481\" class=\"elementor elementor-481\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f6124d8 e-con e-atomic-element e-flexbox-base e-default-div \" data-id=\"f6124d8\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"f6124d8\">\n    \t\t\t<img fetchpriority=\"high\" decoding=\"async\" class=\"e-image-base e-default-img \" data-interaction-id=\"5325983\" id=\"484\" src=\"https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1.png\" width=\"2050\" height=\"767\" srcset=\"https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1.png 2050w, https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1-300x112.png 300w, https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1-1024x383.png 1024w, https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1-768x287.png 768w, https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1-1536x575.png 1536w, https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/activite_cybersec-1-2048x766.png 2048w\" alt=\"\"\/>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-b6efd44 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"b6efd44\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e2a99be elementor-widget elementor-widget-html\" data-id=\"e2a99be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<article class=\"cybersec-activity\">\r\n\r\n<h2>Mise en situation<\/h2>\r\n\r\n<p>Vous \u00eates responsable d\u2019un serveur qui devra progressivement offrir diff\u00e9rents services accessibles sur un r\u00e9seau.<\/p>\r\n\r\n<p>Au d\u00e9but de l\u2019activit\u00e9, chaque participant re\u00e7oit une <strong>machine virtuelle Debian Server minimale<\/strong>, sans interface graphique et avec tr\u00e8s peu de logiciels install\u00e9s ou configur\u00e9s.<\/p>\r\n\r\n<p>Tous les serveurs se trouvent initialement sur le <strong>m\u00eame r\u00e9seau local<\/strong>, avec les syst\u00e8mes utilis\u00e9s pour g\u00e9n\u00e9rer les attaques.<\/p>\r\n\r\n<p>Durant l\u2019activit\u00e9, diff\u00e9rentes activit\u00e9s r\u00e9seau normales, suspectes et malveillantes seront g\u00e9n\u00e9r\u00e9es.<\/p>\r\n\r\n<p>Vous ne conna\u00eetrez pas n\u00e9cessairement \u00e0 l\u2019avance :<\/p>\r\n\r\n<ul>\r\n<li>le type d\u2019attaque;<\/li>\r\n<li>sa provenance;<\/li>\r\n<li>le service cibl\u00e9;<\/li>\r\n<li>sa fr\u00e9quence;<\/li>\r\n<li>les outils utilis\u00e9s;<\/li>\r\n<li>le moment o\u00f9 l\u2019attaque commencera.<\/li>\r\n<\/ul>\r\n\r\n<p>Votre objectif sera de maintenir vos services fonctionnels tout en \u00e9tant capable de :<\/p>\r\n\r\n<p><div class=\"cybersec-workflow\">\r\n    <strong>Observer<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Identifier<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Comprendre<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Prot\u00e9ger<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>V\u00e9rifier<\/strong>\r\n<\/div>\r\n\r\n<hr>\r\n\r\n<h2>1. Objectifs de l\u2019activit\u00e9<\/h2>\r\n\r\n<p>Cette activit\u00e9 a pour objectif de d\u00e9velopper une approche pratique de la cybers\u00e9curit\u00e9 d\u00e9fensive.<\/p>\r\n\r\n<p>Vous devrez progressivement apprendre \u00e0 :<\/p>\r\n\r\n<ul>\r\n<li>d\u00e9couvrir l\u2019\u00e9tat initial d\u2019un serveur;<\/li>\r\n<li>identifier les services et les ports expos\u00e9s;<\/li>\r\n<li>analyser les connexions r\u00e9seau;<\/li>\r\n<li>capturer et analyser du trafic;<\/li>\r\n<li>consulter et interpr\u00e9ter des journaux;<\/li>\r\n<li>identifier des comportements suspects;<\/li>\r\n<li>d\u00e9terminer la provenance d\u2019une activit\u00e9;<\/li>\r\n<li>diff\u00e9rencier une activit\u00e9 normale d\u2019une activit\u00e9 potentiellement malveillante;<\/li>\r\n<li>r\u00e9duire la surface d\u2019attaque;<\/li>\r\n<li>configurer un pare-feu local;<\/li>\r\n<li>prot\u00e9ger automatiquement certains services;<\/li>\r\n<li>segmenter une infrastructure;<\/li>\r\n<li>utiliser pfSense comme pare-feu;<\/li>\r\n<li>configurer du NAT et du Port Forwarding;<\/li>\r\n<li>d\u00e9ployer des services avec Docker;<\/li>\r\n<li>utiliser un reverse proxy;<\/li>\r\n<li>analyser des requ\u00eates HTTP\/HTTPS;<\/li>\r\n<li>choisir le niveau appropri\u00e9 pour bloquer une attaque;<\/li>\r\n<li>v\u00e9rifier qu\u2019une protection fonctionne r\u00e9ellement.<\/li>\r\n<\/ul>\r\n\r\n<hr>\r\n\r\n<h2>2. Infrastructure du laboratoire<\/h2>\r\n\r\n<p>L\u2019infrastructure sera h\u00e9berg\u00e9e sur <strong>Proxmox<\/strong>.<\/p>\r\n\r\n<p>Chaque participant disposera de son propre environnement virtuel.<\/p>\r\n\r\n<p>L\u2019acc\u00e8s distant au laboratoire sera r\u00e9alis\u00e9 \u00e0 l\u2019aide d\u2019un <strong>VPN tel que Tailscale<\/strong>.<\/p>\r\n\r\n<p>L\u2019environnement utilisera principalement :<\/p>\r\n\r\n<ul>\r\n<li>Tailscale;<\/li>\r\n<li>Proxmox;<\/li>\r\n<li>Debian Server;<\/li>\r\n<li>pfSense;<\/li>\r\n<li>Docker;<\/li>\r\n<li>Nginx Proxy Manager;<\/li>\r\n<li>diff\u00e9rents outils Linux d\u2019analyse et de s\u00e9curit\u00e9.<\/li>\r\n<\/ul>\r\n\r\n<p>Tailscale servira principalement de <strong>moyen d\u2019acc\u00e8s distant et administratif au laboratoire<\/strong>.<\/p>\r\n\r\n<p>Le r\u00e9seau utilis\u00e9 pour les sc\u00e9narios de cybers\u00e9curit\u00e9 sera distinct de cet acc\u00e8s administratif.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>3. Environnement initial<\/h2>\r\n\r\n<p>Chaque participant commence avec :<\/p>\r\n\r\n<p><strong>1 VM Debian Server<\/strong><\/p>\r\n\r\n<p>La machine poss\u00e8de :<\/p>\r\n\r\n<ul>\r\n<li>aucune interface graphique;<\/li>\r\n<li>tr\u00e8s peu de logiciels suppl\u00e9mentaires;<\/li>\r\n<li>aucune solution de s\u00e9curit\u00e9 particuli\u00e8re;<\/li>\r\n<li>un service accessible sur le r\u00e9seau.<\/li>\r\n<\/ul>\r\n\r\n<p>Tous les serveurs Debian sont initialement plac\u00e9s sur le <strong>m\u00eame r\u00e9seau local que les syst\u00e8mes g\u00e9n\u00e9rant les attaques<\/strong>.<\/p>\r\n\r\n<!-- IMAGE : ARCHITECTURE INITIALE -->\r\n<figure class=\"wp-block-image aligncenter\">\r\n    <img decoding=\"async\" src=\"https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/archi_initiale.png\" alt=\"Architecture initiale du laboratoire - Serveurs Debian et attaquants sur le m\u00eame r\u00e9seau\">\r\n    <figcaption>Architecture initiale \u2013 Les serveurs Debian et les attaquants se trouvent sur le m\u00eame r\u00e9seau.<\/figcaption>\r\n<\/figure>\r\n<!-- FIN IMAGE : ARCHITECTURE INITIALE -->\r\n\r\n<p>Il n\u2019y a initialement aucun pfSense entre les attaquants et les serveurs.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>4. M\u00e9thode d\u2019analyse<\/h2>\r\n\r\n<p>Lorsqu\u2019une activit\u00e9 suspecte appara\u00eet, \u00e9vitez de bloquer imm\u00e9diatement une adresse simplement parce qu\u2019elle g\u00e9n\u00e8re beaucoup de trafic.<\/p>\r\n\r\n<p>Essayez plut\u00f4t de suivre la m\u00e9thode suivante :<\/p>\r\n\r\n<h3>1 \u2013 Observer<\/h3>\r\n<p>Qu\u2019est-ce qui se passe?<\/p>\r\n\r\n<h3>2 \u2013 Identifier<\/h3>\r\n<p>Quelle machine, adresse IP, application ou service est impliqu\u00e9?<\/p>\r\n\r\n<h3>3 \u2013 Comprendre<\/h3>\r\n<p>Pourquoi cette activit\u00e9 est-elle normale ou suspecte?<\/p>\r\n\r\n<h3>4 \u2013 Prot\u00e9ger<\/h3>\r\n<p>Quelle mesure permet de limiter l\u2019activit\u00e9 malveillante?<\/p>\r\n\r\n<h3>5 \u2013 V\u00e9rifier<\/h3>\r\n<p>La protection fonctionne-t-elle r\u00e9ellement?<\/p>\r\n<p>Le service l\u00e9gitime fonctionne-t-il toujours?<\/p>\r\n\r\n<hr>\r\n\r\n<h2>5. R\u00e8gles de l\u2019activit\u00e9<\/h2>\r\n\r\n<p>Chaque d\u00e9cision d\u00e9fensive doit pouvoir \u00eatre expliqu\u00e9e.<\/p>\r\n\r\n<p>Avant de bloquer une source ou de modifier une configuration, vous devriez id\u00e9alement pouvoir r\u00e9pondre aux questions suivantes :<\/p>\r\n\r\n<ol>\r\n<li>Qu\u2019est-ce que j\u2019ai observ\u00e9?<\/li>\r\n<li>Pourquoi est-ce suspect?<\/li>\r\n<li>Quelle est la source probable?<\/li>\r\n<li>Quel service est cibl\u00e9?<\/li>\r\n<li>Quelle protection ai-je mise en place?<\/li>\r\n<li>Pourquoi ai-je choisi cette protection?<\/li>\r\n<li>Comment ai-je v\u00e9rifi\u00e9 son efficacit\u00e9?<\/li>\r\n<\/ol>\r\n\r\n<p>Une solution qui bloque l\u2019attaque mais qui emp\u00eache \u00e9galement les utilisateurs l\u00e9gitimes d\u2019utiliser le service n\u2019est pas consid\u00e9r\u00e9e comme une solution compl\u00e8te.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>6. Acc\u00e8s distant avec Tailscale<\/h2>\r\n\r\n<p>Les participants pourront acc\u00e9der \u00e0 l\u2019environnement \u00e0 distance gr\u00e2ce \u00e0 <strong>Tailscale<\/strong>.<\/p>\r\n\r\n<p>Vous devriez \u00eatre capable de :<\/p>\r\n\r\n<ul>\r\n<li>installer Tailscale;<\/li>\r\n<li>connecter votre ordinateur au VPN;<\/li>\r\n<li>identifier les machines disponibles;<\/li>\r\n<li>comprendre les adresses IP Tailscale;<\/li>\r\n<li>tester la connectivit\u00e9;<\/li>\r\n<li>acc\u00e9der aux ressources autoris\u00e9es du laboratoire.<\/li>\r\n<\/ul>\r\n\r\n<p>Tailscale constitue principalement le <strong>r\u00e9seau d\u2019acc\u00e8s administratif<\/strong>.<\/p>\r\n\r\n<p>Les sc\u00e9narios d\u2019attaque se d\u00e9roulent dans les r\u00e9seaux virtuels du laboratoire.<\/p>\r\n\r\n<p>Cela permet notamment de conserver un acc\u00e8s administratif lorsque vous modifiez les r\u00e8gles de pare-feu ou la configuration r\u00e9seau de votre environnement.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>7. Pr\u00e9paration recommand\u00e9e<\/h2>\r\n\r\n<p>Avant l\u2019activit\u00e9, il est recommand\u00e9 de r\u00e9viser ou d\u2019exp\u00e9rimenter les technologies suivantes.<\/p>\r\n\r\n<h3>Tailscale<\/h3>\r\n<ul>\r\n<li>installation;<\/li>\r\n<li>connexion au VPN;<\/li>\r\n<li>identification des machines;<\/li>\r\n<li>connectivit\u00e9 entre les h\u00f4tes.<\/li>\r\n<\/ul>\r\n\r\n<h3>Proxmox<\/h3>\r\n<ul>\r\n<li>acc\u00e8s \u00e0 l\u2019interface Web;<\/li>\r\n<li>d\u00e9marrage et arr\u00eat d\u2019une VM;<\/li>\r\n<li>console d\u2019une VM;<\/li>\r\n<li>interfaces r\u00e9seau virtuelles;<\/li>\r\n<li>configuration r\u00e9seau d\u2019une VM.<\/li>\r\n<\/ul>\r\n\r\n<h3>Debian \/ Linux<\/h3>\r\n<ul>\r\n<li>commandes Linux;<\/li>\r\n<li>utilisateurs et permissions;<\/li>\r\n<li>services;<\/li>\r\n<li>SSH;<\/li>\r\n<li>processus;<\/li>\r\n<li>interfaces r\u00e9seau;<\/li>\r\n<li>journaux syst\u00e8me.<\/li>\r\n<\/ul>\r\n\r\n<h3>R\u00e9seau<\/h3>\r\n<ul>\r\n<li>IPv4;<\/li>\r\n<li>sous-r\u00e9seaux;<\/li>\r\n<li>TCP et UDP;<\/li>\r\n<li>ports;<\/li>\r\n<li>routage;<\/li>\r\n<li>passerelle par d\u00e9faut;<\/li>\r\n<li>DNS;<\/li>\r\n<li>HTTP et HTTPS;<\/li>\r\n<li>NAT.<\/li>\r\n<\/ul>\r\n\r\n<h3>pfSense<\/h3>\r\n<ul>\r\n<li>interfaces WAN et LAN;<\/li>\r\n<li>r\u00e8gles de pare-feu;<\/li>\r\n<li>NAT;<\/li>\r\n<li><strong>Port Forwarding<\/strong>;<\/li>\r\n<li>consultation des logs;<\/li>\r\n<li>analyse du trafic autoris\u00e9 et bloqu\u00e9.<\/li>\r\n<\/ul>\r\n\r\n<h3>Docker<\/h3>\r\n<ul>\r\n<li>images;<\/li>\r\n<li>conteneurs;<\/li>\r\n<li>ports;<\/li>\r\n<li>volumes;<\/li>\r\n<li>r\u00e9seaux;<\/li>\r\n<li>logs.<\/li>\r\n<\/ul>\r\n\r\n<h3>Outils d\u2019analyse<\/h3>\r\n\r\n<p>Familiarisez-vous avec certains outils comme :<\/p>\r\n\r\n<div class=\"cybersec-code\"><span class=\"cmt\"># Scanner les ports ouverts<\/span>\r\n<span class=\"cmd\">nmap<\/span> <span class=\"arg\">localhost<\/span>\r\n<span class=\"cmd\">nmap<\/span> <span class=\"arg\">-sV 192.168.1.20<\/span>\r\n\r\n<span class=\"cmt\"># Observer le trafic r\u00e9seau<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 port 22<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 'port 80 or port 443'<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 host 192.168.1.50<\/span>\r\n\r\n<span class=\"cmt\"># Voir les ports et connexions<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ss<\/span> <span class=\"arg\">-tulpn<\/span>\r\n<span class=\"cmd\">ss<\/span> <span class=\"arg\">-tunap<\/span>\r\n\r\n<span class=\"cmt\"># Voir quels processus utilisent le r\u00e9seau<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i :80<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i :443<\/span>\r\n\r\n<span class=\"cmt\"># Tester un service Web<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">http:\/\/localhost<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-I http:\/\/localhost<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-v https:\/\/example.com<\/span>\r\n\r\n<span class=\"cmt\"># Consulter les logs<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-xe<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh -f<\/span>\r\n\r\n<span class=\"cmt\"># G\u00e9rer le pare-feu UFW<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">status verbose<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">allow 22\/tcp<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">allow 80\/tcp<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">deny from 192.168.1.50<\/span>\r\n\r\n<span class=\"cmt\"># Voir les r\u00e8gles nftables<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">nft<\/span> <span class=\"arg\">list ruleset<\/span>\r\n\r\n<span class=\"cmt\"># Ajouter une r\u00e8gle simple avec nftables<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">nft<\/span> <span class=\"arg\">add rule inet filter input ip saddr 192.168.1.50 drop<\/span>\r\n\r\n<span class=\"cmt\"># V\u00e9rifier Fail2ban<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">fail2ban-client<\/span> <span class=\"arg\">status<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">fail2ban-client<\/span> <span class=\"arg\">status sshd<\/span>\r\n\r\n<span class=\"cmt\"># Bannir ou d\u00e9bannir une IP<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">fail2ban-client<\/span> <span class=\"arg\">set sshd banip 192.168.1.50<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">fail2ban-client<\/span> <span class=\"arg\">set sshd unbanip 192.168.1.50<\/span>\r\n<\/div>\r\n\r\n<p>D\u2019autres outils pourront \u00eatre install\u00e9s et d\u00e9couverts pendant l\u2019activit\u00e9.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>8. Architecture finale<\/h2>\r\n\r\n<p>\u00c0 la fin de l\u2019activit\u00e9, votre environnement pourra ressembler \u00e0 ceci :<\/p>\r\n\r\n\r\n\r\n<!-- IMAGE : ARCHITECTURE FINALE -->\r\n<figure class=\"wp-block-image aligncenter\">\r\n    <img decoding=\"async\" src=\"https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/archi_finale.png\" alt=\"Architecture finale du laboratoire avec pfSense, Debian, Docker et Nginx Proxy Manager\">\r\n    <figcaption>Architecture finale \u2013 pfSense prot\u00e8ge le r\u00e9seau interne et les services Web sont publi\u00e9s par Nginx Proxy Manager dans Docker.<\/figcaption>\r\n<\/figure>\r\n<!-- FIN IMAGE : ARCHITECTURE FINALE -->\r\n\r\n<p>Cette architecture permet d\u2019observer et de prot\u00e9ger une m\u00eame activit\u00e9 \u00e0 plusieurs niveaux :<\/p>\r\n\r\n<p><strong>pfSense<\/strong><br>\r\nTrafic r\u00e9seau, IP, ports, r\u00e8gles et connexions bloqu\u00e9es.<\/p>\r\n\r\n<p><strong>Debian<\/strong><br>\r\nConnexions, processus, pare-feu local et journaux syst\u00e8me.<\/p>\r\n\r\n<p><strong>Docker<\/strong><br>\r\nConteneurs, r\u00e9seaux, ports et journaux.<\/p>\r\n\r\n<p><strong>Nginx Proxy Manager<\/strong><br>\r\nRequ\u00eates HTTP\/HTTPS, IP sources, URL, codes HTTP et User-Agent.<\/p>\r\n\r\n<p><strong>Application<\/strong><br>\r\nErreurs, authentification et \u00e9v\u00e9nements propres au service.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>9. Objectif final<\/h2>\r\n\r\n<p>\u00c0 la fin de l\u2019activit\u00e9, vous devriez \u00eatre capable de partir d\u2019un <strong>serveur Debian minimal directement expos\u00e9 sur un r\u00e9seau hostile<\/strong> et de construire progressivement une infrastructure plus s\u00e9curis\u00e9e.<\/p>\r\n\r\n<p>Mais l\u2019objectif principal n\u2019est pas simplement d\u2019installer pfSense, Docker, Fail2ban ou un reverse proxy.<\/p>\r\n\r\n<p>L\u2019objectif est de d\u00e9velopper une m\u00e9thode de travail permettant de comprendre ce qui se passe avant d\u2019agir.<\/p>\r\n\r\n<div class=\"cybersec-workflow\">\r\n    <strong>Observer<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Identifier<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Comprendre<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Prot\u00e9ger<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>V\u00e9rifier<\/strong>\r\n<\/div>\r\n\r\n<p>Une bonne d\u00e9fense ne consiste pas uniquement \u00e0 bloquer une attaque.<\/p>\r\n\r\n<p>Elle doit permettre de <strong>continuer \u00e0 offrir le service aux utilisateurs l\u00e9gitimes tout en r\u00e9duisant les risques associ\u00e9s aux activit\u00e9s malveillantes<\/strong>.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>10. Phase 1 \u2013 D\u00e9couverte de votre serveur<\/h2>\r\n\r\n<p>Avant de prot\u00e9ger une machine, vous devez comprendre son fonctionnement et son \u00e9tat actuel.<\/p>\r\n\r\n<p>Analysez votre serveur afin de d\u00e9terminer notamment :<\/p>\r\n\r\n<ul>\r\n<li>ses interfaces r\u00e9seau;<\/li>\r\n<li>ses adresses IP;<\/li>\r\n<li>sa passerelle;<\/li>\r\n<li>sa table de routage;<\/li>\r\n<li>les ports en \u00e9coute;<\/li>\r\n<li>les services actifs;<\/li>\r\n<li>les processus associ\u00e9s;<\/li>\r\n<li>les connexions actuellement \u00e9tablies;<\/li>\r\n<li>les utilisateurs pr\u00e9sents;<\/li>\r\n<li>les journaux disponibles.<\/li>\r\n<\/ul>\r\n\r\n<p>Vous devrez \u00eatre capable de r\u00e9pondre \u00e0 la question :<\/p>\r\n\r\n<p><strong>Quelle est actuellement la surface d\u2019attaque de mon serveur?<\/strong><\/p>\r\n\r\n<p>Vous \u00eates libre d\u2019installer les outils n\u00e9cessaires.<\/p>\r\n\r\n<p>Exemples :<\/p>\r\n\r\n<div class=\"cybersec-code\">\r\n\r\n<span class=\"cmt\"># Interfaces et adresses IP<\/span>\r\n<span class=\"cmd\">ip<\/span> <span class=\"arg\">a<\/span>\r\n<span class=\"cmd\">hostname<\/span> <span class=\"arg\">-I<\/span>\r\n\r\n<span class=\"cmt\"># Ports et connexions r\u00e9seau<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ss<\/span> <span class=\"arg\">-tulpn<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i<\/span>\r\n\r\n<span class=\"cmt\"># Processus actifs<\/span>\r\n<span class=\"cmd\">ps<\/span> <span class=\"arg\">aux<\/span>\r\n<span class=\"cmd\">ps<\/span> <span class=\"arg\">aux<\/span> | <span class=\"cmd\">grep<\/span> <span class=\"arg\">apache<\/span>\r\n\r\n<span class=\"cmt\"># Services actifs<\/span>\r\n<span class=\"cmd\">systemctl<\/span> <span class=\"arg\">status ssh<\/span>\r\n<span class=\"cmd\">systemctl<\/span> <span class=\"arg\">--type=service --state=running<\/span>\r\n\r\n<span class=\"cmt\"># Journaux syst\u00e8me<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-xe<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh -f<\/span>\r\n\r\n<span class=\"cmt\"># Ports ouverts et services d\u00e9tect\u00e9s<\/span>\r\n<span class=\"cmd\">nmap<\/span> <span class=\"arg\">localhost<\/span>\r\n<span class=\"cmd\">nmap<\/span> <span class=\"arg\">-sV localhost<\/span>\r\n<span class=\"cmd\">nmap<\/span> <span class=\"arg\">-sV 192.168.1.20<\/span>\r\n\r\n<span class=\"cmt\"># Observer le trafic r\u00e9seau<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 port 22<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 'port 80 or port 443'<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 host 192.168.1.50<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -A port 80<\/span>\r\n\r\n<span class=\"cmt\"># Tester un serveur Web<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">http:\/\/localhost<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-I http:\/\/localhost<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-v http:\/\/localhost<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-v https:\/\/example.com<\/span>\r\n\r\n<\/div>\r\n\r\n<p>Cette liste n\u2019est pas exhaustive.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>11. Phase 2 \u2013 Analyse du r\u00e9seau<\/h2>\r\n\r\n<p>Diff\u00e9rentes activit\u00e9s commenceront progressivement \u00e0 appara\u00eetre sur le r\u00e9seau.<\/p>\r\n\r\n<p>Certaines seront parfaitement normales.<\/p>\r\n\r\n<p>D\u2019autres pourront \u00eatre suspectes ou malveillantes.<\/p>\r\n\r\n<p>Votre objectif sera de d\u00e9terminer ce qui se passe.<\/p>\r\n\r\n<p>Vous devrez notamment tenter de r\u00e9pondre aux questions suivantes :<\/p>\r\n\r\n<p><strong>Qui communique avec mon serveur?<\/strong><\/p>\r\n<p><strong>Quelle est l\u2019adresse IP source?<\/strong><\/p>\r\n<p><strong>Quel port est utilis\u00e9?<\/strong><\/p>\r\n<p><strong>Quel service est cibl\u00e9?<\/strong><\/p>\r\n<p><strong>\u00c0 quelle fr\u00e9quence les connexions apparaissent-elles?<\/strong><\/p>\r\n<p><strong>Les connexions r\u00e9ussissent-elles?<\/strong><\/p>\r\n<p><strong>Que montrent les paquets r\u00e9seau?<\/strong><\/p>\r\n<p><strong>Que montrent les journaux?<\/strong><\/p>\r\n<p><strong>S\u2019agit-il d\u2019une activit\u00e9 normale, d\u2019un scanner automatis\u00e9 ou d\u2019une attaque?<\/strong><\/p>\r\n\r\n<div class=\"cybersec-code\"><span class=\"cmt\"># Qui communique avec mon serveur ? Adresse IP source et port utilis\u00e9<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ss<\/span> <span class=\"arg\">-tunap<\/span>\r\n\r\n<span class=\"cmt\"># Voir les connexions TCP \u00e9tablies<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ss<\/span> <span class=\"arg\">-tnp state established<\/span>\r\n\r\n<span class=\"cmt\"># Voir les ports en \u00e9coute et le processus associ\u00e9<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ss<\/span> <span class=\"arg\">-tulpn<\/span>\r\n\r\n<span class=\"cmt\"># Identifier le service qui utilise un port<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i :22<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i :80<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">lsof<\/span> <span class=\"arg\">-i :443<\/span>\r\n\r\n<span class=\"cmt\"># Observer les IP source, ports et protocoles en temps r\u00e9el<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -nn<\/span>\r\n\r\n<span class=\"cmt\"># Observer uniquement le trafic vers le serveur Web<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -nn 'port 80 or port 443'<\/span>\r\n\r\n<span class=\"cmt\"># Observer une adresse IP pr\u00e9cise<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -nn host 192.168.1.50<\/span>\r\n\r\n<span class=\"cmt\"># Voir le contenu des requ\u00eates HTTP non chiffr\u00e9es<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -nn -A port 80<\/span>\r\n\r\n<span class=\"cmt\"># Voir seulement les nouvelles tentatives de connexion TCP<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0'<\/span>\r\n\r\n<span class=\"cmt\"># Compter les IP source les plus fr\u00e9quentes dans une capture<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">tcpdump<\/span> <span class=\"arg\">-i eth0 -nn -l<\/span> | <span class=\"cmd\">awk<\/span> <span class=\"arg\">'{print $3}'<\/span> | <span class=\"cmd\">cut<\/span> <span class=\"arg\">-d. -f1-4<\/span> | <span class=\"cmd\">sort<\/span> | <span class=\"cmd\">uniq<\/span> <span class=\"arg\">-c<\/span> | <span class=\"cmd\">sort<\/span> <span class=\"arg\">-nr<\/span>\r\n\r\n<span class=\"cmt\"># Voir les \u00e9v\u00e9nements SSH<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span>\r\n\r\n<span class=\"cmt\"># Suivre les \u00e9v\u00e9nements SSH en temps r\u00e9el<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh -f<\/span>\r\n\r\n<span class=\"cmt\"># Voir les \u00e9v\u00e9nements r\u00e9cents du syst\u00e8me<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-xe<\/span>\r\n\r\n<span class=\"cmt\"># Chercher les \u00e9checs d'authentification SSH<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span> | <span class=\"cmd\">grep<\/span> <span class=\"arg\">\"Failed password\"<\/span>\r\n\r\n<span class=\"cmt\"># Chercher les connexions SSH r\u00e9ussies<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span> | <span class=\"cmd\">grep<\/span> <span class=\"arg\">\"Accepted\"<\/span>\r\n\r\n<span class=\"cmt\"># Compter les tentatives SSH par adresse IP<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span> | <span class=\"cmd\">grep<\/span> <span class=\"arg\">\"Failed password\"<\/span> | <span class=\"cmd\">awk<\/span> <span class=\"arg\">'{print $(NF-3)}'<\/span> | <span class=\"cmd\">sort<\/span> | <span class=\"cmd\">uniq<\/span> <span class=\"arg\">-c<\/span> | <span class=\"cmd\">sort<\/span> <span class=\"arg\">-nr<\/span>\r\n\r\n<span class=\"cmt\"># Tester si un service Web r\u00e9pond correctement<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-I http:\/\/localhost<\/span>\r\n\r\n<span class=\"cmt\"># Voir les d\u00e9tails de la connexion HTTP<\/span>\r\n<span class=\"cmd\">curl<\/span> <span class=\"arg\">-v http:\/\/localhost<\/span>\r\n<\/div>\r\n\r\n<hr>\r\n\r\n<h2>12. Phase 3 \u2013 R\u00e9duction de la surface d\u2019attaque<\/h2>\r\n\r\n<p>Une fois votre serveur analys\u00e9, vous devrez commencer \u00e0 le s\u00e9curiser.<\/p>\r\n\r\n<p>Vous pourrez notamment :<\/p>\r\n\r\n<ul>\r\n<li>d\u00e9sactiver les services inutiles;<\/li>\r\n<li>fermer les ports inutiles;<\/li>\r\n<li>configurer <code>ufw<\/code> ou <code>nftables<\/code>;<\/li>\r\n<li>limiter les sources autoris\u00e9es;<\/li>\r\n<li>s\u00e9curiser les services expos\u00e9s;<\/li>\r\n<li>am\u00e9liorer la journalisation;<\/li>\r\n<li>installer Fail2ban;<\/li>\r\n<li>d\u00e9tecter les tentatives r\u00e9p\u00e9t\u00e9es de connexion.<\/li>\r\n<\/ul>\r\n\r\n<h3>R\u00e8gle importante<\/h3>\r\n\r\n<p><strong>Bloquer compl\u00e8tement le r\u00e9seau n\u2019est pas une solution.<\/strong><\/p>\r\n\r\n<p>Les services demand\u00e9s doivent continuer \u00e0 fonctionner pour les utilisateurs l\u00e9gitimes.<\/p>\r\n\r\n<p>L\u2019objectif est de <strong>r\u00e9duire la surface d\u2019attaque sans rendre le service inutilisable<\/strong>.<\/p>\r\n\r\n<div class=\"cybersec-code\"><span class=\"cmt\"># Voir les services actifs<\/span>\r\n<span class=\"cmd\">systemctl<\/span> <span class=\"arg\">--type=service --state=running<\/span>\r\n\r\n<span class=\"cmt\"># D\u00e9sactiver un service inutile<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">systemctl<\/span> <span class=\"arg\">stop apache2<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">systemctl<\/span> <span class=\"arg\">disable apache2<\/span>\r\n\r\n<span class=\"cmt\"># V\u00e9rifier les ports encore ouverts<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ss<\/span> <span class=\"arg\">-tulpn<\/span>\r\n\r\n\r\n<span class=\"cmt\"># Activer UFW<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">enable<\/span>\r\n\r\n<span class=\"cmt\"># Politique par d\u00e9faut<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">default deny incoming<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">default allow outgoing<\/span>\r\n\r\n<span class=\"cmt\"># Autoriser seulement les services n\u00e9cessaires<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">allow 22\/tcp<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">allow 80\/tcp<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">allow 443\/tcp<\/span>\r\n\r\n<span class=\"cmt\"># Limiter SSH \u00e0 un r\u00e9seau pr\u00e9cis<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">allow from 192.168.1.0\/24 to any port 22 proto tcp<\/span>\r\n\r\n<span class=\"cmt\"># Bloquer une adresse IP<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">deny from 192.168.1.50<\/span>\r\n\r\n<span class=\"cmt\"># V\u00e9rifier les r\u00e8gles UFW<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">ufw<\/span> <span class=\"arg\">status numbered<\/span>\r\n\r\n\r\n<span class=\"cmt\"># Voir les r\u00e8gles nftables<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">nft<\/span> <span class=\"arg\">list ruleset<\/span>\r\n\r\n<span class=\"cmt\"># Bloquer une IP avec nftables<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">nft<\/span> <span class=\"arg\">add rule inet filter input ip saddr 192.168.1.50 drop<\/span>\r\n\r\n\r\n<span class=\"cmt\"># V\u00e9rifier la configuration SSH<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">nano<\/span> <span class=\"arg\">\/etc\/ssh\/sshd_config<\/span>\r\n\r\n<span class=\"cmt\"># V\u00e9rifier la configuration apr\u00e8s modification<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">sshd<\/span> <span class=\"arg\">-t<\/span>\r\n\r\n<span class=\"cmt\"># Red\u00e9marrer SSH<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">systemctl<\/span> <span class=\"arg\">restart ssh<\/span>\r\n\r\n\r\n<span class=\"cmt\"># Installer Fail2ban<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">apt<\/span> <span class=\"arg\">install fail2ban -y<\/span>\r\n\r\n<span class=\"cmt\"># Activer Fail2ban au d\u00e9marrage<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">systemctl<\/span> <span class=\"arg\">enable --now fail2ban<\/span>\r\n\r\n<span class=\"cmt\"># V\u00e9rifier Fail2ban<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">fail2ban-client<\/span> <span class=\"arg\">status<\/span>\r\n\r\n<span class=\"cmt\"># V\u00e9rifier la protection SSH<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">fail2ban-client<\/span> <span class=\"arg\">status sshd<\/span>\r\n\r\n<span class=\"cmt\"># Voir les \u00e9v\u00e9nements Fail2ban<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u fail2ban -f<\/span>\r\n\r\n\r\n<span class=\"cmt\"># Voir les \u00e9checs SSH<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span> | <span class=\"cmd\">grep<\/span> <span class=\"arg\">\"Failed password\"<\/span>\r\n\r\n<span class=\"cmt\"># Compter les IP qui \u00e9chouent le plus souvent<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh<\/span> | <span class=\"cmd\">grep<\/span> <span class=\"arg\">\"Failed password\"<\/span> | <span class=\"cmd\">awk<\/span> <span class=\"arg\">'{print $(NF-3)}'<\/span> | <span class=\"cmd\">sort<\/span> | <span class=\"cmd\">uniq<\/span> <span class=\"arg\">-c<\/span> | <span class=\"cmd\">sort<\/span> <span class=\"arg\">-nr<\/span>\r\n\r\n<span class=\"cmt\"># Suivre les tentatives SSH en temps r\u00e9el<\/span>\r\n<span class=\"cmd\">sudo<\/span> <span class=\"cmd\">journalctl<\/span> <span class=\"arg\">-u ssh -f<\/span>\r\n<\/div>\r\n\r\n<hr>\r\n\r\n<h2>13. Phase 4 \u2013 Ajout de pfSense<\/h2>\r\n\r\n<p>L\u2019architecture sera ensuite modifi\u00e9e.<\/p>\r\n\r\n<p>Votre serveur Debian ne sera plus directement expos\u00e9 au r\u00e9seau d\u2019attaque.<\/p>\r\n\r\n<!-- IMAGE : ARCHITECTURE AVEC PFSENSE -->\r\n<figure class=\"wp-block-image aligncenter\">\r\n    <img decoding=\"async\" src=\"https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/archi_apres_pfsense.png\" alt=\"Architecture du laboratoire apr\u00e8s ajout de pfSense\">\r\n    <figcaption>Architecture apr\u00e8s l\u2019ajout de pfSense entre le r\u00e9seau d\u2019attaque et le r\u00e9seau interne.<\/figcaption>\r\n<\/figure>\r\n<!-- FIN IMAGE : ARCHITECTURE AVEC PFSENSE -->\r\n\r\n<p>Vous devrez configurer et comprendre :<\/p>\r\n\r\n<ul>\r\n<li>l\u2019interface WAN;<\/li>\r\n<li>l\u2019interface LAN;<\/li>\r\n<li>l\u2019adressage du r\u00e9seau interne;<\/li>\r\n<li>les r\u00e8gles de pare-feu;<\/li>\r\n<li>le NAT;<\/li>\r\n<li>le Port Forwarding;<\/li>\r\n<li>les journaux pfSense.<\/li>\r\n<\/ul>\r\n\r\n<p>Vous devrez \u00eatre capable d\u2019identifier si un trafic est :<\/p>\r\n\r\n<ul>\r\n<li>re\u00e7u par pfSense;<\/li>\r\n<li>autoris\u00e9;<\/li>\r\n<li>bloqu\u00e9;<\/li>\r\n<li>redirig\u00e9 vers votre serveur.<\/li>\r\n<\/ul>\r\n\r\n<hr>\r\n\r\n<h2>14. Phase 5 \u2013 Serveur Web, Port Forwarding et Nginx Proxy Manager<\/h2>\r\n\r\n<p>Votre serveur Debian devra maintenant offrir un service Web accessible depuis le r\u00e9seau externe.<\/p>\r\n\r\n<p>Vous devrez installer et configurer <strong>Apache<\/strong> sur votre serveur Debian.<\/p>\r\n\r\n<p>Une page Web devra \u00eatre cr\u00e9\u00e9e et rendue accessible avec Apache.<\/p>\r\n\r\n<p>Vous devrez ensuite installer <strong>Nginx Proxy Manager dans Docker<\/strong>.<\/p>\r\n\r\n<p>Nginx Proxy Manager deviendra le point d\u2019entr\u00e9e pour les connexions HTTP et HTTPS vers votre serveur Web.<\/p>\r\n\r\n<p>Vous devrez enregistrer votre serveur Web Apache dans Nginx Proxy Manager afin que les requ\u00eates re\u00e7ues soient redirig\u00e9es vers Apache.<\/p>\r\n\r\n<p>Le chemin d\u2019une requ\u00eate Web deviendra donc :<\/p>\r\n\r\n<div class=\"cybersec-flow-vertical\">\r\n    <div class=\"flow-step\">Client \/ Attaquant<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">pfSense<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Port Forwarding 80 \/ 443<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Nginx Proxy Manager<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Apache<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Page Web<\/div>\r\n<\/div>\r\n\r\n<!-- IMAGE : ARCHITECTURE WEB -->\r\n<figure class=\"wp-block-image aligncenter\">\r\n    <img decoding=\"async\" src=\"https:\/\/info.kpuc.dev\/wp-content\/uploads\/2026\/10\/archi_web.png\" alt=\"Architecture Web avec pfSense, Nginx Proxy Manager et Apache\">\r\n    <figcaption>Architecture Web \u2013 Le trafic traverse pfSense et Nginx Proxy Manager avant d\u2019atteindre le serveur Web Apache.<\/figcaption>\r\n<\/figure>\r\n<!-- FIN IMAGE : ARCHITECTURE WEB -->\r\n\r\n<p>Vous devrez configurer le <strong>Port Forwarding<\/strong> dans pfSense afin de permettre au trafic HTTP et HTTPS d\u2019atteindre Nginx Proxy Manager.<\/p>\r\n\r\n<p>Principe g\u00e9n\u00e9ral :<\/p>\r\n\r\n<div class=\"cybersec-flow-vertical\">\r\n    <div class=\"flow-step\">WAN pfSense : TCP 80 \/ 443<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">NAT \/ Port Forwarding<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Nginx Proxy Manager<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Apache<\/div>\r\n<\/div>\r\n\r\n<p>Vous devrez v\u00e9rifier que votre page Web est accessible depuis le r\u00e9seau externe.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>15. Phase 6 \u2013 Surveillance des logs de Nginx Proxy Manager<\/h2>\r\n\r\n<p>Une fois votre page Web accessible, vous devrez commencer \u00e0 surveiller les communications avec votre serveur.<\/p>\r\n\r\n<p>Un <strong>outil personnalis\u00e9 d\u2019analyse des logs<\/strong> vous sera fourni.<\/p>\r\n\r\n<p>Cet outil permet de surveiller et d\u2019analyser les fichiers de logs g\u00e9n\u00e9r\u00e9s par <strong>Nginx Proxy Manager<\/strong>.<\/p>\r\n\r\n<p>Il permettra notamment d\u2019observer les \u00e9changes entre les clients et vos serveurs Web.<\/p>\r\n\r\n<p>Vous pourrez utiliser l\u2019outil pour analyser notamment :<\/p>\r\n\r\n<ul>\r\n<li>les adresses IP sources;<\/li>\r\n<li>les requ\u00eates HTTP;<\/li>\r\n<li>les m\u00e9thodes utilis\u00e9es;<\/li>\r\n<li>les URL demand\u00e9es;<\/li>\r\n<li>les codes de r\u00e9ponse HTTP;<\/li>\r\n<li>les User-Agent;<\/li>\r\n<li>la fr\u00e9quence des requ\u00eates;<\/li>\r\n<li>les erreurs g\u00e9n\u00e9r\u00e9es;<\/li>\r\n<li>les ressources demand\u00e9es;<\/li>\r\n<li>les comportements r\u00e9p\u00e9titifs.<\/li>\r\n<\/ul>\r\n\r\n<p>L\u2019objectif est de commencer \u00e0 comprendre ce qui se passe devant votre serveur Web \u00e0 partir des informations contenues dans les logs de Nginx Proxy Manager.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>16. Phase 7 \u2013 Activit\u00e9s normales et activit\u00e9s suspectes<\/h2>\r\n\r\n<p>\u00c0 partir de cette \u00e9tape, diff\u00e9rentes activit\u00e9s commenceront \u00e0 appara\u00eetre dans les logs de votre serveur Web.<\/p>\r\n\r\n<p>Certaines activit\u00e9s seront <strong>parfaitement normales<\/strong>.<\/p>\r\n\r\n<p>D\u2019autres pourront provenir de robots, de scanners automatis\u00e9s ou d\u2019activit\u00e9s potentiellement malveillantes.<\/p>\r\n\r\n<p>Vous ne saurez pas n\u00e9cessairement \u00e0 l\u2019avance quelle activit\u00e9 est normale et laquelle repr\u00e9sente une attaque.<\/p>\r\n\r\n<p>Votre travail sera d\u2019utiliser les informations pr\u00e9sentes dans les logs de Nginx Proxy Manager pour tenter de comprendre ce qui se passe.<\/p>\r\n\r\n<p>Vous devrez notamment tenter de r\u00e9pondre aux questions suivantes :<\/p>\r\n\r\n<ul>\r\n<li>Quelle adresse IP g\u00e9n\u00e8re les requ\u00eates?<\/li>\r\n<li>Quelles ressources sont demand\u00e9es?<\/li>\r\n<li>\u00c0 quelle fr\u00e9quence?<\/li>\r\n<li>Les ressources demand\u00e9es existent-elles r\u00e9ellement?<\/li>\r\n<li>Quels codes HTTP sont retourn\u00e9s?<\/li>\r\n<li>Le m\u00eame comportement est-il r\u00e9p\u00e9t\u00e9?<\/li>\r\n<li>Quel User-Agent est utilis\u00e9?<\/li>\r\n<li>Le comportement ressemble-t-il \u00e0 celui d\u2019un utilisateur normal?<\/li>\r\n<li>Le comportement ressemble-t-il \u00e0 celui d\u2019un robot ou d\u2019un scanner automatis\u00e9?<\/li>\r\n<li>Est-ce une activit\u00e9 potentiellement malveillante?<\/li>\r\n<\/ul>\r\n\r\n<p>Une adresse IP qui g\u00e9n\u00e8re beaucoup de trafic n\u2019est pas automatiquement malveillante.<\/p>\r\n\r\n<p>Vous devrez utiliser plusieurs informations pr\u00e9sentes dans les logs avant de prendre une d\u00e9cision.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>17. Phase 8 \u2013 Filtrage bas\u00e9 sur l\u2019analyse des logs<\/h2>\r\n\r\n<p>Apr\u00e8s avoir identifi\u00e9 une activit\u00e9 suspecte, vous devrez d\u00e9terminer comment la limiter ou la bloquer.<\/p>\r\n\r\n<p>Votre d\u00e9cision devra \u00eatre bas\u00e9e sur les observations effectu\u00e9es dans les logs de Nginx Proxy Manager.<\/p>\r\n\r\n<p>Le processus devient donc :<\/p>\r\n\r\n<div class=\"cybersec-flow-vertical\">\r\n    <div class=\"flow-step\">Activit\u00e9 r\u00e9seau<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Nginx Proxy Manager<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Logs NPM<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Outil personnalis\u00e9 d\u2019analyse<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Identification d\u2019un comportement suspect<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">D\u00e9cision de filtrage<\/div>\r\n<\/div>\r\n\r\n<p>Selon la situation, le filtrage pourra \u00eatre appliqu\u00e9 \u00e0 diff\u00e9rents niveaux de l\u2019infrastructure.<\/p>\r\n\r\n<p>Vous pourrez notamment intervenir dans :<\/p>\r\n\r\n<ul>\r\n<li>pfSense;<\/li>\r\n<li>le pare-feu du serveur Debian;<\/li>\r\n<li>Nginx Proxy Manager;<\/li>\r\n<li>Fail2ban;<\/li>\r\n<li>le serveur Web;<\/li>\r\n<li>l\u2019application elle-m\u00eame.<\/li>\r\n<\/ul>\r\n\r\n<p>Le choix devra d\u00e9pendre du type d\u2019activit\u00e9 observ\u00e9e.<\/p>\r\n\r\n<p>Vous devrez \u00eatre capable d\u2019expliquer :<\/p>\r\n\r\n<ol>\r\n<li>ce que vous avez observ\u00e9 dans les logs;<\/li>\r\n<li>pourquoi vous consid\u00e9rez cette activit\u00e9 comme suspecte;<\/li>\r\n<li>quelle source ou quel comportement vous souhaitez filtrer;<\/li>\r\n<li>o\u00f9 vous avez appliqu\u00e9 le filtrage;<\/li>\r\n<li>pourquoi vous avez choisi ce niveau;<\/li>\r\n<li>comment vous avez v\u00e9rifi\u00e9 que le filtrage fonctionne.<\/li>\r\n<\/ol>\r\n\r\n<p>Apr\u00e8s chaque modification, vous devrez continuer \u00e0 surveiller les logs afin de v\u00e9rifier que :<\/p>\r\n\r\n<ul>\r\n<li>l\u2019activit\u00e9 malveillante est effectivement limit\u00e9e ou bloqu\u00e9e;<\/li>\r\n<li>les utilisateurs l\u00e9gitimes peuvent toujours acc\u00e9der au service;<\/li>\r\n<li>la mesure de protection ne g\u00e9n\u00e8re pas de nouveaux probl\u00e8mes.<\/li>\r\n<\/ul>\r\n\r\n<div class=\"cybersec-workflow\">\r\n    <strong>Observer<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Analyser les logs<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Identifier<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>Filtrer<\/strong>\r\n    <span>\u2192<\/span>\r\n    <strong>V\u00e9rifier<\/strong>\r\n<\/div>\r\n\r\n<hr>\r\n\r\n<h2>18. Phase 9 \u2013 Choisir o\u00f9 intervenir<\/h2>\r\n\r\n<p>Une activit\u00e9 suspecte a \u00e9t\u00e9 identifi\u00e9e.<\/p>\r\n\r\n<p>Il faut maintenant d\u00e9terminer <strong>o\u00f9 appliquer la protection<\/strong>.<\/p>\r\n\r\n<p>Plusieurs possibilit\u00e9s peuvent exister :<\/p>\r\n\r\n<div class=\"cybersec-flow-vertical\">\r\n    <div class=\"flow-step\">pfSense<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Debian \/ pare-feu local<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Nginx Proxy Manager<\/div>\r\n    <div class=\"flow-arrow\">\u2193<\/div>\r\n\r\n    <div class=\"flow-step\">Apache \/ Application<\/div>\r\n<\/div>\r\n\r\n<p>Vous devrez choisir le niveau appropri\u00e9 selon la situation.<\/p>\r\n\r\n<p>Il ne suffit pas de bloquer une adresse IP.<\/p>\r\n\r\n<p>Vous devez \u00eatre capable d\u2019expliquer <strong>pourquoi la protection est appliqu\u00e9e \u00e0 cet endroit de l\u2019infrastructure<\/strong>.<\/p>\r\n\r\n<hr>\r\n\r\n<h2>19. Phase 10 \u2013 D\u00e9fense progressive<\/h2>\r\n\r\n<p>Les attaques pourront \u00e9voluer pendant l\u2019activit\u00e9.<\/p>\r\n\r\n<p>Une protection efficace contre une attaque ne fonctionnera pas n\u00e9cessairement contre la suivante.<\/p>\r\n\r\n<p>Vous pourrez progressivement ajouter des m\u00e9canismes comme :<\/p>\r\n\r\n<ul>\r\n<li>Fail2ban;<\/li>\r\n<li>r\u00e8gles pfSense;<\/li>\r\n<li>filtrage IP;<\/li>\r\n<li>limitation du nombre de requ\u00eates;<\/li>\r\n<li>IDS\/IPS;<\/li>\r\n<li>Suricata;<\/li>\r\n<li>CrowdSec;<\/li>\r\n<li>centralisation des logs;<\/li>\r\n<li>tableaux de bord;<\/li>\r\n<li>surveillance r\u00e9seau;<\/li>\r\n<li>surveillance des applications;<\/li>\r\n<li>alertes.<\/li>\r\n<\/ul>\r\n\r\n<p>Vous \u00eates libre d\u2019utiliser d\u2019autres outils si vous \u00eates capable de justifier leur utilisation.<\/p>\r\n\r\n<\/article>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Mise en situation Vous \u00eates responsable d\u2019un serveur qui devra progressivement offrir diff\u00e9rents services accessibles sur un r\u00e9seau. Au d\u00e9but de l\u2019activit\u00e9, chaque participant re\u00e7oit une machine virtuelle Debian Server&hellip;<\/p>\n","protected":false},"author":1,"featured_media":503,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"page_builder":"","footnotes":""},"categories":[8,9],"tags":[],"class_list":["post-481","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-pfsens"],"_links":{"self":[{"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/posts\/481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/comments?post=481"}],"version-history":[{"count":13,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/posts\/481\/revisions"}],"predecessor-version":[{"id":502,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/posts\/481\/revisions\/502"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/media\/503"}],"wp:attachment":[{"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/media?parent=481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/categories?post=481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/info.kpuc.dev\/index.php\/wp-json\/wp\/v2\/tags?post=481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}