איסוף יומנים של Linux Audit Daemon

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של Linux Audit Daemon ‏ (auditd) ב-Google Security Operations באמצעות Bindplane.

הדימון (daemon) של הביקורת ב-Linux הוא רכיב מרחב המשתמשים של מערכת הביקורת ב-Linux. הוא מתעד אירועים שקשורים לאבטחה במערכת, כולל גישה לקבצים, קריאות למערכת, אירועי אימות ודחיות של SELinux. יומני Auditd חיוניים למעקב אחרי תאימות, לזיהוי פריצות ולניתוח משפטי במארחי Linux.

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

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מכונה של Google SecOps.
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd.
  • אם מריצים את הסוכן מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
  • גישת Root או sudo במארח Linux שבו פועל auditd.
  • חבילת auditd מותקנת ופועלת במארח Linux של המקור.
  • החבילה audispd-plugins שמותקנת במארח המקור של Linux (מספקת את הפלאגין audisp-syslog).

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

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

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

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

התקנת הסוכן של Bindplane

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

התקנת חלונות

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

התקנה ב-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
    

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

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

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

  1. ניגשים לקובץ התצורה:

    • ‫Linux: /status observiq-otel-collector/config.yaml
    • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
  2. עורכים את הקובץ config.yaml באופן הבא:

    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
    
  • מחליפים את היציאה ואת כתובת ה-IP לפי הצורך בתשתית שלכם.
  • מחליפים את <your_customer_id> במספר הלקוח בפועל.
  • מעדכנים את /path/to/ingestion-authentication-file.json לנתיב הקובץ שבו נשמר קובץ האימות בשלב קבלת קובץ אימות להעלאת נתונים.

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

כדי להפעיל מחדש את סוכן Bindplane ב-Linux:

  1. מריצים את הפקודה הבאה:

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

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

    sudo journalctl -u observiq-otel-collector -f
    

כדי להפעיל מחדש את סוכן Bindplane ב-Windows:

  1. בוחרים אחת מהאפשרויות האלה:

    • שורת הפקודה או PowerShell כאדמין:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • מסוף השירותים:
      1. לוחצים על Win+R, מקלידים services.msc ולוחצים על Enter.
      2. מאתרים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
  2. מוודאים שהשירות פועל:

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

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

הגדרה של auditd להעברת יומנים באמצעות syslog

התוסף audisp syslog מעביר אירועי ביקורת ל-syslog, ששולח אותם לסוכן Bindplane. זו השיטה המומלצת להעברת יומני auditd.

התקנת הפלאגין audisp syslog

  1. נכנסים למארח Linux שבו פועל auditd עם הרשאות root או sudo.
  2. מתקינים את החבילה audispd-plugins:

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

הגדרת הפלאגין syslog

  1. עורכים את קובץ התצורה של הפלאגין syslog:

    ‫
    sudo nano /etc/audit/plugins.d/syslog.conf
    
  2. מגדירים את הערכים הבאים בקובץ:

    active = yes
    direction = out
    path = /sbin/audisp-syslog
    type = always
    args = LOG_LOCAL6
    format = string
    
    • active: מגדירים את הערך yes כדי להפעיל את הפלאגין.
    • ‫path: הנתיב לקובץ הבינארי של audisp-syslog.
    • ‫type: צריך להגדיר את הערך always כדי להריץ את הפלאגין כתוכנה חיצונית.
    • ‫args: מתקן syslog לשימוש. LOG_LOCAL6 מומלץ להפריד בין יומני ביקורת לבין הודעות אחרות של syslog.
    • ‫format: צריך להגדיר את הערך string כדי להעביר אירועים בפורמט טקסט שמתאים ל-syslog.

הגדרת כללי ביקורת (אופציונלי)

  1. עורכים את קובץ כללי הביקורת כדי להגדיר אילו אירועים לתעד:

    sudo nano /etc/audit/rules.d/audit.rules
    
  2. מוסיפים כללים בהתאם לדרישות המעקב. לדוגמה:

    ## 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. טוענים את כללי הביקורת החדשים:

    sudo augenrules --load
    

הפעלה מחדש של auditd

  1. מפעילים מחדש את שירות auditd כדי להחיל את השינויים בפלאגין ובכללים:

    sudo service auditd restart
    

