איסוף יומנים של 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
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sc query observiq-otel-collectorהשירות צריך להופיע עם הערך RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sudo systemctl status observiq-otel-collectorהשירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps
מאתרים את קובץ התצורה
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
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
- Linux:
-
customer_id: מספר הלקוח שהועתק ממסוף Google SecOps -
endpoint: כתובת ה-URL של נקודת הקצה האזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - לרשימה המלאה של נקודות קצה אזוריות
- ארה"ב:
-
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X. - Windows: לוחצים על קובץ > שמירה.
- Linux: מקישים על
מפעילים מחדש את הסוכן של Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:
שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collectorמסוף השירותים:
- מקישים על
Win+R, מקלידיםservices.mscומקישים על Enter. - מחפשים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- מקישים על
הגדרת syslog ב-MySQL
- נכנסים למארח MySQL באמצעות SSH.
מתחברים למסד הנתונים של MySQL:
mysql -u root -pאימות של תוסף הביקורת
server_audit.so:show variables like 'plugin_dir';אם הפלאגין לא נמצא, מתקינים אותו:
install plugin server_audit soname 'server_audit.so';מוודאים שהפלאגין Installed (מותקן) וEnabled (מופעל):
show plugins;עורכים את הקובץ
/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מאמתים את משתני הביקורת:
show global variables like "server_audit%";מוודאים שהביקורת מופעלת:
Show global status like 'server_audit%';עורכים את הקובץ
/etc/rsyslog.confכדי להפעיל העברה באמצעות UDP:*.* @@<bindplane-agent-ip>:<bindplane-agent-port>- מחליפים את
<bindplane-agent-ip>ואת<bindplane-agent-port>בתצורת הסוכן של Bindplane.
- מחליפים את
מפעילים מחדש את שירות 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.