Collecter les journaux du daemon d'audit Linux

Compatible avec :

Ce document explique comment ingérer des journaux Linux Audit Daemon (auditd) dans Google Security Operations à l'aide de Bindplane.

Le daemon d'audit Linux est le composant de l'espace utilisateur du système d'audit Linux. Il enregistre les événements liés à la sécurité sur le système, y compris les accès aux fichiers, les appels système, les événements d'authentification et les refus SELinux. Les journaux auditd sont essentiels pour la surveillance de la conformité, la détection des intrusions et l'analyse forensique sur les hôtes Linux.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps.
  • Windows Server 2016 ou version ultérieure, ou hôte Linux avec systemd.
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Un accès root ou sudo sur l'hôte Linux exécutant auditd.
  • Le package auditd est installé et exécuté sur l'hôte Linux source.
  • Le package audispd-plugins installé sur l'hôte Linux source (fournit le plug-in audisp-syslog).

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 obtenir d'autres options d'installation, consultez le guide d'installation de l'agent Bindplane.

Configurer l'agent Bindplane pour ingérer les journaux syslog et les envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    • Linux : /status observiq-otel-collector/config.yaml
    • Windows : C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  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: '<your_customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'AUDITD'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
  • Remplacez <your_customer_id> par le numéro client réel.
  • Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès au fichier d'authentification enregistré à l'étape Obtenir le fichier d'authentification pour l'ingestion.

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

Pour redémarrer l'agent Bindplane sous Linux :

  1. Exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
  2. Vérifiez que le service est en cours d'exécution :

    sudo systemctl status observiq-otel-collector
    
  3. Recherchez les erreurs dans les journaux :

    sudo journalctl -u observiq-otel-collector -f
    

Pour redémarrer l'agent Bindplane sous Windows :

  1. Choisissez l'une des options suivantes :

    • Invite de commande ou PowerShell en tant qu'administrateur :
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Console Services :
      1. Appuyez sur Win+R, saisissez services.msc, puis appuyez sur Entrée.
      2. Localisez le collecteur observIQ OpenTelemetry.
      3. Effectuez un clic droit, puis sélectionnez Redémarrer.
  2. Vérifiez que le service est en cours d'exécution :

    sc query observiq-otel-collector
    
  3. Recherchez les erreurs dans les journaux :

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Configurer auditd pour transférer les journaux via syslog

Le plug-in audisp syslog transmet les événements d'audit à syslog, qui les envoie ensuite à l'agent Bindplane. Il s'agit de la méthode recommandée pour transférer les journaux auditd.

Installer le plug-in audisp syslog

  1. Connectez-vous à l'hôte Linux exécutant auditd avec des droits root ou sudo.
  2. Installez le package audispd-plugins :

    • RHEL/CentOS/Fedora :
    sudo yum install audispd-plugins
    
    • Debian/Ubuntu :
    sudo apt install audispd-plugins
    

Configurer le plug-in syslog

  1. Modifiez le fichier de configuration du plug-in syslog :

    sudo nano /etc/audit/plugins.d/syslog.conf
    
  2. Définissez les valeurs suivantes dans le fichier :

    active = yes
    direction = out
    path = /sbin/audisp-syslog
    type = always
    args = LOG_LOCAL6
    format = string
    
    • active : défini sur yes pour activer le plug-in.
    • path : chemin d'accès au binaire audisp-syslog.
    • type : définissez la valeur sur always pour exécuter le plug-in en tant que programme externe.
    • args : service syslog à utiliser. Il est recommandé d'utiliser LOG_LOCAL6 pour séparer les journaux d'audit des autres messages syslog.
    • format : définissez la valeur sur string pour transmettre les événements dans un format texte adapté à syslog.

Configurer des règles d'audit (facultatif)

  1. Modifiez le fichier de règles d'audit pour définir les événements à capturer :

    sudo nano /etc/audit/rules.d/audit.rules
    
  2. Ajoutez des règles en fonction de vos besoins de surveillance. Exemple :

    ## Delete all existing rules
    -D
    
    ## Set buffer size (increase for high-volume systems)
    -b 8192
    
    ## Set failure mode (1 = printk, 2 = panic)
    -f 1
    
    ## Monitor authentication-related files
    -w /etc/passwd -p wa -k identity
    -w /etc/group -p wa -k identity
    -w /etc/shadow -p wa -k identity
    -w /etc/sudoers -p wa -k sudoers
    
    ## Monitor login events
    -w /var/log/faillog -p wa -k logins
    -w /var/log/lastlog -p wa -k logins
    
    ## Monitor process execution
    -a always,exit -F arch=b64 -S execve -k exec
    
    ## Monitor network configuration changes
    -a always,exit -F arch=b64 -S sethostname -S setdomainname -k network
    
    ## Make the configuration immutable (must be the last rule)
    -e 2
    
  3. Chargez les nouvelles règles d'audit :

    sudo augenrules --load
    

