Firewall + Observabilité réseau (bash)
2 scripts “safe” : protection HTTPS + analyse des IP actives
Ce guide documente deux scripts bash complémentaires : 1) Protection HTTPS (iptables, limites “douces”) et 2) Analyse des IP actives (ss/netstat : top IP, états TCP, /24, export CSV).
iptables (read + add only) HTTPS 443 connlimit rate-limit (NEW) ss / netstat Top IP States (SYN_RECV/ESTABLISHED) Top /24 CSV export
Philosophie “prod-safe” :
- Le script firewall n’efface rien : il ajoute 2 protections ciblées sur
443. - Le script d’analyse est lecture seule : il ne modifie rien, il observe.
- On privilégie des règles “humain-friendly” : un navigateur normal n’ouvre pas 50 connexions simultanées.
Étape 1 — Installation (Ubuntu)
1) Dépendances
sudo apt update
sudo apt install -y iptablessudo apt install -y iproute2Note : si tu n’as pas
ss, le script d’analyse bascule sur netstat (package net-tools).sudo apt install -y net-tools2) Placement des scripts
/opt/ideolab/scripts/
ideolab_https_protection.sh
ideolab_active_ips.sh3) Droits d’exécution
cd /opt/ideolab/scripts
chmod +x ideolab_https_protection.sh ideolab_active_ips.sh4) Option IDEO-Lab : download via static
Si tu veux exposer un “Download .sh” dans tes pages, copie aussi les scripts dans
static/.# (Optionnel) Place une copie des scripts ici :
static/toolbox/ideolab_https_protection.sh
static/toolbox/ideolab_active_ips.shScript 1 — ideolab_https_protection.sh (iptables)
Ce script ajoute deux protections ciblées sur 443 : limite de connexions simultanées par IP + limite de nouvelles connexions par minute.
Important : ce script doit être lancé en
sudo (iptables modifie le firewall). Il n’efface pas tes règles : il ajoute seulement si elles n’existent pas.sudo /opt/ideolab/scripts/ideolab_https_protection.shCe que le script fait exactement
- Autorise les connexions déjà établies (
RELATED,ESTABLISHED). - Bloque l’excès si une IP ouvre >
20connexions simultanées sur443. - Autorise les connexions
NEWsur 443 à un rythme max30/min(burst50). - Affiche la table INPUT avec numéros de lignes (pour vérifier et/ou undo).
sudo iptables -L INPUT -n --line-numbersUndo (revenir en arrière proprement)
Undo safe : on supprime seulement les lignes ajoutées, via leurs numéros (pas de flush global).
# 1) Voir les regles et noter les numéros
sudo iptables -L INPUT -n --line-numbers
# 2) Supprimer une regle par son numéro (exemple)
sudo iptables -D INPUT 10
sudo iptables -D INPUT 11Script 2 — ideolab_active_ips.sh (analyse IP actives)
Ce script observe les connexions TCP et produit un reporting : Top IP, répartition des états, top IP par état, et top /24 (spray multi-IP). Il exporte aussi un CSV.
Lecture seule : aucune modification réseau. Tu peux l’exécuter sans sudo.
Usage rapide
/opt/ideolab/scripts/ideolab_active_ips.sh/opt/ideolab/scripts/ideolab_active_ips.sh 443Focus destination (si multi-IP locales)
# Ex: si ton serveur a plusieurs IP locales, filtre sur celle du service
/opt/ideolab/scripts/ideolab_active_ips.sh 443 172.31.28.54Comment lire les résultats
- TOP IPs : qui ouvre le plus de connexions (suspects évidents).
- STATES :
SYN_RECVélevé → suspicion flood / handshake non terminéESTABLISHEDénorme à débit nul → keep-alive abuse / botsTIME_WAITmassif → churn de connexions (trafic agressif)
- TOP /24 : attaque “spray” (plein d’IP d’un même bloc).
- CSV : fichier
active_ips_YYYYMMDD_HHMMSS.csvpour historiser / comparer.
FAQ / Dépannage
1) “Je vois plein d’IP mais le site répond”
Normal : beaucoup d’IP peuvent être des crawlers/scanners. Ce qui compte, c’est : nb de connexions, états TCP, et stabilité CPU/RAM/workers.
2) “Le script d’analyse dit: need ss or netstat”
Installe
iproute2 (recommandé) ou net-tools (fallback).3) “Après firewall, j’ai peur de casser le site”
Vérifie la table INPUT, et si besoin retire les règles par numéro (undo). Évite les
iptables -F (flush global) en prod.4) “Les règles disparaissent au reboot”
C’est normal selon ta config. Voir la modal “Persistance au reboot”.
