Note :

Ingérer des journaux Oracle Cloud Infrastructure dans des plates-formes SIEM de tierce partie à l'aide des expéditeurs de journaux

Présentation

Oracle Cloud Infrastructure (OCI) est une plate-forme d'infrastructure-service (IaaS), de plate-forme-service (PaaS) et de logiciel-service (SaaS), approuvée par les grandes entreprises. Il offre une gamme complète de services gérés, notamment l'hébergement, le stockage, le réseau, les bases de données et plus encore.

La présentation proactive des journaux d'événements liés à la sécurité pour le triage aux ressources appropriées est cruciale pour détecter et prévenir les incidents de cybersécurité. De nombreuses organisations s'appuient sur les plates-formes SIEM (Security Information and Event Management) pour corréler, analyser les journaux et les alertes à partir des ressources pertinentes. Une configuration appropriée de la saisie des journaux, de la conservation pendant la durée appropriée et de la surveillance et des alertes en temps quasi réel permet aux équipes des opérations de sécurité d'identifier les problèmes, de se concentrer sur les informations critiques en fonction du réglage du système et de prendre des mesures en temps opportun.

Une meilleure pratique pour l'ingestion de journaux OCI consiste à les envoyer au service de diffusion en continu pour OCI, qui est compatible avec Apache Kafka, ce qui permet aux plates-formes SIEM tierces de consommer les journaux en tant que consommateurs Kafka. Cette approche réduit les retards, assure la résilience et assure la conservation en cas de problèmes temporaires de consommation de données du côté SIEM.

Toutefois, certaines plates-formes SIEM tierces n'ont pas de connecteurs par défaut pour consommer les journaux directement à partir des flux OCI et ne prennent pas en charge de manière native la consommation de données à partir des sujets Kafka, la plate-forme de diffusion d'événements à code source libre largement utilisée, ce qui complique le processus d'intégration. Dans de tels cas, les expéditeurs de journaux servent de solution pour combler cet écart.

Un expéditeur de journaux fonctionne comme un outil autonome qui collecte les journaux de différentes sources, puis les transmet à une ou plusieurs destinations spécifiées. Pour assurer une communication transparente avec le service de diffusion en continu pour OCI et les plates-formes SIEM de tierce partie, le logiciel d'expéditeur de journaux doit s'exécuter sur une machine avec accès à Internet. Dans ce tutoriel, nous allons déployer le logiciel d'expéditeur de journaux sur une instance de calcul dans OCI.

L'expéditeur du journal :

Examinons maintenant la représentation de haut niveau de l'architecture de la solution, comme illustré dans l'image suivante.

Diagramme d'architecture

Note : Bien que cette solution puisse combler l'écart, il est conseillé de ne la considérer comme une dernière option que si d'autres méthodes ne sont pas possibles. Il est important de se coordonner étroitement avec votre fournisseur SIEM pour explorer d'abord toute approche native ou recommandée. Si vous décidez de procéder avec un expéditeur de journaux, en collaborant avec votre fournisseur SIEM pour sélectionner celui qui convient le mieux, vous bénéficierez d'un meilleur soutien de la part de votre fournisseur SIEM pendant et après la mise en oeuvre, ce qui vous aidera à adapter la configuration en fonction des besoins spécifiques de votre organisation.

Différents expéditeurs de journaux sont disponibles et certains d'entre eux sont :

Objectifs

Préalables

Note : Les tâches suivantes (tâche 1 à tâche 4) doivent être effectuées à l'extrémité OCI, quelle que soit la méthode choisie ou l'expéditeur de journal.

Tâche 1 : Configurer les journaux pour la capture

Le service de journalisation OCI offre une interface unique hautement évolutive et entièrement gérée pour tous les journaux d'une location. Le service de journalisation pour OCI permet d'accéder aux journaux à partir des ressources OCI. Un journal est une ressource OCI de première classe qui stocke et saisit les événements de journal collectés dans un contexte donné. Un groupe de journaux est une collection de journaux stockés dans un compartiment. Les groupes de journaux sont des conteneurs logiques pour les journaux. Utilisez des groupes de journaux pour organiser et rationaliser la gestion des journaux en appliquant la politique ou les journaux de regroupement d'Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) pour analyse.

