Skip to content

Comment envoyer des logs vers une plateforme SIEM externe

Cette page décrit des procédures pour envoyer des logs vers une plateforme externe de gestion des informations et événements de sécurité (SIEM). Cette procédure s'applique aux déploiements sur site de la solution. Pour les déploiements SaaS, contactez OKIOK si vous avez besoin d'accéder aux journaux d'audit.

Le portail S-Filer utilise Log4J comme framework de journalisation, ce qui offre la flexibilité d'envoyer des logs vers des plateformes SIEM via différentes méthodes.

Avertissement

La modification de la configuration de Log4J est prise en charge par OKIOK, mais ne fait pas partie de la procédure d'installation standard. Il peut être nécessaire de réappliquer ces modifications après une mise à niveau.

Vue d'ensemble

Il existe deux approches principales pour envoyer des logs vers une plateforme SIEM externe :

  1. Intégration syslog directe : Utiliser un appendeur syslog pour envoyer des logs directement à un SIEM qui agit comme serveur syslog (ou syslog-ng).
  2. Intégration basée sur les fichiers : Configurer Log4J pour écrire des logs au format JSONL (JSON Lines), puis utiliser l'agent natif du SIEM (Logstash, Vector, etc.) pour lire les fichiers de logs et les envoyer au SIEM.

Méthode 1 : Intégration syslog directe

Cette méthode envoie des logs directement du portail S-Filer vers votre plateforme SIEM en utilisant le protocole syslog. C'est l'approche la plus simple lorsque votre SIEM prend en charge la réception syslog.

Pour des instructions détaillées sur la configuration de l'appendeur syslog, consultez le guide Comment envoyer des audits vers syslog.

Avantages de l'intégration syslog directe

  • Livraison de logs en temps réel
  • Aucun stockage de fichiers intermédiaire requis
  • Latence plus faible
  • Architecture plus simple

Considérations

  • Nécessite une connectivité réseau entre le portail S-Filer et le SIEM
  • Peut nécessiter la configuration de règles de pare-feu
  • Le SIEM doit prendre en charge la réception syslog (UDP, TCP ou TLS sur TCP)

Méthode 2 : Intégration basée sur les fichiers avec des agents SIEM

Cette méthode implique deux étapes :

  1. Configurer Log4J pour écrire des logs au format JSONL dans des fichiers
  2. Déployer un agent SIEM (Logstash, Vector, Filebeat, etc.) pour lire ces fichiers et les transférer vers votre plateforme SIEM

Avantages de l'intégration basée sur les fichiers

  • Fonctionne avec tout SIEM qui prend en charge la collecte de logs basée sur les fichiers
  • Peut mettre en mémoire tampon les logs si le SIEM est temporairement indisponible
  • Permet la transformation et l'enrichissement des logs avant l'envoi
  • Plus flexible pour les architectures SIEM complexes

Étape 1 : Configurer la journalisation JSONL

Configurez Log4J pour écrire les logs d'audit au format JSONL. Le format JSONL stocke un objet JSON par ligne, ce qui facilite l'analyse par les agents de collecte de logs.

Voici un exemple de configuration qui écrit les logs d'audit dans un fichier JSONL :

xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorinterval="30" status="info" strict="true">
    <Appenders>
        <RollingFile name="audit-jsonl" fileName="logs/audit.jsonl" filePattern="logs/audit-%d{yyyy-MM-dd}.jsonl">
            <JsonTemplateLayout eventTemplateUri="classpath:sfiler-ecs-layout.json"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="256MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="AUDIT" level="INFO">
            <appender-ref ref="audit-jsonl"/>
        </Logger>
    </Loggers>
</Configuration>

Cette configuration :

  • Écrit les logs d'audit dans logs/audit.jsonl
  • Fait tourner les fichiers quotidiennement ou lorsqu'ils atteignent 256MB
  • Conserve jusqu'à 10 fichiers archivés
  • Utilise le format ECS (Elastic Common Schema) pour la journalisation structurée

Pour plus d'informations sur l'utilisation du format de journalisation ECS, consultez le guide Journalisation ECS.

Étape 2 : Configurer l'agent SIEM

Après avoir configuré la journalisation JSONL, déployez et configurez un agent SIEM pour lire les fichiers de logs et les transférer vers votre plateforme SIEM.

Exemple : Configuration Logstash

Si vous utilisez Logstash comme agent SIEM, voici un exemple de configuration :