Redémarrer auditd

  1. Redémarrez le service auditd pour appliquer les modifications apportées au plug-in et aux règles :

    sudo service auditd restart
    

Configurer rsyslog pour transférer les journaux d'audit vers Bindplane

  1. Créez un fichier de configuration rsyslog pour le transfert des journaux d'audit :

    sudo nano /etc/rsyslog.d/audit-forward.conf
    
  2. Ajoutez la ligne suivante pour transférer les journaux via UDP à l'agent Bindplane :

    local6.* @<BINDPLANE_IP>:514
    
  3. Redémarrez rsyslog pour appliquer les modifications :

    sudo systemctl restart rsyslog
    

Vérifier le transfert de journaux

  1. Sur l'hôte Linux source, générez un événement d'audit de test :

    sudo auditctl -w /tmp/test_audit -p wa -k test_chronicle
    
  2. Déclenchez le fichier en appuyant dessus :

    touch /tmp/test_audit
    
  3. Sur l'hôte de l'agent Bindplane, vérifiez que les journaux sont bien reçus :

    sudo journalctl -u observiq-otel-collector -f
    

Table de mappage UDM

Champ de journal Mappage UDM Logique
acct target.user.userid Valeur extraite du champ acct.
addr principal.ip Valeur extraite du champ addr s'il s'agit d'une adresse IP valide.
arch additional.fields Ajouté en tant que paire clé-valeur avec la clé "arch".
auid principal.user.userid Valeur extraite du champ auid. Utilisé comme ID utilisateur d'audit.
comm target.process.command_line Valeur extraite du champ comm.
cwd additional.fields Ajouté en tant que paire clé-valeur avec la clé "cwd".
exe target.process.file.full_path Valeur extraite du champ exe.
exit additional.fields Ajouté en tant que paire clé-valeur avec la clé "exit".
gid principal.user.group_identifiers Valeur extraite du champ gid.
hostname principal.hostname Valeur extraite du champ hostname.
key security_result.detection_fields Ajouté en tant que paire clé-valeur avec la clé "audit_key".
msg metadata.description Analysé à partir du champ msg. Contient le message de l'événement d'audit.
name target.file.full_path Valeur extraite du champ name, le cas échéant.
node principal.hostname Valeur extraite du champ node si hostname n'est pas présent.
op metadata.product_event_type Valeur extraite du champ op (type d'opération).
pid principal.process.pid Valeur extraite du champ pid.
ppid principal.process.parent_process.pid Valeur extraite du champ ppid.
res security_result.action Définissez la valeur sur "ALLOW" si res est défini sur "success" ou "1". Définissez sur "BLOCK" si res est défini sur "failed" ou "0".
ses network.session_id Valeur extraite du champ ses (ID de session).
subj principal.process.file.full_path Valeur extraite du champ subj (contexte SELinux du sujet).
syscall additional.fields Ajouté en tant que paire clé-valeur avec la clé "syscall".
terminal additional.fields Ajouté en tant que paire clé-valeur avec la clé "terminal".
type metadata.product_event_type Valeur extraite du champ type (type d'enregistrement d'audit, par exemple SYSCALL, USER_LOGIN ou EXECVE).
uid principal.user.userid Valeur extraite du champ uid.
metadata.event_type Dérivé du type d'enregistrement d'audit. Définissez la valeur sur "USER_LOGIN" pour les événements de connexion, "USER_LOGOUT" pour les événements de déconnexion, "PROCESS_LAUNCH" pour les événements d'exécution et "FILE_MODIFICATION" pour les événements de fichier. La valeur par défaut est "GENERIC_EVENT".
metadata.product_name Définissez-le sur "auditd".
metadata.vendor_name Défini sur "Linux".
home event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
shell event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
name event.idm.read_only_udm.target.user.userid Mappé à partir du journal des modifications
name event.idm.read_only_udm.target.group.group_display_name Mappé à partir du journal des modifications
UID event.idm.read_only_udm.target.user.product_object_id Mappé à partir du journal des modifications
GID event.idm.read_only_udm.target.user.group_identifiers Mappé à partir du journal des modifications
GID event.idm.read_only_udm.target.group.product_object_id Mappé à partir du journal des modifications
key_type event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
hash event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
key_fingerprint event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
user event.idm.read_only_udm.target.user.userid Mappé à partir du journal des modifications
error_detail1 event.idm.read_only_udm.security_result.summary Mappé à partir du journal des modifications
service_name event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
ssh_disconnect_code event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
labels.bp_csoc event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
labels.bp_env_id event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
labels.log.file.name event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
resource.labels.node_id event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
intermediary_host event.idm.read_only_udm.intermediary.hostname Mappé à partir du journal des modifications
PWD event.idm.read_only_udm.target.file.full_path Mappé à partir du journal des modifications
log_details event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
indicator.SUID event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.UID event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.AUID event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
type_crypto_props.msg event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
usr event.idm.read_only_udm.principal.user.userid Mappé à partir du journal des modifications
pi event.idm.read_only_udm.principal.process.pid Mappé à partir du journal des modifications
cmnd event.idm.read_only_udm.target.process.command_line Mappé à partir du journal des modifications
proctitle_value event.idm.read_only_udm.principal.process.file.full_path Mappé à partir du journal des modifications
filename event.idm.read_only_udm.principal.process.file.names Mappé à partir du journal des modifications
filepath event.idm.read_only_udm.target.file.full_path Mappé à partir du journal des modifications
uid event.idm.read_only_udm.principal.user.userid Mappé à partir du journal des modifications
acct event.idm.read_only_udm.principal.user.user_display_name Mappé à partir du journal des modifications
exe event.idm.read_only_udm.target.process.file.full_path Mappé à partir du journal des modifications
pid event.idm.read_only_udm.principal.process.pid Mappé à partir du journal des modifications
auid event.idm.read_only_udm.about.user.userid Mappé à partir du journal des modifications
ses event.idm.read_only_udm.network.session_id Mappé à partir du journal des modifications
addr event.idm.read_only_udm.principal.ip et event.idm.read_only_udm.principal.asset.ip Mappé à partir du journal des modifications
subj event.idm.read_only_udm.additional.fields Mappé à partir du journal des modifications
res event.idm.read_only_udm.security_result.summary Mappé à partir du journal des modifications
op event.idm.read_only_udm.security_result.summary Mappé à partir du journal des modifications
msg_value event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
grantors_value event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.msg event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.grantors event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
terminal event.idm.read_only_udm.principal.application Mappé à partir du journal des modifications
sec_result event.idm.read_only_udm.security_result Mappé à partir du journal des modifications
hostname event.idm.read_only_udm.principal.hostname Mappé à partir du journal des modifications
indicator.mode event.idm.read_only_udm.src.user.attribute.permissions Mappé à partir du journal des modifications
indicator.nametype event.idm.read_only_udm.security_result.rule_name Mappé à partir du journal des modifications
indicator.cap_frootid event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.cap_fver event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.cap_fi event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.cap_fp event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
indicator.cap_fe event.idm.read_only_udm.security_result.detection_fields Mappé à partir du journal des modifications
OUID event.idm.read_only_udm.principal.user.userid Mappé à partir du journal des modifications
OGID event.idm.read_only_udm.principal.group.group_display_name Mappé à partir du journal des modifications
action_data event.idm.read_only_udm.security_result.action_details Mappé à partir du journal des modifications
target_email event.idm.ready_only_udm.target.user.email_addresses Mappé à partir du journal des modifications
target_port event.idm.ready_only_udm.target.port Mappé à partir du journal des modifications
status event.idm.ready_only_udm.security_result.action_details Mappé à partir du journal des modifications
to_email event.idm.ready_only_udm.network.email.to Mappé à partir du journal des modifications
target_hostname event.idm.ready_only_udm.target.hostname Mappé à partir du journal des modifications
"relay_data" event.idm.ready_only_udm.additional.fields Mappé à partir du journal des modifications
"delays_data" event.idm.ready_only_udm.additional.fields Mappé à partir du journal des modifications
"delay_data" event.idm.ready_only_udm.additional.fields Mappé à partir du journal des modifications
and "dns_data" event.idm.ready_only_udm.additional.fields Mappé à partir du journal des modifications
bytes_sent event.idm.ready_only_udm.network.sent_bytes Mappé à partir du journal des modifications
bytes_received event.idm.ready_only_udm.network.received_bytes Mappé à partir du journal des modifications
response_code event.idm.ready_only_udm.network.http.response_code Mappé à partir du journal des modifications
principal_user_name principal.user.userid Mappé à partir du journal des modifications
remote principal.ip Mappé à partir du journal des modifications
method network.http.method Mappé à partir du journal des modifications
path principal.file.full_path Mappé à partir du journal des modifications
code additional.fields Mappé à partir du journal des modifications
size principal.file.size Mappé à partir du journal des modifications
agent network.http.user_agent Mappé à partir du journal des modifications
az principal.location.name Mappé à partir du journal des modifications
ec2_instance_id principal.asset.product_object_id Mappé à partir du journal des modifications
private_ip principal.ip Mappé à partir du journal des modifications
ProviderName additional.fields Mappé à partir du journal des modifications
Version additional.fields Mappé à partir du journal des modifications
Task additional.fields Mappé à partir du journal des modifications
EventRecordID additional.fields Mappé à partir du journal des modifications
ThreadID additional.fields Mappé à partir du journal des modifications
messageType target.resource.attribute.labels Mappé à partir du journal des modifications
owner principal.user.userid Mappé à partir du journal des modifications
logevent.id metadata.product_log_id Mappé à partir du journal des modifications
logGroup secu_result.about.resource.name Mappé à partir du journal des modifications
logStream secu_result.about.resource.attribute.labels Mappé à partir du journal des modifications
ip_addr principal.ip Mappé à partir du journal des modifications
gd secu_result.description Mappé à partir du journal des modifications
process target.application Mappé à partir du journal des modifications
pid target.process.pid Mappé à partir du journal des modifications
status_code network.http.response_code Mappé à partir du journal des modifications
url network.http.referral_url Mappé à partir du journal des modifications
useragent network.http.user_agent Mappé à partir du journal des modifications
request additional.fields Mappé à partir du journal des modifications
tls_version network.tls.version Mappé à partir du journal des modifications
hostname_is principal.hostname Mappé à partir du journal des modifications
referrer network.http.referral_url Mappé à partir du journal des modifications
metadata.event_type USER_LOGIN Mappé à partir du journal des modifications
metadata.event_type PROCESS_UNCATEGORIZED Mappé à partir du journal des modifications
srcIP principal.ip Mappé à partir du journal des modifications
username principal.user.user_display_name Mappé à partir du journal des modifications
type_syscall_props.msg additional.fields Mappé à partir du journal des modifications
sw", "sw_type", and "subj security_result.detection_fields Mappé à partir du journal des modifications
indicator.SYSCALL security_result.detection_fields Mappé à partir du journal des modifications
exe principal.process.file.full_path Mappé à partir du journal des modifications
target.user.userid principal.user.userid Mappé à partir du journal des modifications
target_user_name target.user.userid Mappé à partir du journal des modifications
field field33 Mappé à partir du journal des modifications
fp network.tls.client.certificate.sha256 Mappé à partir du journal des modifications
pid principal.process.pid Mappé à partir du journal des modifications
syslog-tag security_result.detection_fields Mappé à partir du journal des modifications
inter_ip intermediary.ip Mappé à partir du journal des modifications
inter_hostname intermediary.hostname Mappé à partir du journal des modifications
grp target.group.group_display_name Mappé à partir du journal des modifications
id about.user.userid Mappé à partir du journal des modifications
acct target.user.user_display_name Mappé à partir du journal des modifications
uid principal.user.userid Mappé à partir du journal des modifications
auid about.user.userid Mappé à partir du journal des modifications
auid target.user.userid Mappé à partir du journal des modifications
op" and "id security_result.summary Mappé à partir du journal des modifications
op" and "acct security_result.summary Mappé à partir du journal des modifications
labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME" , "CollectorHostName", "HOSTNAME", and "Computer principal.hostname Mappé à partir du journal des modifications
HostIP principal.ip Mappé à partir du journal des modifications
ProcessID" and "jsonPayload._PID principal.process.pid Mappé à partir du journal des modifications
SyslogMessage metadata.description Mappé à partir du journal des modifications
TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId", and "Facility additional.fields Mappé à partir du journal des modifications
SeverityLevel security_result.severity Mappé à partir du journal des modifications
SourceSystem principal.platform Mappé à partir du journal des modifications
jsonPayload._COMM principal.application Mappé à partir du journal des modifications
jsonPayload._EXE target.process.file.full_path Mappé à partir du journal des modifications
jsonPayload._AUDIT_FIELD_FILE target.file.full_path Mappé à partir du journal des modifications
jsonPayload._AUDIT_FIELD_HASH target.file.hash Mappé à partir du journal des modifications
jsonPayload._AUDIT_SESSION network.session_id Mappé à partir du journal des modifications
jsonPayload._PPID principal.process.parent_process.pid Mappé à partir du journal des modifications
jsonPayload._AUDIT_FIELD_A0", "jsonPayload._AUDIT_FIELD_A1", "jsonPayload._AUDIT_FIELD_A2", "jsonPayload._AUDIT_FIELD_A3", "jsonPayload._BOOT_ID", and "jsonPayload._AUDIT_FIELD_EXIT security_result.detection_fields Mappé à partir du journal des modifications
id target.user.userid Mappé à partir du journal des modifications
ID target.user.user_display_name Mappé à partir du journal des modifications
user_name principal.user.userid Mappé à partir du journal des modifications
principal_user_userid principal.user.userid Mappé à partir du journal des modifications
vendor_name Linux Mappé à partir du journal des modifications
product_name AuditD Mappé à partir du journal des modifications
ip target.ip Mappé à partir du journal des modifications
success security_result.summary Mappé à partir du journal des modifications
syscall", "exit", "tty", "a0", "a1", "a2", "a3 security_result.about.labels Mappé à partir du journal des modifications

Journal des modifications

Afficher le journal des modifications pour ce parseur

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