Collecter les journaux Brocade ServerIron
Cet analyseur extrait les champs des messages syslog Brocade ServerIron à l'aide de la correspondance des expressions régulières et les mappe au 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 les conversions et l'enrichissement des types 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 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é à 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 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
- Pour installer sous Windows, exécutez le script suivant :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Pour installer sous 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
- Vous trouverez d'autres options d'installation dans ce guide d'installation.
Configurer l'agent Bindplane pour ingérer les journaux Syslog et les 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 passez en 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 la fonctionnalité 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
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
%{GREEDYDATA} | metadata.description | Le champ %{GREEDYDATA} est mappé sur metadata.description lorsqu'il correspond au modèle "-- %{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} est utilisé pour renseigner le champ security_result.description. Il peut être concaténé avec d'autres champs en fonction du format du 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é à target.user.userid. |
%{HOST:principal_host} | principal.hostname | Le champ %{HOST:principal_host} est mappé à 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é "HTTP Port". |
%{INT:target_port} | target.port | Le champ %{INT:target_port} est mappé à target.port et converti en nombre 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é "Telnet Port". |
%{INT:tftp_port} | additional.fields.value.string_value | Le champ %{INT:tftp_port} est mappé sur additional.fields.value.string_value avec la clé "TFTP Port". |
%{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é à 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é à 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 analysé à partir des données brutes du journal à l'aide d'un modèle Grok et converti en objet d'horodatage. |
extensions.auth.type | La valeur est définie sur "MACHINE" si le champ proto n'est pas vide et si 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 target_port_status est défini sur "up". : STATUS_SHUTDOWN si target_port_status est défini sur "down". : USER_LOGOUT si le proto n'est pas vide et que auth_action est "logout". : USER_LOGIN si le proto n'est pas vide et que auth_action est défini sur "login". : STATUS_UPDATE si metadata_description correspond à "state changed" (é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". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.