Automatisation du blocage d'adresses IP malveillantes via IPsum et ipset

Concept de la source de renseignement IPsum

IPsum fonctionne comme un agrégateur de renseignements sur les menaces, consolidant plus de trente listes publiques d'adresses IP suspectes ou malveillantes. Le mécanisme central repose sur le croisement de ces sources : chaque adresse est accompagnée d'un score indiquant son nombre d'apparitions dans les différentes listes noires. Plus ce score est élevé, plus la probabilité que l'adresse soit légitimement malveillante est grande, réduisant ainsi les faux positifs. Les données sont extraites, normalisées et triées par ordre de fréquence décroissante toutes les 24 heures.

Déploiement et configuration sous Linux

Pour exploiter cette liste noire au niveau du noyau Linux, l'utilisation conjointe de ipset et iptables est recommandée. Cette approche est bien plus performante qu'une longue chaîne de règles iptables traditionnelles.

Extraction et filtrage des adresses

Au lieu d'enchaîner plusieurs commandes grep et cut, il est plus efficace d'utiliser awk pour filtrer les commentaires et ne conserver que les adresses IP ayant un score de répétition strictement supérieur à 2.

curl -sL "https://raw.githubusercontent.com/stamparm/ipsum/master/ipsum.txt" | awk '!/^#/ && $2 > 2 {print $1}'

Intégration avec ipset et mise à jour atomique

Pour appliquer ces règles sans interrompre le trafic réseau pendant la mise à jour, la meilleure pratique consiste à créer un jeu de règles temporaire, à le remplir, puis à l'échanger de manière atomique avec le jeu actif.

# Installation des composants nécessaires
sudo apt-get update && sudo apt-get install -y ipset iptables

# Initialisation du jeu de règles temporaire
sudo ipset create ipsum_update hash:ip -exist

# Récupération, filtrage et injection directe dans le jeu temporaire
curl -sL "https://raw.githubusercontent.com/stamparm/ipsum/master/ipsum.txt" | \
awk '!/^#/ && $2 > 2 {print "add ipsum_update " $1}' | \
sudo ipset restore -exist

# Permutation atomique des jeux de règles (zero-downtime)
sudo ipset swap ipsum_update ipsum

# Insertion de la règle de blocage dans le pare-feu (si ce n'est pas déjà fait)
sudo iptables -I INPUT -m set --match-set ipsum src -j DROP

Stratégies de maintenance et intégration

Pour garantir une protection continue, ce script doit être planifié via cron pour s'exécuter quotidiennement. L'approche par permutation (swap) garantit que les nouvelles adresses sont bloquées instantanément sans laisser de fenêtre de tir pendant le rechargement.

Cette liste noire peut également être intégrée à des écosystèmes de sécurité plus larges. Par exemple, les règles générées peuvent être converties pour alimenter les listes de réputation de systèmes de détection et de prévention d'intrusion (IDS/IPS) tels que Suricata ou Snort. De même, des outils comme Fail2Ban peuvent être configurés pour croiser leurs propres analyses de logs avec cette base de connaissances externe, renforçant ainsi la posture de défense globale du serveur.

Étiquettes: ipset iptables threat-intelligence linux-security bash

Publié le 27 juillet à 02h02