Collecter les journaux EVE Suricata

Compatible avec :

Ce document explique comment ingérer des journaux EVE Suricata dans Google Security Operations à l'aide de Bindplane.

Suricata est un moteur Open Source hautes performances de détection des menaces réseau. Il offre des fonctionnalités de détection des intrusions (IDS), de prévention des intrusions (IPS) et de surveillance de la sécurité réseau. La sortie de journal EVE (Extensible Event Format) fournit des journaux complets au format JSON couvrant les données d'alertes, de flux, DNS, HTTP, TLS et de transactions de fichiers. L'analyseur extrait les champs des journaux au format JSON EVE de Suricata. Il analyse le message JSON, puis mappe ces valeurs au modèle de données unifié (UDM). Il définit également les valeurs de métadonnées par défaut pour la source et le type d'événement.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié à l'hôte Suricata (root ou sudo)

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sc query observiq-otel-collector
    

Le service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendez la fin de l'installation.

  4. Vérifiez l'installation en exécutant la commande suivante :

    sudo systemctl status observiq-otel-collector
    

Le service doit être indiqué comme actif (en cours d'exécution).

Autres ressources d'installation

Pour obtenir d'autres options d'installation et de dépannage, consultez le guide d'installation de l'agent Bindplane.

Configurer l'agent Bindplane pour ingérer les journaux syslog et les envoyer à Google SecOps

Localiser le fichier de configuration

  • Linux :

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows :

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Modifiez le fichier de configuration

  • Remplacez l'intégralité du contenu de config.yaml par la configuration suivante :

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: 'SURICATA_EVE'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    

Paramètres de configuration

  • Remplacez les espaces réservés suivants :

    • Configuration du récepteur :

      • udplog : utilisez udplog pour syslog UDP ou tcplog pour syslog TCP.
      • 0.0.0.0 : adresse IP à écouter (0.0.0.0 pour écouter sur toutes les interfaces)
      • 514 : numéro de port à écouter (port syslog standard)
    • Configuration de l'exportateur :

      • creds_file_path : chemin d'accès complet au fichier d'authentification de l'ingestion :
        • Linux : /etc/bindplane-agent/ingestion-auth.json
        • Windows : C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID : ID client de la section "Obtenir l'ID client"
      • endpoint : URL du point de terminaison régional :
        • États-Unis : malachiteingestion-pa.googleapis.com
        • Europe : europe-malachiteingestion-pa.googleapis.com
        • Asie : asia-southeast1-malachiteingestion-pa.googleapis.com
        • Pour obtenir la liste complète, consultez Points de terminaison régionaux.
      • log_type : type de journal tel qu'il apparaît dans Chronicle (SURICATA_EVE)

Enregistrez le fichier de configuration.

  • Après avoir modifié le fichier, enregistrez-le :
    • Linux : appuyez sur Ctrl+O, puis sur Enter, puis sur Ctrl+X.
    • Windows : cliquez sur Fichier > Enregistrer.

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
    1. Vérifiez que le service est en cours d'exécution :

        sudo systemctl status observiq-otel-collector
      
    2. Recherchez les erreurs dans les journaux :

        sudo journalctl -u observiq-otel-collector -f
      
  • Pour redémarrer l'agent Bindplane dans Windows, choisissez l'une des options suivantes :

    • Invite de commandes ou PowerShell en tant qu'administrateur :

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Console Services :

      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Localisez observIQ OpenTelemetry Collector.
      3. Effectuez un clic droit, puis sélectionnez Redémarrer.

      4. Vérifiez que le service est en cours d'exécution :

        sc query observiq-otel-collector
        
      5. Recherchez les erreurs dans les journaux :

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Configurer le transfert syslog EVE Suricata

  1. Ouvrez le fichier de configuration Suricata (généralement /etc/suricata/suricata.yaml).
  2. Recherchez la section outputs et configurez la sortie EVE log pour syslog :

    outputs:
      - eve-log:
          enabled: yes
          filetype: syslog
          identity: "suricata"
          facility: local5
          level: Info
          types:
            - alert:
                payload: yes
                payload-printable: yes
                packet: yes
                metadata: yes
            - http:
                extended: yes
            - dns:
                query: yes
                answer: yes
            - tls:
                extended: yes
            - files:
                force-magic: no
            - flow
            - netflow
            - anomaly:
                enabled: yes
            - stats:
                enabled: yes
    
  3. Si le daemon syslog n'est pas configuré pour transférer les données vers Bindplane, configurez rsyslog ou syslog-ng :

    • Pour rsyslog (modifiez /etc/rsyslog.conf ou créez /etc/rsyslog.d/suricata.conf) :

      local5.* @BINDPLANE_IP:514
      
      • Remplacez BINDPLANE_IP par l'adresse IP de l'hôte de l'agent Bindplane.
      • Utilisez @ pour UDP ou @@ pour TCP.
    • Pour syslog-ng (modifiez /etc/syslog-ng/syslog-ng.conf) :

      destination d_bindplane { udp("BINDPLANE_IP" port(514)); };
      filter f_suricata { facility(local5); };
      log { source(s_src); filter(f_suricata); destination(d_bindplane); };
      
  4. Redémarrez le daemon syslog :

    sudo systemctl restart rsyslog
    
  5. Redémarrez Suricata :

     sudo systemctl restart suricata
    
  6. Vérifiez que les messages syslog sont envoyés en consultant les journaux de l'agent Bindplane.

Table de mappage UDM

Champ de journal Mappage UDM Logique
timestamp metadata.event_timestamp Code temporel de l'événement
event_type metadata.product_event_type Type d'événement EVE (par exemple, alerte, flux, dns, http, tls)
src_ip principal.ip Adresse IP source
src_port principal.port Numéro de port source
dest_ip target.ip Adresse IP de destination
dest_port target.port Numéro de port de destination
proto network.ip_protocol Protocole réseau (par exemple, TCP, UDP, ICMP)
flow_id network.session_id Identifiant unique du flux
alert.signature security_result.rule_name Nom de la signature de l'alerte
alert.signature_id security_result.rule_id Identifiant de signature de l'alerte
alert.severity security_result.severity Niveau de gravité de l'alerte
alert.category security_result.category_details Catégorie de classification des alertes
alert.action security_result.action Mesure prise (par exemple, autorisée, bloquée)
alert.rev security_result.rule_version Numéro de révision de la règle
http.hostname target.hostname Nom d'hôte de la requête HTTP
http.url target.url URL de la requête HTTP
http.http_method network.http.method Méthode de requête HTTP
http.status network.http.response_code Code d'état de réponse HTTP
http.http_user_agent network.http.user_agent Chaîne user-agent HTTP
http.http_refer network.http.referral_url URL de provenance HTTP
http.length additional.fields Durée du contenu HTTP
dns.type network.dns.type Requête ou réponse DNS
dns.rrname network.dns.questions.name Nom de la requête DNS
dns.rrtype network.dns.questions.type Type de requête DNS
dns.rdata network.dns.answers.data Données de réponse DNS
tls.subject network.tls.client.subject Objet du certificat TLS
tls.issuerdn network.tls.client.issuer Émetteur du certificat TLS
tls.sni network.tls.client.server_name Indication du nom du serveur TLS
tls.version network.tls.version Version TLS
tls.ja3.hash network.tls.client.ja3 Hachage de l'empreinte client JA3
tls.ja3s.hash network.tls.server.ja3s Hachage de l'empreinte du serveur JA3S
app_proto network.application_protocol Protocole de couche application détecté
flow.bytes_toserver network.sent_bytes Octets envoyés du client au serveur
flow.bytes_toclient network.received_bytes Octets envoyés du serveur au client
flow.pkts_toserver additional.fields Paquets envoyés du client au serveur
flow.pkts_toclient additional.fields Paquets envoyés du serveur au client
in_iface additional.fields Interface réseau d'entrée
community_id network.community_id Hachage du flux d'ID de la communauté réseau

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.