Collecter les journaux Nix Systems Ubuntu Server (système Unix)

Compatible avec :

Ce document explique comment ingérer des journaux Ubuntu Server (système Unix) dans Google Security Operations à l'aide de Bindplane. L'analyseur ingère les journaux au format syslog et JSON, initialise un large éventail de champs UDM (Unified Data Model) sur des chaînes vides, effectue plusieurs substitutions de chaînes sur le champ message, puis tente d'analyser le message au format JSON. Si l'analyse JSON échoue, il utilise des modèles grok pour extraire les champs en fonction du contenu message et event_details.original, en mappant les champs extraits à l'UDM en fonction du type d'événement et de diverses vérifications conditionnelles, en gérant différents formats et structures de journaux provenant de divers processus et services du système Unix.

Avant de commencer

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

  • Instance Google SecOps
  • Si vous exécutez le programme derrière un proxy, les ports du pare-feu sont ouverts.
  • Accès privilégié à un serveur RHEL

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 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. Il se trouve généralement dans le répertoire /etc/bindplane-agent/ sous Linux.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano ou vi).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
      filelog/unix:
        include:
          - /var/log/auth.log
          - /var/log/lastlog
          - /var/log/btmp
          - /var/log/wtmp
          - /var/log/faillog
          - /var/log/dpkg.log
          - /var/log/boot.log
          - /var/log/kern.log
          - /var/log/syslog
        start_at: end
        poll_interval: 5s
    
    exporters:
        chronicle/linux:
            # 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
            log_type: 'NIX_SYSTEM'
            override_log_type: false
            raw_log_field: body
    
    service:
      pipelines:
        logs/linux:
          receivers:
          - filelog/linux
      exporters: [chronicle/linux]
    
  3. Remplacez <customer_id> par le numéro client réel.

  4. 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.

Démarrer l'agent Bindplane et appliquer les modifications

  1. Démarrez l'agent Bindplane :

    sudo systemctl start bindplane-agent
    
  2. Activez le service de collecte observIQ otel :

    systemctl enable --now bindplane-agent
    
  3. Si nécessaire, redémarrez l'agent Bindplane :

    sudo systemctl restart bindplane-agent
    

Table de mappage UDM

