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 transmet ses flux d'audit et d'alertes via syslog (RFC 5424). Ce guide décrit la configuration côté Elastic permettant d'ingérer ces événements via Logstash, de les stocker dans Elasticsearch et de les exploiter dans Kibana.

Prérequis

  • Access Gate configuré pour transmettre les journaux par syslog TCP vers votre hôte Logstash. Voir Transfert de logs et export SIEM.
  • Elastic Stack 8.x — Elasticsearch, Logstash et Kibana — accessible depuis l'appliance Access Gate.
  • Un port d'écoute Logstash. Les exemples utilisent 5514/TCP afin d'éviter le port privilégié 514.

Configurer le pipeline Logstash

Les événements Access Gate sont émis par le processus vigil au format structuré RFC 5424. L'input syslog natif de Logstash ne reconnaît que la RFC 3164 ; utilisez l'input tcp avec un filtre grok pour extraire les champs structurés Access Gate.

Créez /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}"
    }
  }
}

Rechargez Logstash après chaque modification du pipeline :

sudo systemctl restart logstash

Ce filtre extrait cinq champs de chaque événement Access Gate :

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

Appliquer un index template

Sans index template, Elasticsearch déduit les types à partir du premier document et peut choisir un mauvais type pour src_ip (chaîne au lieu de ip). Appliquez ce template avant l'arrivée du premier document :

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" }
      }
    }
  }
}'

Valider le pipeline

Envoyez un événement de test à Logstash avec nc pour vérifier l'analyse avant de pointer l'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

Vérifiez que le document est bien indexé :

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

Le résultat doit présenter src_ip, rule et event_log renseignés.

Créer la data view Kibana

Dans Kibana, ouvrez Stack ManagementData ViewsCreate data view :

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

Ouvrez Discover, sélectionnez la data view access-gate et réglez la plage temporelle sur les 15 dernières minutes. Une connexion déclenchée depuis l'interface Access Gate doit apparaître avec tous les champs extraits.

Ajouter une règle de détection

Dans SecurityRulesCreate new rule de Kibana, choisissez une règle de type Custom query avec :

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

La règle se déclenche à chaque connexion authentifiée sur un écran privilégié — adaptez la requête aux règles que vous souhaitez surveiller.

Voir aussi