Collecter les journaux Fortinet FortiDDoS

Compatible avec :

Ce guide explique comment ingérer des journaux Fortinet FortiDDoS dans Google Security Operations à l'aide de l'agent Bindplane.

Fortinet FortiDDoS est un dispositif d'atténuation des attaques DDoS qui protège les réseaux et les applications contre les attaques par déni de service distribué. FortiDDoS fournit une détection des attaques en temps réel, une atténuation automatisée et des rapports détaillés pour les attaques au niveau du réseau et des applications.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps.
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd.
  • Connectivité réseau entre l'agent Bindplane et l'appliance Fortinet FortiDDoS.
  • 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'interface Web FortiDDoS avec autorisation de lecture/écriture pour les paramètres de journaux et de rapports.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agent de collecte.
  3. Cliquez sur Télécharger pour télécharger le fichier d'authentification pour l'ingestion.
  4. Enregistrez le fichier de manière sécurisée sur le système sur lequel l'agent 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/fortiddos:
    compression: gzip
    creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
    customer_id: 'your-customer-id-here'
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: FORTINET_FORTIDDOS
    raw_log_field: body
    ingestion_labels:
        env: production

service:
    pipelines:
    logs/fortiddos_to_chronicle:
        receivers:
        - udplog
        exporters:
        - chronicle/fortiddos

Paramètres de configuration

Remplacez les espaces réservés suivants :

Configuration du récepteur :

  • listen_address : adresse IP et port à écouter. Utilisez 0.0.0.0:514 pour écouter sur toutes les interfaces sur le port 514.

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
  • customer_id : ID client de l'étape précédente.
  • 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 : doit être FORTINET_FORTIDDOS.
  • ingestion_labels : libellés facultatifs au format YAML.

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.

  • Linux

    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
      
  • Windows

    Choisissez l'une des options suivantes :

    • À l'aide de l'invite de commandes ou de PowerShell en tant qu'administrateur :

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Utiliser la 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 la journalisation à distance des journaux d'événements FortiDDoS

FortiDDoS est compatible avec deux types de journalisation syslog à distance : les journaux d'événements pour les événements système et les journaux d'attaque pour les événements d'attaque DDoS. Configurez les deux pour envoyer des journaux complets à Google SecOps.

  1. Connectez-vous à l'interface Web FortiDDoS.
  2. Accédez à Journal et rapport> Configuration du journal> Journal des événements à distance.
  3. Cliquez sur Ajouter pour créer une configuration de serveur de journaux à distance.
  4. Fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Chronicle-Event-Logs).
    • Adresse : saisissez l'adresse IP de l'hôte de l'agent Bindplane.
    • Port : saisissez 514.
    • Niveau de journalisation minimal : sélectionnez le niveau de gravité minimal à transférer (par exemple, Information ou Notification).
    • Installation : sélectionnez une installation syslog (par exemple, local0).
  5. Cliquez sur Enregistrer pour enregistrer la configuration.

Configurer la journalisation à distance du journal des attaques FortiDDoS

La journalisation à distance des journaux d'attaque est configurée par profil de protection de service (SPP). Vous devez configurer le transfert des journaux d'attaque pour chaque SPP que vous souhaitez surveiller.

  1. Connectez-vous à l'interface Web FortiDDoS.
  2. Accédez à Journal et rapport > Configuration du journal > Journal des attaques à distance.
  3. Cliquez sur Ajouter pour créer une configuration de serveur de journaux à distance.
  4. Fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Chronicle-Attack-Logs).
    • SPP : sélectionnez le profil de protection des services à configurer.
    • Adresse : saisissez l'adresse IP de l'hôte de l'agent Bindplane.
    • Port : saisissez 514.
    • Intervalle : sélectionnez l'intervalle de reporting (par exemple, 1 minute ou 5 minutes).
  5. Cliquez sur Enregistrer pour enregistrer la configuration.
  6. Répétez les étapes 3 à 5 pour chaque SPP que vous souhaitez surveiller.

Vérifier le transfert Syslog

