Collecter les journaux Microsoft IIS
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
- 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 l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane sur Windows
- Ouvrez l'invite de commandes 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
Ressources d'installation supplémentaires
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
- Avant de configurer le fichier YAML, arrêtez le service
observIQ Distro for Open Telemetry Collector
dans le panneau "Services". 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).
- Recherchez le fichier
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]
Remplacez
<customer_id>
par le numéro client réel.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.Après avoir enregistré le fichier
config.yaml
, démarrez le serviceobservIQ 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.