Collecter les journaux Brocade ServerIron
Cet analyseur extrait des champs des messages syslog Brocade ServerIron à l'aide d'une correspondance d'expression régulière et les met en correspondance avec le modèle de données unifié (UDM). Il gère différents formats de journaux, y compris l'état du réseau, l'authentification des utilisateurs et les événements de sécurité. L'analyseur effectue des conversions et un enrichissement de type de données si nécessaire.
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 l'application derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un accès privilégié à l'instance Brocade ServerIron.
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.
Obtenir le numéro client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- Copiez et sauvegardez l'ID client dans la section Détails de l'organisation.
Installer l'agent BindPlane
- Pour l'installation sous Windows, exécutez le script suivant:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Pour l'installation Linux, exécutez le script suivant:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Pour en savoir plus sur les options d'installation, consultez ce guide d'installation.
Configurer l'agent BindPlane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez à la machine sur laquelle BindPlane est installé.
Modifiez le fichier
config.yaml
comme suit :receivers: tcplog: # 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: Brocade_ServerIron raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
Redémarrez l'agent BindPlane pour appliquer les modifications:
sudo systemctl restart bindplane
Configurer l'exportation syslog à partir de Brocade ServerIron ADX
Connectez-vous à l'appareil ADX et accédez au mode de configuration globale:
enable configure terminal
Activez la journalisation Syslog:
logging on
Spécifiez l'adresse IP ou le nom d'hôte et le port du serveur syslog, y compris le protocole souhaité (Bindplane):
logging host <syslog-server-ip> [udp | tcp] port <port-number>
Exemple pour TCP sur le port 54525:
logging host 10.10.10.10 tcp port 54525
Facultatif: définissez le service Syslog (local0 à local7):
logging facility local0
Définissez le niveau de gravité minimal des journaux à envoyer au serveur syslog:
logging trap <severity-level>
Enregistrez la configuration:
write memory
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
%{GREEDYDATA} | metadata.description | Le champ %{GREEDYDATA} est mappé sur metadata.description lorsqu'il correspond au format "-- %{GREEDYDATA} --". |
%{GREEDYDATA:auth_result} | security_result.description | Le champ %{GREEDYDATA:auth_result} est concaténé avec le champ %{GREEDYDATA:desc} pour former security_result.description lorsque %{GREEDYDATA:desc} est présent. |
%{GREEDYDATA:desc} | security_result.description | Le champ %{GREEDYDATA:desc} permet de renseigner le champ security_result.description. Il peut être concaténé avec d'autres champs en fonction du format de journal brut. |
%{GREEDYDATA:login_to} | security_result.description | Le champ %{GREEDYDATA:login_to} est concaténé avec le champ %{GREEDYDATA:desc} pour former security_result.description lorsque %{GREEDYDATA:desc} est présent. |
%{GREEDYDATA:user} | target.user.userid | Le champ %{GREEDYDATA:user} est mappé sur target.user.userid. |
%{HOST:principal_host} | principal.hostname | Le champ %{HOST:principal_host} est mappé sur principal.hostname. |
%{HOST:target_host} | target.hostname | Le champ %{HOST:target_host} est mappé sur target.hostname. |
%{INT:http_port} | additional.fields.value.string_value | Le champ %{INT:http_port} est mappé sur additional.fields.value.string_value avec la clé "Port HTTP". |
%{INT:target_port} | target.port | Le champ %{INT:port_cible} est mappé sur "port_cible" et converti en entier. |
%{INT:telnet_port} | additional.fields.value.string_value | Le champ %{INT:telnet_port} est mappé sur additional.fields.value.string_value avec la clé "Port Telnet". |
%{INT:tftp_port} | additional.fields.value.string_value | Le champ %{INT:tftp_port} est mappé sur additional.fields.value.string_value avec la clé "Port TFTP". |
%{IP:principal_ip} | principal.ip | Le champ %{IP:principal_ip} est mappé sur principal.ip. |
%{IP:target_ip} | target.ip | Le champ %{IP:target_ip} est mappé sur target.ip. |
%{IPV4:principal_ip} | principal.ip | Le champ %{IPV4:principal_ip} est mappé sur principal.ip. |
%{IPV4:target_ip} | target.ip | Le champ %{IPV4:target_ip} est mappé sur target.ip. |
%{MAC:principal_mac} | principal.mac | Le champ %{MAC:principal_mac} est mappé sur principal.mac après avoir été converti au format [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}. |
%{USERNAME:target_host} | target.hostname | Le champ %{USERNAME:target_host} est mappé sur target.hostname. |
%{USERNAME:user} | target.user.userid | Le champ %{USERNAME:user} est mappé sur target.user.userid. |
%{WORD:auth_result} | security_result.description | Le champ %{WORD:auth_result} est concaténé avec le champ %{GREEDYDATA:desc} pour former security_result.description lorsque %{GREEDYDATA:desc} est présent. |
%{WORD:proto} | network.application_protocol | Le champ %{WORD:proto} est mappé sur network.application_protocol lorsque sa valeur est "SSH". |
timestamp | metadata.event_timestamp | Le champ d'horodatage est extrait des données de journal brutes à l'aide d'un format grok et converti en objet code temporel. |
extensions.auth.type | La valeur est définie sur "MACHINE" si le champ "proto" n'est pas vide et que le champ "auth_action" est "logout" ou "login". | |
metadata.description | Le champ est renseigné avec la valeur du champ "metadata_description" s'il n'est pas vide. | |
metadata.event_type | Le champ est renseigné en fonction des valeurs d'autres champs à l'aide d'une logique conditionnelle: - STATUS_STARTUP: si l'état de port cible est "up". - STATUS_SHUTDOWN: si l'état de target_port_status est "down". : USER_LOGOUT : si proto n'est pas vide et que auth_action est "logout". : USER_LOGIN : si proto n'est pas vide et que auth_action est "login". : STATUS_UPDATE si la description des métadonnées correspond à "état modifié". - GENERIC_EVENT: si aucune des conditions ci-dessus n'est remplie. |
|
metadata.log_type | La valeur est codée en dur sur "BROCADE_SERVERIRON". | |
metadata.product_name | La valeur est codée en dur sur "ServerIron". | |
metadata.vendor_name | La valeur est codée en dur sur "Brocade". | |
security_result.action | La valeur est définie sur "BLOCK" si le champ "desc" contient "fail", ou si le champ "auth_result" contient "fail" ou "rejected". |
Modifications
2022-01-13
- Analyseur ajouté