Collecter les journaux Barracuda WAF

Compatible avec :

Ce document explique comment collecter les journaux Barracuda Web Application Firewall (WAF) à l'aide de Bindplane. L'analyseur extrait les champs des journaux aux formats JSON et Syslog, les normalise et les mappe au 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 des adresses IP/noms d'hôte, 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 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é au Barracuda WAF.

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:
        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 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 Barracuda WAF

  1. Connectez-vous à la console Barracuda WAF à l'aide des identifiants administrateur.
  2. Cliquez sur l'onglet Avancé > Exporter les journaux.
  3. Dans la section Exporter les journaux, cliquez sur Ajouter un serveur d'exportation des journaux.
  4. Indiquez les valeurs suivantes :
    • Nom : saisissez un nom pour le redirecteur Google SecOps.
    • Type de serveur de journaux : sélectionnez Syslog.
    • Adresse IP ou nom d'hôte : saisissez l'adresse IP 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.

Table de mappage UDM

Champ de journal Mappage UDM Logique
action security_result.action Si action est défini sur DENY, définissez-le sur BLOCK. Sinon, définissez-la sur ALLOW (spécifiquement pour le type de journal WF). Également utilisé pour les événements de pare-feu génériques.
appProtocol network.application_protocol Si appProtocol correspond à TLSv, définissez 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 non signé et mappé pour le type de journal TR.
bytesSent network.sent_bytes Converti en entier non signé 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, la valeur est définie 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é dans target.ip.
serv target.ip Fusionné dans target.ip.
severity security_result.severity Pour le type de journal WF : converti en majuscules. Si la valeur est EMERGENCY, ALER ou CRITICAL, définissez security_result.severity sur CRITICAL. Si la valeur est ERROR, la valeur est définie sur HIGH. Si la valeur est WARNING, la valeur est définie sur MEDIUM. Si la valeur est NOTICE, la valeur est définie sur LOW. Sinon, définissez-la sur INFORMATIONAL.
src principal.ip Également utilisé 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é à 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 correspondants.
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 la valeur 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éfinie sur NETWORK_HTTP si src et target sont présents. Définie sur STATUS_UPDATE si seul src est présent. Définissez la valeur sur GENERIC_EVENT par défaut ou pour d'autres scénarios, comme l'analyse CEF. Codé en dur sur BARRACUDA_WAF.

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