Blacklist
La lista negra de ReportedIP es una lista de direcciones IP maliciosas gestionada por la comunidad, generada automáticamente a partir de informes de ataques reales y disponible a través de API y GitHub. Úsala para bloquear direcciones IP maliciosas conocidas en tu cortafuegos, servidor web o aplicación; se actualiza a diario sin necesidad de revisión manual.
Cómo se genera la Blacklist
Todas las direcciones IP de la Blacklist proceden de informes de la comunidad que llegan a nuestro motor de reputación. Una dirección IP solo se incluye cuando:
- Su Confidence Score sea ≥ 75 % (calculada a partir de la frecuencia de los informes, la diversidad de fuentes, la gravedad y la actualidad)
- Su informe más reciente tenga al menos 48 horas de antigüedad (período de espera para False Positives: las entradas solo se incluyen en la exportación una vez que la puntuación ha tenido tiempo de recalibrarse)
- No figura en la Whitelist (se excluyen los motores de búsqueda, los proveedores de CDN y las infraestructuras de confianza)
La Blacklist se actualiza automáticamente; no hay revisión editorial manual. Todo el proceso
es abierto y transparente: puedes verificar cualquier entrada a través de
GET /reportedip/v2/check?ip=<ip>&verbose=true
para ver el desglose exacto de la puntuación.
Repositorio de GitHub
La lista negra completa se publica como un repositorio público de GitHub, al que se envían datos diariamente desde la API en tiempo real. Los datos exportados tienen un retraso de 48 horas (el periodo de espera para False Positives descrito anteriormente). Puedes clonarlo, utilizarlo en procesos de CI/CD o integrarlo en tu infraestructura.
github.com/reportedip/ReportedIP Blacklist
Estructura del repositorio
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
Formatos de archivo
Formato TXT
Texto sin formato, una dirección IP por línea. Las líneas que comienzan con # son comentarios
que contienen metadatos como la fecha de generación y el recuento total.
# 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
Formato JSON
Un meta bloque (versión de exportación, recuentos, marca de tiempo de generación) seguido de un
entries matriz. categories son identificadores numéricos de Threat Categories;
consúltalos en el catálogo de Threat Categories
o 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"
}
]
}
Formato CSV
Valores separados por comas con una fila de encabezado. Fácil de importar a hojas de cálculo, bases de datos o herramientas SIEM.
categories contiene identificadores numéricos de categoría separados por punto y coma.
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"
Integración con el cortafuegos
Utiliza los archivos de Blacklist para bloquear direcciones IP maliciosas a nivel del cortafuegos o del servidor web. A continuación se muestran ejemplos de integración con herramientas habituales.
Nginx
Genera una configuración de Blocklist e inclúyela en el bloque de tu servidor 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
# Block all IPs from the blacklist
while read ip; do
iptables -A INPUT -s "$ip" -j DROP
done < blacklist-all.txt
fail2ban
Crea una «jail» personalizada que bloquee las direcciones IP de la ReportedIP Blacklist:
# /etc/fail2ban/jail.d/reportedip.conf
[reportedip-blacklist]
enabled = true
banaction = iptables-allports
bantime = 86400
filter = reportedip-blacklist
logpath = /var/log/reportedip-blacklist.log
maxretry = 1
fail2ban también funciona en sentido contrario: una acción predefinida notifica cada bloqueo en tu servidor
a la comunidad a través de POST /report. Consulta la
guía de integración de fail2ban para conocer la
configuración de la acción y la correspondencia entre jaulas y categorías.
Acceso a la API
El /blacklist
Endpoint proporciona acceso en tiempo real a la lista negra completa con
opciones de filtrado. Se requiere una API Key con la función Threat Feed (nivel Contributor o superior).
El Endpoint está sujeto a restricciones de funciones y no
cuenta para tu cuota diaria de consultas ni de
informes; consúltalo con la frecuencia que requiera tu estrategia de almacenamiento en caché. Consulta
«Autenticación y Rate Limits»
para conocer los niveles y las claves.
| Parámetro | Tipo | Descripción |
|---|---|---|
format |
cadena | Formato de respuesta: json (por defecto), txt, csv |
source |
cadena | Fuente de la Blacklist: dynamic (por defecto): la Community Blacklist gestionada por la comunidad y puntuada automáticamente. Los demás valores están reservados para uso interno |
confidence |
entero | Minimum Confidence Score (0–100). Default value: 75. Alias: confidenceMinimum. Recomendado para el bloqueo automático: 90 |
category |
cadena | Uno o más identificadores de Threat Categories, separados por comas (p. ej., 22,18 para SSH más Brute-Force genérica). Catálogo completo en la página «Threat Categories» o a través de GET /categories |
limit |
entero | Número máximo de direcciones IP que se devolverán. Valor predeterminado: 10 000 — mantén el valor predeterminado; los valores más pequeños truncan la lista |
curl -H "X-Key: YOUR_API_KEY" \
"https://reportedip.com/wp-json/reportedip/v2/blacklist?format=txt&confidence=90&limit=10000"
Consulte la API Reference para obtener la documentación completa del Endpoint, el formato de respuesta y los parámetros adicionales.
Blacklists específicas del servicio
Combina el category filtro con confidence=90 para crear una lista de bloqueo por cada
servicio expuesto. Cada lista solo contiene direcciones IP que se han notificado para el tipo de ataque correspondiente, por lo que
puedes aplicarla por puerto: una dirección IP de la lista web nunca bloqueará el acceso a SSH a nadie.
| Lista | category Valor |
Categorías incluidas | Aplicar a |
|---|---|---|---|
| SSH | 22,18 |
Ataque de Brute-Force a SSH, ataque de Brute-Force genérico | sshd — puerto 22 |
| Correo | 11,7,17,18 |
Email Spam, Phishing, Spoofing, Brute-Force (SMTP-AUTH/IMAP/POP3) | Postfix/Exim, Dovecot — puertos 25, 465, 587, 110, 143, 993, 995 |
| Web | 21,16,10,19,12 |
Web App Attack, SQL Injection, Web Spam, Bad Web Bot, Blog Spam — incluye ataques de Brute Force al inicio de sesión de WordPress, XML-RPC y REST, vulnerabilidades en plugins y el núcleo, spam en comentarios y escaneos, que se registran con estos ID | nginx/Apache, incluido el alojamiento de WordPress — puertos 80, 443 |
| FTP | 5,18 |
FTP Brute-Force, Brute-Force genérica | vsftpd/proftpd — puerto 21 |
| Periferia | 4,14,20 |
DDoS Attack, Port Scan, Exploited Host | todo el perímetro de la red, todos los puertos |
# 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=10000&category=22,18"
Las listas se regeneran en el servidor cada 15 minutos. Basta con realizar un sondeo cada hora por lista; envía la
información almacenada ETag respuesta con If-None-Match y, si las listas no han cambiado, responde con
304 Not Modified. Todos los ID de categoría válidos están en el rango 1–30; consulta el
catálogo de Threat Categories.
Script de actualización automática
Configura una tarea cron para descargar automáticamente la Blacklist más reciente y actualizar las Firewall Rules.
Programación de cron
# /etc/cron.d/reportedip-blacklist
0 */6 * * * root /usr/local/bin/update-reportedip-blocklist.sh
Script de actualización
#!/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=10000" \
-o "$TMPFILE"
if [ $? -eq 0 ] && [ -s "$TMPFILE" ]; 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): Failed to download blacklist" >&2
fi
rm -f "$TMPFILE"
En tiempo real frente a GitHub
| Método | Latencia | Se requiere autenticación | Ideal para |
|---|---|---|---|
| API | En tiempo real | Sí (API Key) | Bloqueo automático, Firewall Rules dinámicas, integración con SIEM |
| GitHub | Hasta 48 horas | No | Firewall Rules estáticas, pipelines de CI/CD, análisis sin conexión |
Última actualización: · Gestionado por el equipo de reportedIP