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; se actualiza a diario sin necesidad de revisión manual.
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 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 unretraso 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.
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.
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
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.
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.
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.
¿Bloqueo en la capa de red?
Los fragmentos de código que se muestran aquí son puntos de partida para una sola
máquina. Para la configuración de producción —un conjunto de bloqueos por servicio, sincronización condicional cada hora,
intercambio atómico, IPv6 y cortafuegos en el perímetro de la nube—, sigue las instrucciones de
Bloqueo a nivel de red
.
Nginx
Genera una configuración de Blocklist e inclúyela en el bloque de servidor de 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 (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.
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
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.
fail2ban
Crea una «jail» personalizada que bloquee las direcciones IP de la ReportedIP Blacklist:
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. Consulte 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 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. 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
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
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
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"
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, en el caso de las listas sin cambios, responde con
304 Not Modified. Las etiquetas son específicas de la variante exacta que solicites, así que mantén una
etiqueta almacenada por lista. Los ID de categoría válidos van del 1 al 58; los ID del 31 al 58 corresponden al bloque dedicado a WordPress
que incluye la web lista anterior incluye. Catálogo completo:
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.
#!/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"
En tiempo real frente a GitHub
Importante:
El repositorio de GitHub se actualiza a diario, pero los datos exportados tienen un
período de espera de 48 horas para evitar False Positives. Para un bloqueo en tiempo real con los datos más actuales, utiliza la API
directamente: refleja los cambios de forma inmediata a medida que llegan nuevos informes, mientras que los archivos de GitHub tienen un
retraso de hasta dos días. Los servidores de correo también pueden utilizar la Blacklist como una
zona DNSBL / RBL
sin necesidad de descargar ningún archivo.
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:
· Mantenido por el equipo de ReportedIP