Protéger votre serveur web avec une Blacklist IP en direct
Pour protéger un serveur web avec une Blacklist d’adresses IP en direct, récupérez une liste ReportedIP par service exposé, chargez-la dans un set ipset ou nftables et n’appliquez chaque set qu’aux ports de son service. Le 29 septembre 2026, la base communautaire suivait 799 893 adresses IP issues de 7 194 829 signalements d’abus, et 4 173 de ces adresses atteignaient un score de 90 ou plus, le niveau que nous recommandons pour un blocage sans surveillance.
Cet article décrit la voie à faire soi-même : votre propre script, votre propre tâche cron, votre propre action fail2ban. Sur un serveur Linux, le ReportedIP Agent fait le même travail sous la forme d’un seul binaire prêt à l’emploi, présenté plus bas.
Pourquoi une Blacklist en direct vaut-elle mieux qu’un fichier de blocage statique ?
Les listes de blocage statiques vieillissent mal. Les attaquants passent d’un fournisseur cloud à l’autre et d’un botnet à l’autre : une IP qui menait des attaques par force brute SSH en juin est souvent, en août, un client légitime du même hébergeur. Une liste téléchargée une fois puis laissée en place continue de bloquer les mauvaises personnes et rate la vague actuelle.
La Dynamic Blacklist de ReportedIP est reconstruite sur le serveur toutes les 15 minutes à partir des signalements récents de la communauté. Les serveurs honeypot, les sites WordPress équipés du plugin Hive et les installations fail2ban envoient leurs signalements dans une chaîne de notation, et seules les IP au-dessus du seuil de confiance demandé figurent dans votre téléchargement. Quand un attaquant se tait, son score baisse et l’IP sort de la liste d’elle-même.
Comment le score de confiance garde-t-il la liste propre ?
Chaque IP de la liste porte un score de confiance de 0 à 100. Il se compose de quatre éléments et d’un bonus honeypot :
- Volume de signalements (jusqu’à 30 points) : le nombre pondéré de signalements contre l’IP.
- Diversité des rapporteurs (jusqu’à 15 points) : les signalements de sources indépendantes comptent davantage. Un rapporteur seul ne peut pas faire passer une IP au-delà d’un score de 60.
- Récence (jusqu’à 15 points) : un signalement des dernières 24 heures ajoute 5 points, un de la dernière semaine 3, les plus anciens moins.
- Gravité (jusqu’à 15 points) : pondérée selon la catégorie de menace, un hôte compromis ne pèse donc pas comme un spammeur de commentaires.
- Bonus honeypot (jusqu’à 25 points) : les signalements de honeypots pèsent plus, car aucun utilisateur légitime ne touche jamais un honeypot.
Les signalements perdent du poids avec une demi-vie de 30 jours : après 30 jours, un signalement compte pour 50 pour cent, après 60 jours pour 25 pour cent. Quand une IP reste deux semaines sans nouveau signalement, son score entier se met en plus à diminuer de moitié tous les 30 jours. Des plafonds fixes s’y ajoutent : moins de 5 signalements effectifs limitent le score à 49, moins de 10 à 74. Un score de 90 suppose donc un abus récent confirmé par plusieurs rapporteurs indépendants. Le calcul complet figure sur la page du score de confiance.
Pourquoi une liste de blocage par service ?
Chaque signalement porte des identifiants de catégorie de 1 à 63 : des catégories classiques comme SSH (22) et Email Spam (11), un bloc dédié à WordPress (31 à 58) et des catégories honeypot (59 à 63). Le paramètre category de GET /blacklist accepte une liste d’identifiants séparés par des virgules, et chaque service exposé reçoit ainsi exactement les attaquants qui le visent.
| Liste | Catégories | Appliquée à | Taille à la confiance 90 |
|---|---|---|---|
| SSH | 22,18 | Port 22 | 1 640 IP |
11,7,17,18 | Ports 25, 465, 587, 110, 143, 993, 995 | 1 547 IP | |
| Web | 21,16,10,19,12 et 31 à 58 | Ports 80, 443 | 1 372 IP |
| FTP | 5,18 | Port 21 | 1 472 IP |
| Edge | 4,14,20 | Tous les ports | 1 344 IP |
Les tailles ont été mesurées le 29 septembre 2026. Elles changent chaque jour et ont baissé depuis la mise en service, le 28 septembre 2026, de la décroissance du score pour les IP inactives. Des sets limités aux ports rendent les erreurs peu coûteuses : une IP de la liste web ne peut jamais bloquer un administrateur en SSH. La liste edge (DDoS, scans de ports, hôtes compromis) est la seule qui vaille la peine sur tous les ports, car ces attaquants sondent tout.
Comment charger une liste ReportedIP dans ipset ou nftables ?
Le endpoint /blacklist exige une clé API à partir de l’offre Contributor. Contributor est gratuit pour les comptes qui exploitent un honeypot et partagent ses signalements ; sinon, le flux commence avec Professional à 14,90 € par mois TTC. Avec format=txt, la réponse contient une IP par ligne, IPv4 et IPv6 mélangées, filtrez donc la famille d’adresses avant le chargement :
ipset create rip-ssh hash:ip family inet maxelem 65536 -exist
curl -sS -H "X-Key: YOUR_API_KEY" \
"https://reportedip.com/wp-json/reportedip/v2/blacklist?confidence=90&format=txt&limit=50000&category=22,18" \
| grep -E '^[0-9]+(\.[0-9]+){3}$' | sed 's|^|add rip-ssh |' | ipset restore -exist
iptables -I INPUT -p tcp --dport 22 -m set --match-set rip-ssh src -j DROP
Sans limit, le endpoint renvoie au plus 10 000 entrées ; limit=50000 renvoie tout ce que contient le palier. Une recherche dans un set prend le même temps quelle que soit la longueur de la liste, c’est tout l’intérêt d’ipset face à une règle par IP. Sur les systèmes nftables, un set nommé dans une table inet remplace ipset et contient IPv4 et IPv6 côte à côte :
nft add table inet reportedip
nft add chain inet reportedip input '{ type filter hook input priority -10 ; policy accept ; }'
nft add set inet reportedip rip-ssh '{ type ipv4_addr ; }'
nft add rule inet reportedip input tcp dport 22 ip saddr @rip-ssh drop
Pour chaque mise à jour suivante, utilisez le script de synchronisation du guide du blocage réseau. Il échange le set de façon atomique, sépare IPv4 et IPv6 et couvre aussi les pare-feu cloud. Deux règles de sécurité avant le premier lancement : placez vos propres IP d’administration dans un set d’acceptation distinct que le pare-feu vérifie en premier, et ne remplacez jamais un set fonctionnel par un téléchargement tronqué.
Comment garder la liste à jour sans consommer de quota ?
Une tâche cron horaire par liste suffit, répartie sur l’heure : cinq listes une fois par heure font 120 requêtes par jour. Chaque réponse porte un ETag. Conservez-le par liste et renvoyez-le en If-None-Match ; une liste inchangée répond 304 Not Modified avec un corps vide. Un 304 ne coûte aucun quota, et le téléchargement lui-même ne compte pas non plus dans votre quota quotidien de vérifications ou de signalements.
- Un ETag par liste. Le tag couvre exactement la combinaison de paramètres demandée, filtre de catégories compris.
- Ne jamais vider en cas d’échec. Pour tout statut autre que 200 ou 304, gardez le set précédent et réessayez au lancement suivant.
- Vérifier la taille. Refusez une liste qui a fortement rétréci. Fixez le minimum par liste d’après ce que vous voyez aujourd’hui, par exemple la moitié de la taille actuelle.
Les paramètres et les formats de réponse (txt, csv, json) sont documentés dans la référence de l’API, les listes par service sur la page Blacklist. Les exploitants de serveurs mail qui préfèrent les requêtes DNS à la synchronisation de listes interrogent les mêmes données sous forme de zone RBL privée.
Comment signaler les attaquants en retour avec fail2ban ?
Bloquer n’est que la moitié de la boucle. Une petite action fail2ban envoie chaque bannissement de votre serveur à POST /report, avec les catégories de sa jail : 18,22 pour sshd, 11,18 pour postfix-sasl et dovecot, 18,21 pour nginx-http-auth. Les signalements ne comptent que dans votre quota quotidien de signalements, jamais dans le quota de vérifications.
Votre signalement augmente le score de l’attaquant pour tout le monde. Comme un rapporteur seul ne peut pas faire passer une IP au-delà de 60, votre confirmation est souvent celle qui fait franchir le seuil de blocage à une IP limite. Le fichier d’action et le tableau des jails et catégories se trouvent dans le guide d’intégration fail2ban. Les sites WordPress obtiennent la même boucle sans shell : le plugin Hive surveille les connexions, les commentaires et XML-RPC et signale lui-même les attaques confirmées.
Quand le ReportedIP Agent est-il le meilleur choix ?
Tout ce qui précède est une maintenance à votre charge : le script, les fichiers ETag, le contrôle de taille, l’action fail2ban. Le ReportedIP Agent regroupe cette voie pour les serveurs Linux dans un binaire statique, version 0.3.38 au 28 septembre 2026 :
- Il charge les cinq mêmes listes par service, ssh, mail, web, ftp et edge, dans ipset ou nftables, avec la requête conditionnelle, le contrôle de taille et l’échange atomique intégrés.
- Sur un serveur sous licence, il actualise le flux toutes les 15 minutes et reprend chaque IP à partir d’une confiance de 75.
- Il lit les journaux que le serveur écrit déjà, de sshd à Postfix et au serveur web, et signale lui-même les attaquants. Cela remplace l’action fail2ban.
Le flux sur l’agent est sous licence par serveur. Professional inclut un serveur et Business trois ; chaque licence supplémentaire coûte 4,90 € par mois TTC, et le prix descend à 1,40 € à partir de 50 licences. Sans licence, l’agent continue de détecter, de bloquer localement et de signaler, seul le flux est en pause. L’installation et les prérequis sont décrits dans la documentation du Linux Agent.
Vous exploitez plus d’un serveur ? La vue d’ensemble du cluster montre quelle brique ReportedIP convient à chaque niveau, et l’article sur les bannissements IP partagés explique comment un seul signalement bloque un attaquant sur chaque serveur d’un groupe.
Comment éviter les faux positifs ?
Trois mécanismes limitent les dommages collatéraux. Les plafonds de score empêchent un rapporteur mal configuré de placer seul une IP sur la Blacklist. La décroissance retire les IP qui n’attaquent plus sans que personne ait à s’en apercevoir. Et une Whitelist côté serveur écarte de la liste, avant même sa construction, l’infrastructure connue comme les robots des moteurs de recherche et les services de supervision.
De votre côté, faites tourner la première semaine une règle de journalisation au lieu d’une règle de rejet (-j LOG dans iptables, log dans nftables) et lisez ce qui aurait été bloqué. Le plugin Hive intègre la même idée avec l’option « Report-only mode ». Si l’une de vos propres IP arrive sur la liste, le formulaire de retrait règle la question : les demandes sont tranchées sous 48 heures et le retrait est gratuit.
Questions fréquentes
Combien d’IP figurent sur la Blacklist ReportedIP ?
Le 29 septembre 2026, la base suivait 799 893 IP signalées. 4 173 d’entre elles avaient un score de 90 ou plus, et les cinq listes par service à ce niveau contenaient chacune entre 1 344 et 1 640 IP. Le paramètre limit accepte jusqu’à 50 000 entrées par réponse, et sans lui la valeur par défaut est de 10 000.
À quelle fréquence faut-il mettre la Blacklist à jour ?
Une fois par heure et par liste suffit. Le serveur reconstruit les listes toutes les 15 minutes, et avec la revalidation par ETag une tâche cron horaire capte chaque changement utile. Les listes inchangées répondent 304 Not Modified, et ni le 304 ni un téléchargement complet ne compte dans un quota quotidien.
Quel score de confiance utiliser pour le blocage automatique ?
Utilisez 90 pour des règles de rejet sans surveillance. Le endpoint utilise 75 par défaut, ce qui convient aux alertes, à la limitation de débit ou à un CAPTCHA. Un score de 90 exige au moins 10 signalements effectifs de deux rapporteurs indépendants ou plus avec une activité récente, et c’est à partir de là que le rejet automatique devient sûr sur un serveur de production.
Combien coûte l’accès à la Blacklist ?
Le flux API est inclus à partir de l’offre Contributor. Contributor est gratuit pour les comptes qui exploitent un honeypot ; sinon, Professional coûte 14,90 € par mois TTC. Les téléchargements ne comptent dans aucun quota quotidien. Le ReportedIP Agent a besoin d’une licence serveur pour charger le flux, et Professional en inclut une.
Pour aller plus loin
- Blocage au niveau réseau : script de synchronisation, nftables, IPv6 et pare-feu cloud
- Intégration fail2ban : renvoyez vos bannissements à la communauté
- ReportedIP Agent : la voie prête à l’emploi pour les serveurs Linux
- Voir les tarifs : quelle offre inclut le flux