Collecter les journaux AlgoSec Security Management
Version de l'analyseur : 4.0
Ce document explique comment ingérer les journaux AlgoSec Security Management dans Google Security Operations à l'aide de l'agent Bindplane.
AlgoSec Security Management Suite (ASMS) permet de gérer les règles de sécurité réseau sur les pare-feu, les plates-formes SDN et cloud. Elle inclut Firewall Analyzer pour l'analyse des risques et de la conformité, FireFlow pour l'automatisation de la gestion des modifications et AppViz pour la visibilité de la connectivité des applications.
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 - Connectivité réseau entre l'agent BindPlane et les appliances AlgoSec
- Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts conformément aux exigences de l'agent BindPlane.
- Accès privilégié à AlgoSec Firewall Analyzer, FireFlow et AppViz
Obtenir des identifiants Google SecOps pour l'agent BindPlane
Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :
- Nouveaux déploiements : utilisez l'API Chronicle (option 1).
- Anciens déploiements : continuez à utiliser le fichier d'authentification d'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
Option 1 : Créer un compte de service pour l'API Chronicle (recommandé)
- Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
- Accédez à IAM et administration > Comptes de service.
- Cliquez sur Créer un compte de service.
- Fournissez les informations de configuration suivantes :
- Nom du compte de service : saisissez un nom pour le compte (par exemple,
bindplane-ingest). - Description du compte de service : saisissez une description (par exemple,
Bindplane agent log ingestion).
- Nom du compte de service : saisissez un nom pour le compte (par exemple,
- Cliquez sur Créer et continuer.
- Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
- Cliquez sur Continue (Continuer), puis sur Done (OK).
- Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
- Cliquez sur Ajouter une clé > Créer une clé.
- Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
- Enregistrez le fichier de clé sous le nom
ingestion-auth.jsondans le répertoire du collecteur Bindplane (/opt/observiq-otel-collector/ingestion-auth.jsonsous Linux ouC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonsous Windows), ou mettez à jourcreds_file_pathdansconfig.yamlpour qu'il corresponde au chemin d'accès où vous l'enregistrez. - Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.
Option 2 : Télécharger le fichier d'authentification d'ingestion (ancienne méthode)
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Agents de collecte.
- Téléchargez le fichier d'authentification d'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 dans la section Détails de 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 Windows
- Ouvrez l'invite de commande 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 que l'installation se termine.
Vérifiez l'installation en exécutant la commande suivante :
sc query observiq-otel-collectorLe service doit s'afficher comme étant EN COURS D'EXÉCUTION.
Installation de Linux
- Ouvrez un terminal avec des privilèges 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 que l'installation se termine.
Vérifiez l'installation en exécutant la commande suivante :
sudo systemctl status observiq-otel-collectorLe service doit s'afficher 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 /opt/observiq-otel-collector/config.yamlWindows :
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifiez le fichier de configuration
Remplacez l'intégralité du contenu de
config.yamlpar la configuration suivante :receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/algosec: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: ALGOSEC raw_log_field: body service: pipelines: logs/algosec_to_chronicle: receivers: - udplog exporters: - chronicle/algosec
Paramètres de configuration
Remplacez les espaces réservés suivants :
Configuration du récepteur :
listen_address: adresse IP et port à écouter :0.0.0.0pour écouter sur toutes les interfaces (recommandé)- Le port
514est le port syslog standard (nécessite un accès racine sous Linux ; utilisez1514pour un accès non racine).
Configuration de l'exportateur :
creds_file_path: chemin d'accès complet au fichier de clé JSON du compte de service (option 1) :- Linux :
/opt/observiq-otel-collector/ingestion-auth.json - Windows :
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux :
customer_id: ID client copié depuis la console Google SecOpslocation: remplacez<LOCATION>par la région de votre instance Google SecOps (par exemple,us,europeouasia-southeast1). L'exportateur préfixechronicle.googleapis.comavec cette valeur. Pour obtenir la liste complète, consultez Points de terminaison régionaux.project: remplacez<PROJECT_NUMBER>par le numéro de projet indiqué dans IAM et administration > Paramètres.endpoint: laissez la valeur définie surchronicle.googleapis.com.
Ancien exportateur d'API d'ingestion
Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc
exporterspar ce qui suit. Définissezcreds_file_pathsur le chemin d'accès au fichier d'authentification d'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacezmalachiteingestion-pa.googleapis.compar votre point de terminaison régional (par exemple,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/algosec: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: ALGOSEC raw_log_field: body
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.
- Linux : appuyez sur
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-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
Pour redémarrer l'agent BindPlane sous Windows, choisissez l'une des options suivantes :
Invite de commande ou PowerShell en tant qu'administrateur :
net stop observiq-otel-collector && net start observiq-otel-collectorConsole Services :
- Appuyez sur
Win+R, saisissezservices.msc, puis appuyez sur Entrée. - Recherchez 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 syslog pour Firewall Analyzer
- Connectez-vous au dispositif AFA via SSH.
Accédez au répertoire de configuration syslog-ng :
cd /etc/syslog-ngSauvegardez la configuration existante :
cp syslog-ng.conf syslog-ng.conf.origModifiez le fichier de configuration syslog-ng :
vi syslog-ng.confAjoutez les lignes suivantes pour définir le serveur syslog distant :
destination d_remote { udp("<BINDPLANE_IP>" port(514)); }; log { source(s_sys); destination(d_remote); };- Remplacez
<BINDPLANE_IP>par l'adresse IP de l'agent Bindplane.
- Remplacez
Enregistrez et fermez l'éditeur.
Redémarrez le service syslog-ng pour appliquer les modifications :
service syslog-ng restartFacultatif : Vérifiez la configuration Syslog :
- Accédez à Administration > Syslog Server Settings (Administration > Paramètres du serveur Syslog).
- Cliquez sur Tester la connectivité.
Configurer syslog pour FireFlow
- Connectez-vous à la machine FireFlow en tant que root.
Ouvrez le fichier
/etc/syslog.confpour le modifier :vi /etc/syslog.confAjoutez la ligne suivante au fichier :
local0.*@<BINDPLANE_IP>- Remplacez
<BINDPLANE_IP>par l'adresse IP du serveur de l'agent BindPlane.
- Remplacez
Configurer Syslog pour AppViz
- Connectez-vous au dispositif AppViz via SSH.
Accédez au répertoire de configuration syslog-ng :
cd /etc/syslog-ngSauvegardez la configuration existante :
cp syslog-ng.conf syslog-ng.conf.origModifiez le fichier de configuration syslog-ng :
vi syslog-ng.confAjoutez les éléments suivants pour définir le serveur Syslog distant :
destination d_remote { udp("<BINDPLANE_IP>" port(514)); }; log { source(s_sys); destination(d_remote); };- Remplacez
<BINDPLANE_IP>par l'adresse IP de l'agent BindPlane.
- Remplacez
Enregistrez et fermez l'éditeur.
Redémarrez le service syslog-ng pour appliquer les modifications :
service syslog-ng restartVérifiez la configuration de syslog :
- Dans l'interface AppViz, accédez à Administration > Paramètres du serveur Syslog.
- Cliquez sur Tester la connectivité.
Configurer syslog pour les événements de connexion et de déconnexion
- Connectez-vous à l'appliance ASMS via SSH.
Accédez au répertoire de configuration syslog-ng :
cd /etc/syslog-ngSauvegardez la configuration existante :
cp syslog-ng.conf syslog-ng.conf.origModifiez le fichier de configuration syslog-ng :
vi syslog-ng.confAjoutez les éléments suivants pour définir le serveur Syslog distant :
destination d_remote { udp("<BINDPLANE_IP>" port(514)); }; log { source(s_sys); destination(d_remote); };- Remplacez
<BINDPLANE_IP>par l'adresse IP de l'agent BindPlane.
- Remplacez
Enregistrez et fermez l'éditeur.
Redémarrez le service syslog-ng pour appliquer les modifications :
service syslog-ng restart
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
by_user |
principal.user.user_display_name |
La valeur du champ by_user du journal brut est attribuée à ce champ UDM. |
collection_time |
metadata.event_timestamp |
Les champs "seconds" et "nanos" sont combinés pour créer un code temporel. |
comm |
target.process.command_line |
La valeur du champ comm extraite du champ desc à l'aide de grok est attribuée à ce champ UDM. |
datetime |
metadata.event_timestamp |
La date et l'heure sont extraites du journal brut et utilisées pour renseigner le code temporel de l'événement. |
desc |
metadata.description |
La valeur du champ desc du journal brut est attribuée à ce champ UDM lorsqu'aucune autre description n'est disponible. |
dest_ip |
target.ip |
La valeur du champ dest_ip du journal brut est attribuée à ce champ UDM. |
dest_port |
target.port |
La valeur du champ dest_port du journal brut est attribuée à ce champ UDM. |
details |
security_result.summary |
La valeur du champ details du journal brut est attribuée à ce champ UDM. |
device |
principal.asset.hostname |
La valeur du champ device du journal brut est attribuée à ce champ UDM. |
dst_ip |
target.ip |
La valeur du champ dst_ip du journal brut est attribuée à ce champ UDM. |
dst_port |
target.port |
La valeur du champ dst_port du journal brut est attribuée à ce champ UDM. |
event_id |
metadata.product_event_type |
La valeur du champ event_id du journal brut est attribuée à ce champ UDM. Il est également utilisé dans la logique de l'analyseur pour déterminer le champ metadata.event_type et d'autres champs. |
event_name |
metadata.product_event_type |
La valeur du champ event_name du journal brut est attribuée à ce champ UDM. |
firewall |
target.hostname |
La valeur du champ firewall du journal brut est attribuée à ce champ UDM. |
host |
principal.hostname |
La valeur du champ host du journal brut est attribuée à ce champ UDM. |
host_type |
principal.asset.category |
La valeur du champ host_type du journal brut est attribuée à ce champ UDM. |
iporhost |
principal.ip/principal.hostname/target.ip/target.hostname/observer.ip/observer.hostname |
Si la valeur est une adresse IP, elle est mappée sur principal.ip,target.ip, ou observer.ip en fonction de la source du journal et du type d'événement. S'il s'agit d'un nom d'hôte, il est mappé sur principal.hostname,target.hostname, ou observer.hostname. |
IP |
principal.ip |
La valeur du champ IP du journal brut est attribuée à ce champ UDM. |
kv_data |
security_result.summary |
La valeur du champ kv_data du journal brut est attribuée à ce champ UDM. |
log_type |
metadata.log_type |
Codé en dur sur ALGOSEC. |
metric |
security_result.action_details |
La valeur du champ metric du journal brut est attribuée à ce champ UDM. |
msg |
security_result.summary/security_result.description |
La valeur du champ msg du journal brut est utilisée pour renseigner le récapitulatif ou la description du résultat de sécurité, selon le contexte. Il est également utilisé pour les champs extractrisk_level,risk_count,risk_code, et risk_title. |
pid |
target.process.pid |
La valeur du champ pid extraite du champ desc à l'aide de grok est attribuée à ce champ UDM. |
product |
metadata.product_name |
La valeur du champ product du journal brut est attribuée à ce champ UDM. |
report |
security_result.description |
La valeur du champ report du journal brut est incluse dans la description du résultat de sécurité. |
report_data.Device IP |
target.ip |
La valeur du champ Device IP des données JSON analysées est attribuée à ce champ UDM. |
report_data.Highest Risk Level |
security_result.description |
La valeur du champ Highest Risk Level des données JSON analysées est incluse dans la description du résultat de sécurité. Il permet également de déterminer la gravité du résultat de sécurité. |
report_data.Security Rating Score |
security_result.description |
La valeur du champ Security Rating Score des données JSON analysées est incluse dans la description du résultat de sécurité. |
Requestor.Email |
principal.user.email_addresses |
La valeur du champ Email dans l'objet Request des données JSON analysées est attribuée à ce champ UDM. |
Requestor.Name |
principal.user.user_display_name |
La valeur du champ Name dans l'objet Requestor des données JSON analysées est attribuée à ce champ UDM. |
RequestType |
target.resource.attribute.labels |
La valeur du champ RequestType du journal brut est ajoutée en tant qu'étiquette à la ressource cible. |
risk_title |
security_result.summary |
La valeur du champ risk_title du journal brut est attribuée à ce champ UDM. |
src_ip |
principal.ip |
La valeur du champ src_ip du journal brut est attribuée à ce champ UDM. |
src_port |
principal.port |
La valeur du champ src_port du journal brut est attribuée à ce champ UDM. |
status |
security_result.description/security_result.action_details |
La valeur du champ status du journal brut est incluse dans la description du résultat de sécurité ou des détails de l'action, selon le contexte. Il est également utilisé pour déterminer la gravité du résultat de sécurité. |
target_app |
target.application |
La valeur du champ target_app du journal brut est attribuée à ce champ UDM. |
TemplateName |
metadata.description |
La valeur du champ TemplateName du journal brut est attribuée à ce champ UDM. |
url |
security_result.url_back_to_product |
La valeur du champ url du journal brut est attribuée à ce champ UDM. |
user |
principal.user.userid |
La valeur du champ user du journal brut est attribuée à ce champ UDM. |
vendor |
metadata.vendor_name |
La valeur du champ vendor du journal brut est attribuée à ce champ UDM. |
version |
metadata.product_version |
La valeur du champ version du journal brut est attribuée à ce champ UDM. |
WorkFlow |
target.resource.attribute.labels |
La valeur du champ WorkFlow du journal brut est ajoutée en tant que libellé à la ressource cible. |
(Parser Logic) |
extensions.auth.type |
Codé en dur sur MACHINE. |
(Parser Logic) |
security_result.action |
Déterminé en fonction de event_id et d'autres champs. Généralement défini sur ALLOW or BLOCK. |
(Parser Logic) |
security_result.category |
Codé en dur sur POLICY_VIOLATION pour les événements de l'Analyseur de pare-feu. |
(Parser Logic) |
security_result.description |
Construit à partir d'autres champs, il fournit le contexte et des détails sur l'événement. |
(Parser Logic) |
security_result.severity |
Déterminé en fonction de event_id,msg, et d'autres champs. Généralement défini sur LOW,MEDIUM, ou HIGH. |
(Parser Logic) |
metadata.event_type |
Déterminé en fonction de event_id et d'autres champs. (par exemple, USER_LOGIN,USER_LOGOUT,USER_RESOURCE_ACCESS,GENERIC_EVENT,STATUS_UNCATEGORIZED,SCAN_HOST,NETWORK_CONNECTION, et STATUS_UPDATE). |
Journal des modifications
Afficher le journal des modifications de ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.