Collecter les journaux du WAF Barracuda
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- 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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Profil.
- Copiez et sauvegardez le numéro client dans la section Détails de l'organisation.
Installer l'agent Bindplane
Installation de Windows
- Ouvrez l'invite de commande ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec des droits root ou sudo.
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
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour qu'il ingère les journaux Syslog et les envoie à Google SecOps
Accédez au fichier de configuration:
- 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. - Ouvrez le fichier à l'aide d'un éditeur de texte (
nano
,vi
ou Bloc-notes, par exemple).
- Recherchez le fichier
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
Remplacez le port et l'adresse IP dans votre infrastructure si nécessaire.
Remplacez
<customer_id>
par le numéro client réel.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
- Connectez-vous à la console Barracuda WAF à l'aide d'identifiants administrateur.
- Cliquez sur l'onglet Avancé > Exporter les journaux.
- Dans la section Exporter les journaux, cliquez sur Ajouter un serveur de journaux d'exportation.
- 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.