Collecter les journaux AlgoSec Security Management
Ce document explique comment ingérer des journaux AlgoSec Security Management dans Google Security Operations à l'aide d'un agent Bindplane. L'analyseur extrait les champs, en gérant les journaux au format CEF et non-CEF. Il analyse les champs courants tels que les codes temporels, les adresses IP et les détails des événements, puis les mappe à l'UDM en fonction du produit (Suite, Firewall Analyzer, FireFlow) et de l'ID d'événement, en définissant les champs de métadonnées et de résultats de sécurité appropriés. Il gère également des types d'événements spécifiques tels que les connexions/déconnexions, les alertes administratives et les rapports d'analyse, en extrayant les détails pertinents et en définissant les niveaux de gravité.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec
systemd
. - Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un 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 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
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" /quiet
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.sh
Ressources d'installation supplémentaires
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. En règle générale, il se trouve dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: ALGOSEC raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.Mettez à jour
/path/to/ingestion-authentication-file.json
en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
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 bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
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-ng
Sauvegardez la configuration existante :
cp syslog-ng.conf syslog-ng.conf.orig
Modifiez le fichier de configuration syslog-ng :
vi syslog-ng.conf
Ajoutez les lignes suivantes pour définir le serveur syslog distant :
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Remplacez
<bindplane-server-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
Facultatif : 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.conf
pour le modifier.vi /etc/syslog.conf
Ajoutez la ligne suivante au fichier :
local0.*@<BindplaneAgent>
.- Remplacez
<BindplaneAgent>
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-ng
Sauvegardez la configuration existante :
cp syslog-ng.conf syslog-ng.conf.orig
Modifiez le fichier de configuration syslog-ng :
vi syslog-ng.conf
Ajoutez les éléments suivants pour définir le serveur syslog distant :
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Remplacez
<bindplane-server-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
Vé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-ng
Sauvegardez la configuration existante :
cp syslog-ng.conf syslog-ng.conf.orig
Modifiez le fichier de configuration syslog-ng :
vi syslog-ng.conf
Ajoutez les éléments suivants pour définir le serveur syslog distant :
destination d_remote { udp("<bindplane-server-ip>" port(514)); }; log { source(s_sys); destination(d_remote); };
- Remplacez
<bindplane-server-ip>
par l'adresse IP de votre serveur syslog.
- 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. Elle est également utilisée 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 extraire les champs risk_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 est également utilisé pour 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 Requestor 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 dans les 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. |
(Logique de l'analyseur) | extensions.auth.type |
Codé en dur sur MACHINE . |
(Logique de l'analyseur) | security_result.action |
Déterminé en fonction de event_id et d'autres champs. Généralement défini sur ALLOW ou BLOCK . |
(Logique de l'analyseur) | security_result.category |
Codé en dur sur POLICY_VIOLATION pour les événements Firewall Analyzer. |
(Logique de l'analyseur) | security_result.description |
Construit à partir d'autres champs, il fournit le contexte et les détails de l'événement. |
(Logique de l'analyseur) | security_result.severity |
Déterminé en fonction des champs event_id , msg et d'autres. Généralement défini sur LOW , MEDIUM ou HIGH . |
(Logique de l'analyseur) | metadata.event_type |
Déterminé en fonction de event_id et d'autres champs. Il peut s'agir, par exemple, de USER_LOGIN , USER_LOGOUT , USER_RESOURCE_ACCESS , GENERIC_EVENT , STATUS_UNCATEGORIZED , SCAN_HOST , NETWORK_CONNECTION et STATUS_UPDATE . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.