איסוף יומנים של MySQL

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של MySQL ב-Google Security Operations באמצעות סוכן Bindplane.

‫MySQL היא מערכת לניהול מסדי נתונים רלציוניים שמפיקה הודעות syslog לאירועי אימות, להרצת שאילתות, לפעולות במסד הנתונים ולרשומות בנתיב הביקורת. המנתח מחלץ שדות מיומני ביקורת בפורמט syslog וממפה אותם למודל הנתונים המאוחד (UDM).

לפני שמתחילים

חשוב לוודא שיש לכם את הדברים הבאים:

  • מופע של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות רשת בין סוכן Bindplane לבין שרת MySQL
  • אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
  • גישת SSH למארח MySQL עם הרשאות רוט או sudo

קבלת קובץ אימות להטמעת נתונים ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents.
  3. מורידים את קובץ האימות להטמעת נתונים.
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.

איך מוצאים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
  3. מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת סוכן Bindplane

מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנה ב-Windows

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sc query observiq-otel-collector
    

    השירות צריך להופיע עם הערך RUNNING.

התקנה ב-Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sudo systemctl status observiq-otel-collector
    

    השירות צריך להופיע כפעיל (פועל).

מקורות מידע נוספים להתקנה

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.

הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps

מאתרים את קובץ התצורה

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • ‫Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ התצורה

  • מחליפים את כל התוכן של config.yaml בהגדרה הבאה:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/mysql:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: MYSQL
            raw_log_field: body
    
    service:
        pipelines:
            logs/mysql_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/mysql
    

פרמטרים להגדרה

מחליפים את ה-placeholders הבאים:

  • הגדרת מקלט:

    • ‫listen_address: כתובת ה-IP והיציאה להאזנה:
      • 0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • יציאה 514 היא יציאת syslog רגילה (נדרשת הרשאת root ב-Linux; אפשר להשתמש ב-1514 ללא הרשאת root)
  • הגדרת הייצוא:

    • ‫creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫customer_id: מספר הלקוח שהועתק ממסוף Google SecOps
    • ‫endpoint: כתובת ה-URL של נקודת הקצה האזורית:

שמירת קובץ התצורה

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • ‫Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X.
    • ‫Windows: לוחצים על קובץ > שמירה.

מפעילים מחדש את הסוכן של Bindplane כדי להחיל את השינויים.

  • כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
    1. מוודאים שהשירות פועל:

      sudo systemctl status observiq-otel-collector
      
    2. בודקים אם יש שגיאות ביומנים:

      sudo journalctl -u observiq-otel-collector -f
      
  • כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:

    • שורת הפקודה או PowerShell כאדמין:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • מסוף השירותים:

      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מחפשים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
      4. מוודאים שהשירות פועל:

        sc query observiq-otel-collector
        
      5. בודקים אם יש שגיאות ביומנים:

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

