Collecter les journaux Microsoft IIS

Compatible avec :

Ce document explique comment collecter les journaux Microsoft Internet Information Services (IIS) dans Google Security Operations à l'aide de Bindplane. Le parseur tente d'abord de nettoyer et de normaliser les données d'entrée en supprimant les caractères inutiles et en standardisant les noms de champs. Il utilise ensuite une série de modèles grok pour extraire les champs pertinents de différents formats de journaux Microsoft IIS et les mapper au modèle de données unifié (UDM).

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer de Windows 2016 ou d'une version ultérieure.
  • Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.

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 sur Windows

  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
    

Ressources d'installation supplémentaires

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

  1. Avant de configurer le fichier YAML, arrêtez le service observIQ Distro for Open Telemetry Collector dans le panneau "Services".
  2. 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).
  3. Modifiez le fichier config.yaml comme suit :

    receivers:
      iis:
        collection_interval: 60s
    
    processors:
      # Resourcedetection is used to add a unique (host.name) to the metric resource(s), allowing users to filter between multiple agent systems.
      resourcedetection:
        detectors: ["system"]
        system:
          hostname_sources: ["os"]
    
      normalizesums:
    
      batch:
    
    exporters:
      chronicle/powershell:
        endpoint: malachiteingestion-pa.googleapis.com
        # Adjust the path to the credentials file you downloaded in Step 1
        creds: '/path/to/ingestion-authentication-file.json'
        log_type: 'IIS'
        override_log_type: false
        raw_log_field: body
        customer_id: '<customer_id>'
    
    service:
      pipelines:
        logs/winpowershell:
          receivers:
            - iis
          processors:
            - resourcedetection
            - normalizesums
            - batch
          exporters: [chronicle/iis]
    
  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.

  6. Après avoir enregistré le fichier config.yaml, démarrez le service observIQ Distro for Open Telemetry Collector.

Redémarrez l'agent Bindplane pour appliquer les modifications.

  • 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
    

Table de mappage UDM

