Blacklist
La ReportedIP Blacklist 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. No hay revisión manual: la lista de la API se reconstruye continuamente a partir de las puntuaciones actuales, y la exportación de GitHub se actualiza una vez al día.
Cómo se genera la Blacklist
Cada dirección IP de la Blacklist procede de informes de la comunidad que llegan a nuestro motor de reputación. Una dirección IP solo se incluye cuando:
- Su Confidence Score alcance el umbral (calculada a partir de la frecuencia de los informes,
la diversidad de fuentes, la gravedad y la actualidad). En la API lo eliges con
confidence; la exportación de GitHub usa ≥ 75 % - Solo en la exportación de GitHub: su primer informe tenga al menos 48 horas de antigüedad (período de espera para False Positives: una dirección nueva entra en la exportación solo cuando su puntuación ha tenido tiempo de estabilizarse, y después permanece mientras su puntuación se mantenga)
- No figura en la Whitelist (se excluyen los motores de búsqueda, los proveedores de CDN y las infraestructuras de confianza)
Ambas listas se generan automáticamente; no hay revisión editorial manual. Las puntuaciones siguen a los
nuevos informes y bajan con el tiempo, así que una dirección que deja de atacar pierde puntuación y vuelve a salir.
Todo el proceso es abierto y transparente. Sin clave, la comprobación de la blacklist DNSBL muestra el estado de cualquier dirección; con clave 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, que se reconstruye una vez al día a partir de las puntuaciones actuales. Una dirección nueva aparece allí 48 horas después de su primer informe (el periodo de espera para False Positives descrito anteriormente) y permanece mientras siga activa. La espera solo se aplica a las direcciones nuevas: una dirección que salió de la lista y vuelve a llegar a 75 por nuevos informes regresa con la siguiente instantánea diaria. 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/
#
# 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
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 de cortafuegos o de servidor web. A continuación se muestran ejemplos de integración para herramientas habituales.
Nginx
Genera una configuración de Blocklist e inclúyela en el bloque de servidor de 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 (a través de ipset)
Carga la lista en un ipset y compara ese conjunto mediante una única regla. Una regla por cada IP supondría recorrer miles de reglas por cada paquete; la consulta del conjunto se mantiene constante independientemente del tamaño que alcance la lista.
# 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
IPv6 necesita su propio conjunto (family inet6) y su propia ip6tables regla;
consulta «Bloqueo a nivel de red» para ver el
script completo, que incluye nftables, conjuntos por servicio y la sincronización cada hora.
Acceso a la API
El /blacklist
Endpoint proporciona acceso en tiempo real a la Blacklist 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
Reports; consulta los datos 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 Blacklist gestionada por la comunidad y puntuada automáticamente |
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=50000"
Consulte la API Reference para obtener la documentación completa del Endpoint, el formato de respuesta y los parámetros adicionales.
Blacklists específicas de cada 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,31…58 |
Web App Attack, SQL Injection, Web Spam, Bad Web Bot, Blog Spam, además del bloque dedicado a WordPress (31–58): Brute Force en Login/XML-RPC/REST, vulnerabilidades en plugins, temas y el núcleo, spam en comentarios y registros, puertas traseras, escaneos. Toda la información en la página «Bloqueo a nivel de red» | nginx/Apache, incluido el alojamiento de WordPress, puertos 80, 443 |
| FTP | 5,18 |
FTP Brute-Force, Brute-Force genérica | vsftpd/proftpd, puerto 21 |
| Periférico | 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=50000&category=22,18"
Devuelve el ETag guardado en If-None-Match; las listas sin
cambios responden 304 Not Modified, sin gastar cupo. El ritmo de sondeo y el
caso de una etiqueta caducada se tratan en
Bloqueo a nivel de red.
Los ID de categoría válidos van del 1 al 63: los ID del 31 al 58 forman el bloque de
WordPress que incluye la lista web anterior, y los ID del 59 al 63 proceden de
honeypots de alta interacción. Catálogo completo:
Threat Categories.
Una tarea cron que descarga la lista y recarga el cortafuegos pertenece al resto de la configuración de red: el script de sincronización de Bloqueo a nivel de red descarga de forma condicional, cambia el conjunto de forma atómica, rechaza una descarga truncada y gestiona IPv6, cosas que un simple descargar y reemplazar no hace.
En tiempo real frente a GitHub
| Método | Latencia | Se requiere autenticación | Ideal para |
|---|---|---|---|
| API | Continua, a partir de las puntuaciones actuales | Sí (API Key) | Bloqueo automático, Firewall Rules dinámicas, integración con SIEM |
| GitHub | Instantánea diaria, direcciones nuevas tras 48 horas | No | Firewall Rules estáticas, pipelines de CI/CD, análisis sin conexión |
Última actualización: · Mantenido por el equipo de ReportedIP