Pour commencer, activez un journal pour une ressource. Les services fournissent des catégories pour les différents types de journaux disponibles pour les ressources. Par exemple, le service de stockage d'objets OCI prend en charge les catégories de journaux suivantes pour les seaux de stockage : événements d'accès en lecture et en écriture. Les événements d'accès en lecture saisissent les événements de téléchargement, tandis que les événements d'accès en écriture saisissent les événements d'écriture. Chaque service peut avoir différentes catégories de journaux pour les ressources.

  1. Connectez-vous à la console OCI, naviguez jusqu'à Observabilité et gestion, Journalisation et Groupes de journaux.

  2. Sélectionnez votre compartiment, cliquez sur Créer un groupe de journaux et entrez les informations suivantes.

    • Nom : Entrez SIEM_log_group.
    • Description (Facultatif) : Entrez la description.
    • Marqueurs (Facultatif) : Entrez les marqueurs.
  3. Cliquez sur Créer pour créer un nouveau groupe de journaux.

  4. Sous Ressources, cliquez sur J journaux.

  5. Cliquez sur Créer un journal personnalisé ou sur Activer le journal du service, au besoin.

    Par exemple, pour activer les journaux d'écriture pour un seau de stockage d'objets OCI, procédez comme suit :

    1. Cliquez sur Activer le journal de service.

    2. Sélectionnez votre compartiment de ressources et entrez Stockage d'objets dans les services de recherche.

    3. Cliquez sur Activer les journaux et sélectionnez le nom du seau de stockage d'objets OCI dans la ressource.

    4. Sélectionnez le groupe de journaux (SIEM_log_group) créé dans la tâche 1.2 et Écrire des événements d'accès dans la catégorie de journaux. Facultativement, entrez SIEM_bucket_write comme nom du journal.

    5. Cliquez sur Activer pour créer votre nouveau journal OCI.

Tâche 2 : Créer un flux à l'aide du service de diffusion en continu pour OCI

Le service de diffusion en continu pour OCI est une plate-forme de diffusion d'événements compatible avec Apache Kafka, en temps réel et sans serveur, destinée aux développeurs et aux spécialistes des données. Elle fournit une solution entièrement gérée, évolutive et durable pour l'ingestion et la consommation de flux de données à volume élevé en temps réel tels que des journaux. Nous pouvons utiliser le service de flux pour OCI pour tout cas d'utilisation où les données sont produites et traitées en continu et séquentiellement dans un modèle de messagerie de type publication-abonnement.

  1. Allez à la console OCI, naviguez jusqu'à Analyse et intelligence artificielle, Messagerie et Diffusion en continu.

  2. Cliquez sur Créer un flux pour créer un flux.

  3. Entrez les informations suivantes et cliquez sur Créer.

    • Nom : Entrez le nom du flux. Pour ce tutoriel, il s'agit de SIEM_Stream.
    • Groupe de flux : Sélectionnez un groupe de flux existant ou créez-en un avec un point d'extrémité public.
    • Conservation (en heures) : Entrez le nombre d'heures de conservation des messages dans ce flux.
    • Nombre de partitions : Entrez le nombre de partitions pour le flux.
    • Taux total d'écriture et Taux total de lecture : Entrez une valeur en fonction de la quantité de données à traiter.

Vous pouvez commencer par les valeurs par défaut pour les tests. Pour plus d'informations, voir Partitionnement d'un flux.

Tâche 3 : Configurer un centre de connecteurs OCI

Le centre de connecteurs OCI orchestre le déplacement des données entre les services dans OCI. Le centre de connecteurs OCI fournit un emplacement central pour décrire, exécuter et surveiller les déplacements de données entre les services, tels que la journalisation OCI, le stockage d'objets OCI, le service de diffusion en continu OCI, OCI Logging Analytics et le service de surveillance OCI. Il peut également déclencher le service des fonctions pour OCI pour le traitement des données légères et le service d'avis pour OCI pour configurer des alertes.

  1. Allez à la console OCI, naviguez jusqu'à Observabilité et gestion, Journalisation et Connecteurs.

  2. Cliquez sur Créer un connecteur pour le créer.

  3. Entrez les informations suivantes .

    • Nom : Entrez SIEM_SC.
    • Description (Facultatif) : Entrez la description.
    • Compartiment : Sélectionnez votre compartiment.
    • Source : Sélectionnez Logging.
    • Cible : Sélectionnez Flux.
  4. Sous Configurer la connexion source, sélectionnez un nom de compartiment, un groupe de journaux et un journal (groupe de journaux et journal créés dans la tâche 1).

  5. Si vous voulez également envoyer des journaux de vérification, cliquez sur +Another Journal et sélectionnez le même compartiment tout en remplaçant _Audit par votre groupe de journaux.

  6. Sous Configurer la cible, sélectionnez un compartiment et un flux (flux créé lors de la tâche 2).

  7. Pour accepter les politiques par défaut, cliquez sur le lien Créer fourni pour chaque politique par défaut. Des politiques par défaut sont proposées pour toute autorisation requise pour que ce connecteur puisse accéder aux services sources, aux tâches et aux services cibles.

  8. Cliquez sur Créer.

