TroutTrout

Log forwarding to Elastic SIEM

Receive Access Gate security events in Elastic Stack and surface them in Kibana for detection and search.

4 min read · Last updated 2026-04-24

Access Gate reenvía sus flujos de auditoría y alertas mediante syslog (RFC 5424). Esta guía describe la configuración del lado de Elastic para ingerir esos eventos a través de Logstash, almacenarlos en Elasticsearch y visualizarlos en Kibana.

Requisitos previos

  • Access Gate configurado para reenviar registros por syslog TCP a su host Logstash. Consulte Reenvío de registros y exportación a SIEM.
  • Elastic Stack 8.x — Elasticsearch, Logstash y Kibana — accesible desde el appliance Access Gate.
  • Un puerto de escucha en Logstash. Los ejemplos usan 5514/TCP para evitar el puerto privilegiado 514.

Configurar el pipeline de Logstash

Los eventos de Access Gate son emitidos por el proceso vigil en formato estructurado RFC 5424. La entrada syslog nativa de Logstash solo soporta RFC 3164; utilice la entrada tcp con un filtro grok para extraer los campos estructurados de Access Gate.

Cree /etc/logstash/conf.d/access-gate.conf:

input {
  tcp {
    port => 5514
    type => "access-gate"
  }
}

filter {
  if [type] == "access-gate" {
    grok {
      match => {
        "message" => "<%{POSINT:priority}>%{INT:version} %{TIMESTAMP_ISO8601:event_time} %{HOSTNAME:host_name} %{WORD:program} %{POSINT:procid} %{WORD:severity} \[%{DATA:sd_id} Log=\"%{DATA:event_log}\" Mitre=\"%{DATA:mitre}\" PrincipalIp=\"%{IP:src_ip}\" Rule=\"%{DATA:rule}\"\]"
      }
    }
    date {
      match => ["event_time", "ISO8601"]
      target => "@timestamp"
    }
    mutate {
      remove_field => ["message", "priority", "version", "procid", "sd_id"]
    }
  }
}

output {
  if [type] == "access-gate" {
    elasticsearch {
      hosts => ["https://elasticsearch:9200"]
      index => "access-gate-%{+YYYY.MM.dd}"
      user => "${ELASTIC_USER}"
      password => "${ELASTIC_PASSWORD}"
    }
  }
}

Recargue Logstash tras cada cambio en el pipeline:

sudo systemctl restart logstash

El filtro extrae cinco campos de cada evento de Access Gate:

CampoOrigenEjemplo
event_logLoguser Alice Salmon logged in using screen CUI Access
mitreMitre-----
src_ipPrincipalIp192.168.100.59
ruleRuleAccess Screen Login Attempt
severityMSGID de RFC 5424ALERT

Aplicar una plantilla de índice

Sin una plantilla de índice, Elasticsearch infiere los tipos a partir del primer documento y puede asignar un tipo incorrecto a src_ip (cadena en lugar de ip). Aplique esta plantilla antes de la llegada del primer documento:

curl -u "$ELASTIC_USER:$ELASTIC_PASSWORD" -X PUT \
  "https://elasticsearch:9200/_index_template/access-gate" \
  -H "Content-Type: application/json" -d '{
  "index_patterns": ["access-gate-*"],
  "template": {
    "mappings": {
      "properties": {
        "@timestamp":  { "type": "date" },
        "event_log":   { "type": "text" },
        "mitre":       { "type": "keyword" },
        "src_ip":      { "type": "ip" },
        "rule":        { "type": "keyword" },
        "severity":    { "type": "keyword" },
        "host_name":   { "type": "keyword" }
      }
    }
  }
}'

Validar el pipeline

Envíe un evento de prueba a Logstash con nc para confirmar el análisis antes de apuntar el Access Gate:

echo '<130>1 2026-04-24T20:53:10.313Z access-gate vigil 334 ALERT [context@60446 Log="user Alice Salmon logged in using screen CUI Access" Mitre="-----" PrincipalIp="192.168.100.59" Rule="Access Screen Login Attempt"]' \
  | nc -q1 logstash 5514

Compruebe que el documento se indexó:

curl -u "$ELASTIC_USER:$ELASTIC_PASSWORD" \
  "https://elasticsearch:9200/access-gate-*/_search?q=rule:%22Access+Screen+Login+Attempt%22&pretty"

El resultado debe mostrar src_ip, rule y event_log poblados.

Crear la data view en Kibana

En Kibana, abra Stack ManagementData ViewsCreate data view:

  • Name: access-gate
  • Index pattern: access-gate-*
  • Timestamp field: @timestamp

Abra Discover, seleccione la data view access-gate y ajuste el rango temporal a los últimos 15 minutos. Un evento de inicio de sesión generado desde la interfaz de Access Gate debe aparecer con todos los campos extraídos.

Añadir una regla de detección

En SecurityRulesCreate new rule de Kibana, elija una regla de tipo Custom query con:

  • Index pattern: access-gate-*
  • Query: severity:"ALERT" AND rule:"Access Screen Login Attempt"
  • Severity: Medium

La regla se dispara con cada inicio de sesión autenticado en una pantalla privilegiada — ajuste la consulta a las reglas que desee vigilar.

Recursos relacionados