freedzhost.cloud

Résister aux DDoS quand votre site vit à la maison

Niveau IntermédiaireTemps estimé une soiréeÀ lire avant Avant d'ouvrir un site web à internet : un audit de sécurité en dix contrôlesUn mot inconnu ? Lexique

Soyons honnêtes d'abord : si quelqu'un envoie plus de trafic que votre ligne internet ne peut en porter, votre site tombe, quoi que vous configuriez à la maison. L'inondation s'arrête en amont ou pas du tout. Ce que vous maîtrisez, c'est tout le reste : les robots, le devinage de mots de passe, les inondations applicatives, et le fait que l'adresse de votre maison soit visible ou non.

Ce que vous y gagnez. Un plan clair en quatre couches. Les deux premières sont gratuites, prennent une heure et arrêtent le bruit quotidien ; la troisième, un petit frontal loué, cache votre maison et garde le site en ligne même quand la maison est coupée.

Internetvisiteurs et inondationsFrontal louéanti-DDoS, site statique, cacheProxy de la maisonles autres servicestunnel chiffrétout le reste refusé
Visiteurs et attaquants arrivent sur un petit serveur loué dont l'hébergeur filtre les attaques volumétriques. Il sert lui-même le site statique et envoie le reste par un tunnel chiffré vers la maison. La box n'accepte plus rien d'internet sauf ce tunnel : l'adresse de la maison n'est jamais publiée.

Couche 1 : des limites au proxy (gratuit, une heure)

Dans Nginx Proxy Manager, un fichier personnalisé chargé dans le bloc http s'applique à tous les sites :

# /data/nginx/custom/http_top.conf
geo $limited { default 1; YOUR-LAN/24 0; YOUR-TAILNET-RANGE 0; 127.0.0.0/8 0; }
map $limited $limit_key { 0 ""; 1 $binary_remote_addr; }   # vos propres réseaux ne sont jamais limités
limit_req_zone  $limit_key zone=perip:10m rate=30r/s;
limit_conn_zone $limit_key zone=conn:10m;
limit_req  zone=perip burst=120 nodelay;
limit_conn conn 60;
limit_req_status 429;
client_header_timeout 15s; client_body_timeout 15s; send_timeout 15s;
# keepalive_timeout est déjà posé par le proxy : le poser deux fois casse le rechargement

Ensuite un fail2ban qui marche (vérifiez qu'il reconnaît vraiment quelque chose, voir l'audit), avec une prison qui bannit dès la première recherche de /.env ou /.git/, et une prison recidive qui bannit les récidivistes pour une semaine.

Couche 2 : servir le site depuis la mémoire (gratuit, trente minutes)

Un site statique peut être mis en cache par le proxy quelques secondes. Une inondation de requêtes identiques reçoit alors sa réponse depuis la mémoire, sans toucher au conteneur du site :

proxy_cache_path /data/cache levels=1:2 keys_zone=site:10m max_size=200m inactive=10m;
proxy_cache site;
proxy_cache_valid 200 10s;
proxy_cache_use_stale error timeout updating;

proxy_cache_use_stale continue aussi de servir la dernière bonne copie si le conteneur du site redémarre : le visiteur ne s'aperçoit de rien.

Couche 3 : un frontal loué (environ cinq euros par mois)

C'est la seule couche qui résiste à une attaque volumétrique. Un petit serveur virtuel chez un hébergeur qui inclut le filtrage anti-DDoS sur son réseau :

  1. sert lui-même le site statique (une copie, synchronisée après chaque publication) ;
  2. transmet les autres services par un tunnel WireGuard jusqu'à la maison ;
  3. la box ne redirige plus les ports 80 et 443 depuis internet : seulement le tunnel.

Votre DNS pointe alors vers le frontal, jamais vers la maison. Un attaquant ne peut viser qu'une adresse dont le réseau est conçu pour encaisser, et votre site reste en ligne même quand la connexion de la maison est coupée.

Couche 4 : un grand CDN, en connaissance de cause

Une offre gratuite de CDN encaisse presque tout, pour rien. Le prix est ailleurs : un tiers déchiffre votre trafic et voit chaque requête. Pour un site public statique, ça peut se défendre ; pour des services privés, c'est contraire à la raison même d'héberger chez soi. Nous avons choisi la couche 3.

Pièges

Mettez vos propres réseaux en liste blanche dans chaque bannissement et chaque limite (ignoreip, un bloc geo pour les limites) : une sonde de supervision ou un exécutant de CI qui martèle une API ressemble exactement à un attaquant.

Des limites trop basses punissent les vrais visiteurs derrière une adresse partagée (un bureau, un opérateur mobile). Commencez large, surveillez les 429 dans les journaux, puis resserrez.

Un enregistrement DNS joker publie l'adresse de votre maison sous chaque nom inventé. Retirez-le avant tout le reste.

Sources

Utile ? Dites-nous ce qu'il faut mesurer ensuite.