Tâche 4 : Configurer un contrôle d'accès pour les expéditeurs de journaux afin d'extraire les journaux

Pour permettre aux expéditeurs de journal d'accéder aux données d'un flux OCI, créez un utilisateur et accordez des autorisations d'extraction de flux pour l'extraction des journaux.

  1. Créez un utilisateur OCI. Pour plus d'informations, voir Gestion des utilisateurs.

  2. Créez un groupe OCI nommé SIEM_User_Group et ajoutez l'utilisateur OCI au groupe. Pour plus d'informations, voir Gestion des groupes.

  3. Créez la politique IAM OCI suivante.

    Allow group <SIEM_User_Group> to use stream-pull in compartment <compartment_of_stream>
    

Maintenant, nous allons explorer comment installer les expéditeurs de journaux et fournir quelques exemples de comment les intégrer aux plates-formes SIEM.

Cas 1 : Utiliser Filebeat en tant qu'expéditeur de journal

Filebeat est un expéditeur léger pour le transfert et la centralisation des données de journal. Filebeat est hautement extensible grâce à l'utilisation de modules, ce qui lui permet de collecter des journaux à partir de sources telles qu'Apache Kafka, Amazon Web Services (AWS), etc. Écrit en Go, Filebeat fournit un fichier binaire unique pour un déploiement simple. Il excelle dans la gestion de volumes de données importants tout en consommant des ressources minimales.

Installer Filebeat

Filebeat peut être installé sur divers systèmes d'exploitation, tels que Linux et Windows, ainsi que sur des plates-formes telles que des machines virtuelles, des conteneurs Docker et des grappes Kubernetes. Dans ce tutoriel, il est installé sur une instance de calcul Oracle Linux 8. Pour plus d'informations, voir Démarrage rapide avec Filebeat : installation et configuration.

Pour installer Filebeat sur l'instance de calcul désignée comme expéditeur de journaux, procédez comme suit :

  1. Ajoutez le référentiel beats pour YUM. Pour plus d'informations, voir Répôts pour APT et YUM.

  2. Téléchargez et installez la clé de signature publique.

    sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    
  3. Créez un fichier avec une extension .repo (par exemple, elastic.repo) dans votre répertoire /etc/yum.repos.d/ et ajoutez les lignes suivantes :

    [elastic-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    
  4. Votre référentiel est maintenant prêt à être utilisé. Exécutez les commandes suivantes pour installer Filebeat.

    sudo yum install filebeat
    
  5. Exécutez les commandes suivantes pour configurer Filebeat pour qu'il démarre automatiquement pendant le démarrage.

    sudo systemctl enable filebeat
    

Configurer Filebeat

Dans la configuration suivante, Filebeat est configuré pour ingérer des journaux à partir des flux OCI et les enregistrer en tant que fichiers dans le système de fichiers local de l'expéditeur de journaux (instance de calcul). Cela permet aux collecteurs de plate-forme SIEM tiers d'ingérer ces journaux en lisant les fichiers à partir du système de fichiers local.

  1. Remplacez le contenu de /etc/filebeat/filebeat.yml par l'exemple de configuration suivant (n'oubliez pas de remplacer hosts, topics, username, and password par vos détails). Créez également un dossier pour stocker les journaux, par exemple /home/opc/oci_logs.

    filebeat.inputs:
    - type: kafka
      hosts: ["cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092"]
      topics: ["SIEM_Stream"]
      group_id: "filebeat"
      username: <username>
      password: <Auth Token>
      ssl.enabled: true
      sasl.mechanism: PLAIN
    
    output.file:
      path: "/home/opc/oci_logs"
      filename: "oci_logs"
      rotate_every_kb: 5000 # 5 MB
      codec.format:
        string: '%{[@timestamp]} %{[message]}'
    
  2. Exécutez la commande suivante pour tester la configuration.

    filebeat test config
    
  3. Redémarrez le service Filebeat après avoir mis à jour la configuration.

    sudo systemctl restart Filebeat
    
  4. Une fois la configuration réussie, vous devriez voir les journaux OCI sous forme de fichiers dans le dossier /home/opc/oci_logs.

Exemple : Intégration OCI et Rapid7 InsightIDR à l'aide de Filebeat