הגדרת rsyslog להעברת יומני ביקורת ל-Bindplane

  1. יוצרים קובץ תצורה חדש של rsyslog להעברת יומני ביקורת:

    sudo nano /etc/rsyslog.d/audit-forward.conf
    
  2. מוסיפים את השורה הבאה כדי להעביר יומנים באמצעות UDP לסוכן Bindplane:

    local6.* @<BINDPLANE_IP>:514
    
  3. מפעילים מחדש את rsyslog כדי שהשינויים ייכנסו לתוקף:

    sudo systemctl restart rsyslog
    

אימות העברת היומנים

  1. במארח המקור של Linux, יוצרים אירוע ביקורת לבדיקה:

    sudo auditctl -w /tmp/test_audit -p wa -k test_chronicle
    
  2. כדי להפעיל את הצפייה, לוחצים על הקובץ:

    touch /tmp/test_audit
    
  3. במארח של סוכן Bindplane, מוודאים שהיומנים מתקבלים:

    sudo journalctl -u observiq-otel-collector -f
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
acct target.user.userid הערך נלקח מהשדה acct.
addr principal.ip הערך נלקח מהשדה addr אם הוא כתובת IP תקינה.
arch additional.fields התוספת מתבצעת כצמד מפתח/ערך עם המפתח arch.
auid principal.user.userid הערך נלקח מהשדה auid. משמש בתור מזהה המשתמש בביקורת.
comm target.process.command_line הערך נלקח מהשדה comm.
cwd additional.fields נוסף כצמד מפתח/ערך עם המפתח "cwd".
exe target.process.file.full_path הערך נלקח מהשדה exe.
exit additional.fields הוא מתווסף כצמד מפתח/ערך עם המפתח exit.
gid principal.user.group_identifiers הערך נלקח מהשדה gid.
hostname principal.hostname הערך נלקח מהשדה hostname.
key security_result.detection_fields הערך מתווסף כצמד מפתח/ערך עם המפתח audit_key.
msg metadata.description מנותח מהשדה msg. מכיל את הודעת אירוע הביקורת.
name target.file.full_path הערך נלקח מהשדה name כשהוא רלוונטי.
node principal.hostname הערך נלקח מהשדה node אם השדה hostname לא קיים.
op metadata.product_event_type הערך נלקח מהשדה op (סוג הפעולה).
pid principal.process.pid הערך נלקח מהשדה pid.
ppid principal.process.parent_process.pid הערך נלקח מהשדה ppid.
res security_result.action צריך להגדיר את הערך "ALLOW" אם הערך של res הוא "success" או "1". צריך להגדיר את הערך BLOCK אם הערך של res הוא failed או 0.
ses network.session_id הערך נלקח מהשדה ses (מזהה הסשן).
subj principal.process.file.full_path הערך נלקח מהשדה subj (הקשר הנושא של SELinux).
syscall additional.fields התווסף כצמד מפתח/ערך עם המפתח syscall.
terminal additional.fields נוסף כצמד מפתח/ערך עם המפתח "terminal".
type metadata.product_event_type הערך נלקח מהשדה type (סוג רשומת הביקורת, למשל SYSCALL,‏ USER_LOGIN,‏ EXECVE).
uid principal.user.userid הערך נלקח מהשדה uid.
metadata.event_type הערך נגזר מסוג רשומת הביקורת. הערך שמוגדר הוא USER_LOGIN לאירועי התחברות, USER_LOGOUT לאירועי יציאה מהחשבון, PROCESS_LAUNCH לאירועי הפעלה ו-FILE_MODIFICATION לאירועים שקשורים לקבצים. ברירת המחדל היא GENERIC_EVENT.
metadata.product_name ההגדרה היא auditd.
metadata.vendor_name מגדירים את האפשרות 'Linux'.
home event.idm.read_only_udm.additional.fields מופה מיומן השינויים
shell event.idm.read_only_udm.additional.fields מופה מיומן השינויים
name event.idm.read_only_udm.target.user.userid מופה מיומן השינויים
name event.idm.read_only_udm.target.group.group_display_name מופה מיומן השינויים
UID event.idm.read_only_udm.target.user.product_object_id מופה מיומן השינויים
GID event.idm.read_only_udm.target.user.group_identifiers מופה מיומן השינויים
GID event.idm.read_only_udm.target.group.product_object_id מופה מיומן השינויים
key_type event.idm.read_only_udm.additional.fields מופה מיומן השינויים
hash event.idm.read_only_udm.additional.fields מופה מיומן השינויים
key_fingerprint event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
user event.idm.read_only_udm.target.user.userid מופה מיומן השינויים
error_detail1 event.idm.read_only_udm.security_result.summary מופה מיומן השינויים
service_name event.idm.read_only_udm.additional.fields מופה מיומן השינויים
ssh_disconnect_code event.idm.read_only_udm.additional.fields מופה מיומן השינויים
labels.bp_csoc event.idm.read_only_udm.additional.fields מופה מיומן השינויים
labels.bp_env_id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
labels.log.file.name event.idm.read_only_udm.additional.fields מופה מיומן השינויים
resource.labels.node_id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
intermediary_host event.idm.read_only_udm.intermediary.hostname מופה מיומן השינויים
PWD event.idm.read_only_udm.target.file.full_path מופה מיומן השינויים
log_details event.idm.read_only_udm.additional.fields מופה מיומן השינויים
indicator.SUID event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.UID event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.AUID event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
type_crypto_props.msg event.idm.read_only_udm.additional.fields מופה מיומן השינויים
usr event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
pi event.idm.read_only_udm.principal.process.pid מופה מיומן השינויים
cmnd event.idm.read_only_udm.target.process.command_line מופה מיומן השינויים
proctitle_value event.idm.read_only_udm.principal.process.file.full_path מופה מיומן השינויים
filename event.idm.read_only_udm.principal.process.file.names מופה מיומן השינויים
filepath event.idm.read_only_udm.target.file.full_path מופה מיומן השינויים
uid event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
acct event.idm.read_only_udm.principal.user.user_display_name מופה מיומן השינויים
exe event.idm.read_only_udm.target.process.file.full_path מופה מיומן השינויים
pid event.idm.read_only_udm.principal.process.pid מופה מיומן השינויים
auid event.idm.read_only_udm.about.user.userid מופה מיומן השינויים
ses event.idm.read_only_udm.network.session_id מופה מיומן השינויים
addr event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
subj event.idm.read_only_udm.additional.fields מופה מיומן השינויים
res event.idm.read_only_udm.security_result.summary מופה מיומן השינויים
op event.idm.read_only_udm.security_result.summary מופה מיומן השינויים
msg_value event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
grantors_value event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.msg event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.grantors event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
terminal event.idm.read_only_udm.principal.application מופה מיומן השינויים
sec_result event.idm.read_only_udm.security_result מופה מיומן השינויים
hostname event.idm.read_only_udm.principal.hostname מופה מיומן השינויים
indicator.mode event.idm.read_only_udm.src.user.attribute.permissions מופה מיומן השינויים
indicator.nametype event.idm.read_only_udm.security_result.rule_name מופה מיומן השינויים
indicator.cap_frootid event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.cap_fver event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.cap_fi event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.cap_fp event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
indicator.cap_fe event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
OUID event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
OGID event.idm.read_only_udm.principal.group.group_display_name מופה מיומן השינויים
action_data event.idm.read_only_udm.security_result.action_details מופה מיומן השינויים
target_email event.idm.ready_only_udm.target.user.email_addresses מופה מיומן השינויים
target_port event.idm.ready_only_udm.target.port מופה מיומן השינויים
status event.idm.ready_only_udm.security_result.action_details מופה מיומן השינויים
to_email event.idm.ready_only_udm.network.email.to מופה מיומן השינויים
target_hostname event.idm.ready_only_udm.target.hostname מופה מיומן השינויים
"relay_data" event.idm.ready_only_udm.additional.fields מופה מיומן השינויים
"delays_data" event.idm.ready_only_udm.additional.fields מופה מיומן השינויים
"delay_data" event.idm.ready_only_udm.additional.fields מופה מיומן השינויים
and "dns_data" event.idm.ready_only_udm.additional.fields מופה מיומן השינויים
bytes_sent event.idm.ready_only_udm.network.sent_bytes מופה מיומן השינויים
bytes_received event.idm.ready_only_udm.network.received_bytes מופה מיומן השינויים
response_code event.idm.ready_only_udm.network.http.response_code מופה מיומן השינויים
principal_user_name principal.user.userid מופה מיומן השינויים
remote principal.ip מופה מיומן השינויים
method network.http.method מופה מיומן השינויים
path principal.file.full_path מופה מיומן השינויים
code additional.fields מופה מיומן השינויים
size principal.file.size מופה מיומן השינויים
agent network.http.user_agent מופה מיומן השינויים
az principal.location.name מופה מיומן השינויים
ec2_instance_id principal.asset.product_object_id מופה מיומן השינויים
private_ip principal.ip מופה מיומן השינויים
ProviderName additional.fields מופה מיומן השינויים
Version additional.fields מופה מיומן השינויים
Task additional.fields מופה מיומן השינויים
EventRecordID additional.fields מופה מיומן השינויים
ThreadID additional.fields מופה מיומן השינויים
messageType target.resource.attribute.labels מופה מיומן השינויים
owner principal.user.userid מופה מיומן השינויים
logevent.id metadata.product_log_id מופה מיומן השינויים
logGroup secu_result.about.resource.name מופה מיומן השינויים
logStream secu_result.about.resource.attribute.labels מופה מיומן השינויים
ip_addr principal.ip מופה מיומן השינויים
gd secu_result.description מופה מיומן השינויים
process target.application מופה מיומן השינויים
pid target.process.pid מופה מיומן השינויים
status_code network.http.response_code מופה מיומן השינויים
url network.http.referral_url מופה מיומן השינויים
useragent network.http.user_agent מופה מיומן השינויים
request additional.fields מופה מיומן השינויים
tls_version network.tls.version מופה מיומן השינויים
hostname_is principal.hostname מופה מיומן השינויים
referrer network.http.referral_url מופה מיומן השינויים
metadata.event_type USER_LOGIN מופה מיומן השינויים
metadata.event_type PROCESS_UNCATEGORIZED מופה מיומן השינויים
srcIP principal.ip מופה מיומן השינויים
username principal.user.user_display_name מופה מיומן השינויים
type_syscall_props.msg additional.fields מופה מיומן השינויים
sw", "sw_type", and "subj security_result.detection_fields מופה מיומן השינויים
indicator.SYSCALL security_result.detection_fields מופה מיומן השינויים
exe principal.process.file.full_path מופה מיומן השינויים
target.user.userid principal.user.userid מופה מיומן השינויים
target_user_name target.user.userid מופה מיומן השינויים
field field33 מופה מיומן השינויים
fp network.tls.client.certificate.sha256 מופה מיומן השינויים
pid principal.process.pid מופה מיומן השינויים
syslog-tag security_result.detection_fields מופה מיומן השינויים
inter_ip intermediary.ip מופה מיומן השינויים
inter_hostname intermediary.hostname מופה מיומן השינויים
grp target.group.group_display_name מופה מיומן השינויים
id about.user.userid מופה מיומן השינויים
acct target.user.user_display_name מופה מיומן השינויים
uid principal.user.userid מופה מיומן השינויים
auid about.user.userid מופה מיומן השינויים
auid target.user.userid מופה מיומן השינויים
op" and "id security_result.summary מופה מיומן השינויים
op" and "acct security_result.summary מופה מיומן השינויים
labels.compute.googleapis.com/resource_name","jsonPayload._HOSTNAME" , "CollectorHostName", "HOSTNAME", and "Computer principal.hostname מופה מיומן השינויים
HostIP principal.ip מופה מיומן השינויים
ProcessID" and "jsonPayload._PID principal.process.pid מופה מיומן השינויים
SyslogMessage metadata.description מופה מיומן השינויים
TenantId", "_ItemId", "_Internal_WorkspaceResourceId", "_ResourceId", and "Facility additional.fields מופה מיומן השינויים
SeverityLevel security_result.severity מופה מיומן השינויים
SourceSystem principal.platform מופה מיומן השינויים
jsonPayload._COMM principal.application מופה מיומן השינויים
jsonPayload._EXE target.process.file.full_path מופה מיומן השינויים
jsonPayload._AUDIT_FIELD_FILE target.file.full_path מופה מיומן השינויים
jsonPayload._AUDIT_FIELD_HASH target.file.hash מופה מיומן השינויים
jsonPayload._AUDIT_SESSION network.session_id מופה מיומן השינויים
jsonPayload._PPID principal.process.parent_process.pid מופה מיומן השינויים
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 מופה מיומן השינויים
id target.user.userid מופה מיומן השינויים
ID target.user.user_display_name מופה מיומן השינויים
user_name principal.user.userid מופה מיומן השינויים
principal_user_userid principal.user.userid מופה מיומן השינויים
vendor_name Linux מופה מיומן השינויים
product_name AuditD מופה מיומן השינויים
ip target.ip מופה מיומן השינויים
success security_result.summary מופה מיומן השינויים
syscall", "exit", "tty", "a0", "a1", "a2", "a3 security_result.about.labels מופה מיומן השינויים

יומן שינויים

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

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