Collecter les journaux du WAF Barracuda

Compatible avec:

Ce document explique comment collecter les journaux du pare-feu d'application Web (WAF) Barracuda à l'aide de Bindplane. L'analyseur extrait les champs des journaux au format JSON et Syslog, les normalise et les met en correspondance avec le modèle de données unifié (UDM). Il gère différents types de journaux (trafic, pare-feu Web) et effectue des transformations conditionnelles en fonction des valeurs des champs, y compris la résolution d'adresses IP/d'hôtes, le mappage de la directionnalité et la normalisation de la gravité.

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é au WAF Barracuda.

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 le numéro client Google SecOps

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

Installer l'agent Bindplane

Installation de Windows

  1. Ouvrez l'invite de commande 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 des 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
    

Autres ressources d'installation

Configurer l'agent Bindplane pour qu'il ingère les journaux Syslog et les envoie à 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 (nano, vi ou Bloc-notes, par exemple).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    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: SYSLOG
                namespace: barracuda_waf
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Remplacez le port et l'adresse IP dans votre infrastructure si nécessaire.

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

  5. Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification d'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 WAF Barracuda

  1. Connectez-vous à la console Barracuda WAF à l'aide d'identifiants administrateur.
  2. Cliquez sur l'onglet Avancé > Exporter les journaux.
  3. Dans la section Exporter les journaux, cliquez sur Ajouter un serveur de journaux d'exportation.
  4. Indiquez les valeurs suivantes :
    • Nom: saisissez un nom pour le transpondeur Google SecOps.
    • Type de serveur de journaux: sélectionnez Syslog.
    • Adresse IP ou nom d'hôte: saisissez l'adresse IP de Bindplane.
    • Port: saisissez le port Bindplane.
    • Type de connexion: sélectionnez le type de connexion TCP (TCP est recommandé). Toutefois, les protocoles UDP ou SSL peuvent également être utilisés.
    • Valider le certificat du serveur: sélectionnez Non.
    • Certificat client: sélectionnez Aucun.
    • Code temporel et nom d'hôte du journal: sélectionnez Oui.
    • Cliquez sur Ajouter.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
action security_result.action Si action est DENY, définissez la valeur sur BLOCK. Sinon, définissez la valeur sur ALLOW (spécifiquement pour le type de journal WF). Utilisé également pour les événements de pare-feu génériques.
appProtocol network.application_protocol Si appProtocol correspond à TLSv, définissez la valeur sur HTTPS. Sinon, utilisez la valeur appProtocol.
attackDetails security_result.description Extrait du journal brut pour le type de journal WF.
attackType security_result.summary Fait partie de security_result.summary, combiné à ruleType.
bytesReceived network.received_bytes Converti en entier sans signature et mappé pour le type de journal TR.
bytesSent network.sent_bytes Converti en entier sans signature et mappé pour le type de journal TR.
hostName target.hostname Si hostName n'est pas une adresse IP, utilisez sa valeur. Sinon, il est fusionné dans target.ip.
httpMethod loginId principal.user.userid Mappé pour le type de journal TR lorsqu'il n'est pas égal à emptyToken.
logType metadata.product_event_type Si la valeur est TR, définissez metadata.product_event_type sur Barracuda Access Log. Si la valeur est WF, définissez-la sur Barracuda Web Firewall Log.
message metadata.description Utilisé lorsque desc n'est pas vide.
referrer network.http.referral_url Mappé pour le type de journal TR lorsqu'il n'est pas égal à emptyToken.
responseCode network.http.response_code Converti en entier et mappé pour le type de journal TR.
rule security_result.rule_name Mappé pour le type de journal WF.
ruleType security_result.summary Fait partie de security_result.summary, combiné à attackType.
sec_desc security_result.rule_name Utilisé pour les événements de pare-feu génériques.
server target.ip Fusionné avec target.ip.
serv target.ip Fusionné avec target.ip.
severity security_result.severity, is_alert, is_significant Pour le type de journal WF: converti en majuscules. Si la valeur est EMERGENCY, ALER ou CRITICAL, définissez security_result.severity sur CRITICAL, is_alert sur "true" et is_significant sur "true". Si la valeur est ERROR, définissez-la sur HIGH. Si la valeur est WARNING, définissez-la sur MEDIUM. Si la valeur est NOTICE, définissez-la sur LOW. Sinon, définissez-le sur INFORMATIONAL.
src principal.ip Utilisé également pour les événements de pare-feu génériques et certaines mises à jour d'état.
srcPort principal.port Converti en entier.
target targetPort target.port Converti en entier.
time metadata.event_timestamp.seconds, metadata.event_timestamp.nanos, timestamp.seconds, timestamp.nanos Combiné avec tz et analysé pour créer l'horodatage de l'événement. Les secondes et les nanosecondes sont extraites et renseignées dans les champs respectifs.
url urlParams target.url Ajouté à url s'il n'est pas égal à emptyToken pour le type de journal TR.
userAgent userName target.user.userid, target.user.user_display_name Utilisé pour les événements de pare-feu génériques. Si elle n'est pas égale à emptyToken pour le type de journal TR, elle est mappée sur target.user.user_display_name. Codé en dur sur Barracuda. Définissez cette valeur sur NETWORK_HTTP si src et target sont tous deux présents. Défini sur STATUS_UPDATE si seul src est présent. Défini sur GENERIC_EVENT par défaut ou pour d'autres scénarios, comme l'analyse CEF. Codé en dur sur BARRACUDA_WAF.

Modifications

2023-07-19

Correction de bug:

  • Analyse des journaux bruts non analysés à l'aide d'un modèle Grok.
  • Mappage de "server" sur "target.ip".

2022-09-09

  • Création d'un analyseur par défaut et migration des analyseurs personnalisés vers l'analyseur par défaut.
  • Les champs suivants sont mappés:
  • "duser" mappé sur "target.user.user_display_name".
  • "suser" mappé sur ".principal.user.user_display_name".
  • "suid" mappé sur "principal.user.userid".
  • "src" mappé sur "principal.ip".
  • "dst" mappé sur "target.ip".
  • "shost" mappé sur "principal.hostname".
  • "severity" mappé sur "security_result.severity".
  • "action" mappé sur "security_result.action".
  • "user_name" mappé sur "target.user.userid".
  • "domain_name" mappé sur "target.domain.name".
  • "mac_address" mappé à "principal.mac".
  • "direction" mappé sur "network.direction".
  • "ip_protocol" mappé sur "network.ip_protocol".
  • "summary" mappé sur "security_result.summary".

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