Collecter les journaux Cisco Stealthwatch

Compatible avec :

Ce document explique comment collecter les journaux Cisco Secure Network Analytics (anciennement Stealthwatch) dans Google Security Operations à l'aide de Bindplane. L'analyseur gère deux formats de journaux Cisco Stealthwatch : l'un avec des informations sur les adresses IP client/serveur et les paquets, et l'autre avec des ID d'appareil et des nombres d'octets. Il extrait les champs, les convertit dans les types de données appropriés, les mappe à l'UDM et définit les champs de métadonnées tels que le fournisseur, le produit et le type d'événement en fonction du contenu et du format du journal.

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é à Cisco Stealthwatch.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres du SIEM > Agents de collecte.
  3. 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

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Profil.
  3. Copiez et enregistrez le numéro client de la section Informations sur l'organisation.

Installer l'agent Bindplane

Installation de fenêtres

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation de Linux

  1. Ouvrez un terminal avec les droits root ou sudo.
  2. 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

Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    1. 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.
    2. Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou le Bloc-notes).
  2. 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: CISCO_STEALTHWATCH
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.

  4. Remplacez <customer_id> par le numéro client réel.

  5. 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 le syslog Cisco Secure Network Analytics (anciennement Stealthwatch)

  1. Connectez-vous à l'UI Web de la console de gestion.
  2. Accédez à Configuration > Gestion des réponses.
  3. Modifier le format Syslog :

    • Nom : saisissez un nom pour le format syslog.
    • Description : ajoutez une description du format.
    • Facility (Établissement) : défini sur Local 0
    • Gravité : définie sur Informational.
    • Dans le champ Message, collez le format suivant :
    Lancope|StealthWatch|time|{time}|target_hostname|{target_hostname}|alarm_severity_id|{alarm_severity_id}|alarm_type_id|{alarm_type_id}|alarm_type_description|{alarm_type_description}|port|{port}|target_ip|{target_ip}|target_mac_address|{target_mac_address}|target_label|{target_label}|alarm_type_name|{alarm_type_name}|source_hostname|{source_hostname}|source_ip|{source_ip}|source_mac_address|{source_mac_address}|source_username|{source_username}|device_ip|{device_ip}|device_name|{device_name}|details|{details}|protocol|{protocol}|alarm_id|{alarm_id}|alarm_category_name|{alarm_category_name}|start_active_time|{start_active_time}| end_active_time|{end_active_time}
    
  4. Cliquez sur OK.

  5. Accédez à Gestion des réponses > Actions > Ajouter un message Syslog.

  6. Configurer le redirecteur Syslog :

    • Nom : saisissez le nom du transmetteur Google SecOps Bindplane.
    • Description : saisissez la description du transmetteur Google SecOps Bindplane.
    • Adresse IP : saisissez l'adresse IP de l'agent Bindplane.
    • Port : saisissez le numéro de port de l'agent Bindplane, par exemple 514.
    • Format : sélectionnez le format créé à l'étape 3.
  7. Cliquez sur OK.

Configurer les noms de règles pour Cisco Secure Network Analytics (anciennement Stealthwatch)

  1. Accédez à Configuration > Gestion des réponses.
  2. Sélectionnez Règles > Ajouter > Alarmes système SMC.
  3. Cliquez sur OK.
  4. Dans la boîte de dialogue Types de règles, sélectionnez une règle.
  5. Cliquez sur OK.
  6. Dans la boîte de dialogue Règle, procédez comme suit :
    • Nom : saisissez un nom pour la règle.
    • Cette règle se déclenche si : sélectionnez N'importe quel, Gravité et Informationnel dans les listes respectives.
  7. Cliquez sur OK.
  8. Sélectionnez Actions > Ajouter.
  9. Sélectionnez l'action que vous avez créée précédemment.
  10. Cliquez sur OK, puis de nouveau sur OK.
  11. Répétez les étapes précédentes pour renommer les trois options suivantes dans la section Règle :
    • Mécanisme de collecte des journaux compatible : Syslog
    • Mécanisme de collecte des journaux préféré : Syslog
    • Diagramme logique du flux d'événements : serveur Syslog distant SMC

Table de mappage UDM