Champ de journal Mappage UDM Logique
AccessControlRuleAction security_result.action Si AccessControlRuleAction est défini sur Allow, définissez-le sur ALLOW. Si AccessControlRuleAction est défini sur Block, définissez-le sur BLOCK.
ACPolicy security_result.rule_labels Clé : ACPolicy, Valeur : ACPolicy
AccessControlRuleName security_result.rule_name Mappage direct.
acct event.idm.read_only_udm.target.user.userid Mappage direct après suppression des guillemets et des barres obliques inverses.
addr event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip Mappage direct si la valeur n'est pas vide, ? ou UNKNOWN.
ApplicationProtocol event.idm.read_only_udm.network.application_protocol Mappage direct.
auid event.idm.read_only_udm.additional.fields Clé : auid, Valeur : auid
comm event.idm.read_only_udm.target.process.command_line Mappage direct.
command event.idm.read_only_udm.target.process.command_line Mappage direct après suppression des espaces blancs de début et de fin.
Computer event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mappage direct. Si ce champ est vide, utilisez HostName.
ConnectionID security_result.detection_fields Clé : Connection ID, Valeur : ConnectionID
cwd event.idm.read_only_udm.target.process.file.full_path Mappage direct après suppression des guillemets.
data message Utilisé dans les modèles Grok.
desc security_result.description Mappage direct.
description event.idm.read_only_udm.metadata.description, security_result.description Mappage direct.
descript security_result.description Mappage direct après suppression des hachages.
DeviceUUID event.idm.read_only_udm.metadata.product_log_id Mappage direct.
DNSQuery event.idm.read_only_udm.additional.fields Clé : DNSQuery, Valeur : DNSQuery
DNSRecordType event.idm.read_only_udm.additional.fields Clé : DNSRecordType, Valeur : DNSRecordType
DNSResponseType event.idm.read_only_udm.additional.fields Clé : DNSResponseType, Valeur : DNSResponseType
DNS_TTL event.idm.read_only_udm.additional.fields Clé : DNS_TTL, Valeur : DNS_TTL
DstIP event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip Mappage direct.
DstPort event.idm.read_only_udm.target.port Mappage direct, converti en entier.
dvc event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip, event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname, event.idm.read_only_udm.intermediary.ip, event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip, event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Si l'adresse IP est valide, elle est mappée à l'adresse IP principale/cible. Nom d'hôte, mappé au nom d'hôte principal/cible. Également utilisé pour l'adresse IP intermédiaire si elle est valide.
EgressInterface event.idm.read_only_udm.principal.asset.attribute.labels Clé : EgressInterface, Valeur : EgressInterface
EgressVRF event.idm.read_only_udm.principal.asset.attribute.labels Clé : EgressVRF, Valeur : EgressVRF
EgressZone event.idm.read_only_udm.target.location.name Mappage direct.
eventType event.idm.read_only_udm.metadata.product_event_type, event.idm.read_only_udm.target.application Mappage direct. Pour SERVICE_START et SERVICE_STOP, mappé sur target.application, puis effacé.
EventTime @timestamp Analysé comme un code temporel.
exe event.idm.read_only_udm.target.process.command_line Mappage direct après suppression des guillemets et des barres obliques inverses.
extended_description event.idm.read_only_udm.metadata.description Mappage direct après suppression des tirets et des guillemets.
Facility event.idm.read_only_udm.principal.resource.attribute.labels Clé : Facility, Valeur : Facility
filepath event.idm.read_only_udm.principal.process.file.full_path Mappage direct.
file_path event.idm.read_only_udm.target.file.full_path Mappage direct.
file_path_value event.idm.read_only_udm.target.file.full_path Mappage direct.
FirstPacketSecond security_result.detection_fields Clé : FirstPacketSecond, Valeur : FirstPacketSecond
from event.idm.read_only_udm.network.email.from Mappage direct après suppression des chevrons.
generic_ip event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mappage direct si l'adresse IP est valide et n'est pas A256:.
gid event.idm.read_only_udm.target.user.group_identifiers Mappage direct.
grp event.idm.read_only_udm.target.group.group_display_name Mappage direct après suppression des guillemets et des barres obliques inverses.
hashing_algo security_result.summary Mappage direct.
home event.idm.read_only_udm.target.file.full_path Mappage direct.
HostName Computer Utilisé si Computer est vide.
HostIP event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip La partie de HostIP avant % est extraite et mappée en tant que validated_ip.
hostname event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname, event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mappage direct si la valeur n'est pas vide ou ?.
host_name event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mappage direct.
InitiatorBytes event.idm.read_only_udm.network.sent_bytes Mappage direct, converti en entier non signé.
InitiatorPackets event.idm.read_only_udm.network.sent_packets Mappage direct, converti en entier.
insertId event.idm.read_only_udm.metadata.product_log_id Mappage direct.
InstanceID security_result.detection_fields Clé : Instance ID, Valeur : InstanceID
int_dvc event.idm.read_only_udm.intermediary.hostname Mappage direct.
ip event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip, event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mappage direct.
ip_protocol event.idm.read_only_udm.network.ip_protocol Mappage direct.
laddr event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mappage direct si la valeur n'est pas vide ou ?.
level security_result.severity Si la valeur est info, la valeur est définie sur INFORMATIONAL.
log.syslog.facility.name event.idm.read_only_udm.target.application Mappage direct.
log.syslog.severity.name security_result.severity Si la valeur est Emergency, la valeur est définie sur HIGH.
logName logname Mappage direct.
log_description security_result.description Mappage direct.
log_level security_result.severity Si la valeur est error, la valeur est définie sur ERROR.
log_summary security_result.summary Mappage direct.
logger_name event.idm.read_only_udm.principal.resource.attribute.labels Clé : logger_name, Valeur : logger_name
log_type event.idm.read_only_udm.metadata.log_type Codé en dur sur NIX_SYSTEM.
lport event.idm.read_only_udm.principal.port Mappage direct, converti en entier.
MG event.idm.read_only_udm.principal.resource.attribute.labels Clé : MG, Valeur : MG
method event.idm.read_only_udm.network.http.method Mappage direct, converti en majuscules.
msg1 event.idm.read_only_udm.metadata.description, event.idm.read_only_udm.additional.fields, security_result.description Analysé à l'aide de modèles Grok. Si event_type est GENERIC_EVENT, il est mappé sur description.
msg2 event.idm.read_only_udm.network.received_bytes, security_result.summary Si elle contient des chiffres, elle est convertie en entier non signé et mappée sur received_bytes. Sinon, elle est mappée sur summary.
NAPPolicy security_result.rule_labels Clé : NAPPolicy, Valeur : NAPPolicy
name event.idm.read_only_udm.target.process.file.full_path Mappage direct après suppression des guillemets.
outcome security_result.action Si Succeeded ou contient success, définissez la valeur sur ALLOW.
p_id event.idm.read_only_udm.target.process.pid Mappage direct.
pid event.idm.read_only_udm.target.process.pid, event.idm.read_only_udm.principal.process.pid Mappage direct.
principal_hostname event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mappage direct.
principal_ip event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mappage direct.
principal_present event.idm.read_only_udm.metadata.event_type Si true et has_target sont définis sur true, définissez event_type sur NETWORK_UNCATEGORIZED. Si true ou user_present est défini sur true, définissez event_type sur USER_UNCATEGORIZED.
process event.idm.read_only_udm.target.application, event.idm.read_only_udm.metadata.product_event_type Mappage direct. Si eventType est vide, il est utilisé comme target.application.
ProcessID event.idm.read_only_udm.principal.process.pid Mappage direct, converti en chaîne.
ProcessName event.idm.read_only_udm.principal.resource.attribute.labels Clé : ProcessName, Valeur : ProcessName
prod_eve_type event.idm.read_only_udm.metadata.product_event_type Mappage direct.
product_event_type event.idm.read_only_udm.metadata.product_event_type Mappage direct.
Protocol event.idm.read_only_udm.network.ip_protocol Si la valeur correspond à icmp, udp ou tcp (non sensible à la casse), elle est mappée à la valeur majuscule correspondante.
proto event.idm.read_only_udm.network.application_protocol Si la valeur est ssh ou ssh2, elle est définie sur SSH.
pwd event.idm.read_only_udm.target.file.full_path Mappage direct.
reason security_result.summary, security_result.description Utilisé en combinaison avec action et desc pour créer security_result.description. Également mappé sur security_result.summary.
relayHostname event.idm.read_only_udm.intermediary.hostname Mappage direct.
relayIp event.idm.read_only_udm.intermediary.ip Mappage direct.
res security_result.summary Mappage direct.
resource.labels.instance_id event.idm.read_only_udm.target.resource.product_object_id Mappage direct.
resource.labels.project_id event.idm.read_only_udm.target.asset.attribute.cloud.project.id Mappage direct.
resource.labels.zone event.idm.read_only_udm.target.asset.attribute.cloud.availability_zone Mappage direct.
resource.type event.idm.read_only_udm.target.resource.resource_subtype Mappage direct.
response_code event.idm.read_only_udm.network.http.response_code Mappage direct, converti en entier.
ResponderBytes event.idm.read_only_udm.network.received_bytes Mappage direct, converti en entier non signé.
ResponderPackets event.idm.read_only_udm.network.received_packets Mappage direct, converti en entier.
rhost event.idm.read_only_udm.additional.fields Clé : rhost, Valeur : rhost
ruser srcUser Mappage direct.
sec_action security_result.action Mappé en fonction de action ou eventType.
sec_summary security_result.summary Mappage direct.
security_action security_result.action Mappage direct.
sent_bytes event.idm.read_only_udm.network.sent_bytes Mappage direct, converti en entier non signé.
ses event.idm.read_only_udm.network.session_id, event.idm.read_only_udm.network.session_duration Si la valeur est numérique, elle est analysée en tant que code temporel UNIX et mappée sur session_duration. Sinon, elle est mappée sur session_id.
SeverityLevel security_result.severity Mappé à différents niveaux de gravité en fonction de la valeur (notice/info → INFORMATIONAL, warn → HIGH, error → ERROR, other → UNKNOWN_SEVERITY).
sessionId event.idm.read_only_udm.network.session_id Mappage direct.
size event.idm.read_only_udm.network.received_bytes Mappage direct, converti en entier non signé.
source event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mappage direct après suppression des espaces blancs de début.
SourceSystem event.idm.read_only_udm.principal.resource.attribute.labels, event.idm.read_only_udm.principal.platform Clé : SourceSystem, Valeur : SourceSystem. Également mappé sur platform (Linux -> LINUX, Windows -> WINDOWS, Mac/iOS -> MAC).
SrcIP event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mappage direct.
SrcPort event.idm.read_only_udm.principal.port Mappage direct, converti en entier.
srcIp event.idm.read_only_udm.principal.ip, event.idm.read_only_udm.principal.asset.ip Mappage direct.
srcPort event.idm.read_only_udm.principal.port Mappage direct, converti en entier.
srcUser event.idm.read_only_udm.principal.user.userid Mappage direct.
src_user event.idm.read_only_udm.principal.user.userid Mappage direct.
src_user_display_name event.idm.read_only_udm.principal.user.user_display_name Mappage direct.
status security_result.action Si la valeur est Deferred, la valeur est définie sur BLOCK. Si la valeur est Sent, la valeur est définie sur ALLOW.
summary security_result.summary Mappage direct.
SyslogMessage security_result.description Mappage direct.
targetEmail event.idm.read_only_udm.network.email.to Mappage direct.
targetEmailfrom event.idm.read_only_udm.network.email.from Mappage direct.
targetHostname event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mappage direct.
target_hostname event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mappage direct.
target_ip event.idm.read_only_udm.target.ip, event.idm.read_only_udm.target.asset.ip Mappage direct.
target_mac event.idm.read_only_udm.target.mac Mappage direct.
target_uri event.idm.read_only_udm.target.url Mappage direct.
TenantId event.idm.read_only_udm.principal.user.product_object_id Mappage direct.
terminal event.idm.read_only_udm.additional.fields Clé : terminal, Valeur : terminal si la valeur n'est pas vide ou ?.
TimeGenerated event.idm.read_only_udm.metadata.collected_timestamp Analysé comme un code temporel.
timestamp @timestamp Analysé comme un code temporel.
tls_cipher event.idm.read_only_udm.network.tls.cipher Mappage direct.
Type event.idm.read_only_udm.principal.resource.attribute.labels Clé : Type, Valeur : Type
uid event.idm.read_only_udm.principal.user.userid Si la valeur est 0, la valeur est définie sur root. Sinon, mappage direct.
uid_2 event.idm.read_only_udm.target.user.userid Mappage direct si uid est vide.
unit event.idm.read_only_udm.target.application Mappage direct.
url event.idm.read_only_udm.target.url Mappage direct.
user username Mappage direct.
username event.idm.read_only_udm.target.user.userid, event.idm.read_only_udm.principal.user.userid Mappage direct.
user_display_name event.idm.read_only_udm.target.user.user_display_name Mappage direct.
user_present event.idm.read_only_udm.metadata.event_type Si true ou principal_present est défini sur true, définissez event_type sur USER_UNCATEGORIZED.
_Internal_WorkspaceResourceId event.idm.read_only_udm.target.resource.attribute.labels, event.idm.read_only_udm.target.resource.product_object_id Clé : _Internal_WorkspaceResourceId, Valeur : _Internal_WorkspaceResourceId. L'ID de l'abonnement est extrait et associé à product_object_id.
_ItemId event.idm.read_only_udm.principal.resource.attribute.labels Clé : _ItemId, Valeur : _ItemId
_ResourceId event.idm.read_only_udm.principal.resource.attribute.labels, event.idm.read_only_udm.principal.resource.product_object_id Clé : _ResourceId, Valeur : _ResourceId. L'ID de l'abonnement est extrait et associé à product_object_id.
_timestamp @timestamp Analysé comme un code temporel.
_timestamp_tz @timestamp Analysé comme un code temporel.

event.idm.read_only_udm.metadata.event_type : défini sur GENERIC_EVENT au départ, puis remplacé en fonction de la logique de l'analyseur. event.idm.read_only_udm.metadata.product_name : codé en dur sur Unix System. event.idm.read_only_udm.extensions.auth.type : défini sur MACHINE pour certains types d'événements. event.idm.read_only_udm.target.asset.attribute.cloud.environment : défini sur GOOGLE_CLOUD_PLATFORM pour les journaux d'audit Google Cloud . event.idm.read_only_udm.target.resource.resource_type : défini sur VIRTUAL_MACHINE pour les journaux d'audit Google Cloud . event.idm.read_only_udm.extensions.auth.mechanism : définissez la valeur sur USERNAME_PASSWORD pour les événements de connexion. has_target_resource : définie sur true si resource.labels.instance_id ou _Internal_WorkspaceResourceId est présent.

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