Ir al contenido principalIr al pie de página
Noticias sobre seguridad

Protege tu servidor web con una lista negra de IP en tiempo real

Patrick Schlesinger
Infografía: una ReportedIP dividida en cinco listas de bloqueo de cortafuegos específicas para cada servicio (SSH, correo, web, FTP y perímetro), con 10 000 direcciones IP incluidas, 58 categorías de amenazas y un ciclo de actualización de 15 minutos.

La lista negra ReportedIP contiene aproximadamente 10 000 direcciones IP con un nivel de confianza de abuso superior al 90 %, y se actualiza del lado del servidor cada 15 minutos (a fecha de 21 de julio de 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 lista negra.

Por qué es mejor tener una lista de bloqueados por cada servicio que una sola lista enorme

Cada informe de la ReportedIP incluye identificadores de categorías de amenazas: son 58 en total, desde «SSH Brute-Force» (22) hasta un bloque dedicado a WordPress (31-58) que abarca ataques de fuerza bruta en el inicio de sesión y en XML-RPC, vulnerabilidades en plugins, spam en los comentarios y escaneos en busca de puertas traseras. El category parámetro activado GET /blacklist admite una lista de esos ID separados por comas, de modo que cada servicio expuesto reciba exactamente los atacantes que lo tienen como objetivo.

ListaCategoríasAplicado aTamaño (21 de julio de 2026)
SSH22,18Puerto 225.141 direcciones IP
Correo11,7,17,18Puertos 25, 465, 587, 110, 143, 993, 9952.784 direcciones IP
Web21,16,10,19,12 + Bloque de WP 31–58Puertos 80 y 4433.666 direcciones IP
FTP5,18Puerto 212.580 direcciones IP
Borde4,14,20Todos los puertos5.920 direcciones IP

Los conjuntos con ámbito de puerto minimizan el impacto 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 informes válidos de dos o más informantes independientes; los informes antiguos se eliminan progresivamente 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.de/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 lista: el punto final devuelve un ETag, y reenviarlo como If-None-Match devuelve listas sin cambios con 304 Not Modified, por lo que repetir las consultas no cuesta prácticamente nada. Las consultas a la lista negra no se contabilizan en ninguna cuota diaria; los parámetros y los formatos de respuesta se encuentran en el Referencia de la API. Los operadores de correo que prefieran las consultas DNS a la sincronización de listas pueden consultar los mismos datos que un zona RBL privada.

Notificar los ataques con fail2ban

El bloqueo es la mitad del bucle. Un pequeño fail2ban action publica cada expulsión de tu servidor en POST /report con la categoría de amenaza correspondiente a cada servidor: las prohibiciones de sshd se clasifican en la categoría 22, las de Postfix en la categoría 11 y las de nginx en la categoría 21. Los informes solo consumen tu cuota diaria de informes, nunca la cuota de comprobaciones, y cada informe refina las listas exactas que obtienes durante 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 plan gratuito

Deja un comentario

Tu dirección de correo electrónico no se publicará. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Introduce una dirección de correo electrónico válida.
Debes aceptar los términos para continuar