Blacklist
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. Il n’y a aucune vérification manuelle : la liste de l’API est reconstruite en continu à partir des scores actuels, et l’export GitHub est actualisé une fois par jour.
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 atteint le seuil (calculé à partir de la fréquence des signalements, de la
diversité des sources, de la gravité et de la récence). Via l’API, vous le choisissez avec
confidence; l’export GitHub utilise ≥ 75 % - Export GitHub uniquement : son premier signalement date d’au moins 48 heures (période de refroidissement pour les False Positives, une nouvelle adresse n’entre dans l’export qu’une fois que son score a eu le temps de se stabiliser, puis y reste tant que son score se maintient)
- Elle ne figure pas sur la Whitelist (moteurs de recherche, fournisseurs de CDN, infrastructures reconnues comme fiables sont exclus)
Les deux listes sont construites automatiquement, il n’y a pas de vérification éditoriale manuelle. Les scores suivent
les nouveaux signalements et baissent avec le temps : une adresse qui devient silencieuse perd du score et sort à nouveau
de la liste. L’ensemble du processus est ouvert et transparent. Sans clé, la vérification de la blacklist DNSBL montre le statut de n’importe quelle adresse ; avec une clé, 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, reconstruit une fois par jour à partir des scores actuels. Une nouvelle adresse y apparaît 48 heures après son premier signalement (période de refroidissement des False Positives décrite ci-dessus) et y reste tant qu’elle est active. Ce délai ne concerne que les nouvelles adresses : une adresse sortie de la liste que de nouveaux signalements ramènent à 75 revient avec le prochain instantané quotidien. Vous pouvez le cloner, l’utiliser dans des pipelines CI/CD ou l’intégrer à votre infrastructure.
github.com/reportedip/reportedip-blacklist
Structure du dépôt
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.
# 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/
#
# Daily snapshot. New addresses appear 48 hours after their first report.
# 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.
{
"meta": {
"version": "2026-07-22",
"generatedAt": "2026-07-22T00:00:00Z",
"totalCount": 12847
},
"entries": [
{
"ip": "1.2.3.4",
"confidence": 95,
"categories": [18, 21],
"source": "dynamic"
},
{
"ip": "5.6.7.8",
"confidence": 82,
"categories": [14],
"source": "dynamic"
}
]
}
Format CSV
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.
ip,confidence,categories,last_reported
1.2.3.4,95,"18;21","2026-07-19 14:22:00"
5.6.7.8,82,"14","2026-07-18 09:15:00"
9.10.11.12,78,"21","2026-07-17 20:45:00"
Intégration au pare-feu
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.
Nginx
Générez une configuration de Blocklist et intégrez-la dans votre bloc de serveur Nginx :
# Generate Nginx blocklist from TXT file
awk '{print "deny " $1 ";"}' blacklist-all.txt > /etc/nginx/blocklist.conf
# /etc/nginx/sites-enabled/default
server {
include /etc/nginx/blocklist.conf;
# ... rest of your config
}
Apache (.htaccess)
# .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.
# 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.
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 |
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 |
curl -H "X-Key: YOUR_API_KEY" \
"https://reportedip.com/wp-json/reportedip/v2/blacklist?format=txt&confidence=90&limit=50000"
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 | sshd, port 22 |
| Courrier | 11,7,17,18 |
Email Spam, Phishing, Spoofing, Brute-Force (SMTP-AUTH/IMAP/POP3) | Postfix/Exim, Dovecot, ports 25, 465, 587, 110, 143, 993, 995 |
| Web | 21,16,10,19,12,31…58 |
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 |
# 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"
Renvoyez l’ETag conservé dans If-None-Match ; les listes
inchangées répondent 304 Not Modified, sans consommer de quota. Le rythme
d’interrogation et le cas d’une balise périmée sont traités sous
Blocage au niveau du réseau.
Les identifiants de catégorie valides vont de 1 à 63 : les identifiants 31 à 58 forment le
bloc WordPress que la liste web ci-dessus inclut, les identifiants 59 à 63
proviennent de honeypots à forte interaction. Catalogue complet :
Threat Categories.
Une tâche cron qui télécharge la liste et recharge le pare-feu appartient au reste de la configuration réseau : le script de synchronisation sous Blocage au niveau du réseau télécharge de manière conditionnelle, remplace l’ensemble de façon atomique, rejette un téléchargement tronqué et gère l’IPv6, ce qu’un simple script de remplacement ne fait pas.
Temps réel vs GitHub
| Méthode | Latence | Authentification requise | Idéal pour |
|---|---|---|---|
| API | En continu, à partir des scores actuels | Oui (API Key) | Blocage automatisé, Firewall Rules dynamiques, intégration SIEM |
| GitHub | Instantané quotidien, nouvelles adresses après 48 heures | Non | Firewall Rules statiques, pipelines CI/CD, analyse hors ligne |
Dernière mise à jour: · Maintenu par l’équipe ReportedIP