Collecter les journaux Forescout NAC

Compatible avec :

Ce document explique comment ingérer les journaux Forescout Network Access Control (NAC) dans Google Security Operations à l'aide de Bindplane. L'analyseur gère les journaux au format syslog et CEF de Forescout NAC. Il extrait les champs à l'aide de modèles Grok, les mappe au modèle de données unifié (UDM) et catégorise les événements en fonction des mots clés et des champs extraits, en gérant les connexions/déconnexions, les connexions réseau, les événements de messagerie et les mises à jour de l'état du système. Une logique spécifique est implémentée pour gérer les événements "CounterACT" et "Virtual Firewall", y compris le mappage de la gravité et l'enrichissement du contexte utilisateur.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Instance Google SecOps
  • Windows 2016 ou version ultérieure, ou un hôte Linux avec systemd
  • Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
  • ForeScout CounterAct v8.0 ou version ultérieure doit être installé.
  • Le module d'extension principal ForeScout CounterAct et le plug-in Syslog v3.5 doivent être installés.
  • Accès privilégié à l'appliance Forescout et au plug-in CounterACT

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

Installez l'agent Bindplane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

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_file_path: '/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: 'FORESCOUT_NAC'
                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 avec 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
    

Installer le plug-in Syslog CounterACT

  1. Accédez à la page Forescount Base Plugins (Plug-ins de base Forescount) et téléchargez le fichier .fpi du plug-in.
  2. Enregistrez le fichier sur l'ordinateur sur lequel la console CounterACT est installée.
  3. Connectez-vous à la console CounterACT.
  4. Sélectionnez Options> Plug-ins> Installer.
  5. Accédez au fichier FPI du plug-in enregistré et sélectionnez-le.
  6. Cliquez sur Installer.
  7. Acceptez le contrat de licence pour continuer.
  8. Une fois l'installation terminée, cliquez sur Fermer.
  9. Sélectionnez le plug-in dans le volet Plug-in, puis cliquez sur Démarrer.
  10. Sélectionnez les appliances CounterACT sur lesquelles démarrer le plug-in (il est recommandé d'exécuter le plug-in sur toutes les appliances de l'environnement).
  11. Cliquez sur OK.
  12. Cliquez sur Fermer.

Configurer Syslog sur le plug-in Syslog Forescout CounterACT

  1. Dans le volet Plug-ins, cliquez sur Syslog > Configurer.
  2. Sélectionnez un appareil ou Enterprise Manager dans la boîte de dialogue, puis cliquez sur OK.
  3. Dans Envoyer les événements à, cliquez sur Ajouter.
  4. Fournissez les informations de configuration suivantes :
    • Adresse du serveur : saisissez l'adresse IP de l'agent Bindplane.
    • Port du serveur : saisissez le numéro de port de l'agent Bindplane (par exemple, 514 pour UDP).
    • Protocole du serveur : sélectionnez UDP.
    • Identité : champ de texte libre permettant d'identifier le message syslog.
    • Facultatif : Établissement : établissement du message Syslog transmis dans le champ "Priorité" du message. Si la valeur de l'établissement n'est pas mentionnée, elle est définie sur local5.
    • Gravité : sélectionnez Info.
  5. Accédez à l'onglet Déclencheur Syslog.
  6. Ne cochez pas la case N'envoyer que les messages générés par l'action "Envoyer un message à Syslog".
  7. Cochez uniquement la case Inclure l'identifiant de l'appareil CounterACT et le code temporel dans tous les messages.
  8. Cliquez sur Options pour définir les types d'événements qui déclenchent les messages syslog :
    • Incluez les journaux des règles NAC.
    • Incluez les événements de correspondance et de non-correspondance des règles NAC.
    • Sélectionnez d'autres événements, le cas échéant.
  9. Accédez à l'onglet Configuration de l'action par défaut.
  10. Fournissez les informations de configuration suivantes :
    • Adresse du serveur : saisissez l'adresse IP de l'agent Bindplane.
    • Port du serveur : saisissez le numéro de port de l'agent Bindplane (par exemple, 514 pour UDP).
    • Protocole du serveur : sélectionnez UDP.
    • Identité du message : champ de texte libre permettant d'identifier le message Syslog.
    • Facultatif : Établissement : établissement du message Syslog transmis dans le champ "Priorité" du message. Si la valeur de l'établissement n'est pas mentionnée, elle est définie sur local5.
    • Gravité : sélectionnez Info.
  11. Cliquez sur OK.