Champ du journal Mappage UDM Logique
@timestamp metadata.event_timestamp Code temporel de l'événement tel qu'il est enregistré dans le journal brut.
@version metadata.product_version Version du serveur IIS.
AgentDevice additional.fields.AgentDevice.value.string_value Appareil qui a généré le journal.
AgentLogFile additional.fields.AgentLogFile.value.string_value Nom du fichier journal.
ASP.NET_SessionId network.session_id ID de session de l'utilisateur.
c-ip principal.ip Adresse IP du client.
Canal security_result.about.resource.attribute.labels.Channel.value Canal dans lequel l'événement a été consigné.
ChannelID security_result.about.resource.attribute.labels.ChannelID.value ID du canal dans lequel l'événement a été enregistré.
Ordinateur target.hostname Nom d'hôte de la machine cible.
cs-bytes network.received_bytes Nombre d'octets reçus du client.
cs-host principal.hostname, principal.asset.hostname Nom d'hôte du client.
cs-method network.http.method Méthode HTTP utilisée par le client.
cs-uri-query target.url Chaîne de requête de l'URL demandée par le client.
cs-uri-stem target.url Chemin de l'URL demandée par le client.
cs-username principal.user.user_display_name Nom d'utilisateur du client.
cs-version network.tls.version_protocol Version HTTP utilisée par le client.
cs(Cookie) Permet d'extraire des informations sur les cookies.
cs(Referer) network.http.referral_url URL qui a redirigé le client vers la page actuelle.
cs(User-Agent) network.http.user_agent User-agent du client.
csbyte network.received_bytes Nombre d'octets reçus du client.
cshost principal.hostname, principal.asset.hostname Nom d'hôte du client.
csip principal.ip, principal.asset.ip Adresse IP du client.
csmethod network.http.method Méthode HTTP utilisée par le client.
csreferer network.http.referral_url URL qui a redirigé le client vers la page actuelle.
csuseragent network.http.user_agent User-agent du client.
csusername principal.user.user_display_name Nom d'utilisateur du client.
csversion network.tls.version_protocol Version HTTP utilisée par le client.
date Utilisé pour construire le code temporel de l'événement si le code temporel du journal brut n'est pas valide.
description security_result.description Description de l'événement.
devicename target.hostname Nom d'hôte de la machine cible.
dst_ip target.ip, target.asset.ip Adresse IP de la machine cible.
dst_port target.port Numéro de port de la machine cible.
duration Durée de la requête en millisecondes.
EventEnqueuedUtcTime additional.fields.EventEnqueuedUtcTime.value.string_value Heure à laquelle l'événement a été mis en file d'attente en UTC.
EventID metadata.product_log_id ID de l'événement.
EventProcessedUtcTime additional.fields.EventProcessedUtcTime.value.string_value Heure à laquelle l'événement a été traité en UTC.
EventTime metadata.event_timestamp Horodatage de l'événement.
EventType metadata.product_event_type Le type d'événement.
file_path target.file.full_path Chemin d'accès complet du fichier concerné par l'événement.
FilterId security_result.about.resource.attribute.labels.FilterId.value ID du filtre.
FilterKey security_result.about.resource.attribute.labels.FilterKey.value Clé du filtre.
FilterName security_result.about.resource.attribute.labels.FilterName.value Nom du filtre.
FilterType security_result.about.resource.attribute.labels.FilterType.value Type de filtre.
hôte target.hostname Nom d'hôte de la machine cible.
host.architecture principal.asset.hardware.cpu_platform Architecture de la machine hôte.
host.geo.name additional.fields.geo_name.value.string_value Emplacement géographique de la machine hôte.
host.hostname target.hostname, target.asset.hostname Nom d'hôte de la machine hôte.
host.id observer.asset_id ID de la machine hôte.
host.ip principal.ip, principal.asset.ip Adresse IP de la machine hôte.
host.mac principal.mac Adresse MAC de la machine hôte.
host.os.build additional.fields.os_build.value.string_value Numéro de build du système d'exploitation sur la machine hôte.
host.os.kernel principal.platform_patch_level Version du noyau du système d'exploitation sur la machine hôte.
host.os.name additional.fields.os_name.value.string_value Nom du système d'exploitation sur la machine hôte.
host.os.platform principal.platform Plate-forme du système d'exploitation sur la machine hôte.
host.os.version principal.platform_version Version du système d'exploitation sur la machine hôte.
http_method network.http.method Méthode HTTP utilisée par le client.
http_response network.http.response_code Code de réponse HTTP.
http_status_code network.http.response_code Code d'état HTTP de la réponse.
http_substatus additional.fields.sc_substatus.value.string_value Code de sous-état HTTP de la réponse.
instance additional.fields.instance.value.string_value ID d'instance de la tâche.
intermediary_devicename intermediary.hostname, intermediary.asset.hostname Nom d'hôte de l'appareil intermédiaire.
json_message Message de journal brut au format JSON.
kv_fields Permet d'extraire des paires clé/valeur du message de journal brut.
LayerKey security_result.about.resource.attribute.labels.LayerKey.value Clé du calque.
LayerName security_result.about.resource.attribute.labels.LayerName.value Nom du calque.
LayerId security_result.about.resource.attribute.labels.LayerId.value ID du calque.
log.file.path target.file.full_path Chemin d'accès complet au fichier journal.
log.offset metadata.product_log_id Décalage de l'événement dans le fichier journal.
logstash.collect.host observer.hostname Nom d'hôte de la machine qui a collecté le journal.
logstash.process.host intermediary.hostname Nom d'hôte de la machine qui a traité le journal.
logstash_json_message Message de journal brut au format JSON.
message security_result.description Message de journal brut.
ministère additional.fields.ministry.value.string_value Ministère associé à l'événement.
nom Nom de l'entité.
NewValue additional.fields.NewValue.value.string_value Nouvelle valeur du paramètre de configuration.
OldValue additional.fields.OldValue.value.string_value Ancienne valeur du paramètre de configuration.
port principal.port Numéro de port du client.
priority_code Code de priorité du message syslog.
ProcessID principal.process.pid ID du processus ayant généré l'événement.
ProviderGuid security_result.about.resource.attribute.labels.ProviderGuid.value GUID du fournisseur.
ProviderKey security_result.about.resource.attribute.labels.ProviderKey.value Clé du fournisseur.
ProviderName security_result.about.resource.attribute.labels.ProviderName.value Nom du fournisseur.
referrer_url network.http.referral_url URL qui a redirigé le client vers la page actuelle.
request_url target.url URL demandée par le client.
s-computername target.hostname Nom d'hôte de la machine cible.
s-ip target.ip, target.asset.ip Adresse IP de la machine cible.
s-port target.port Numéro de port de la machine cible.
s-sitename additional.fields.sitename.value.string_value Nom du site.
sc-bytes network.sent_bytes Nombre d'octets envoyés au client.
sc-status network.http.response_code Code d'état HTTP de la réponse.
sc-substatus additional.fields.sc_substatus.value.string_value Code de sous-état HTTP de la réponse.
sc-win32-status Code d'état Windows de la réponse.
scbyte network.sent_bytes Nombre d'octets envoyés au client.
scstatus network.http.response_code Code d'état HTTP de la réponse.
de gravité, security_result.severity Gravité de l'événement.
service.type additional.fields.service_type.value.string_value Type de service.
sIP principal.ip, principal.asset.ip Adresse IP du client.
sPort principal.port Numéro de port du client.
sSiteName additional.fields.sitename.value.string_value Nom du site.
src_ip principal.ip, principal.asset.ip, observer.ip Adresse IP du client.
src_port principal.port Numéro de port du client.
sysdate Date et heure du message syslog.
syslog_facility security_result.severity_details Installation du message syslog.
syslog_pri Priorité du message syslog.
syslog_severity security_result.severity_details Gravité du message syslog.
syslog_severity_code Code de gravité du message syslog.
tags security_result.rule_name Tags associés à l'événement.
opération additional.fields.task.value.string_value Le nom de la tâche.
temps Utilisé pour construire le code temporel de l'événement si le code temporel du journal brut n'est pas valide.
time-taken Durée de la requête en millisecondes.
uri_query target.url Chaîne de requête de l'URL demandée par le client.
user_agent network.http.user_agent User-agent du client.
NomUtilisateur target.user.userid Le nom d'utilisateur de l'utilisateur.
UserSid target.user.windows_sid SID Windows de l'utilisateur.
Pondération security_result.about.resource.attribute.labels.Weight.value Pondération du filtre.
win32_status Code d'état Windows de la réponse.
xforwardedfor En-tête X-Forwarded-For, contenant une liste d'adresses IP séparées par une virgule.
metadata.log_type IIS
network.direction INBOUND
metadata.vendor_name Microsoft
metadata.product_name Internet Information Server
metadata.event_type NETWORK_HTTP, USER_UNCATEGORIZED, GENERIC_EVENT, STATUS_UPDATE, USER_LOGOUT, USER_LOGIN
extensions.auth.type MACHINE

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