Dans cet exemple, Rapid7 InsightIDR est configuré pour ingérer les journaux OCI enregistrés dans le système de fichiers local de l'expéditeur de journaux Filebeat.

  1. Installez le collecteur Rapid7 sur l'instance d'expéditeur de journal.

    Le collecteur Rapid7 collecte les journaux et les envoie à votre compte Rapid7 InsightIDR pour traitement. Pour installer le collecteur Rapid7, téléchargez l'ensemble à partir de votre compte Rapid7 InsightIDR et installez-le sur l'instance de calcul de l'expéditeur de journaux. Pour plus de renseignements, consultez la page Rapid7 Installation et déploiement du collecteur.

  2. Configurez Rapid7 InsightIDR pour collecter des données à partir de la source de l'événement. Bien que Rapid7 InsightIDR soit livré avec des connecteurs prédéfinis pour divers services en nuage, OCI n'est pas pris en charge de manière native. Toutefois, vous pouvez ingérer et traiter des données brutes en procédant comme suit :

    1. Allez à Rapid7 InsightIDR, naviguez jusqu'à Collecte de données, Configurer la source d'événement et cliquez sur Ajouter une source d'événement.

    2. Cliquez sur Ajouter des données brutes et sur Journaux personnalisés.

    3. Entrez Nom de la source de l'événement et sélectionnez le collecteur (instance de calcul).

    4. Sélectionnez le fuseau horaire correspondant à l'emplacement des journaux sources d'événements.

    5. Sélectionnez la méthode de collecte comme répertoire de surveillance et utilisez le chemin d'accès aux journaux OCI /home/opc/oci_logs dans le dossier local.

    Rapid7 Journaux personnalisés

    La collecte des journaux commencera et les données peuvent être consultées dans Rapid7 InsightIDR.

Cas 2 : Utiliser un peu fluide comme expéditeur de journaux

Fluent Bit est un expéditeur de journaux léger et haute performance, servant d'alternative à Fluentd. Fluent Bit a émergé en réponse au besoin croissant d'une solution optimale capable de collecter des journaux de nombreuses sources tout en les traitant et en les filtrant efficacement. Notamment, Fluent Bit excelle dans les environnements limités en ressources tels que les conteneurs ou les systèmes intégrés.

Pour utiliser Fluent Bit, nous définirons inputs, filters, outputs et global configurations dans un fichier de configuration situé dans /etc/fluent-bit/fluent-bit.conf. Examinons ces composants en détail :

Entrées et sorties Fluent Bit plugins :

Installer et configurer le bit fluide

Fluent Bit peut être installé sur divers systèmes d'exploitation, tels que Linux et Windows, ainsi que sur des plates-formes telles que des machines virtuelles, des conteneurs Docker et des grappes Kubernetes. Dans ce tutoriel, il est installé sur une instance de calcul Oracle Linux 8. Pour installer Fluent Bit sur l'instance de calcul désignée comme expéditeur de journaux, procédez comme suit :

  1. Créez un fichier de référentiel avec une extension .repo (par exemple, fluentbit.repo) dans votre répertoire /etc/yum.repos.d/ et ajoutez les lignes suivantes. Pour plus d'informations, voir Configurer Yum.

    [fluent-bit]
    name = Fluent Bit
    baseurl = https://packages.fluentbit.io/centos/$releasever/
    gpgcheck=1
    gpgkey=https://packages.fluentbit.io/fluentbit.key
    repo_gpgcheck=1
    enabled=1
    
  2. Une fois le référentiel configuré, exécutez la commande suivante pour installer Fluent Bit.

    sudo yum install fluent-bit
    
  3. Le fichier de configuration par défaut de Fluent Bit se trouve à l'adresse /etc/fluent-bit/fluent-bit.conf. Par défaut, il collecte les mesures d'utilisation d'UC et envoie la sortie au journal standard. Vous pouvez voir les données sortantes dans le fichier /var/log/messages.

  4. Pour collecter les journaux du service de diffusion en continu pour OCI et les envoyer à la sortie standard, configurez l'entrée en tant que Kafka et la sortie en tant que fichier stdout. Veillez à remplacer Brokers, topics, username et password par vos détails.

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name        stdout
    

Exemple : Intégration OCI et Rapid7 InsightIDR à l'aide de Fluent Bit

