Collecter les journaux Fortinet FortiDDoS
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agent de collecte.
- Cliquez sur Télécharger pour télécharger le fichier d'authentification pour l'ingestion.
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
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
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sc query observiq-otel-collectorLe service doit être indiqué comme RUNNING (EN COURS D'EXÉCUTION).
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shAttendez la fin de l'installation.
Vérifiez l'installation en exécutant la commande suivante :
sudo systemctl status observiq-otel-collectorLe 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. Utilisez0.0.0.0:514pour é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
- Linux :
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.
- États-Unis :
log_type: doit êtreFORTINET_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 surEnter, puis surCtrl+X. - Windows : cliquez sur Fichier > Enregistrer.
Redémarrez l'agent Bindplane pour appliquer les modifications.
Linux
sudo systemctl restart observiq-otel-collectorVérifiez que le service est en cours d'exécution :
sudo systemctl status observiq-otel-collectorRecherchez 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-collectorUtiliser la console Services :
- Appuyez sur
Win+R, saisissezservices.msc, puis appuyez sur Entrée. - Localisez observIQ OpenTelemetry Collector.
Effectuez un clic droit, puis sélectionnez Redémarrer.
Vérifiez que le service est en cours d'exécution :
sc query observiq-otel-collectorRecherchez les erreurs dans les journaux :
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Appuyez sur
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.
- Connectez-vous à l'interface Web FortiDDoS.
- Accédez à Journal et rapport> Configuration du journal> Journal des événements à distance.
- Cliquez sur Ajouter pour créer une configuration de serveur de journaux à distance.
- 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).
- Nom : saisissez un nom descriptif (par exemple,
- 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.
- Connectez-vous à l'interface Web FortiDDoS.
- Accédez à Journal et rapport > Configuration du journal > Journal des attaques à distance.
- Cliquez sur Ajouter pour créer une configuration de serveur de journaux à distance.
- 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).
- Nom : saisissez un nom descriptif (par exemple,
- Cliquez sur Enregistrer pour enregistrer la configuration.
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 :
Sur l'hôte de l'agent Bindplane, surveillez le trafic syslog entrant :
Linux :
sudo tcpdump -i any -n port 514Windows :
Utilisez un outil de surveillance du réseau ou consultez les journaux de l'agent Bindplane.
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.
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.