ruby
input {
  file {
    path => "/path/to/sfiler/logs/audit.jsonl"
    start_position => "beginning"
    codec => "json"
    sincedb_path => "/var/lib/logstash/sincedb/audit"
  }
}

filter {
  # Ajoutez ici toutes les transformations ou enrichissements
  # Par exemple, analyser les horodatages, ajouter des champs, etc.
  
  date {
    match => [ "timestamp", "ISO8601" ]
  }
}

output {
  # Exemple : Envoyer vers Elasticsearch
  elasticsearch {
    hosts => ["https://your-elasticsearch-host:9200"]
    index => "sfiler-audit-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "your-password"
  }
  
  # Ou envoyer vers d'autres plateformes SIEM
  # Exemple : Splunk
  # http {
  #   url => "https://your-splunk-host:8088/services/collector"
  #   http_method => "post"
  #   headers => {
  #     "Authorization" => "Splunk your-token"
  #   }
  # }
}

Exemple : Configuration Vector

Si vous utilisez Vector comme agent SIEM, voici un exemple de configuration :

toml
[sources.sfiler_audit]
type = "file"
include = ["/path/to/sfiler/logs/audit*.jsonl"]
read_from = "beginning"

[transforms.parse_json]
type = "remap"
inputs = ["sfiler_audit"]
source = '''
. = parse_json!(.message)
'''

[sinks.siem_output]
type = "elasticsearch"
inputs = ["parse_json"]
endpoint = "https://your-elasticsearch-host:9200"
index = "sfiler-audit-%Y.%m.%d"
auth.strategy = "basic"
auth.user = "elastic"
auth.password = "your-password"

Exemple : Configuration Filebeat

Si vous utilisez Filebeat, voici un exemple de configuration :

yaml
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /path/to/sfiler/logs/audit*.jsonl
    json.keys_under_root: true
    json.add_error_key: true

output.elasticsearch:
  hosts: ["https://your-elasticsearch-host:9200"]
  index: "sfiler-audit-%{+yyyy.MM.dd}"
  username: "elastic"
  password: "your-password"

Emplacement des fichiers de logs

Par défaut, les fichiers de logs sont écrits dans le répertoire logs/ relatif à l'installation du portail S-Filer. Le chemin exact dépend de votre déploiement :

  • Installation autonome : Généralement $SFILER_HOME/logs/
  • Installation Docker : Vérifiez la configuration du montage de volume
  • Installation en service : Vérifiez le répertoire de travail du service

Assurez-vous que l'agent SIEM a un accès en lecture au répertoire des fichiers de logs.

Gestion de la rotation des logs

Le portail S-Filer fait tourner les fichiers de logs en fonction de la taille et de la date. Les agents SIEM doivent être configurés pour :

  • Surveiller le modèle de fichier de logs (par exemple, audit*.jsonl) pour récupérer les fichiers tournés
  • Gérer la rotation des fichiers de manière gracieuse sans perdre d'entrées de logs
  • Suivre la position de lecture pour éviter de relire les anciens logs (en utilisant sincedb ou des mécanismes similaires)

Choisir la bonne méthode

Choisissez la méthode qui correspond le mieux à votre infrastructure :

  • Utilisez la Méthode 1 (Syslog direct) si :

    • Votre SIEM prend en charge la réception syslog
    • Vous voulez une livraison de logs en temps réel
    • Vous préférez une architecture plus simple sans agents intermédiaires
  • Utilisez la Méthode 2 (Basée sur les fichiers avec agents) si :

    • Votre SIEM nécessite des formats ou protocoles de logs spécifiques
    • Vous devez transformer ou enrichir les logs avant l'envoi
    • Vous voulez mettre en mémoire tampon les logs pour la fiabilité
    • Vous utilisez un SIEM qui ne prend pas en charge le syslog direct

Informations contextuelles

La solution fournit des informations contextuelles pour les audits. Celles-ci peuvent être utilisées dans le formatage des logs :

NomParamètre de layoutExemple
Message d'audit%mÉchec de la validation MFA pour 'jsmith'.
Identifiant du thread%tpool-1-thread-3
Date et heure%dVoir la doc Log4J pour les formats
Autres standards Log4J%p, %c, etc.Voir Log4J pour les détails.
Nom de compte%X{MDC_USER}jsmith
IP de l'utilisateur%X{MDC_REMOTE_IP}172.134.23.46
Composant S-Filer%X{MDC_COMPONENT}sfiler-gw-1

Audits à journaliser

Consultez la page Référence des audits pour la liste de tous les audits pris en charge dans le portail S-Filer.

Références