Remarques :

Assimilation des connexions Oracle Cloud Infrastructure à des plates-formes SIEM tierces à l'aide d'expéditeurs de journaux

Introduction

Oracle Cloud Infrastructure (OCI) est une plate-forme Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) et Software-as-a-Service (SaaS) approuvée par les grandes entreprises. Il offre une gamme complète de services gérés, y compris l'hébergement, le stockage, la mise en réseau, les bases de données, etc.

La présentation proactive des journaux d'événements liés à la sécurité pour le tri aux ressources appropriées est cruciale pour détecter et prévenir les incidents de cybersécurité. De nombreuses entreprises 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 capture 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 bonne pratique pour l'assimilation des journaux OCI consiste à les envoyer à OCI Streaming, compatible avec Apache Kafka, permettant aux plates-formes SIEM tierces d'utiliser les journaux en tant que consommateurs Kafka. Cette approche réduit les retards, assure la résilience et assure la rétention en cas de problèmes temporaires liés à la consommation de données côté SIEM.

Cependant, certaines plates-formes SIEM tierces ne disposent pas de connecteurs par défaut pour l'utilisation des 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 open source largement utilisée, ce qui complique le processus d'intégration. Dans de tels cas, les expéditeurs de grumes servent de solution pour combler cet écart.

Un expéditeur de journaux fonctionne comme un outil autonome qui collecte les journaux de diverses sources, puis les transmet à une ou plusieurs destinations spécifiées. Pour assurer une communication transparente avec OCI Streaming et des plates-formes SIEM tierces, le logiciel d'expéditeur de journaux doit être exécuté 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

Remarque : Bien que cette solution puisse combler l'écart, il est conseillé de la considérer uniquement comme une dernière option si d'autres méthodes ne sont pas possibles. Il est important de se coordonner étroitement avec votre fournisseur de SIEM pour explorer d'abord les approches natives ou recommandées. Si vous décidez de procéder avec un expéditeur de journaux, le fait de travailler avec votre fournisseur SIEM pour sélectionner celui qui convient le mieux garantira un meilleur support de votre fournisseur SIEM pendant et après l'implémentation, ce qui aidera à adapter la configuration aux besoins spécifiques de votre organisation.

Il existe différents expéditeurs de journaux disponibles et certains d'entre eux sont :

Objectifs

Prérequis

Remarque : les tâches suivantes (tâches 1 à 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 à capturer

Le service OCI Logging est une interface unique entièrement gérée et évolutive pour tous les journaux de votre location. OCI Logging permet d'accéder aux journaux à partir des ressources OCI. Un journal est une ressource OCI de première classe qui stocke et capture les événements de journal collectés dans un contexte donné. Un groupe de journaux est un ensemble 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 stratégie Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) ou en regroupant les journaux à analyser.

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

  1. Connectez-vous à la console OCI, accédez à Observation 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) : saisissez la description.
    • Balises (Facultatif) : entrez les balises.
  3. Cliquez sur Créer pour créer un groupe de journaux.

  4. Sous Resources, cliquez sur Logs.

  5. Cliquez sur Créer un journal personnalisé ou sur Activer le journal de service selon vos besoins.

    Par exemple, pour activer les journaux d'écriture pour un bucket OCI Object Storage, procédez comme suit :

    1. Cliquez sur activer le journal de service.

    2. Sélectionnez votre compartiment de ressource et entrez Object Storage dans les services de recherche.

    3. Cliquez sur Activer les journaux et sélectionnez le nom du bucket OCI Object Storage dans la ressource.

    4. Sélectionnez le groupe de journaux (SIEM_log_group) créé dans la tâche 1.2 et Evénements d'accès en écriture dans la catégorie de journal. Entrez éventuellement SIEM_bucket_write en tant que nom de journal.

    5. Cliquez sur Activer pour créer le journal OCI.

Tâche 2 : création d'un flux à l'aide d'OCI Streaming

