08:00 - La Découverte
Tout commence par une banale inspection des logs. Une routine. La Tisane fume
encore. Dans le flux incessant des requĂȘtes, une ligne attire l'Ćil de l'Admin. Pas une attaque brute,
pas un script russe cherchant wp-login. Non.
Une requĂȘte polie, chirurgicale, venant d'une IP californienne : 147.185.132.132.
Le User-Agent décline son identité :
Palo Alto Networks / Cortex Xpanse.
La cible : GET /.well-known/security.txt.
08:05 - Le Constat
Le serveur a répondu 404 Not Found. Pour le commun des mortels, c'est une erreur
banale.
Pour nous, c'est un aveu de faiblesse.
C'est dire au monde de la cybersécurité : "Je ne parle pas votre langue. Je n'ai pas de procédure. Je
suis un touriste."
Palo Alto ne nous attaquait pas. Ils toquaient à la porte pour vérifier si la maison
était tenue par un professionnel.
Nous avons échoué au test.
# Modification du docker-compose.yml
services:
nginx-www:
image: nginx:alpine
volumes:
# On map les logs du conteneur vers l'hĂŽte physique pour que Fail2Ban puisse les lire
- ./logs:/var/log/nginx
labels:
- "traefik.enable=true"
09:00 - La Réaction (Code Rouge)
L'Admin (Moi) décide que l'amateurisme n'a pas sa place chez NoSec.
Maispour rĂ©pondre correctement Ă cette requĂȘte, un problĂšme structurel Ă©merge : L'OpacitĂ© Docker.
Nos logs mentent. Nginx, caché derriÚre Traefik, voit tout le monde comme venant de 172.18.0.2.
Si nous mettons en place une sécurité, nous risquons de bannir notre propre proxy, coupant l'accÚs à tous les
sites.
L'autodestruction.
10:00 - La Chirurgie (Deep Dive) On ne se contente pas de créer un fichier texte. On refond l'architecture.
- 1. Identity Reveal : Injection d'une configuration Nginx personnalisée (real_ip_header) pour forcer le serveur à démasquer les visiteurs. Les masques tombent. Les vraies IP apparaissent dans les logs.
- 2. Cryptographie : GĂ©nĂ©ration de clĂ©s PGP 4096-bits. Nous sommes prĂȘts Ă recevoir des secrets.
- 3. RFC 9116 : Déploiement du standard security.txt. Mais avec notre touche : un avertissement cynique pour les curieux et un défi pour les recruteurs sur le CV.
# Security.txt - RFC 9116
Contact: mailto:oops@unsafe.fr
Encryption: https://nosec.fr/pgp-key.txt
Canonical: https://www.knowsec.fr/.well-known/security.txt
# L'élégance, c'est de savoir crocheter une serrure
# mais de choisir de sonner Ă la porte.
11:30 - La Contre-Attaque (Weaponization)
Maintenant que nous voyons les vraies IP, nous pouvons armer la
forteresse. Fail2Ban est reconfiguré. Il ne surveille plus le vide. Il surveille désormais les logs
exfiltrés des conteneurs. Nous créons une prison sur mesure : nginx-nosec.
La rĂšgle est simple : Touche Ă l'admin ? Touche Ă l'API ? Touche Ă .env ? -> Banni. Le test final avec
un smartphone confirme l'efficacité du piÚge.
# /etc/fail2ban/action.d/docker-action.conf
[Definition]
# On intercepte le trafic AVANT qu'il n'atteigne le conteneur via la chaĂźne DOCKER-USER
actionstart = iptables -I DOCKER-USER -p tcp -m multiport --dports 80,443 -j f2b-<name>
# Le BAN : On drop le paquet sans pitié
actionban = iptables -I f2b-<name> 1 -s <ip> -j DROP
12:00 - Ătat Final
Ce matin, nous avions un serveur qui répondait "Je ne sais pas" à un scanner de
sécurité.
A midi, nous avons une forteresse monitorée, conforme aux standards internationaux, qui
protĂšge ses secrets, identifie ses assaillants et les neutralise automatiquement avant qu'ils
n'atteignent la porte.
Palo Alto peut revenir. Cette fois, le cafĂ© est prĂȘt, et le panneau "DĂ©fense d'entrer" est Ă©crit en or
massif.
L'Admin (Moi), peut aller alourdir son estomac, l'esprit léger !