Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026
Panic Guard Anti-flood interactif & réversible
iptables logs + snapshot + conf

Panic Guard — Script anti-flood (iptables) avec menu, traces & rollback

Panic Guard — Anti-flood script (iptables) with menu, traces & rollback

But
Récupérer le contrôle
Principe
Measure → Preview → Apply
Sécurité
DRY-RUN par défaut
Retour arrière
1 clic (snapshot)

Panic Guard est un script Bash conçu pour les situations “serveur en feu” : montée brutale des connexions sur 443, saturation TLS, bots, scrapers ou flood. L’objectif est d’agir vite sans agir à l’aveugle : le script propose un menu interactif, un résumé des actions, un mode DRY-RUN, une mémoire persistante (config), et une fonction Cancel/Rollback pour retirer uniquement les règles ajoutées par le script.

Panic Guard is a Bash script built for “server on fire” moments: sudden connection spikes on 443, TLS saturation, bots, scrapers, or floods. It helps you act fast without acting blindly: interactive menu, action preview, DRY-RUN mode, persistent config, and a safe Cancel/Rollback that removes only rules added by the script.

Ce que fait le script :
  • Observe le port (443 par défaut) via ss, calcule les IP “top talkers”.
  • Prépare une liste de blocage (IP, /24 ou /16) selon tes paramètres.
  • Affiche un preview + te demande une confirmation explicite YES.
  • Ajoute les règles iptables en tête de chaîne et journalise tout.
  • Crée un snapshot de rollback pour pouvoir annuler.
Pourquoi firewall & pas “GeoIP Nginx” ?
Parce qu’en flood HTTPS, la charge arrive avant l’HTTP (TCP/TLS). Le firewall coupe au plus tôt.

Étape 1 — Installation sur le serveur

Step 1 — Install on the server

Télécharger le script (version initiale)
Dépose le fichier dans /usr/local/sbin/ (ou ton répertoire “toolbox”). Le script conserve sa mémoire dans /var/lib/panic-guard/ et log dans /var/log/panic-guard.log.
⬇ Télécharger panic_guard.sh

1) Installer

1) Install

Install
sudo nano /usr/local/sbin/panic_guard.sh
sudo chmod +x /usr/local/sbin/panic_guard.sh

2) Dépendances (présentes par défaut)

2) Dependencies (usually present)

Deps
# requis
ss
iptables
awk / sed / sort / uniq
Conseil : garde le script exécutable uniquement par root (placement dans /usr/local/sbin + droits stricts).

Étape 2 — Utilisation (menu interactif)

Step 2 — Usage (interactive menu)

Règle d’or : on commence toujours en DRYRUN=1. On observe → on preview → on applique.
Run
sudo /usr/local/sbin/panic_guard.sh

Fonctions du menu

Menu functions

Status

Show status : affiche le total de connexions sur le port + top IP (volume).

Show status: shows total connections + top IP talkers.

Config

Edit config : saisie guidée (port, seuil, mode ip/24/16, whitelist).

Edit config: guided inputs (port, threshold, ip/24/16 mode, whitelist).

Preview

APPLY commence par un preview, puis exige YES.

APPLY starts with a preview, then requires YES.

Rollback

ROLLBACK retire uniquement ce que Panic Guard a ajouté (snapshot).

ROLLBACK removes only what Panic Guard added (snapshot).

Exemples de paramètres recommandés

Recommended parameter examples

Si tu bloques trop large : passe en MODE=ip + augmente MIN_CONN. Et utilise la whitelist.

Étape 3 — Cancel / Rollback (désenclencher proprement)

Step 3 — Cancel / Rollback (clean undo)

Le script écrit une liste de commandes de suppression dans un snapshot (ex: /var/lib/panic-guard/snapshot.rules). En cas de “sur-blocage”, tu reviens au menu et tu lances ROLLBACK.

Rollback
# via menu : Option "ROLLBACK"
sudo /usr/local/sbin/panic_guard.sh
Important : le rollback n’efface pas tes autres règles iptables : il retire uniquement celles ajoutées par Panic Guard.

Sécurité & Bonnes pratiques

Security & best practices

1) Toujours DRY-RUN avant d’appliquer

Mets DRYRUN=1, regarde le preview, vérifie la whitelist, puis bascule DRYRUN=0.

2) Whitelist obligatoire (ton IP / VPN / monitoring)

Whitelist
WHITELIST="MON.IP.PUBLIQUE,10.0.0.0/24"

3) Persistance au reboot (optionnel)

Les règles iptables peuvent ne pas survivre au reboot selon ta distro. Si tu veux, on ajoutera une section “persist” (iptables-persistent/nftables) exactement comme tes autres tools.

4) Quand passer à Cloudflare / WAF

Panic Guard = “pare-feu d’urgence”. Si c’est récurrent : WAF / Cloudflare / rate limiting upstream.

À propos

About

Licence

Usage interne IDEO-Lab. Tu peux le packager “toolbox” si tu veux.

Auteur

Développé pour Ideo-Lab — DevOps, DBA, Performance, Cloud Engineering.
Contact : contact@ideo-lab.com

Emplacements (par défaut)

  • Config : /var/lib/panic-guard/config.conf
  • Snapshot rollback : /var/lib/panic-guard/snapshot.rules
  • Logs : /var/log/panic-guard.log