Le service OCI Streaming est une plate-forme de diffusion d'événements en temps réel, sans serveur et compatible avec Apache Kafka pour les développeurs et les data scientists. Elle offre une solution évolutive et durable entièrement gérée permettant d'inclure et d'utiliser des flux de données volumineux en temps réel tels que les journaux. Nous pouvons utiliser OCI Streaming pour tout cas d'emploi dans lequel des données sont produites et traitées de manière continue et séquentielle selon un modèle d'échange de messages de publication-abonnement.

  1. Accédez à la console OCI, puis à Analytics et IA, à Messagerie et à Diffusion en continu.

  2. Cliquez sur Créer un flux de données pour en créer un.

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

    • Nom : entrez le nom du flux de données. Pour ce tutoriel, il s'agit de SIEM_Stream.
    • Pool de flux de données : sélectionnez un pool de flux de données existant ou créez-en un avec une adresse publique.
    • Conservation (en heures) : saisissez le nombre d'heures de conservation des messages dans ce flux de données.
    • Nombre de partitions : entrez le nombre de partitions pour le flux.
    • Taux d'écriture total et Taux de lecture total : entrez en fonction de la quantité de données à traiter.

Vous pouvez commencer par les valeurs par défaut pour le test. Pour plus d'informations, reportez-vous à la section Partitioning a Stream.

Tâche 3 : configuration d'OCI Connector Hub

OCI Connector Hub orchestre les déplacements de données entre des services OCI. OCI Connector Hub fournit un emplacement central pour décrire, exécuter et surveiller les mouvements de données entre les services, tels qu'OCI Logging, OCI Object Storage, OCI Streaming, OCI Logging Analytics et OCI Monitoring. Il peut également déclencher OCI Functions pour un traitement léger des données et OCI Notifications pour configurer des alertes.

  1. Accédez à la console OCI, puis à Observation et gestion, à Journalisation et à Connecteurs.

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

  3. Saisissez les informations suivantes .

    • Nom : entrez SIEM_SC.
    • Description (facultatif) : saisissez la description.
    • Compartiment : sélectionnez votre compartiment.
    • Source : sélectionnez Journalisation.
    • Cible : sélectionnez Flux de données.
  4. Sous Configurer une 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 d'audit, cliquez sur +Another Log et sélectionnez le même compartiment tout en remplaçant _Audit par le groupe de journaux.

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

  7. Pour accepter les stratégies par défaut, cliquez sur le lien Créer fourni pour chaque stratégie par défaut. Des stratégies par défaut sont proposées pour toutes les autorisations requises afin que ce connecteur accède aux services source, tâche et cible.

  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 autoriser les expéditeurs de journaux à accéder aux données à partir d'un flux OCI, créez un utilisateur et accordez des droits d'accès d'extraction de flux pour l'extraction des journaux.

  1. Créez un utilisateur OCI. Pour plus d'informations, reportez-vous à Gestion des utilisateurs.

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

  3. Créez la stratégie OCI IAM suivante.

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

Nous allons maintenant explorer comment installer des expéditeurs de journaux et fournir quelques exemples de la façon de les intégrer aux plates-formes SIEM.

Cas 1 : Utilisation de Filebeat en tant qu'expéditeur de journaux

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. Ecrit 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 peu de ressources.

Installer Filebeat

Filebeat peut être installé sur différents 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 clusters Kubernetes. Dans ce tutoriel, il est installé sur une instance de calcul Oracle Linux 8. Pour plus d'informations, reportez-vous à Démarrage rapide de Filebeat : installation et configuration.

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

  1. Ajoutez le référentiel Beats pour YUM. Pour plus d'informations, reportez-vous à Référentiels 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 l'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 de sorte qu'il démarre automatiquement lors de l'initialisation.

    sudo systemctl enable filebeat
    

Configurer Filebeat