Champ de journal Mappage UDM Logique
Alarm_ID additional.fields[?key=='Alarm_ID'].value.string_value La valeur de Alarm_ID du journal brut est placée dans une structure additional.fields imbriquée sous la clé Alarm_ID.
ClientBytes network.sent_bytes ClientBytes du journal brut est converti en entier non signé et mappé.
ClientIP principal.ip ClientIP du journal brut est mappé.
ClientPort principal.port ClientPort du journal brut est converti en entier et mappé.
CPayload Non mappé Ce champ n'est pas utilisé dans l'UDM final.
DestIPv4Address target.ip DestIPv4Address du journal brut est mappé.
DestPort target.port DestPort du journal brut est converti en entier et mappé.
details security_result.summary La valeur de details du journal brut, sans les guillemets doubles, est mappée.
FC intermediary.ip FC du journal brut est mappé.
host.country principal.location.country_or_region host.country du journal brut est mappé.
host.hostGroupNames about.group.group_display_name Chaque élément du tableau host.hostGroupNames du journal brut est précédé de host: et mappé en tant qu'objet about distinct.
host.ipAddress principal.ip host.ipAddress du journal brut est mappé.
hostBytes network.sent_bytes hostBytes du journal brut est converti en entier non signé et mappé.
InPackets additional.fields[?key=='InPackets'].value.string_value La valeur de InPackets du journal brut est placée dans une structure additional.fields imbriquée sous la clé InPackets.
inputSNMPIface additional.fields[?key=='inputSNMPIface'].value.string_value La valeur de inputSNMPIface du journal brut est placée dans une structure additional.fields imbriquée sous la clé inputSNMPIface.
LastTime Non mappé Dans certains cas, ce champ est analysé pour obtenir le code temporel de l'événement, mais il n'est pas directement mappé à l'UDM.
MessageSourceAddress principal.ip MessageSourceAddress du journal brut est mappé.
method network.http.method method du journal brut est mappé.
outputSNMPIface additional.fields[?key=='outputSNMPIface'].value.string_value La valeur de outputSNMPIface du journal brut est placée dans une structure additional.fields imbriquée sous la clé outputSNMPIface.
PAAppID Non mappé Ce champ n'est pas utilisé dans l'UDM final.
peer.country target.location.country_or_region peer.country du journal brut est mappé.
peer.hostGroupNames about.group.group_display_name Chaque élément du tableau peer.hostGroupNames du journal brut est précédé de peer: et mappé en tant qu'objet about distinct.
peer.ipAddress target.ip peer.ipAddress du journal brut est mappé.
peerBytes network.received_bytes peerBytes du journal brut est converti en entier non signé et mappé.
peerPackets Non mappé Ce champ n'est pas utilisé dans l'UDM final.
Protocol Non mappé Ce champ est analysé pour déterminer le network.ip_protocol, mais n'est pas directement mappé.
ProtocolIdentifier Non mappé Ce champ est utilisé pour dériver network.ip_protocol, mais n'est pas directement mappé.
reportName metadata.product_event_type reportName du journal brut est mappé.
ServerBytes network.received_bytes ServerBytes du journal brut est converti en entier non signé et mappé.
ServerIP target.ip ServerIP du journal brut est mappé.
ServerPort target.port ServerPort du journal brut est converti en entier et mappé.
Service Non mappé Ce champ n'est pas utilisé dans l'UDM final.
sid target.user.windows_sid sid du journal brut est mappé.
SourceModuleName target.resource.name SourceModuleName du journal brut est mappé.
SourceModuleType observer.application SourceModuleType du journal brut est mappé.
SourcePort principal.port SourcePort du journal brut est converti en entier et mappé.
sourceIPv4Address principal.ip sourceIPv4Address du journal brut est mappé.
SPayload Non mappé Ce champ n'est pas utilisé dans l'UDM final.
src_ip principal.ip src_ip du journal brut est mappé.
StartTime Non mappé Dans certains cas, ce champ est analysé pour obtenir le code temporel de l'événement, mais il n'est pas directement mappé à l'UDM.
time Non mappé Dans certains cas, ce champ est analysé pour obtenir le code temporel de l'événement, mais il n'est pas directement mappé à l'UDM.
timestamp Non mappé Ce champ est analysé pour obtenir le code temporel de l'événement, mais n'est pas directement mappé à l'UDM.
UserName principal.user.user_display_name UserName du journal brut est mappé.
Version metadata.product_version Version du journal brut est converti en chaîne et mappé.
N/A metadata.event_timestamp Le code temporel de l'événement est dérivé de différents champs (LastTime, time, timestamp, StartTime) en fonction du format du journal, ou du champ create_time si aucun autre code temporel n'est disponible.
N/A metadata.log_type Toujours défini sur CISCO_STEALTHWATCH.
N/A metadata.vendor_name Toujours défini sur Cisco.
N/A metadata.event_type Déterminé par la logique de l'analyseur en fonction du contenu du journal. Il peut s'agir de NETWORK_CONNECTION, USER_STATS, USER_UNCATEGORIZED, FILE_OPEN, FILE_DELETION ou FILE_UNCATEGORIZED.
N/A network.ip_protocol Déterminé par la logique de l'analyseur en fonction des champs Protocol ou ProtocolIdentifier. Il peut s'agir de TCP, UDP ou ICMP.
action security_result.action_details La valeur de action du journal brut est mappée.
action security_result.action Dérivé du champ action. Si action est défini sur SUCCESS, ce champ est défini sur ALLOW. Sinon, il est défini sur BLOCK.
category security_result.category_details La valeur de category du journal brut est mappée.
description security_result.description Si description et file_type sont tous deux présents dans le journal brut, ils sont concaténés et mappés.
desc metadata.description La valeur de desc du journal brut, sans les guillemets doubles, est mappée.
failuer_reason security_result.summary Si failuer_reason et file_type sont tous deux présents dans le journal brut, ils sont concaténés et mappés.
file_path target.file.full_path file_path du journal brut est mappé.
file_type target.file.mime_type file_type du journal brut est mappé.
hostname principal.hostname hostname du journal brut est mappé.
ip principal.ip ip du journal brut est mappé.
ipf intermediary.ip ipf du journal brut est mappé.
ipt target.ip ipt du journal brut est mappé.
process_id target.process.pid process_id du journal brut est mappé.
protocol network.application_protocol protocol du journal brut est mappé.
security_res.severity security_result.severity Si severity est défini sur Minor, ce champ est défini sur INFORMATIONAL. S'il est défini sur Major, il est défini sur ERROR.severity
session_id network.session_id session_id du journal brut est mappé.
severity Non mappé Ce champ est utilisé pour dériver security_result.severity, mais n'est pas directement mappé.
Source_HG principal.location.country_or_region Source_HG du journal brut est mappé.
Source_HostSnapshot principal.url Source_HostSnapshot du journal brut est mappé.
Target_HostSnapshot target.url Target_HostSnapshot du journal brut est mappé.
user_name principal.user.userid user_name du journal brut est mappé.

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.