Collecter les journaux MySQL

Compatible avec :

Ce document explique comment ingérer des journaux MySQL dans Google Security Operations à l'aide de Bindplane. L'analyseur extrait d'abord les champs communs des messages SYSLOG MySQL à l'aide de grok. Il utilise ensuite des branchements conditionnels (if, else if) et la correspondance des expressions régulières pour identifier des types d'événements spécifiques dans les messages du journal, en extrayant et en mappant les informations pertinentes dans le schéma UDM (Unified Data Model).

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.
  • Accès privilégié à l'hôte MySQL
  • Base de données MySQL et Rsyslog installés

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 Bindlane

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: '/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: 'MYSQL'
                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 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.

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
    

Configurer Syslog dans MySQL

  1. Connectez-vous à l'hôte MySQL à l'aide de SSH.

  2. Connectez-vous à la base de données MySQL :

    mysql -u root -p
    
  3. Vérifiez le plug-in d'audit server_audit.so :

    show variables like 'plugin_dir';
    
  4. Si vous ne trouvez pas le fichier du plug-in dans son répertoire, installez le plug-in à l'aide de la commande suivante :

    install plugin server_audit soname 'server_audit.so';
    
  5. Vérifiez que le plug-in est installé et activé :

    show plugins;
    
  6. Modifiez le fichier /etc/my.cnf à l'aide de vi, activez les éléments suivants et enregistrez le fichier :

    server_audit_events='CONNECT,QUERY,TABLE'
    server_audit_file_path=server_audit.log
    server_audit_logging=ON
    server_audit_output_type=SYSLOG
    server_audit_syslog_facility=LOG_LOCAL6
    
  7. Vérifiez les variables d'audit à l'aide de la commande suivante :

    show global variables like "server_audit%";
    
  8. Vérifiez que l'audit est activé à l'aide de la commande suivante :

    Show global status like 'server_audit%';
    
  9. Modifiez le fichier /etc/rsyslog.conf à l'aide de vi pour activer l'utilisation d'UDP et enregistrer le fichier :

    *.* @@<bindplane-agent-ip>:<bindplane-agent-port>
    
  10. Remplacez <bindplane-agent-ip> et <bindplane-agent-port> par la configuration de votre agent Bindplane.

  11. Redémarrez le service MySQL et connectez-vous à la base de données MySQL.

    /etc/init.d/mysqld restart
    

Table de mappage UDM

Champ du journal Mappage UDM Logique
action read_only_udm.metadata.event_type Si la valeur est Created, la valeur est FILE_CREATION. Si la valeur est Deleted, la valeur est FILE_DELETION. Sinon, aucune modification n'est apportée.
base de données read_only_udm.target.resource.parent
db_hostname read_only_udm.target.hostname
db_user read_only_udm.target.user.userid
description read_only_udm.security_result.description
error_details Il s'agit d'une variable temporaire. Ignorez-la.
error_level read_only_udm.security_result.severity Si la valeur est error, le niveau de gravité est défini sur "ERROR" (ERREUR). S'il est warning, il est défini sur "MEDIUM" (MOYEN). S'il est note, il est défini sur "INFORMATIONAL" (INFORMATIONNEL). Sinon, aucune modification n'est apportée.
error_message read_only_udm.security_result.summary
file_path read_only_udm.target.file.full_path
file_size read_only_udm.target.file.size
nom d'hôte read_only_udm.principal.hostname
inner_message read_only_udm.security_result.description
résumé read_only_udm.metadata.product_event_type
table read_only_udm.target.resource.name
table_not_found Il s'agit d'une variable temporaire. Ignorez-la.
timestamp read_only_udm.metadata.event_timestamp
read_only_udm.extensions.auth.type Valeur statique : MACHINE
read_only_udm.metadata.event_type Valeur statique : USER_LOGIN, GENERIC_EVENT, STATUS_UPDATE, FILE_CREATION, FILE_DELETION
read_only_udm.metadata.log_type Valeur statique : MYSQL
read_only_udm.metadata.product_name Valeur statique : MySQL
read_only_udm.metadata.vendor_name Valeur statique : Oracle Corporation
read_only_udm.security_result.action Valeur statique : BLOCK
read_only_udm.target.resource.resource_type Valeur statique : DATABASE, TABLE

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