La ReportedIP Blacklist est une liste communautaire d'adresses IP malveillantes, générée automatiquement
à partir de rapports d'attaques réels et accessible via une API et GitHub. Utilisez-la pour bloquer les adresses IP malveillantes connues
dans votre pare-feu, votre serveur web ou votre application — elle est mise à jour quotidiennement sans intervention manuelle.
Comment la blacklist est-elle générée ?
Chaque adresse IP figurant sur la Blacklist provient de signalements de la communauté qui ont été traités par notre moteur de réputation. Une adresse IP n’est
incluse que lorsque :
Son Confidence Score est ≥ 75 % (calculé à partir de la fréquence des signalements, de la
diversité des sources, de la gravité et de la récence)
Son signalement le plus récent date d’au moins 48 heures (période de refroidissement pour les False Positives — les entrées ne sont ajoutées à l’exportation qu’une fois que le score a eu le temps de se recalibrer)
Elle ne figure pas sur la Whitelist (moteurs de recherche, fournisseurs de CDN,
infrastructures reconnues comme fiables sont exclus)
La Blacklist est mise à jour automatiquement — il n’y a pas de vérification éditoriale manuelle. L’ensemble du processus
est ouvert et transparent : vous pouvez vérifier n’importe quelle entrée via
GET /reportedip/v2/check?ip=<ip>&verbose=true
pour consulter la répartition exacte du score.
Dépôt GitHub
La Blacklist complète est publiée sous la forme d’un dépôt GitHub public, mis à jour quotidiennement à partir des données de l’API en temps réel.
Les données exportées sont quant à elles décalées de 48 heures (période de refroidissement des False Positives décrite ci-dessus).
Vous pouvez le cloner, l’utiliser dans des pipelines CI/CD ou l’intégrer à votre infrastructure.
reportedip-blacklist/
├── blacklist-all.txt # All IPs, one per line
├── blacklist-all.json # All IPs with metadata
├── blacklist-all.csv # All IPs, CSV format
├── metadata.json # Export metadata (version, counts, timestamps)
├── lists/ # Thematic sub-lists
│ ├── spam.txt
│ ├── brute-force.txt
│ ├── cms-login.txt
│ ├── web-attacks.txt
│ ├── malware.txt
│ ├── ddos.txt
│ ├── fraud.txt
│ ├── infrastructure.txt
│ └── apt.txt
└── formats/ # Ready-to-include firewall snippets
├── nginx-deny.conf
├── apache-htaccess.txt
└── iptables.sh
Formats de fichiers
Format TXT
Texte brut, une adresse IP par ligne. Les lignes commençant par # sont des commentaires
contenant des métadonnées telles que l'heure de génération et le nombre total d'entrées.
text
# ReportedIP Blacklist - All IPs
# https://reportedip.com
#
# Copyright (c) 2026 ReportedIP / Patrick Schlesinger
# Licensed under CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
#
# IMPORTANT: Data is delayed by 48 hours.
# For real-time threat intelligence via API, contact: 1@reportedip.com
#
# Generated: 2026-07-22
# Total IPs: 12847
#
1.2.3.4
5.6.7.8
9.10.11.12
Format JSON
Un meta bloc (version d'exportation, nombres, horodatage de génération) suivi d'un
entries tableau. categories sont des identifiants numériques de catégories de menaces — les faire correspondre
au catalogue des catégories de menaces
ou GET /categories.
Valeurs séparées par des virgules avec une ligne d’en-tête. Facile à importer dans des tableurs, des bases de données ou des outils SIEM.
categories contient des identifiants de catégorie numériques séparés par des points-virgules.
Utilisez les fichiers de Blacklist pour bloquer les adresses IP malveillantes au niveau du pare-feu ou du serveur web.
Vous trouverez ci-dessous des exemples d’intégration pour des outils courants.
Blocage au niveau de la couche réseau ?
Les extraits de code présentés ici constituent des points de départ pour une seule
machine. Pour la configuration en production — un ensemble de blocage par service, une synchronisation conditionnelle toutes les heures,
un échange atomique, IPv6 et des pare-feu en périphérie du cloud —, suivez les instructions de la section
« Blocage au niveau du réseau
».
Nginx
Générez une configuration de Blocklist et intégrez-la dans votre bloc de serveur Nginx :
# /etc/nginx/sites-enabled/default
server {
include /etc/nginx/blocklist.conf;
# ... rest of your config
}
Apache (.htaccess)
apache
# .htaccess — Block reported IPs
<RequireAll>
Require all granted
Require not ip 1.2.3.4
Require not ip 5.6.7.8
Require not ip 9.10.11.12
</RequireAll>
iptables (via ipset)
Chargez la liste dans un ipset et effectuez une comparaison avec cet ensemble à partir d’une seule règle. Une règle par adresse IP impliquerait
des milliers de règles à parcourir pour chaque paquet ; une recherche dans l’ensemble reste constante quelle que soit la taille de la
liste.
bash
# Create the set and fill it in one pass (IPv4 entries only)
ipset create rip-block hash:ip family inet maxelem 65536 -exist
grep -E '^[0-9]+(\.[0-9]+){3}$' blacklist-all.txt \
| sed 's|^|add rip-block |' | ipset restore -exist
# One rule blocks the whole set
iptables -I INPUT -m set --match-set rip-block src -j DROP
L'IPv6 nécessite son propre ensemble (family inet6) et sa propre ip6tables règle —
voir « Blocage au niveau du réseau » pour le script complet
incluant nftables, les ensembles par service et la synchronisation horaire.
fail2ban
Créez une « jail » personnalisée qui bannit les adresses IP figurant sur la ReportedIP Blacklist :
fail2ban fonctionne également dans l’autre sens : une action prête à l’emploi signale chaque blocage sur votre serveur
à la communauté via POST /report. Consultez le
guide d’intégration de fail2ban pour la
configuration de l’action et le mappage « jail » vers catégorie.
Accès à l’API
Le /blacklist
Endpoint offre un accès en temps réel à la Blacklist complète avec
des options de filtrage. Une API Key avec la fonctionnalité « Threat Feed » (niveau Contributor et supérieur) est requise.
Le point de terminaison est soumis à des restrictions de fonctionnalités et n’
est pas
pris en compte dans votre quota quotidien de vérifications ou de
rapports — interrogez-le aussi souvent que votre stratégie de mise en cache l’exige. Consultez la section
« Authentification et Rate Limits »
pour connaître les niveaux d’abonnement et les clés.
Paramètre
Type
Description
format
chaîne de caractères
Format de réponse : json (par défaut), txt, csv
source
chaîne
Source de la Blacklist : dynamic (par défaut) — la Community Blacklist gérée par la communauté et notée automatiquement. Les autres valeurs sont réservées à un usage interne
confidence
entier
Confidence Score minimum (0–100). Valeur par défaut : 75. Alias : confidenceMinimum. Recommandé pour le blocage automatique : 90
category
chaîne
Un ou plusieurs identifiants de Threat Categories, séparés par des virgules (par ex. 22,18 pour SSH et une attaque par Brute Force générique). Catalogue complet sur la page Threat Categories ou via GET /categories
limit
entier
Nombre maximal d’adresses IP à renvoyer. Valeur par défaut : 10 000 — conservez la valeur par défaut ; des valeurs inférieures tronqueront la liste
Consultez l'API Reference pour obtenir la documentation complète sur les Endpoints,
le format de réponse et les paramètres supplémentaires.
Blacklists spécifiques au service
Combinez le category filtre avec confidence=90 pour créer une liste de blocage par
service exposé. Chaque liste ne contient que les adresses IP signalées pour le type d’attaque correspondant ; vous
pouvez donc l’appliquer au niveau d’un port : une adresse IP figurant sur la liste Web n’empêchera jamais personne d’accéder à SSH.
Liste
category Valeur
Catégories incluses
Appliquer à
SSH
22,18
Attaque de Brute-Force SSH, attaque de Brute-Force générique
Web App Attack, SQL Injection, Web Spam, Bad Web Bot, Blog Spam, ainsi que le blocage dédié à WordPress (31–58) : attaques par Brute Force sur la connexion/XML-RPC/REST, exploits des plugins, des thèmes et du cœur du système, spam dans les commentaires et lors de l’inscription, portes dérobées, analyses. Toutes les informations sur la page « Blocage au niveau du réseau »
nginx/Apache, y compris l’hébergement WordPress — ports 80, 443
FTP
5,18
FTP Brute-Force, Brute-Force générique
vsftpd/proftpd — port 21
Periphérique
4,14,20
DDoS Attack, Port Scan, Exploited Host
ensemble de la périphérie du réseau, tous les ports
curl
# SSH attackers only, plain text for ipset/nftables
curl -H "X-Key: YOUR_API_KEY" \
"https://reportedip.com/wp-json/reportedip/v2/blacklist?confidence=90&format=txt&limit=50000&category=22,18"
Les listes sont régénérées côté serveur toutes les 15 minutes. Une interrogation toutes les heures par liste suffit ; renvoyez les
données ETag en les renvoyant If-None-Match et, pour les listes inchangées, répondez avec
304 Not Modified. Les balises sont spécifiques à la variante exacte que vous demandez ; conservez donc une seule balise enregistrée
par liste. Les identifiants de catégorie valides vont de 1 à 58 — les identifiants 31 à 58 correspondent au bloc WordPress dédié
que la web liste ci-dessus inclut. Catalogue complet :
Threat Categories.
Script de mise à jour automatique
Configurez une tâche cron pour télécharger automatiquement la dernière Blacklist et mettre à jour vos Firewall Rules.
#!/bin/bash
# /usr/local/bin/update-reportedip-blocklist.sh
# Downloads the latest ReportedIP blacklist and updates Nginx blocklist
API_KEY="your-api-key-here"
API_URL="https://reportedip.com/wp-json/reportedip/v2/blacklist"
BLOCKLIST="/etc/nginx/blocklist.conf"
TMPFILE=$(mktemp)
# Download latest blacklist in TXT format
curl -sf -H "X-Key: $API_KEY" \
"$API_URL?format=txt&confidence=90&limit=50000" \
-o "$TMPFILE"
DOWNLOAD_OK=$?
COUNT=$(grep -cE '^[0-9a-fA-F.:]+$' "$TMPFILE")
# Never replace a working blocklist with a truncated or empty response
if [ "$DOWNLOAD_OK" -eq 0 ] && [ "$COUNT" -ge 1000 ]; then
# Convert to Nginx deny directives
grep -v "^#" "$TMPFILE" | grep -v "^$" | \
awk '{print "deny " $1 ";"}' > "$BLOCKLIST"
# Reload Nginx
nginx -t && systemctl reload nginx
echo "$(date): Blocklist updated with $(wc -l < "$BLOCKLIST") entries"
else
echo "$(date): Download failed or list too small ($COUNT) - keeping current blocklist" >&2
fi
rm -f "$TMPFILE"
Temps réel vs GitHub
Important :
le dépôt GitHub est mis à jour quotidiennement, mais les données exportées comportent un
délai de sécurité de 48 heures pour les False Positives. Pour un blocage en temps réel avec les données les plus récentes, utilisez directement l’API
: elle reflète immédiatement les changements à mesure que de nouveaux rapports arrivent, tandis que les fichiers GitHub accusent
un retard pouvant aller jusqu’à deux jours. Les serveurs de messagerie peuvent également utiliser la Blacklist sous forme de
zone DNSBL / RBL
sans télécharger aucun fichier.