Collecter les journaux AlgoSec Security Management
Ce document explique comment ingérer les journaux AlgoSec Security Management dans Google Security Operations à l'aide de l'agent Bindplane.
La suite AlgoSec Security Management (ASMS) permet de gérer les règles de sécurité réseau sur les pare-feu, les plates-formes SDN et cloud. Il inclut Firewall Analyzer pour l'analyse des risques et de la conformité, FireFlow pour l'automatisation de la gestion du changement 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 de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
- Accès privilégié à AlgoSec Firewall Analyzer, FireFlow et AppViz
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du 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 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).
Ressources d'installation supplémentaires
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.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: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.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 la racine sous Linux ; utilisez1514pour les utilisateurs non racine).
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 copié depuis la console Google SecOpsendpoint: 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 :
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 dans Windows, choisissez l'une des options suivantes :
Invite de commandes 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. - 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 syslog pour Firewall Analyzer
- Connectez-vous à l'appliance AFA à l'aide de 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 quittez l'éditeur.
Redémarrez le service syslog-ng pour appliquer les modifications :
service syslog-ng restartFacultatif : Vérifiez la configuration Syslog :
- Accédez à 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 à l'appliance 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 quittez l'éditeur.
Redémarrez le service syslog-ng pour appliquer les modifications :
service syslog-ng restartVérifiez la configuration 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 quittez l'éditeur.
Redémarrez le service syslog-ng pour appliquer les modifications :
service syslog-ng restart
Table de mappage UDM
| Champ de 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 l'horodatage 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 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 que libellé à 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 permet également de 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 Firewall Analyzer. |
(Parser Logic) |
security_result.description |
Construit à partir d'autres champs, il fournit le contexte et les détails de 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 ne sont pas autorisés. |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.