Resumen — qué hace
La consulta de reputación de IP es una capacidad compartida: al hacer clic en una IP de origen sospechosa (src_ip) en cualquier punto del área de Seguridad, el servidor consulta en su nombre la inteligencia de amenazas de AbuseIPDB y muestra el resultado en una ventana emergente dentro de la aplicación. Nunca sale de la consola: valora «cuán conocida es esta IP» justo donde está haciendo el triaje.
Características principales:
- Consulta pura (solo lectura). Esta función únicamente llama a
/api/v2/checkde AbuseIPDB. No denuncia ni publica la IP en el exterior: la denuncia saliente (cooperación internacional) es una fase de respuesta aparte y aplazada. - Indicador de confianza de abuso 0–100, además del número de denuncias, denunciantes distintos, tipo de uso, ISP, país, dominio, indicadores de Tor/lista blanca e historial de denuncias recientes, todo normalizado.
- Rotación entre varias claves. El conjunto de claves de AbuseIPDB registrado en API de reputación se consume por orden; ante un 429 (cuota superada) o un 401/403 (problema con la clave), el servicio pasa automáticamente a la siguiente clave (agrupación de cuotas).
- Caché de 1 hora por IP. Para proteger la cuota de 1000 peticiones/día del plan gratuito, las consultas repetidas de la misma IP dentro de una hora devuelven el resultado en caché.
- Mixin compartido. Amenazas, Detecciones, Resumen de seguridad y Lista de bloqueo reutilizan todas el mismo componente de ventana emergente.
El botón en vivo de este artículo abre el área de Seguridad (
/security). La consulta de reputación no es una página independiente: es una ventana emergente compartida que aparece al hacer clic en el símbolo de escudo con lupa (.infr-ipsym) junto a una IP o en el botón [Consultar reputación] de una pantalla de Seguridad.
Cuándo usarla
- Al hacer el triaje de las IP atacantes de mayor gravedad en Amenazas: ¿es realmente maliciosa o se trata de un escáner/botnet conocido?
- Para justificar si una IP infractora de JA3 o una IP anómala de Kitsune en Detecciones supone una amenaza real.
- Para contrastar la reputación externa de un objetivo antes de bloquearlo o desbloquearlo en Lista de bloqueo y reputación.
- Para revisar rápidamente la reputación de una IP desde los paneles de IP más amenazantes o de infractores JA3 del Resumen de seguridad.
Disposición
La ventana emergente (security/partials/abuse-modal.blade.php) se presenta en uno de estos tres estados según el resultado de la consulta.
Éxito — tarjeta de reputación
| Zona | Contenido |
|---|---|
| Indicador de confianza | Anillo cónico de 0–100 con score% centrado. El color del tono cambia con la puntuación (véase la tabla de veredictos). |
| Etiqueta de veredicto | No reports (Sin denuncias) / Low risk (Riesgo bajo) / Elevated (Riesgo elevado) / High risk (Riesgo alto) |
| Indicadores | Distintivos Tor node (is_tor) · Whitelisted (is_whitelisted) |
| Dos cifras grandes | Total de denuncias · denunciantes distintos |
| Metadatos | País · tipo de uso · ISP · dominio · fecha de la última denuncia |
| Denuncias recientes | Hasta 6 — etiquetas de categoría + país del denunciante + hora + comentario (máx. 200 caracteres) |
| Marca de consulta | Momento en que el servidor realizó la consulta (checked_at) |
Puntuación de confianza → tono del veredicto
| Puntuación | Veredicto | Tono | Significado |
|---|---|---|---|
| 0 | Sin denuncias (clean) | good | Ninguna denuncia de abuso en este periodo |
| 1–24 | Riesgo bajo (low) | info | Unas pocas denuncias: carácter informativo |
| 25–74 | Riesgo elevado (elevated) | warn | Historial de abuso significativo |
| 75–100 | Riesgo alto (high) | crit | Señal maliciosa contundente |
Estados de no configurado / fallo
- Sin clave configurada: icono de alerta de clave y aviso. Use el botón [Abrir AbuseIPDB] del pie para consultar directamente el sitio externo.
- Consulta fallida: cuota superada, error de red, etc. Reinténtelo en breve o recurra al enlace externo.
Botones de acción del pie
| Botón | Acción |
|---|---|
| Copiar IP | Copia la IP al portapapeles (con respaldo de execCommand en contextos no seguros) |
| Consulta de IP | Salta a Conexiones IP (/infra/traffic/ips?src_ip=…) |
| Abrir AbuseIPDB | Abre abuseipdb.com/check/{ip} externo en una pestaña nueva |
| Añadir a la lista de bloqueo | Enlace directo que rellena previamente Lista de bloqueo (/security/blocklist?add={ip}) |
Cómo se usa
- En una pantalla de Seguridad (Amenazas, Detecciones, Resumen, Lista de bloqueo), haga clic en el símbolo de escudo con lupa o en el botón [Consultar reputación] junto a una IP.
- La ventana emergente se abre con un indicador de carga y el frontend solicita la consulta al servidor:
GET /security/ip-reputation?ip=203.0.113.10
- El servidor valida la IP de forma estricta (
filter_var FILTER_VALIDATE_IP), consulta después a través de AbuseIpdbService y devuelve JSON normalizado. - Revise el indicador, las cifras y las denuncias recientes. Use los botones del pie para copiar, rastrear o bloquear según convenga.
Esquema de respuesta (normalizado)
Si la consulta tiene éxito, el servidor devuelve el JSON que consume la ventana emergente:
{
"ok": true,
"configured": true,
"ip": "203.0.113.10",
"score": 84,
"reports": 128,
"distinct_users": 41,
"country": "CN",
"usage": "Data Center/Web Hosting/Transit",
"isp": "Example Hosting Ltd",
"domain": "example-host.net",
"is_tor": false,
"is_whitelisted": false,
"last_reported": "2026-08-12T22:14:07+00:00",
"recent": [
{ "at": "2026-08-12T22:14:07+00:00", "country": "US", "categories": [18, 22], "comment": "SSH brute-force" }
],
"checked_at": "2026-08-13 09:31:20",
"external_url": "https://www.abuseipdb.com/check/203.0.113.10"
}
En caso de fallo controlado:
{ "ok": false, "configured": false, "external_url": "https://www.abuseipdb.com/check/203.0.113.10" }
| Campo | Origen (AbuseIPDB) | Significado |
|---|---|---|
score |
abuseConfidenceScore | Confianza de abuso 0–100 |
reports |
totalReports | Total de denuncias |
distinct_users |
numDistinctUsers | Número de denunciantes distintos |
country |
countryCode | Código de país |
usage |
usageType | Uso (centro de datos / ISP / …) |
isp / domain |
isp / domain | ISP · dominio |
is_tor |
isTor | Indicador de nodo de salida Tor |
is_whitelisted |
isWhitelisted | Lista blanca de AbuseIPDB |
last_reported |
lastReportedAt | Fecha de la última denuncia |
recent[] |
reports[] | Denuncias recientes (máx. 6, comentario recortado a 200 caracteres) |
Categorías de denuncia (1–23)
recent[].categories es un array de identificadores numéricos. La ventana emergente presenta las etiquetas mediante el mapa de idioma security.abuse.cat.
| ID | Etiqueta | ID | Etiqueta | ID | Etiqueta |
|---|---|---|---|---|---|
| 1 | DNS comprometido | 9 | Proxy abierto | 17 | Suplantación |
| 2 | Envenenamiento de DNS | 10 | Spam web | 18 | Fuerza bruta |
| 3 | Pedidos fraudulentos | 11 | Spam por correo | 19 | Bot web malicioso |
| 4 | Ataque DDoS | 12 | Spam en blogs | 20 | Host comprometido |
| 5 | Fuerza bruta FTP | 13 | IP de VPN | 21 | Ataque a aplicación web |
| 6 | Ping de la muerte | 14 | Escaneo de puertos | 22 | SSH |
| 7 | Phishing | 15 | Intrusión | 23 | Dirigido a IoT |
| 8 | Fraude VoIP | 16 | Inyección SQL |
Fuentes de datos
Esta función no crea ninguna tabla nueva. Funciona únicamente con una llamada a una API externa + un registro de claves + una caché.
| Componente | Descripción |
|---|---|
| API de AbuseIPDB | https://api.abuseipdb.com/api/v2/check (verbose=1, maxAgeInDays=valor del proveedor·90 por defecto). Tiempo de espera de 8 segundos. |
AbuseIpdbService |
Consulta, normaliza, almacena en caché y consume las claves rotadas. check($ip) (con caché) · checkWithKey() (prueba de una sola clave para el administrador, sin caché). |
ReputationProviderService |
Fuente única de verdad del conjunto de claves. Sirve las filas activas de infr_reputation_provider ordenadas por priority·id con una caché de 30 s, ofrece rotated() para la rotación y recurre a .env ABUSEIPDB_KEY si no hay ninguna registrada. |
infr_reputation_provider |
Tabla de registro de varias claves de AbuseIPDB (migración 000733). Las claves se guardan como secret_enc (Crypt, solo escritura) y nunca se devuelven al navegador. Se gestionan en API de reputación. |
| Caché | Clave de Cache infr:sec:abuse:{ip}, TTL de 3600 s (1 hora). El contador de rotación es infr:reputation:rr. |
config/services.php |
abuseipdb.key (=.env ABUSEIPDB_KEY) · abuseipdb.max_age_days (90 por defecto). Solo actúa como respaldo cuando no existe ninguna clave registrada. |
Flujo de rotación de claves / conmutación por error
check(ip)
├ cache hit? → return
└ miss → iterate providers.rotated()
key#1 → 200? → normalize·cache·return
→ 429/401/403 → fail over to next key (secret never printed)
key#2 → …
all fail → { ok:false, error:"http_429"|"unreachable" }
Registre varias claves del plan gratuito y sus cuotas se agruparán. Cuando una clave agote su cuota diaria y devuelva un 429, el servicio avanza automáticamente a la siguiente: los equipos con mucha carga de investigación deberían registrar 2–3 claves en API de reputación.
Acceso
- Endpoint de consulta
GET /security/ip-reputation: al tratarse de una consulta pura, no exige reconfirmación reforzada ni deja registro de auditoría. Se sitúa detrás del área de menú de Seguridad (min_req 2), de modo que el personal de seguridad (staff=5) y superiores llegan a ella en la práctica. No publica nada en el exterior, así que no es una acción destructiva. - IP no válida: si falla la validación de
filter_varse devuelve HTTP 422{"ok":false,"message":"invalid_ip"}. - Gestión de claves API de reputación: el CRUD, la prueba en vivo y el arrastre de prioridades sobre
infr_reputation_providerson exclusivos del administrador (admin=10, level≥5) y quedan auditados. Las claves se almacenan cifradas y solo pueden sustituirse o borrarse durante la edición. - Sin fugas de secretos: las claves de API nunca se filtran en las respuestas ni en los cuerpos de error (los errores se registran únicamente como una cadena
http_STATUS).
Resolución de problemas y preguntas frecuentes
La ventana emergente dice «clave de API no configurada»
No hay ninguna clave registrada en infr_reputation_provider y .env ABUSEIPDB_KEY está vacío. Añada una clave de AbuseIPDB en API de reputación o defina ABUSEIPDB_KEY=YOUR_KEY en el .env. Mientras tanto, use el botón [Abrir AbuseIPDB] para consultar el sitio externo.
«Consulta fallida» aparece una y otra vez
- 429 (cuota superada): es posible que haya consumido las 1000 peticiones diarias del plan gratuito. Registre claves adicionales para agrupar cuota o reinténtelo al día siguiente.
- 401/403 (problema con la clave): la clave ha caducado, está mal escrita o está inactiva. Compruébela con [Prueba en vivo] en API de reputación.
- Red (unreachable): confirme que la salida hacia
api.abuseipdb.com(443) no está bloqueada desde el host de la consola.
Una IP que acabo de bloquear sigue mostrando una puntuación baja
Los resultados se almacenan en caché por IP durante 1 hora (infr:sec:abuse:{ip}). Si necesita un valor actualizado, vuelva a consultar pasada como máximo una hora. La caché existe para proteger su cuota gratuita.
¿Puedo denunciar la IP a AbuseIPDB desde aquí?
No. Esta función es solo de consulta. El envío de denuncias (cooperación internacional) es una fase de respuesta aparte y aplazada: aquí no se publica nada en el exterior.
Solo veo 6 denuncias recientes
El paso de normalización conserva únicamente las 6 más recientes (MAX_REPORTS=6). Consulte el historial completo con [Abrir AbuseIPDB] en el sitio externo.
Es una IP interna o en lista blanca, pero el botón de consulta está oculto
Las pantallas de Seguridad marcan las IP de instancias registradas (su propia red) con un distintivo Internal y ocultan el botón de reputación (SecurityScope); así se evita la confusión cuando las etiquetas direccionales de Suricata señalan a nuestro propio servidor como «origen». Las definiciones de red interna se gestionan en Política de operaciones.
Relacionado
- Gestión de la API de reputación — registro de varias claves de AbuseIPDB, rotación, prueba en vivo
- Amenazas — consultar la reputación de una IP durante el triaje de entidades de amenaza del IDS
- Detecciones · JA3 — verificar la reputación de IP infractoras JA3 o anómalas
- Lista de bloqueo y reputación — lista de bloqueo + contraste de reputación + enlace directo de bloqueo
- Resumen de seguridad — embudo de defensa e IP más amenazantes
- Lista blanca — exención de bloqueo e inclusión automática por inocencia de srct
