InfraGuard

Conjuntos de reglas de detección

Un catálogo de solo lectura que normaliza cada regla de detección que observa InfraGuard en 44 conjuntos de reglas repartidos en 11 categorías, mostrando los recuentos de disparos en vivo y, al hacer clic, los eventos recientes que ha coincidido cada conjunto.

Resumen — qué hace

Conjuntos de reglas de detección (/security/rulesets) es la biblioteca canónica que normaliza cada regla de detección que InfraGuard observa y evalúa en 44 conjuntos de reglas repartidos en 11 categorías. La pantalla hace tres cosas en un mismo sitio:

  1. Panorama — dispone tarjetas de conjuntos de reglas dentro de secciones por categoría y muestra, para la ventana temporal seleccionada (1h/6h/24h), el recuento real de eventos y la marca de tiempo de la última aparición de cada conjunto.
  2. Explicación — narra cada conjunto de reglas en tres pasos (qué detecta · por qué se dispara · peor caso).
  3. Reproducción — al hacer clic en una tarjeta se abre una ventana modal con los eventos recientes realmente coincidentes con ese conjunto, en una tabla específica por motor.

La clave del diseño es la separación entre la estructura de clasificación y el texto explicativo. La estructura (categorías, claves de conjunto, reglas de coincidencia por motor) reside en la SOT estática e independiente del idioma App\Support\SecurityRulebook (segura para caché), mientras que el texto explicativo (nombre, significado, evidencia, riesgo) reside en resources/lang/{ko,en}/secrules.php. El frontend combina ambos por key+category para renderizar.

Esta pantalla es estrictamente de solo lectura. No activa, desactiva, edita ni elimina conjuntos de reglas. Es un catálogo de referencia que responde a «qué se está observando ahora mismo en esta organización y qué significa». El lugar donde realmente se cambian las constantes de detección (umbrales/ventanas) es Reglas y umbrales (Administración ▸ Reglas).

Los 44 conjuntos de reglas están cableados a telemetría real

Los conjuntos de reglas no son reglas abstractas: cada uno está ligado a una tabla de recolección real mediante una regla de coincidencia (match). Todas las fuentes están en la conexión legacy_glory (la base de datos heredada que llena la flota de recolectores).

Motor Regla de coincidencia Tabla de origen Conjuntos
Suricata IDS sig: coincidencia de subcadena en minúsculas contra un array de fragmentos de firma suricata_alert_ct 33
Web (nginx) classifyWeb: clasificación por prioridad y disjunta de las peticiones is_suspicious según url/ua/status nginx_meta_ct 8
Kitsune ML source=kitsune: IP anómalas según el autocodificador kitsune_detail_log 1
Heurística (srct) source=srct: ejecuciones heurísticas de escaneo/tasa srct_process_log 1
Huella JA3 source=ja3: variedad de JA3 (rotación) por IP de origen suricata_tls_ct 1

Cuándo usarlo

Disposición

KPI superiores

KPI Etiqueta Significado
total Conjuntos de reglas Total de conjuntos del catálogo (siempre 44)
active Conjuntos observados Conjuntos que dispararon al menos un evento en la ventana (firing)
events Eventos en la ventana Suma de los recuentos de eventos de todos los conjuntos
cats Categorías Número de categorías (11)

Internamente también calcula sumas por motor (totales de eventos de kitsune y suricata) para que las cifras sigan siendo coherentes con la etapa «conjuntos de reglas» del embudo de defensa de Seguridad.

Controles

Secciones por categoría y tarjetas de conjuntos

Las 11 categorías forman secciones en orden de visualización y, dentro de cada sección, los conjuntos se disponen en una rejilla de tarjetas minmax(600). Cada tarjeta muestra el nombre del conjunto, un icono MDI, una insignia de severidad (crit/warn/info), el recuento de eventos en la ventana, la marca de tiempo de la última aparición y [Open]. Sin eventos muestra «en calma / nada observado en la ventana».

# Clave de categoría Etiqueta Motor Conjuntos
1 tcp_stream Integridad del flujo TCP Suricata 10
2 packet_decode Decodificación de paquetes Suricata 4
3 protocol_anomaly Anomalía de protocolo Suricata 5
4 http_anomaly Conformidad HTTP Suricata 5
5 tls_anomaly Anomalía TLS Suricata 5
6 dns_anomaly Anomalía DNS Suricata 1
7 mail_anomaly Anomalía de correo (SMTP) Suricata 3
8 web_attack Patrones de ataque web nginx 8
9 ml_anomaly Detección de anomalías por ML Kitsune 1
10 heuristic_scan Escaneo heurístico srct 1
11 tls_fingerprint Huella JA3 JA3 1

Cómo usarlo

1) Elija una ventana → lea el panorama

Primero seleccione la ventana de interés (1h/6h/24h). Use active (conjuntos observados) y el recuento de eventos de cada tarjeta para ver qué se está disparando ahora. Tenga en cuenta que la insignia de severidad es una severidad implícita: la mayoría de los eventos del motor Suricata son sev3 (informativos), pero su implicación difiere (ruido / escaneo / explotación). La insignia del conjunto refleja ese tono de implicación, no el sev en bruto.

2) Haga clic en una tarjeta → ventana modal de eventos recientes

Al hacer clic en una tarjeta se llama a /security/rulesets/events?key=<rulesetKey>&range=<window> y se abre una ventana modal que contiene:

Columnas de la tabla de eventos específica del motor:

