Collecter les journaux McAfee Web Gateway

Compatible avec :

Ce document explique comment ingérer les journaux McAfee Web Gateway dans Google Security Operations à l'aide d'un agent Bindplane. L'analyseur extrait les champs des journaux aux formats SYSLOG+KV (CEF), JSON et brut. Il utilise des filtres grok et CSV pour analyser différentes structures de journaux et normaliser les noms de champs. Il mappe ensuite les champs extraits au schéma UDM (Unified Data Model), en gérant divers cas extrêmes et incohérences de données pour créer une sortie unifiée.

Avant de commencer

Assurez-vous de remplir les conditions préalables suivantes :

  • Instance Google SecOps
  • Hôte Windows 2016 ou version ultérieure, ou hôte Linux avec systemd
  • Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
  • Accès privilégié à McAfee Web Gateway

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

Pour plus d'options d'installation, consultez le guide d'installation.

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

  1. 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 (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: MCAFEE_WEBPROXY
                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 Syslog dans McAfee Web Gateway

  1. Connectez-vous à l'interface utilisateur Web de McAfee Web Gateway.
  2. Accédez à Règles> Ensembles de règles.
  3. Cliquez sur Gestionnaire de journaux, puis développez l'ensemble de règles Par défaut et sélectionnez l'ensemble de règles imbriqué CEF Syslog.
  4. Activez la règle Send to Syslog (Envoyer à Syslog).
  5. Cliquez sur Enregistrer les modifications.
  6. Accédez à Configuration> Appliances> Log File Manager> Settings.
  7. Sélectionnez Écrire le journal d'audit dans syslog.
  8. Accédez à Configuration > Éditeur de fichiers.
  9. Sélectionnez rsyslog.conf dans l'arborescence des fichiers.
  10. Modifiez le fichier comme suit :
    • Recherchez la ligne (ou une ligne similaire) : *.info;mail.none;authpriv.none;cron.none /var/log/messages.
    • Ajoutez un démon sur cette ligne et insérez un tiret (-) avant les informations sur le chemin d'accès : *.info;daemon.!=info;mail.none;authpriv.none;cron.none -/var/log/messages
  11. Ajoutez une ligne en bas du fichier pour envoyer les messages d'information à l'adresse IP de l'agent Bindplane.

    • Pour syslog sur UDP :

      daemon.info;auth.=info @<bindplane-server-ip>:<bindplane-port>
      
    • Pour syslog sur TCP :

      daemon.info;auth.=info @@<bindplane-server-ip>:<bindplane-port>
      

Table de mappage UDM

Champ de journal Mappage UDM Logique
application_name principal.application Mappé directement à partir du champ application_name au format KV ou user_agent_product au format JSON.
auth_user principal.user.userid Mappé directement à partir du champ auth_user au format KV.
block_reason security_result.summary Directement mappé à partir du champ block_reason au format JSON et CSV JSON, ou _block_reason au format brut, ou block_reason au format KV.
block_res security_result.action Mappé à partir du champ block_res au format KV. Si block_res est DENIED ou contient Block, l'action est BLOCK. Si block_res est 0 ou contient Allow, l'action est ALLOW. Des valeurs spéciales telles que 50, 51, 52, 53, 58, 59, 81, 80, 82, 83, 84, 110 et 111 sont utilisées pour déterminer security_result.category.
bytes_from_client network.sent_bytes Directement mappé à partir du champ bytes_from_client au format KV, ou sr_bytes au format brut, ou client_to_server_bytes aux formats JSON et CSV JSON.
bytes_to_client network.received_bytes Directement mappé à partir du champ bytes_to_client au format KV, ou rs_bytes au format brut, ou server_to_client_bytes aux formats JSON et CSV JSON.
categories security_result.category_details Directement mappé à partir du champ categories au format KV, ou _category au format brut, ou category aux formats JSON et CSV JSON.
client_ip principal.ip, intermediary.ip Mappé directement à partir du champ client_ip au format JSON.
clientIP principal.ip Mappé directement à partir du champ clientIP au format CEF.
csmethod network.http.method Mappé directement à partir du champ csmethod au format brut.
day metadata.event_timestamp Partie de l'horodatage, extraite du champ time_stamp au format KV.
destination_ip target.ip Mappé directement à partir du champ destination_ip au format JSON.
destination_port target.port Mappé directement à partir du champ destination_port au format JSON.
domain target.hostname, target.url Mappé directement à partir du champ domain au format brut. Permet de créer le target.url si uri est présent.
header intermediary.hostname Extrait du début du message de journal. Permet d'extraire intermediary.hostname.
host target.hostname Mappé directement à partir du champ host au format KV.
hostname principal.hostname Mappé directement à partir du champ hostname au format JSON.
hour metadata.event_timestamp Partie de l'horodatage, extraite du champ time_stamp au format KV.
http_action network.http.method Mappé directement à partir du champ http_action au format JSON.
http_status_code network.http.response_code Directement mappé à partir du champ http_status_code dans les formats JSON et CSV JSON, ou status_code dans les formats brut et KV.
kv_entry.application_name principal.application Directement mappé à partir du champ application_name dans l'entrée KV.
kv_entry.auth_user principal.user.userid Directement mappé à partir du champ auth_user dans l'entrée KV.
kv_entry.block_reason security_result.summary Directement mappé à partir du champ block_reason dans l'entrée KV.
kv_entry.block_res security_result.action, security_result.category Mappé à partir du champ block_res dans l'entrée KV. La logique permettant de déterminer l'action et la catégorie est la même que pour le champ block_res de premier niveau.
kv_entry.bytes_from_client network.sent_bytes Directement mappé à partir du champ bytes_from_client dans l'entrée KV.
kv_entry.bytes_to_client network.received_bytes Directement mappé à partir du champ bytes_to_client dans l'entrée KV.
kv_entry.categories security_result.category_details Directement mappé à partir du champ categories dans l'entrée KV.
kv_entry.host target.hostname Directement mappé à partir du champ host dans l'entrée KV.
kv_entry.method network.http.method Directement mappé à partir du champ method dans l'entrée KV.
kv_entry.rep_level security_result.severity_details Directement mappé à partir du champ rep_level dans l'entrée KV.
kv_entry.server_ip target.ip Directement mappé à partir du champ server_ip dans l'entrée KV.
kv_entry.status_code network.http.response_code Directement mappé à partir du champ status_code dans l'entrée KV.
kv_entry.time_stamp metadata.event_timestamp Directement mappé à partir du champ time_stamp dans l'entrée KV.
kv_entry.url target.url Directement mappé à partir du champ url dans l'entrée KV.
kv_entry.url_port target.port Directement mappé à partir du champ url_port dans l'entrée KV.
kv_entry.user_agent network.http.parsed_user_agent Directement mappé à partir du champ user_agent dans l'entrée KV, puis analysé dans un objet structuré.
last_rule security_result.rule_name Mappé directement à partir du champ last_rule au format JSON.
loc principal.location.country_or_region Mappé directement à partir du champ loc extrait de tgt_ip_or_location.
location principal.location.country_or_region Mappé directement à partir du champ location au format JSON.
log.file.path principal.process.file.full_path Mappé directement à partir du champ log.file.path au format JSON.
message Diverses Message de journal brut. Analysé différemment selon son format (brut, JSON, KV, CEF).
method network.http.method Directement mappé à partir du champ method au format KV et brut, ou http_action au format JSON, ou dérivé des données CEF. Si la valeur est GET, POST, HEAD, OPTIONS, PUT ou CONNECT, metadata.event_type est défini sur NETWORK_HTTP. Si la valeur est - ou CERTVERIFY, metadata.event_type est défini sur NETWORK_CONNECTION.
mins metadata.event_timestamp Partie de l'horodatage, extraite du champ time_stamp au format KV.
month metadata.event_timestamp Partie du code temporel, extraite du champ time_stamp au format KV ou du champ rt au format CEF.
monthday metadata.event_timestamp Partie du code temporel, extraite du début du message du journal.
protocol network.application_protocol Directement mappé à partir du champ protocol au format brut, ou uri_scheme au format JSON, ou dérivé du champ url au format KV.
query target.url Mappé directement à partir du champ query au format brut. Ajouté au champ url.
rep_level security_result.severity_details Directement mappé à partir du champ rep_level au format KV, reputation au format JSON ou _risk au format brut. Utilisé pour déterminer security_result.severity.
request target.url Mappé directement à partir du champ request au format CEF.
requestClientApplication network.http.user_agent Mappé directement à partir du champ requestClientApplication au format CEF.
requestContext network.http.referral_url Mappé directement à partir du champ requestContext au format CEF.
requestMethod network.http.method Mappé directement à partir du champ requestMethod au format CEF.
requested_host target.url Mappé directement à partir du champ requested_host au format JSON. Permet de créer le target.url si requested_path est également présent.
requested_path target.url Mappé directement à partir du champ requested_path au format JSON. Ajouté à requested_host pour former le target.url.
request_timestamp metadata.event_timestamp Mappé directement à partir du champ request_timestamp au format JSON.
result security_result.action, security_result.category Directement mappé à partir du champ result au format JSON et CSV JSON, ou block_res au format KV. Utilisé pour déterminer security_result.action et security_result.category.
rt metadata.event_timestamp Mappé directement à partir du champ rt au format CEF.
secs metadata.event_timestamp Partie de l'horodatage, extraite du champ time_stamp au format KV.
server_ip target.ip Mappé directement à partir du champ server_ip au format KV.
source_ip principal.ip Directement mappé à partir du champ source_ip au format JSON, CSV JSON, brut et KV, ou src au format CEF, ou src_ip au format brut.
src principal.ip Mappé directement à partir du champ src au format CEF.
status_code network.http.response_code Mappé directement à partir du champ status_code au format brut.
summary security_result.summary Directement mappé à partir du champ summary au format CSV ou block_reason au format JSON.
system principal.platform Mappé directement à partir du champ system au format JSON. Converti en majuscules.
target_ip target.ip Directement mappé à partir du champ target_ip au format brut ou dst au format CEF.
tgtport target.port Mappé directement à partir du champ tgtport au format brut.
time metadata.event_timestamp Partie du code temporel, extraite du début du message de journal, du champ rt au format CEF ou du champ time_stamp au format KV.
timestamp metadata.event_timestamp Mappé directement à partir du champ @timestamp au format JSON.
timezone metadata.event_timestamp Partie de l'horodatage, extraite du champ time_stamp au format KV.
uri target.url Mappé directement à partir du champ uri au format brut. Permet de créer le target.url.
uri_scheme network.application_protocol Mappé directement à partir du champ uri_scheme au format JSON. Converti en majuscules.
url target.url Directement mappé à partir du champ url aux formats brut, KV et JSON, ou construit à partir de domain, uri et query au format brut, ou requested_host et requested_path au format JSON, ou request au format CEF.
url_port target.port Mappé directement à partir du champ url_port au format KV.
user principal.user.userid Directement mappé à partir du champ user au format JSON, ou username au format JSON, ou auth_user au format KV, ou suser au format brut.
user_agent network.http.parsed_user_agent Directement mappé à partir du champ user_agent au format brut et KV, ou user_agent_comment au format JSON, ou requestClientApplication au format CEF, ou construit à partir de agent.type et agent.version au format JSON. Analysé dans un objet structuré.
user_agent_comment network.http.parsed_user_agent Mappé directement à partir du champ user_agent_comment au format JSON.
user_agent_product principal.application Mappé directement à partir du champ user_agent_product au format JSON.
username principal.user.userid Mappé directement à partir du champ username au format JSON.
year metadata.event_timestamp Partie du code temporel, extraite du champ time_stamp au format KV ou du champ rt au format CEF.
N/A metadata.event_type Déterminé par l'analyseur en fonction du champ method. Il peut s'agir de NETWORK_HTTP, NETWORK_CONNECTION, GENERIC_EVENT ou STATUS_UPDATE.
N/A metadata.log_type Codé en dur sur MCAFEE_WEBPROXY.
N/A metadata.product_name Codé en dur sur MCAFEE_WEBPROXY.
N/A metadata.vendor_name Codé en dur sur MCAFEE.
N/A network.direction Codé en dur sur OUTBOUND.
N/A security_result.action Déterminé par l'analyseur en fonction des champs block_reason ou result. Il peut s'agir de ALLOW ou BLOCK.
N/A security_result.category Déterminé par l'analyseur en fonction du champ result. Il peut s'agir de NETWORK_CATEGORIZED_CONTENT, NETWORK_DENIAL_OF_SERVICE, MAIL_SPAM, AUTH_VIOLATION, SOFTWARE_MALICIOUS, NETWORK_SUSPICIOUS ou NETWORK_MALICIOUS.
N/A security_result.severity Déterminé par l'analyseur en fonction du champ risk. Il peut s'agir de LOW, MEDIUM ou HIGH.

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