Après avoir configuré la journalisation à distance, vérifiez que les journaux sont envoyés à l'agent Bindplane :

  1. Sur l'hôte de l'agent Bindplane, surveillez le trafic syslog entrant :

    Linux :

    sudo tcpdump -i any -n port 514
    

    Windows :

    Utilisez un outil de surveillance du réseau ou consultez les journaux de l'agent Bindplane.

  2. Sur l'appliance FortiDDoS, générez des messages de journal de test :

    Test du journal des événements :

    • Modifiez la configuration dans l'interface Web FortiDDoS pour générer un journal des événements.

    Test du journal des attaques :

    • Attendez l'intervalle de rapport configuré (1 ou 5 minutes). FortiDDoS génère des rapports à intervalles réguliers et met deux minutes supplémentaires pour les agréger. Par exemple, les journaux signalés à la marque des cinq minutes s'afficheront sur le serveur syslog à la marque des sept minutes.
  3. Vérifiez que les journaux apparaissent dans la console Google SecOps dans un délai de cinq à dix minutes.

Table de mappage UDM

Champ du journal Mappage UDM Logique
supplémentaires supplémentaires Valeur copiée directement
additional.fields.additional_label.key Définissez sur "type".
type additional.fields.additional_label.value.string_value Valeur copiée directement
additional.fields.src_label.key Défini sur "device_id"
devid additional.fields.src_label.value.string_value Valeur copiée directement
log_id security_result.detection_fields.log_id_label.value Valeur copiée directement
security_result.detection_fields.log_id_label.key Défini sur "log_id"
métadonnées métadonnées Valeur copiée directement
desc_Data metadata.description Valeur copiée directement
sip,dip,user metadata.event_type Défini sur "NETWORK_CONNECTION" si sip et dip ne sont pas vides, sur "USER_UNCATEGORIZED" si user n'est pas vide, sur "STATUS_UPDATE" si sip n'est pas vide, ou sur "GENERIC_EVENT"
réseau réseau Valeur copiée directement
compte principal compte principal Valeur copiée directement
sip principal.asset.ip Valeur copiée directement
sip principal.ip Valeur copiée directement
date,time,tz principal.labels.date_label.value Concaténation de la date, de l'heure et du fuseau horaire avec des espaces
principal.labels.date_label.key Définie sur "date"
dir principal.labels.direction_label.value Valeur copiée directement
principal.labels.direction_label.key Défini sur "direction"
dport principal.port Converti en entier
utilisateur principal.user.userid Valeur copiée directement
security_result security_result Valeur copiée directement
direction security_result.detection_fields.direction_label.value Valeur copiée directement
security_result.detection_fields.direction_label.key Défini sur "direction"
dropcount security_result.detection_fields.dropcount_label.value Valeur copiée directement
security_result.detection_fields.dropcount_label.key Défini sur "dropcount"
evecode security_result.detection_fields.evecode_label.value Valeur copiée directement
security_result.detection_fields.evecode_label.key Définissez-le sur "evecode".
evesubcode security_result.detection_fields.evesubcode_label.value Valeur copiée directement
security_result.detection_fields.evesubcode_label.key Défini sur "evesubcode"
établissement security_result.detection_fields.facility_label.value Valeur copiée directement
security_result.detection_fields.facility_label.key Défini sur "facility" (établissement)
level security_result.detection_fields.level_label.value Valeur copiée directement
security_result.detection_fields.level_label.key Défini sur "level"
msg_id security_result.detection_fields.msg_id_label.value Valeur copiée directement
security_result.detection_fields.msg_id_label.key Défini sur "msg_id"
spp_name security_result.detection_fields.spp_name_label.value Valeur copiée directement
security_result.detection_fields.spp_name_label.key Défini sur "spp_name"
spp security_result.detection_fields.spp_label.value Valeur copiée directement
security_result.detection_fields.spp_label.key Défini sur "spp"
sppoperatingmode security_result.detection_fields.sppoperatingmode_label.value Valeur copiée directement
security_result.detection_fields.sppoperatingmode_label.key Définissez-le sur "sppoperatingmode".
subnet_name security_result.detection_fields.subnet_name_label.value Valeur copiée directement
security_result.detection_fields.subnet_name_label.key Défini sur "subnet_name"
subnetid security_result.detection_fields.subnetid_label.value Valeur copiée directement
security_result.detection_fields.subnetid_label.key Définissez-le sur "subnetid".
subtype security_result.detection_fields.subtype_label.value Valeur copiée directement
security_result.detection_fields.subtype_label.key Définissez sur "sous-type".
cible cible Valeur copiée directement
baisse target.asset.ip Valeur copiée directement
baisse target.ip Valeur copiée directement

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