Motor Columnas
Suricata hora · src · dst · puerto · proto · firma · sev
nginx hora · src · host · método · URL (rawurldecode, 180 caracteres) · estado
Kitsune hora · IP · puntuación de anomalía · sesiones · bloqueada
srct hora · escaneadas · bloqueadas · nota
JA3 hora · IP · variedad JA3 · conexiones TLS · variedad SNI

3) Prioridad de clasificación de ataques web (disjunta)

Los 8 conjuntos de reglas web (nginx) son mutuamente disjuntos. Una sola petición is_suspicious=1 se recorre en el orden de definición del catálogo y se atribuye a exactamente un conjunto, el primero que coincida; si no coincide con ninguno, cae en el comodín (web_suspicious_other). Así, una misma petición nunca se cuenta dos veces en dos conjuntos web.

Prioridad Clave del conjunto Indicio de coincidencia (url/ua) Severidad
1 web_secret_scan .env .git wp-config id_rsa .aws credentials backup.sql .bak warn
2 web_path_traversal ../ ..%2f %2e%2e etc/passwd boot.ini proc/self crit
3 web_sqli union select information_schema sleep( or 1=1 %27or crit
4 web_xss <script onerror= javascript: document.cookie warn
5 web_rce_probe /bin/sh exec( system( jndi: ${ phpunit crit
6 web_admin_brute wp-login xmlrpc.php phpmyadmin /admin/login warn
7 web_bad_bot UA: sqlmap nikto masscan nuclei python-requests curl/ warn
8 web_suspicious_other (comodín: peticiones sospechosas que no coinciden con ninguna de las anteriores) info

Por rendimiento, la clasificación web agrega sobre una muestra de las 6,000 filas más recientes (tope del repositorio: 8,000). Durante escaneos intensos puede que los eventos fuera de la muestra no queden reflejados: lea las cifras como distribución/tendencia, no como recuentos absolutos.

4) Qué implica la coincidencia por subcadena de Suricata

Los conjuntos de reglas de Suricata se disparan con una coincidencia de subcadena en minúsculas de la cadena de firma. Por ejemplo, stream_invalid_ts suma todos los eventos cuya firma contiene invalid timestamp. Un solo conjunto puede agrupar varias firmas reales (visibles como fichas de «firmas coincidentes» en la ventana modal), y las palabras clave sig de conjuntos distintos están diseñadas para no solaparse.

5) Ejemplo medido (a título de referencia)

Una instantánea ilustrativa de 24h: 37 de 44 conjuntos disparando, stream_invalid_ts 10,243, web_secret_scan 3,304 (en su mayoría 404 de la familia .env), srct_heuristic 126,252, ja3_rotation 300 (variedad 307/307). Los valores varían según la organización y el momento.

Fuentes de datos

Todas las fuentes son la conexión legacy_glory (solo lectura), a la que se accede únicamente mediante config('database.connections.legacy_glory'): sin credenciales codificadas en el código.

Familia de conjuntos Tabla Métodos del repositorio (extracto)
Suricata (33) suricata_alert_ct signatureHistogram() · recentAlertsBySignatures() · distinctIpsBySignatures()
Web (8) nginx_meta_ct (is_suspicious=1) suspiciousRows($since, 6000)
Kitsune ML (1) kitsune_detail_log kitsuneCount() · kitsuneRecentInWindow()
Heurística (1) srct_process_log srctBlockedSum() · srctRunsInWindow()
JA3 (1) suricata_tls_ct topJa3Ips($since, N, excludePrefixes)

Rendimiento y caché

Acceso

Convención de niveles: demo=1 · staff=5 · admin=10. Algunas áreas tienen además la protección del middleware infr.level:N. Consulte Niveles RBAC para el esquema de graduación completo.

Resolución de problemas y preguntas frecuentes

Todas las tarjetas muestran «en calma»

O bien no hay eventos coincidentes en la ventana seleccionada (por defecto 24h), o bien la conexión legacy_glory no es accesible. El servicio absorbe con elegancia los errores de origen y muestra recuentos vacíos (0): las tarjetas no desaparecen. Amplíe la ventana o revise la conexión.

Los recuentos de los conjuntos web difieren de [Amenazas] / [Detecciones]

La clasificación web es un agregado de distribución sobre una muestra de las 6,000 filas más recientes (no un recuento absoluto). Además es disjunta, de modo que una petición se atribuye a exactamente un conjunto. La fuente autoritativa de eventos sigue la consulta propia de cada pantalla.

Una firma concreta no la captura ningún conjunto de reglas

La coincidencia de Suricata es por subcadena de palabra clave. Las firmas nuevas o personalizadas que el catálogo no cubre no se suman al recuento de ningún conjunto. Para clasificarlas y explicarlas, añada la palabra clave de la firma al array sig de SecurityRulebook: es un cambio de código, no un ajuste en tiempo de ejecución.

Los infractores JA3 son 0 pero hay mucho tráfico TLS

El conjunto de reglas JA3 solo cuenta como infractoras las IP de origen con ja3_variety >= 2 (rotación de huella). Sin rotación, un origen se trata como normal y no se contabiliza. Las IP de la red propia también quedan excluidas.

Una IP muestra una insignia internal en la ventana modal de eventos

Es una IP de red interna registrada, determinada por SecurityScope::internalMatchers(). Evita confundir con atacantes a nuestros propios servidores —a los que la direccionalidad de Suricata puede etiquetar como «origen»— y oculta el botón de reputación. La definición de red interna se gestiona en internal_networks, dentro de Política de operaciones.

Relacionado

탐지 룰셋 카탈로그
탐지 룰셋 카탈로그