Dans la configuration suivante, Filebeat est configuré pour inclure les 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 le stockage des journaux, tel que /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 effectuée, vous devez 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 inclure les journaux OCI enregistrés dans le système de fichiers local de l'expéditeur de journal 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 le package à partir de votre compte Rapid7 InsightIDR et installez-le sur l'instance de calcul de l'expéditeur de journal. Pour plus d'informations, reportez-vous à Rapid7 Collector Installation and Deployment.

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

    1. Accédez à Rapid7 InsightIDR, accédez à 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 d'événement et sélectionnez le collecteur (instance de calcul).

    4. Sélectionnez le fuseau horaire qui correspond à l'emplacement des journaux de source d'événement.

    5. Sélectionnez la méthode de collecte dans Répertoire de surveillance et utilisez le chemin de journaux OCI /home/opc/oci_logs dans Dossier local.

    Rapid7 Journaux personnalisés

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

Cas 2 : Utiliser le bit fluide comme expéditeur de journaux

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

Pour utiliser Fluent Bit, nous allons définir inputs, filters, outputs et global configurations dans un fichier de configuration situé à l'emplacement /etc/fluent-bit/fluent-bit.conf. Examinons ces éléments en détail :

Plugins d'entrée et de sortie Fluent Bit :

Installer et configurer Fluent Bit

Fluent Bit peut être installé sur différents 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 clusters 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 journal, procédez comme suit :

  1. Créez un fichier de référentiel avec l'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 pour Fluent Bit se trouve à l'emplacement /etc/fluent-bit/fluent-bit.conf. Par défaut, il collecte les mesures d'utilisation de l'UC et envoie la sortie au journal standard. Vous pouvez afficher les données sortantes dans le fichier /var/log/messages.

  4. Pour collecter des journaux à partir du service OCI Streaming et les envoyer vers la sortie standard, configurez l'entrée en tant que Kafka et la sortie en tant que 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 d'OCI et de 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 journal où Fluent Bit est en cours d'exécution. Fluent Bit utilise les journaux d'OCI Streaming en utilisant Kafka comme entrée et les envoie à 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 le package à 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, reportez-vous à Rapid7 Collector Installation and Deployment.

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

    1. Accédez à Rapid7 InsightIDR, accédez à 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 qui correspond à l'emplacement des journaux de source d'événement.

    5. Sélectionnez la méthode de collecte Ecouter sur le port 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 Bit Fluent 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 du bit fluide, redémarrez le bit fluide à l'aide de la commande suivante.

    sudo systemctl restart fluent-bit
    

    Une fois Fluent Bit redémarré, vous devez voir les journaux OCI apparaître dans votre console Rapid7.

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

Dans cet exemple, Fluent Bit exécuté sur l'instance d'expéditeur de journaux utilise les journaux des flux OCI en utilisant Kafka comme entrée et les envoie à l'adresse HTTP de Datadog à l'aide d'une sortie HTTP.

  1. Utilisez les adresses de journalisation HTTP Datadog pour envoyer des journaux à Datadog. Pour plus d'informations, reportez-vous à Adresses de journalisation.

  2. Une clé d'API Datadog est requise pour envoyer les journaux à l'adresse HTTP Datadog. Pour plus d'informations, reportez-vous à Clés d'application et d'API Datadog.

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

    1. Dans votre compte Datadog, accédez à Paramètres d'organisation.

    2. Cliquez sur Clés d'API.

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

    DataDog Clés d'API

  3. Exemple de configuration d'entrée et de sortie Fluent Bit pour l'intégration 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 du bit fluide, redémarrez le bit fluide.

    sudo systemctl restart fluent-bit
    

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

Etapes suivantes

Ce tutoriel a 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 le bon expéditeur de journaux et la bonne méthode d'intégration en évaluant soigneusement 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 de SIEM pour vous assurer que la solution correspond à votre environnement et à vos exigences spécifiques.

Remerciements

Ressources de formation supplémentaires

Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir la documentation produit, consultez le site Oracle Help Center.