הגדרת syslog ב-MySQL

  1. נכנסים למארח MySQL באמצעות SSH.
  2. מתחברים למסד הנתונים של MySQL:

    mysql -u root -p
    
  3. אימות של תוסף הביקורת server_audit.so:

    show variables like 'plugin_dir';
    
  4. אם הפלאגין לא נמצא, מתקינים אותו:

    install plugin server_audit soname 'server_audit.so';
    
  5. מוודאים שהפלאגין Installed (מותקן) וEnabled (מופעל):

    show plugins;
    
  6. עורכים את הקובץ /etc/my.cnf ומפעילים את הגדרות הביקורת הבאות:

    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. מאמתים את משתני הביקורת:

    show global variables like "server_audit%";
    
  8. מוודאים שהביקורת מופעלת:

    Show global status like 'server_audit%';
    
  9. עורכים את הקובץ /etc/rsyslog.conf כדי להפעיל העברה באמצעות UDP:

    *.* @@<bindplane-agent-ip>:<bindplane-agent-port>
    
    • מחליפים את <bindplane-agent-ip> ואת <bindplane-agent-port> בתצורת הסוכן של Bindplane.
  10. מפעילים מחדש את שירות MySQL:

    /etc/init.d/mysqld restart
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
פעולה read_only_udm.metadata.event_type אם הערך הוא Created, אז FILE_CREATION, אם הערך הוא Deleted, אז FILE_DELETION, אחרת לא מתבצע שינוי.
מסד נתונים 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 זהו משתנה זמני, אפשר להתעלם ממנו
error_level read_only_udm.security_result.severity אם הערך הוא error, אז ERROR. אם הערך הוא warning, אז MEDIUM. אם הערך הוא note, אז INFORMATIONAL. אחרת, אין שינוי.
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
שם המארח read_only_udm.principal.hostname
inner_message read_only_udm.security_result.description
סיכום read_only_udm.metadata.product_event_type
טבלה read_only_udm.target.resource.name
table_not_found This is a temporary variable, ignore it
חותמת זמן read_only_udm.metadata.event_timestamp
read_only_udm.extensions.auth.type ערך סטטי – MACHINE
read_only_udm.metadata.event_type ערך סטטי – USER_LOGIN, ‏ GENERIC_EVENT, ‏ STATUS_UPDATE, ‏ FILE_CREATION, ‏ FILE_DELETION
read_only_udm.metadata.log_type ערך סטטי – MYSQL
read_only_udm.metadata.product_name ערך סטטי – MySQL
read_only_udm.metadata.vendor_name ערך סטטי – Oracle Corporation
read_only_udm.security_result.action ערך סטטי – BLOCK
read_only_udm.target.resource.resource_type ערך סטטי – DATABASE, TABLE
properties.event_time event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
properties.ip event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
properties.user event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
properties.error_code event.idm.read_only_udm.security_result.description מופה מיומן השינויים
properties.event_subclass event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.is_aad_auth event.idm.read_only_udm.additional.fields מופה מיומן השינויים
category event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
ServerType event.idm.read_only_udm.target.application מופה מיומן השינויים
target_app event.idm.read_only_udm.target.application מופה מיומן השינויים
properties.start_time event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
ts event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
time event.idm.read_only_udm.metadata.collected_timestamp מופה מיומן השינויים
properties.server_id event.idm.read_only_udm.target.asset.asset_id מופה מיומן השינויים
properties.thread_id event.idm.read_only_udm.principal.process.pid מופה מיומן השינויים
user_id event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
p_host event.idm.read_only_udm.principal.hostname מופה מיומן השינויים
p_host event.idm.read_only_udm.principal.asset.hostname מופה מיומן השינויים
properties.db event.idm.read_only_udm.target.resource.name מופה מיומן השינויים
resourceId event.idm.read_only_udm.target.resource.product_object_id מופה מיומן השינויים
operationName event.idm.read_only_udm.metadata.description מופה מיומן השינויים
location event.idm.read_only_udm.target.location.name מופה מיומן השינויים
properties.host event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.last_insert_id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.insert_id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.sql_text event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.rows_examined event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.rows_sent event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.lock_time event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.query_time event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.replication_set_role event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.event_class event.idm.read_only_udm.additional.fields מופה מיומן השינויים
csv_principal_hostname event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
csv_hostname event.idm.read_only_udm.target.hostname וגם event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
csv_principal_hostname event.idm.read_only_udm.principal.hostname וגם event.idm.read_only_udm.principal.asset.hostname מופה מיומן השינויים
ts event.idm.read_only_udm.additional.fields מופה מיומן השינויים
csv_query_id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
csv_mysql event.idm.read_only_udm.additional.fields מופה מיומן השינויים
account_host event.idm.read_only_udm.principal.resource.attribute.labels מופה מיומן השינויים
login_proxy event.idm.read_only_udm.principal.resource.attribute.labels מופה מיומן השינויים
login_os event.idm.read_only_udm.principal.resource.attribute.labels מופה מיומן השינויים
arg event.idm.read_only_udm.principal.resource.attribute.labels מופה מיומן השינויים
startup_data_server_id event.idm.read_only_udm.principal.resource.product_object_id מופה מיומן השינויים
startup_data_os_version event.idm.read_only_udm.principal.platform_version מופה מיומן השינויים
startup_data_mysql_version event.idm.read_only_udm.metadata.product_version מופה מיומן השינויים
arg event.idm.read_only_udm.principal.process.command_line מופה מיומן השינויים
csv_mysql_sql_query event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
hostname event.idm.read_only_udm.intermediary.hostname וגם event.idm.read_only_udm.intermediary.asset.hostname מופה מיומן השינויים
id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
login.proxy event.idm.read_only_udm.additional.fields מופה מיומן השינויים
connection_data.connection_type event.idm.read_only_udm.additional.fields מופה מיומן השינויים
connection_data.status event.idm.read_only_udm.additional.fields מופה מיומן השינויים
login.os event.idm.read_only_udm.principal.platform_version מופה מיומן השינויים
account.host event.idm.read_only_udm.target.hostname וגם event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
connection_data.db event.idm.read_only_udm.target.application מופה מיומן השינויים
mysql_description event.idm.read_only_udm.metadata.description מופה מיומן השינויים
mysql_errno event.idm.read_only_udm.metadata.product_log_id מופה מיומן השינויים
mysql_version event.idm.read_only_udm.metadata.product_version מופה מיומן השינויים
process_path event.idm.read_only_udm.principal.process.file.full_path מופה מיומן השינויים
mysql_port event.idm.read_only_udm.principal.port מופה מיומן השינויים
status event.idm.read_only_udm.security_result.summary מופה מיומן השינויים
error_level event.idm.read_only_udm.security_result.severity_details מופה מיומן השינויים
mysql_thread_id event.idm.read_only_udm.network.session_id מופה מיומן השינויים
mysql_socket event.idm.read_only_udm.additional.fields מופה מיומן השינויים
log_level event.idm.read_only_udm.additional.fields מופה מיומן השינויים
mysql_timestamp event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
event_date event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
event_time event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
csv_timestamp event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
mysql_action event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
log_category event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
csv_mysql_action event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
csv_mysql_connection_type event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
event_message event.idm.read_only_udm.metadata.description מופה מיומן השינויים
resolution_error event.idm.read_only_udm.metadata.description מופה מיומן השינויים
component event.idm.read_only_udm.principal.application מופה מיומן השינויים
mysql_hostname event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
csv_hostname_ip event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
mysql_username event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
csv_username event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
csv_target_hostname event.idm.read_only_udm.target.hostname וגם event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
csv_database_name event.idm.read_only_udm.target.resource.name מופה מיומן השינויים
mysql_sql_query event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
csv_connection_id event.idm.read_only_udm.network.session_id מופה מיומן השינויים
mysql_message_id event.idm.read_only_udm.security_result.rule_id מופה מיומן השינויים
target_mysql_hostname event.idm.read_only_udm.target.hostname וגם event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
csv_mysql_connection_type event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
login.ip event.idm.read_only_udm.principal.ip מופה מיומן השינויים
login.ip event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
login.user event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
account.user event.idm.read_only_udm.target.user.userid מופה מיומן השינויים
inter_host event.idm.read_only_udm.intermediary.hostname מופה מיומן השינויים
target_host event.idm.read_only_udm.target.hostname מופה מיומן השינויים
target_host event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
target_ip event.idm.read_only_udm.target.ip מופה מיומן השינויים
target_ip event.idm.read_only_udm.target.asset.ip מופה מיומן השינויים
connection_id event.idm.read_only_udm.network.session_id מופה מיומן השינויים
general_data.command event.idm.read_only_udm.target.process.command_line מופה מיומן השינויים
general_data.query event.idm.read_only_udm.security_result.summary מופה מיומן השינויים
connection_data.connection_type event.idm.read_only_udm.network.ip_protocol מופה מיומן השינויים
general_data.sql_command event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
event_data event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
general_data.status event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
class event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
Status event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
sql_query event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
value event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
num event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
ns event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
itemid event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
value_min event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
value_avg event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
value_max event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
query_id event.idm.read_only_udm.target.resource.attribute.labels מופה מיומן השינויים
clock event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
path principal.file.full_path מופה מיומן השינויים
logtype metadata.product_event_type מופה מיומן השינויים

יומן שינויים

צפייה ביומן השינויים של המנתח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.