Protege tu servidor web con una Blacklist de IP en tiempo real
The ReportedIP Community Blacklist contains approximately 10 000 IP addresses with an abuse confidence level exceeding 90 %, and it is updated on the server side every 15 minutes (as of July 21, 2026). Un único parámetro de consulta convierte esa lista única en cinco listas de bloqueo de cortafuegos específicas para cada puerto: SSH, correo, web, FTP y perímetro de red.
La guía completa con los scripts de cron e ipset se encuentra en la documentación de la Blacklist.
Por qué es mejor tener una lista de bloqueados por cada servicio que una lista gigante
Cada informe de la red ReportedIP incluye identificadores de Threat Categories: son 58 en total, desde «SSH Brute-Force» (22) hasta un bloque dedicado a WordPress (31-58) que abarca ataques de fuerza bruta contra el Login y XML-RPC, vulnerabilidades en plugins, spam en los comentarios y escaneos en busca de puertas traseras. El category parámetro de GET /blacklist acepta una lista de esos identificadores separados por comas, de modo que cada servicio expuesto recibe exactamente los atacantes que lo tienen como objetivo.
| Lista | Categorías | Aplicado a | Tamaño (21 de julio de 2026) |
|---|---|---|---|
| SSH | 22,18 | Puerto 22 | 5.141 direcciones IP |
| Correo | 11, 7, 17, 18 | Puertos 25, 465, 587, 110, 143, 993, 995 | 2.784 direcciones IP |
| Web | 21,16,10,19,12 + Bloque de WP 31–58 | Puertos 80 y 443 | 3.666 direcciones IP |
| FTP | 5,18 | Puerto 21 | 2.580 direcciones IP |
| Borde | 4, 14, 20 | Todos los puertos | 5.920 direcciones IP |
Los conjuntos con ámbito de puerto minimizan el coste de los errores: una dirección IP incluida en la lista web nunca puede impedir que un administrador acceda a SSH. Las listas se mantienen limpias porque una puntuación superior a 90 requiere al menos 10 Reports válidos de dos o más informantes independientes, los Reports antiguos caducan con una vida media de 30 días y los rastreadores conocidos se excluyen del lado del servidor antes de que se genere la lista.
Cómo obtener una lista y bloquearla en cinco minutos
Una solicitud GET autenticada por cada lista de servicios, en texto sin formato, una dirección IP por línea:
curl -H "X-Key: YOUR_API_KEY"
"https://reportedip.com/wp-json/reportedip/v2/blacklist?confidence=90&format=txt&limit=10000&category=22,18"
| while read ip; do ipset add rip-ssh "$ip" -exist; done
iptables -I INPUT -p tcp --dport 22 -m set --match-set rip-ssh src -j DROP
Basta con una tarea cron cada hora por cada lista: el Endpoint devuelve un ETag, y al reenviarlo como If-None-Match respuesta a las listas que no han cambiado con 304 Not Modified, por lo que las consultas repetidas no suponen prácticamente ningún coste. Las consultas a la Blacklist no cuentan para ninguna cuota diaria; los parámetros y los formatos de respuesta se encuentran en la API Reference. Los operadores de correo que prefieran las consultas DNS a la sincronización de listas pueden consultar los mismos datos como si se tratara de una zona RBL privada.
Notificar los ataques con fail2ban
El bloqueo es la mitad del proceso. Una pequeña acción de fail2ban envía cada bloqueo de tu servidor a POST /report con la Threat Category correspondiente a cada «jail»: las exclusiones de sshd se envían como Threat Category 22, las de Postfix como Threat Category 11 y las de nginx como Threat Category 21. Los informes solo consumen tu cuota diaria de informes, nunca la cuota de comprobaciones, y cada informe afina las listas exactas que obtendrás en la siguiente hora.
La configuración de acciones predefinida y la tabla de correspondencias entre «jail» y categorías se encuentran en la guía de integración de Fail2ban.
Empieza con el Free tier
- Crea una cuenta gratuita: el acceso a la Blacklist está disponible a partir del nivel «Contributor», sin necesidad de tarjeta de crédito.
- Documentación de Blacklist: listas de servicios, formatos y script de actualización automática
- Integración con fail2ban: comunica tus bloqueos a la comunidad