Collecter les journaux des commutateurs Brocade
Cet analyseur extrait des champs des journaux des commutateurs Brocade à l'aide de modèles Grok correspondant à différents formats de journaux. Il mappe ensuite ces champs extraits sur des champs UDM, gère différentes structures de journaux et enrichit les données avec des métadonnées telles que des informations sur les fournisseurs et les produits. L'analyseur effectue également des transformations de données, telles que la conversion des niveaux de gravité et la gestion des messages répétés, avant de générer la sortie UDM finale.
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 administrateur à la CLI du commutateur Brocade.
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_Switch 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 d'un commutateur Brocade
- Connectez-vous au commutateur Brocade à l'aide de SSH ou de Telnet avec les identifiants appropriés.
Exécutez la commande suivante pour spécifier l'adresse IP ou le nom d'hôte et le port du serveur syslog (Bindplane):
syslogadmin --set -ip <IP> -port <Port>
Exemple :
syslogadmin --set -ip 10.10.10.10 -port 54525
Exécutez la commande suivante pour afficher les serveurs syslog configurés:
syslogadmin --show -ip
Tableau de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
application |
additional.fields[].key : "application"additional.fields[].value.string_value : |
Valeur extraite du champ application@1588 dans le journal brut lorsque le champ KV_DATA existe. |
class |
additional.fields[].key : "class"additional.fields[].value.string_value : |
Valeur extraite du champ class@1588 dans le journal brut lorsque le champ KV_DATA existe. |
domain |
principal.administrative_domain |
Valeur extraite du modèle Grok correspondant au champ domain . |
Event |
additional.fields[].key : "event_category"additional.fields[].value.string_value : |
Valeur extraite du champ arg0@1588 dans le journal brut lorsque le champ KV_DATA existe. |
event_id |
metadata.product_log_id |
Valeur extraite du modèle Grok correspondant au champ event_id . |
event_type |
metadata.product_event_type |
Valeur extraite du modèle Grok correspondant au champ event_type . |
flags |
additional.fields[].key : "flags"additional.fields[].value.string_value : |
Valeur extraite du modèle Grok correspondant au champ flags . |
Info |
metadata.description |
Valeur extraite du champ Info , analysée à l'aide de grok. |
interface |
app_protocol_src |
Valeur extraite du champ interface@1588 dans le journal brut lorsque le champ KV_DATA existe. Utilisé pour dériver network.application_protocol . |
ip |
principal.ip |
Valeur extraite du champ ip , analysée à l'aide de grok. Fusionné dans principal.ip s'il n'est pas identique à l'adresse IP extraite du champ Info . |
Info , IP Addr |
principal.ip |
Valeur extraite du champ IP Addr dans le champ Info , analysée à l'aide de grok. |
log |
additional.fields[].key : "log"additional.fields[].value.string_value : |
Valeur extraite du champ log@1588 dans le journal brut lorsque le champ KV_DATA existe. |
msg |
metadata.description |
Valeur extraite du champ msg , analysée à l'aide de grok. |
msgid |
additional.fields[].key : "msgid"additional.fields[].value.string_value : |
Valeur extraite du champ msgid@1588 dans le journal brut lorsque le champ KV_DATA existe. |
prin_host |
principal.hostname principal.asset.hostname |
Valeur extraite du modèle Grok correspondant au champ prin_host . |
product_version |
metadata.product_version |
Valeur extraite du modèle Grok correspondant au champ product_version . |
repeat_count |
additional.fields[].key : "repeat_count"additional.fields[].value.string_value : |
Valeur extraite du champ msg , analysée à l'aide de grok. |
role , user_role |
principal.user.attribute.roles[].name |
Valeur extraite du champ role@1588 ou user_role . Si la valeur est "admin", elle est remplacée par "Admin". |
sequence_number |
additional.fields[].key : "sequence_number"additional.fields[].value.string_value : |
Valeur extraite du modèle Grok correspondant au champ sequence_number . |
severity |
security_result.severity |
Valeur extraite du champ severity , analysée à l'aide de grok. Correspond aux valeurs de gravité UDM (INFORMATIONAL, ERROR, CRITICAL, MEDIUM). |
Status |
security_result.summary |
Valeur extraite du champ Status . |
switch_name |
additional.fields[].key : "switch_name"additional.fields[].value.string_value : |
Valeur extraite du modèle Grok correspondant au champ switch_name . |
target_application |
target.application |
Valeur extraite du modèle Grok correspondant au champ target_application . |
time |
additional.fields[].key : "time"additional.fields[].value.string_value : |
Valeur extraite du champ time dans le champ kv_data3 . |
timestamp |
metadata.event_timestamp.seconds |
Valeur extraite du champ timestamp , analysée à l'aide du filtre de date. |
user |
principal.user.userid principal.user.user_display_name |
Valeur extraite du champ user ou user@1588 , analysée à l'aide de grok. Copié depuis principal.hostname . Copié depuis principal.ip . Copié à partir de metadata.product_event_type ou défini sur "STATUS_UPDATE" en fonction des conditions. Copié à partir de create_time.nanos du journal. Déterminé par la logique de l'analyseur en fonction des valeurs de has_principal , has_target , has_userid et event_type . Valeurs possibles : "SYSTEM_AUDIT_LOG_UNCATEGORIZED", "STATUS_UPDATE" ou "GENERIC_EVENT". Codé en dur sur "BROCADE_SWITCH". Code codé en dur sur "BROCADE". Codé en dur sur "BROCADE_SWITCH". Dérivé du champ interface ou défini sur "SSH" si le champ interface contient "SSH". |
Modifications
2024-04-15
- Ajout de la compatibilité avec les journaux spécifiques au client.
2023-12-01
- Analyseur nouvellement créé.