Correlación de syslog — TLSStress.Art¶
Lee en tu idioma: English · Português · Español
Estado del alcance (post-congelación de alcance 2026-05-10) — Ver ARCHITECTURE.md para los 37 MÓDULOs canónicos + 7 Test Kinds + arquitectura de safety DOM/CPOS/PIE-PA. ADRs 0014, 0019-0025 cubren adiciones post-Freeze. Esta es la vista del operador del laboratorio desde la perspectiva del propio laboratorio — lo que el Cisco Nexus 9000, el NGFW DUT y los hosts UCS dicen que ocurrió durante una ejecución, correlacionado con las métricas que el Dashboard ya muestra.
Sin esto: ves un pico de p99 a las 14:32 y tienes que hacer SSH en cada dispositivo para averiguar por qué. Con esto: abres un único dashboard de Grafana, ves el pico, y los eventos de log correspondientes de los tres dispositivos aparecen lado a lado.
Lo que esto NO es¶
No es un SIEM en el sentido de monitoreo de seguridad. Es una capa forense de ejecución de pruebas enfocada en correlación operacional. La retención de logs es corta (15 días por defecto), las consultas son específicas de la ejecución, y el ACL es el mismo ACL del Dashboard — no un flujo de trabajo endurecido de operaciones de seguridad.
Para monitoreo de seguridad real, su organización debe operar un SIEM separado (Splunk, Elastic, Cisco SecureX, etc.). Este stack no reemplaza eso.
Arquitectura¶
┌──────────────┐ UDP/TCP 514 ┌─────────────┐
│ Cisco │────────────────────────→│ │
│ Nexus 9000 │ RFC 5424 syslog │ │
└──────────────┘ │ │
│ │
┌──────────────┐ UDP/TCP 514 │ Promtail │ ┌──────┐
│ NGFW DUT │────────────────────────→│ syslog │──→│ Loki │
│ FTD/ASA/ │ RFC 3164 + 5424 │ receiver │ └──────┘
│ Palo/Forti │ │ Deployment │ │
└──────────────┘ │ in obs ns │ │
│ │ ▼
┌──────────────┐ UDP/TCP 514 │ │ ┌─────────┐
│ UCS host │────────────────────────→│ │ │ Grafana │
│ rsyslog │ │ │ │ Explore │
│ (Ubuntu) │ └─────────────┘ └─────────┘
└──────────────┘ │
▼
┌────────────────────┐
│ TLSStress.Art — │
│ Syslog Correlation │
│ dashboard │
└────────────────────┘
Labels de Loki emitidos en cada evento:
| Label | Origen | Valores de ejemplo |
|---|---|---|
app |
external_label de Promtail | tlsstress (siempre) |
cluster |
external_label de Promtail | web-agent-cluster |
device_type |
Regex sobre el hostname | nexus, ngfw, ucs |
device_role |
Derivado de device_type |
switch, firewall, host |
device_hostname |
Campo hostname de RFC 5424 | nexus-1.lab.example.com |
device_app |
Campo APP-NAME de RFC 5424 | mts, eth_port_chan_mgr, kernel, decryptd |
severity |
Severidad de RFC 5424 | info, notice, warning, err, crit, alert, emerg |
facility |
Facility de RFC 5424 | local0, daemon, kern, etc. |
channel |
Listener de Promtail | syslog-udp, syslog-tcp |
Apuntando cada dispositivo al endpoint de syslog¶
⚠️ Obligatorio: el syslog debe viajar solo por OOBI — nunca por el plano de datos. Esto se aplica con dos
NetworkPolicya nivel del cluster (syslog-oobi-onlypermite ingreso desde la CIDR 192.168.90.0/24;syslog-deny-data-planedeniega ingreso desde las CIDRs de personas/agentes). Enviar syslog por una VLAN del plano de datos permitiría que sea medido POR el test bed como si fuera tráfico de prueba, contaminando las métricas por ciclo. La justificación completa y las obligaciones del operador están en SYSLOG_OPERATIONS.es.md.
El Service de Promtail expone el NodePort 30514 (mapeado internamente al puerto syslog conocido 514). Los dispositivos envían a <any-cluster-node-ip>:30514 por UDP o TCP. Elija la IP de gestión OOBI de uno de los hosts UCS.
El puerto syslog estándar es 514. Usamos NodePort 30514 porque Kubernetes normalmente no permite puertos privilegiados por debajo de 1024. Si su política de operador prefiere el puerto 514 desde el lado del dispositivo, configure una regla NAT de firewall en el host UCS:
<ucs-oobi-ip>:514 → <ucs-oobi-ip>:30514.
Cisco Nexus 9000 (NX-OS)¶
configure terminal
! Use RFC 5424 — modern, structured, easier for Promtail to parse
logging timestamp microseconds
logging origin-id hostname
! Forward to the Promtail receiver
logging server <ucs-mgmt-ip> 5 use-vrf management transport udp port 30514
! 5 = severity threshold (notifications and worse). Adjust to taste:
! 0 emergencies | 1 alerts | 2 critical | 3 errors
! 4 warnings | 5 notifications | 6 informational | 7 debugging
! Logging buffer (so the Nexus retains last events even if syslog is down)
logging logfile messages 6 size 1048576
! Important categories for an NGFW test bed:
logging level mts 5
logging level monitor 5
logging level eth_port_channel_mgr 5
logging level pixm 5 ! port channel manager
logging level fcoe_mgr 4
end
write memory
show logging server
Verifique en el Nexus que el buffer de mensajes se está drenando:
show logging last 20
Cisco FTD / ASA / Firepower¶
Para sintaxis ASA (FTD vía FlexConfig funciona de forma similar):
configure terminal
logging enable
logging timestamp
logging buffer-size 1048576
logging buffered notifications
! Forward
logging trap notifications
logging host <data-iface> <ucs-mgmt-ip> 17/30514
! 17 = UDP. Use 6/30514 for TCP.
! For decryption diagnostics specifically (the events we care about
! most for THIS test bed):
logging class crypto 5
logging class ssl 5
logging class connection 4
end
write memory
show logging
Para FTD vía FMC: navegue a Devices → Platform Settings → Syslog, configure:
- Server: <ucs-mgmt-ip> UDP/30514
- Severity: notifications
- Categories: connection, crypto, SSL, intrusion
Palo Alto (PAN-OS)¶
! Enter configure mode
configure
! Define syslog server profile
set shared log-settings syslog tlsstress server tlsstress \
transport UDP port 30514 server <ucs-mgmt-ip> facility LOG_LOCAL3 format BSD
! Forward system log (device events, not traffic)
set shared log-settings system match-list tlsstress-system filter "All Logs" \
send-syslog [ tlsstress ]
! Forward decryption / SSL log specifically
set shared log-settings system match-list tlsstress-decrypt filter "(subtype eq decryption)" \
send-syslog [ tlsstress ]
commit
Fortinet (FortiOS)¶
config log syslogd setting
set status enable
set server "<ucs-mgmt-ip>"
set port 30514
set mode udp
set facility local3
set source-ip "<ngfw-mgmt-ip>"
set format default
end
config log syslogd filter
set severity notification
set ssl enable
end
Host UCS (Ubuntu rsyslog)¶
/etc/rsyslog.d/50-tlsstress.conf:
# Forward auth + kernel + system messages to the TLSStress.Art syslog endpoint
*.notice;auth.info @<ucs-mgmt-ip>:30514
# Use double-@ for TCP delivery (more reliable for high-volume logs):
# *.notice;auth.info @@<ucs-mgmt-ip>:30514
Luego:
sudo systemctl restart rsyslog
sudo logger -t tlsstress-test "syslog forwarding test from $(hostname)"
Abra Grafana Explore, consulte {device_hostname="<your-host>"} — el mensaje de prueba debe aparecer en menos de 5 segundos.
Verificando el pipeline de extremo a extremo¶
Después de configurar al menos un dispositivo:
# 1. Confirm the Promtail pod is up:
kubectl get pods -n observability -l app=promtail-syslog
# expect: 1 Running
# 2. Confirm the Service is reachable from the device side:
kubectl get svc -n observability promtail-syslog
# note the NodePort — should be 30514
# 3. From the device (or a UCS host), send a test message:
logger -n <ucs-mgmt-ip> -P 30514 -d -t tlsstress-test "smoke from $(hostname)"
# 4. Tail Loki via the dashboard or via Grafana Explore:
# Query: {app="tlsstress", device_hostname=~".+"}
# expect: the test message appears within 5 seconds.
El dashboard de Grafana¶
TLSStress.Art — Syslog Correlation (Lab Elements) se incluye con el overlay de kustomize. Tiene:
- Resumen de alto nivel — eventos por minuto por tipo de dispositivo; volumen de logs por host; distribución de severidad (solo warning+)
- Métricas + logs lado a lado — gráfico de líneas del p99 de latencia de agentes a la izquierda, stream en vivo de syslog (warning+) a la derecha. Los picos de latencia se alinean con ráfagas en el stream de logs.
- Análisis profundos por dispositivo — paneles separados para eventos de Nexus (warning+), eventos del NGFW (info+ para capturar coincidencias de decrypt-rule y logs de connection deny), kernel/systemd de UCS (warning+).
Use los filtros device_type y severity en la parte superior del dashboard para acotar el foco durante una ejecución.
Patrones comunes a observar durante una ejecución¶
| Síntoma | Qué buscar en los logs |
|---|---|
| Handshakes TLS fallando intermitentemente | Eventos decryption del NGFW con severidad notice+; busque "no decryption profile matched" |
| Pod de persona en CrashLoopBackOff | UCS device_app=kernel + severity=err+; busque OOM-killer, NIC reset, segfault |
| Pico de p99 sin error del agente | Advertencias device_app=eth_port_chan_mgr del Nexus (port flap, MAC move); alertas de queue-depth de QoS del Nexus |
| TLS Decrypt Probe dice "off" | NGFW device_app=decryptd (o equivalente del fabricante); busque "decryption disabled on interface" |
| La ejecución aborta con alerta de fleet readiness | Contraste con los logs de connection-deny del NGFW en el mismo timestamp |
Retención y almacenamiento¶
La retención por defecto de Loki en este stack es de 15 días. Las evidencias específicas de la ejecución más allá de eso necesitan exportarse a un almacenamiento de auditoría separado. El Test Run Report (Fase 4 futura) incrustará extractos de logs seleccionados como parte del PDF firmado para registro forense permanente.
Comportamiento en air-gap¶
En una instalación air-gapped, el reenvío de syslog funciona internamente al laboratorio — Promtail, Loki y Grafana corren dentro del cluster. Sin dependencia externa. Lo único que el operador debe verificar es que UDP/TCP 514 desde dispositivo-a-Promtail esté desbloqueado por cualquier ACL interno de firewall.
Si el laboratorio tiene un firewall Cisco entre la red de gestión y el UCS, asegure que el ACL permita tráfico hacia <ucs-mgmt-ip>:30514 (o 514 si usa NAT redirect).
Relacionados¶
MONITORING_TEST_VALIDITY.es.md— el framework más amplio de alertas de validez que consume estos logsTIME_SYNC.es.md— sin relojes precisos, la correlación de logs no tiene sentidoAIRGAP_INSTALL.es.md— el escenario padre donde syslog es el único canal de diagnósticoUSAGE_POLICY.es.md— las restricciones de licencia aplican también a los logs recolectados aquí