Table de mappage UDM

Champ de journal Mappage UDM Logique
act security_result.action_details Mappé directement à partir du champ act dans les journaux CEF.
app network.application_protocol Mappé directement à partir du champ app dans les journaux CEF.
Available_memory additional.fields Extrait de kv_data lorsque event_type est défini sur "Statistiques système". La clé est "Available memory" (Mémoire disponible) et la valeur est la chaîne extraite.
Available_swap additional.fields Extrait de kv_data lorsque event_type est défini sur "Statistiques système". La clé est "Available swap" (Swap disponible) et la valeur est la chaîne extraite.
application_status additional.fields Extrait de kv_data lorsque event_type est "État de la demande". La clé est "État de la demande" et la valeur est la chaîne extraite.
Assigned_hosts additional.fields Extrait de kv_log_data lorsque event_type est "État de la demande". La clé est "Assigned hosts" (Hôtes attribués) et la valeur est la chaîne extraite.
Category security_result.description Partie de security_result.description lorsque et_lower est "journal des règles NAC". concaténé avec d'autres détails.
command principal.process.command_line Extrait du champ rnmsg des journaux CEF lorsqu'il commence par "command:".
Connected_clients additional.fields Extrait de kv_log_data lorsque event_type est "État de la demande". La clé est "Connected clients" (Clients connectés) et la valeur est la chaîne extraite.
CPU_usage additional.fields Extrait de kv_data lorsque event_type est défini sur "Statistiques système". La clé est "Utilisation du processeur" et la valeur est la chaîne extraite.
cs1 additional.fields Mappé directement à partir du champ cs1 dans les journaux CEF. La clé est "Nom de la règle de conformité".
cs2 additional.fields Mappé directement à partir du champ cs2 dans les journaux CEF. La clé est "Compliancy Policy Subrule Name".
cs3 additional.fields Mappé directement à partir du champ cs3 dans les journaux CEF. La clé est "Host Compliancy Status" (État de conformité de l'hôte).
cs4 additional.fields Mappé directement à partir du champ cs4 dans les journaux CEF. La clé est "Compliancy Event Trigger".
data security_result.description Utilisé dans différentes parties de l'analyseur pour extraire des informations et contribuer aux champs UDM finaux. Non directement mappé sur un seul champ UDM.
details security_result.description Utilisé pour remplir security_result.description dans plusieurs cas, y compris lors de l'analyse des événements "Log" et des modifications de session utilisateur. Peut être analysé plus en détail pour obtenir des informations spécifiques.
Destination target.ip, target.hostname Analysé à partir de kv_data ou data. Si elle peut être convertie en adresse IP, elle est mappée sur target.ip. Sinon, il est mappé sur target.hostname.
deviceExternalId about.asset.asset_id Mappé directement à partir du champ deviceExternalId dans les journaux CEF, avec le préfixe "Forescout.CommandCenter:".
dhost target.hostname Mappé directement à partir du champ dhost dans les journaux CEF.
dmac target.mac Mappé directement à partir du champ dmac dans les journaux CEF.
dntdom target.administrative_domain Mappé directement à partir du champ dntdom dans les journaux CEF.
dst target.ip Mappé directement à partir du champ dst dans les journaux CEF.
dpt target.port Mappé directement à partir du champ dpt dans les journaux CEF.
duser target.user.user_display_name Mappé directement à partir du champ duser dans les journaux CEF.
dvc about.ip Mappé directement à partir du champ dvc dans les journaux CEF.
dvchost about.hostname Mappé directement à partir du champ dvchost dans les journaux CEF.
EM_connection_status additional.fields Extrait de kv_log_data lorsque event_type est "État de la demande". La clé est "État de la connexion EM" et la valeur est la chaîne extraite.
Engine_status additional.fields Extrait de kv_log_data lorsque event_type est "État de la demande". La clé est "État du moteur" et la valeur est la chaîne extraite.
event_type metadata.description, security_result.summary Analysé à partir du message de journal. Permet de déterminer le type d'événement UDM et d'autres champs. Si l'événement est un"GENERIC_EVENT", il est également utilisé pour la description.
eventtype additional.fields Mappé directement à partir du champ eventtype dans les journaux CEF. La clé est "eventtype".
externalId metadata.product_log_id Mappé directement à partir du champ externalId dans les journaux CEF.
from\[...\] to\[...\] principal.ip, target.ip Extrait les adresses IP source et de destination du modèle "from[...] to[...]".
Host principal.ip, principal.hostname Analysé à partir de kv_data lorsque et_lower est "block event". Si elle peut être convertie en adresse IP, elle est mappée sur principal.ip. Sinon, elle est mappée sur principal.hostname.
Hostname principal.hostname, principal.asset.hostname Mappé sur principal.hostname et principal.asset.hostname lorsqu'il est présent dans les événements de modification de propriété détectés.
Installed_Plugins additional.fields Extrait de kv_log_data lorsque event_type est "État de la demande". La clé est "Installed Plugins" (Plug-ins installés) et la valeur est la chaîne extraite.
iporhost intermediary.ip, intermediary.hostname Analysé à partir de header_data. Si elle peut être convertie en adresse IP, elle est mappée sur intermediary.ip. Sinon, elle est mappée sur intermediary.hostname.
Is Virtual Firewall blocking rule security_result.action, security_result.rule_name Si la valeur est "true", security_result.action est défini sur "BLOCK" et security_result.rule_name sur "Virtual Firewall blocking".
log_description security_result.summary Mappé directement sur security_result.summary lorsqu'il est présent.
log_type metadata.log_type Définissez-le sur la valeur constante "FORESCOUT_NAC".
MAC principal.mac Analysé à partir de kv_data dans les événements de modification de propriété détectés et mis en forme en tant qu'adresse MAC.
mail_from network.email.from Mappé directement à partir du champ mail_from extrait de mail_details.
mail_subject network.email.subject Mappé directement à partir du champ mail_subject extrait de mail_details.
mail_to network.email.to Mappé directement à partir du champ mail_to extrait de mail_details.
Match security_result.rule_name Mappé directement à partir du champ Match lorsque et_lower est défini sur "nac policy log".
metadata.event_type metadata.event_type Déterminé par diverses conditions dans l'analyseur, y compris la présence de champs et de mots clés spécifiques dans le message du journal. La valeur par défaut est GENERIC_EVENT et est mise à jour en fonction des données analysées. Il peut par exemple s'agir de USER_LOGIN, USER_LOGOUT, NETWORK_CONNECTION, SCAN_NETWORK, STATUS_UPDATE, EMAIL_TRANSACTION et USER_UNCATEGORIZED.
metadata.product_name metadata.product_name Définissez la valeur sur "FORESCOUT NAC" pour la plupart des événements, ou sur la valeur du champ product s'il existe. Pour les événements CEF, il est défini sur "CounterAct".
metadata.vendor_name metadata.vendor_name Définissez sa valeur sur "FORESCOUT" pour la plupart des événements. Pour les événements CEF, il est extrait du champ cs1Label s'il existe ou défini sur "ForeScout Technologies".
msg metadata.description Mappé directement à partir du champ msg dans les journaux CEF.
pid intermediary.process.pid Mappé directement à partir du champ pid extrait de header_data.
policy_details security_result.description Partie de security_result.description lorsque et_lower est "journal des règles NAC". concaténé avec d'autres détails.
product metadata.product_name Mappé directement sur metadata.product_name lorsqu'il est présent.
proto network.ip_protocol Mappé directement à partir du champ proto dans les journaux CEF.
Reason security_result.description Mappé directement à partir du champ Reason lorsque et_lower est défini sur "block event" (bloquer l'événement).
resource principal.resource.name Mappé directement à partir du champ resource dans les journaux CEF.
rnmsg security_result.description, principal.process.command_line Si elle commence par "command:", la partie après "command:" est mappée sur principal.process.command_line. Sinon, il est mappé sur security_result.description.
rt metadata.event_timestamp Mappé directement à partir du champ rt des journaux CEF, converti en code temporel.
Rule security_result.rule_id Mappé directement à partir du champ Rule lorsque et_lower est défini sur "nac policy log".
security_result.severity security_result.severity Dérivé du champ severity_level. 0 à 3 correspond à FAIBLE, 4 à 6 à MOYENNE, 7 à 8 à ÉLEVÉE et 9 à 10 à CRITIQUE.
security_result.severity_details security_result.severity_details Mappé directement à partir du champ severity dans les journaux CEF.
Service target.port, network.ip_protocol Analysé pour extraire le port et le protocole. Le port est mappé sur target.port et le protocole sur network.ip_protocol.
session_id network.session_id Mappé directement à partir du champ session_id.
severity security_result.severity_details Mappé directement à partir du champ severity dans les journaux CEF.
severity_level security_result.severity Utilisé pour déterminer le security_result.severity.

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