Collecter les journaux NetApp ONTAP
Ce document explique comment collecter les journaux NetApp ONTAP via Syslog. L'analyseur extrait les champs des messages syslog à l'aide d'expressions régulières. Il mappe ensuite les champs extraits aux champs UDM (Unified Data Model) correspondants, ce qui permet de convertir les données de journaux brutes en un format structuré pour l'analyse de sécurité.
Avant de commencer
- Assurez-vous de disposer d'une instance Google Security Operations.
- 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 administrateur au cluster NetApp ONTAP.
- Assurez-vous qu'ONTAP peut communiquer avec le serveur Syslog (Bindplane).
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
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 below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: netapp_ontap 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émarrer l'agent Bindplane pour appliquer les modifications
Sous Linux, pour redémarrer l'agent Bindplane, exécutez la commande suivante :
sudo systemctl restart bindplane-agent
Sous Windows, pour redémarrer l'agent Bindplane, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Configurer une destination Syslog dans ONTAP
Accédez au cluster ONTAP à l'aide de SSH et remplacez
<ontap-cluster-ip>
par l'adresse IP de gestion de votre cluster ONTAP :ssh admin@<ontap-cluster-ip>
Vérifiez les filtres et les notifications d'événements existants :
event filter show event notification show
Créez une destination Syslog, puis remplacez
<syslog-server-ip>
et<syslog-server-port>
par les détails de votre serveur Syslog (Bindplane) :event notification destination create -name syslog-ems -syslog <syslog-server-ip> -syslog-port <syslog-server-port> -syslog-transport udp-unencrypted
Autres options pour -syslog-transport :
- udp-unencrypted (par défaut)
- tcp-unencrypted
- tcp-encrypted (pour TLS).
Vérifiez la destination Syslog :
event notification destination show
Configurer des filtres d'événements existants
Associez les filtres par défaut à la destination Syslog :
event notification create -filter-name no-info-debug-events -destinations syslog-ems event notification create -filter-name default-trap-events -destinations syslog-ems
Facultatif : Créer et configurer des filtres personnalisés
Filtre des événements d'authentification (connexions/déconnexions) : capture les journaux dont la description correspond à "Connexion" ou "Déconnexion" :
event filter create -filter-name auth_events event filter rule add -filter-name auth_events -type include -message-name *login* -severity info event filter rule add -filter-name auth_events -type include -message-name *logout* -severity info
Filtre des champs de détection de sécurité : capture les journaux liés à nmsdk_language, nmsdk_platform, nmsdk_version et netapp_version :
event filter create -filter-name security_fields event filter rule add -filter-name security_fields -type include -message-name *nmsdk_language* -severity info event filter rule add -filter-name security_fields -type include -message-name *nmsdk_platform* -severity info event filter rule add -filter-name security_fields -type include -message-name *nmsdk_version* -severity info event filter rule add -filter-name security_fields -type include -message-name *netapp_version* -severity info
Filtre de journaux basé sur la gravité : capture les journaux dont la gravité est "Informations" :
event filter create -filter-name severity_info event filter rule add -filter-name severity_info -type include -message-name * -severity info
Filtre d'activité réseau : capture les journaux avec src_ip et src_port :
event filter create -filter-name network_activity event filter rule add -filter-name network_activity -type include -message-name *src_ip* -severity info event filter rule add -filter-name network_activity -type include -message-name *src_port* -severity info
Filtre des journaux de cibles d'URL : capture les journaux contenant des informations sur les URL :
event filter create -filter-name url_target event filter rule add -filter-name url_target -type include -message-name *url* -severity info
Appliquez chaque filtre à la destination Syslog :
event notification create -filter-name auth_events -destinations syslog-ems event notification create -filter-name security_fields -destinations syslog-ems event notification create -filter-name severity_info -destinations syslog-ems event notification create -filter-name network_activity -destinations syslog-ems event notification create -filter-name url_target -destinations syslog-ems
Vérifier les notifications :
event notification show
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
code | Non mappé | |
description | metadata.description | Extrait du message de journal à l'aide d'un modèle Grok. Présent uniquement lorsque la description est "Déconnexion" ou "Connexion". |
intermediary_host | intermediary.hostname | Extrait du message de journal à l'aide d'un modèle Grok. |
nmsdk_language | security_result.detection_fields.value | Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "nmsdk_language". |
nmsdk_platform | security_result.detection_fields.value | Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "nmsdk_platform". |
nmsdk_version | security_result.detection_fields.value | Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "nmsdk_version". |
netapp_version | security_result.detection_fields.value | Extrait du message de journal à l'aide d'un modèle Grok. Cette valeur est ajoutée en tant que "valeur" à un objet detection_fields avec "key" = "netapp_version". |
product_event_type | metadata.product_event_type | Extrait du message de journal à l'aide d'un modèle Grok. |
security_result.summary | security_result.summary | Extrait du message de journal à l'aide d'un modèle Grok. |
de gravité, | security_result.severity | Définissez la valeur sur "INFORMATIONAL" si la gravité est "info" (non sensible à la casse). |
src_ip | principal.ip | Extrait du message de journal à l'aide d'un modèle Grok. |
src_port | principal.port | Extrait du message de journal à l'aide d'un modèle Grok. |
état | security_result.summary | Extrait du message de journal à l'aide d'un modèle Grok. |
ts | metadata.event_timestamp.seconds | Extrait du message de journal à l'aide d'un modèle Grok et converti en code temporel. |
url | target.url | Extrait du message de journal à l'aide d'un modèle Grok. |
utilisateur | target.user.userid | Extrait du message de journal à l'aide d'un modèle Grok. |
extensions.auth.type | Définissez sur "AUTHTYPE_UNSPECIFIED" si la description est "Déconnexion" ou "Connexion". | |
metadata.event_type | Définissez sur "USER_LOGIN" si la description est "Connexion de l'utilisateur". | |
metadata.event_type | Définissez sur "USER_LOGOUT" si la description est "Déconnexion de l'utilisateur". | |
metadata.event_type | Définissez la valeur sur "SCAN_UNCATEGORIZED" si la description n'est pas "Logging in" (Connexion) ou "Logging out" (Déconnexion). | |
metadata.log_type | Défini sur "NETAPP_ONTAP". | |
metadata.product_name | Défini sur "NETAPP_ONTAP". | |
metadata.vendor_name | Défini sur "NETAPP_ONTAP". | |
target.platform | Définissez la valeur sur "WINDOWS" si nmsdk_platform contient "windows" (sans tenir compte de la casse). |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.