Dans cet exemple, nous allons intégrer OCI à Rapid7 InsightIDR en installant le collecteur Rapid7 sur l'instance d'expéditeur de journaux où Fluent Bit est en cours d'exécution. Le bit fluide consommera les journaux du service de diffusion en continu pour OCI à l'aide de Kafka comme entrée et les enverra à un port TCP local, où le collecteur Rapid7 écoutera les données entrantes.

  1. Installez le collecteur Rapid7 sur l'instance d'expéditeur de journal existante.

    Le collecteur Rapid7 collecte les journaux et les envoie à votre compte Rapid7 InsightIDR pour traitement. Pour installer le collecteur, téléchargez l'ensemble à partir de votre compte Rapid7 InsightIDR et installez-le sur l'instance de calcul de l'expéditeur de journal. Pour plus d'informations sur les étapes d'installation, voir Rapid7 Installation et déploiement du collecteur.

  2. Configurez Rapid7 InsightIDR pour collecter des données à partir de la source de l'événement. Bien que Rapid7 InsightIDR soit livré avec des connecteurs prédéfinis pour divers services en nuage, OCI n'est pas pris en charge de manière native. Toutefois, vous pouvez ingérer et traiter des données brutes en procédant comme suit :

    1. Allez à Rapid7 InsightIDR, naviguez jusqu'à Collecte de données, Configurer la source d'événement et cliquez sur Ajouter une source d'événement.

    2. Cliquez sur Ajouter des données brutes et sur Journaux personnalisés.

    3. Entrez une source d'événement de nom et sélectionnez le collecteur (instance de calcul).

    4. Sélectionnez le fuseau horaire correspondant à l'emplacement des journaux sources d'événements.

    5. Sélectionnez Méthode de collecte comme Écouter sur le port de réseau, entrez un numéro de port et un protocole.

    Rapid7 Journaux personnalisés

  3. Exemple de configuration d'entrée et de sortie de bit fluide pour l'intégration Rapid7 InsightIDR. Veillez à remplacer Brokers, topics, username et password par vos détails.

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name             tcp
       Match            *
       Host             127.0.0.1
       Port             5170
       Format           json_lines
    
  4. Après avoir modifié la configuration Fluent Bit, redémarrez Fluent Bit à l'aide de la commande suivante.

    sudo systemctl restart fluent-bit
    

    Une fois le bit fluide redémarré, vous devriez voir les journaux OCI apparaître dans votre console Rapid7.

Exemple : Intégration OCI et Datadog à l'aide de Fluent Bit.

Dans cet exemple, le bit fluide s'exécutant sur l'instance de l'expéditeur de journaux consomme les journaux des flux OCI en utilisant Kafka comme entrée et les envoie au point d'extrémité HTTP de Datadog à l'aide d'une sortie HTTP.

  1. Utilisez des points d'extrémité de journalisation HTTP Datadog pour envoyer des journaux à Datadog. Pour plus d'informations, voir Points d'extrémité de journalisation.

  2. Une clé d'API Datadog est requise pour envoyer des journaux au point d'extrémité HTTP Datadog. Pour plus d'informations, voir API Datadog et clés d'application.

    Pour générer une clé d'API, procédez comme suit :

    1. Dans votre compte Datadog, naviguez jusqu'à Paramètres de l'organisation.

    2. Cliquez sur Clés d'API.

    3. Cliquez sur Nouvelle clé, entrez un nom pour la clé, puis cliquez sur Créer une clé d'API.

    Clés d'API DataDog

  3. Exemple de configuration d'entrée et de sortie de bit fluide pour l'intégration de Datadog. Veillez à remplacer Brokers, topics, username, password et API Key par vos détails.

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name             http
       Match            *
       Host             http-intake.logs.us5.datadoghq.com
       Port             443
       URI              /api/v2/logs
       Header           DD-API-KEY <API-KEY>
       Format           json
       Json_date_key    timestamp
       Json_date_format iso8601
       tls              On
       tls.verify       Off
    
  4. Après avoir modifié la configuration Fluent Bit, redémarrez Fluent Bit.

    sudo systemctl restart fluent-bit
    

    Vous devriez maintenant voir les journaux OCI dans votre compte Datadog.

Étapes suivantes

Ce tutoriel a démontré comment ingérer des journaux OCI dans des plates-formes SIEM tierces à l'aide d'expéditeurs de journaux. Bien qu'il existe différents expéditeurs de journaux disponibles et plusieurs façons d'intégrer OCI à des plates-formes SIEM tierces les utilisant, il est essentiel de choisir l'expéditeur de journaux et la méthode d'intégration appropriés en évaluant attentivement les options d'entrée et de sortie prises en charge par chaque expéditeur de journaux. Assurez-vous de vous coordonner avec votre fournisseur SIEM pour vous assurer que la solution correspond à votre environnement et à vos exigences spécifiques.

Confirmation

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.