איסוף יומני Apache

גרסת מנתח הנתונים: 20.0

נתמך ב:

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

שרת Apache HTTP הוא שרת אינטרנט בקוד פתוח שמטפל בבקשות HTTP ומפיק יומני גישה ויומני שגיאות. הכלי לניתוח מטפל בפורמטים סטנדרטיים של יומנים משולבים/נפוצים וביומנים בפורמט JSON, ומחלץ פרטים של בקשות HTTP, קודי תגובה ומידע על הלקוח.

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

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

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
  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 agent להטמעה של syslog ושליחה אל Google SecOps

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

  • Linux:

    sudo nano /etc/bindplane-agent/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/apache:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: APACHE
            raw_log_field: body
    
    service:
        pipelines:
            logs/apache_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/apache
    

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

מחליפים את ה-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: Regional endpoint URL:
      • ארה"ב: malachiteingestion-pa.googleapis.com
      • אירופה: europe-malachiteingestion-pa.googleapis.com
      • אסיה: asia-southeast1-malachiteingestion-pa.googleapis.com
      • רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.

שמירת קובץ ההגדרות

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • 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 ב-Apache

  1. נכנסים לשרת שמארח את Apache באמצעות SSH.
  2. יוצרים קובץ בתיקייה /etc/rsyslog.d/ בשם 02-apache2.conf:

    vim /etc/rsyslog.d/02-apache2.conf
    
  3. מוסיפים את הקוד הבא לקובץ:

    module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog")
    
    input(type="imfile"
        File="/var/log/apache2/access.log"
        Tag="http_access"
        Severity="info"
        Facility="local6")
    
    Local6.info @<BINDPLANE_IP>:<BINDPLANE_PORT>
    
    module(load="imfile" PollingInterval="10" statefile.directory="/var/spool/rsyslog")
    
    input(type="imfile"
        File="/var/log/apache2/error.log"
        Tag="http_error"
        Severity="error"
        Facility="local7")
    
    Local7.error @<BINDPLANE_IP>:<BINDPLANE_PORT>
    
    • מחליפים את <BINDPLANE_IP> ואת <BINDPLANE_PORT> בכתובת ה-IP ובמספר היציאה שהוגדרו לסוכן Bindplane.
    • אם אתם משתמשים בפרוטוקול TCP, צריך להוסיף עוד @ לשורת המארח (לדוגמה, @@<BINDPLANE_IP>:<BINDPLANE_PORT>).
  4. מפעילים מחדש את שירותי rsyslog:

    sudo service rsyslog restart
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM לוגיקה
bytes network.received_bytes בייטים שהתקבלו מהלקוח.
bytes network.sent_bytes מספר הבייטים שנשלחו ללקוח.
bytes_out network.sent_bytes מספר הבייטים שנשלחו ללקוח.
bytes_received network.received_bytes בייטים שהתקבלו מהלקוח.
Content network.http.method שיטת ה-HTTP שחולצה מהשדה 'Content'.
Content target.url כתובת ה-URL של היעד חולצה מהשדה 'תוכן'.
cookie additional.fields.value.string_value הערך של השדה 'קובץ Cookie'.
dest_ip target.ip כתובת ה-IP של היעד.
dest_name target.hostname שם המארח של היעד.
dest_port target.port היציאה של היעד.
description metadata.description תיאור האירוע.
duration_microseconds additional.fields.value.string_value הערך של השדה duration_microseconds.
file_full_path target.file.full_path הנתיב המלא של קובץ היעד.
hostname target.hostname שם המארח של היעד.
http_content_type additional.fields.value.string_value הערך של השדה http_content_type.
http_host principal.hostname שם המארח של חשבון המשתמש.
http_method network.http.method שיטת HTTP.
http_referrer network.http.referral_url כתובת URL של מקור ההפניה (referrer) מסוג HTTP.
http_user_agent network.http.user_agent סוכן משתמש HTTP.
ID metadata.id מזהה האירוע.
insertId metadata.product_log_id מזהה יומן המוצר.
ip principal.ip כתובת ה-IP של חשבון המשתמש.
jsonPayload.cIP target.ip כתובת ה-IP של היעד.
jsonPayload.cPort target.port היציאה של היעד.
jsonPayload.csBytes network.sent_bytes מספר הבייטים שנשלחו ללקוח.
jsonPayload.csMethod network.http.method שיטת HTTP.
jsonPayload.csMimeType target.file.mime_type סוג ה-MIME של קובץ היעד.
jsonPayload.csReferer network.http.referral_url כתובת URL של מקור ההפניה (referrer) מסוג HTTP.
jsonPayload.csURL target.url כתובת היעד.
jsonPayload.csUserAgent network.http.user_agent סוכן משתמש HTTP.
jsonPayload.sHierarchy additional.fields.value.string_value הערך של השדה sHierarchy.
jsonPayload.sHostname principal.hostname שם המארח של חשבון המשתמש.
jsonPayload.sIP principal.ip כתובת ה-IP של חשבון המשתמש.
jsonPayload.scBytes network.received_bytes בייטים שהתקבלו מהלקוח.
jsonPayload.scHTTPStatus network.http.response_code קוד תגובת HTTP.
jsonPayload.scResultCode additional.fields.value.string_value הערך של השדה scResultCode.
LastStatus network.http.response_code קוד תגובת HTTP.
log_level security_result.severity רמת החומרה של תוצאת האבטחה.
logName security_result.category_details פרטי הקטגוריה של תוצאת האבטחה.
method network.http.method שיטת HTTP.
pid principal.process.pid מזהה התהליך של הישות המורשית.
Port target.port היציאה של היעד.
proto network.application_protocol פרוטוקול אפליקציה.
referer network.http.referral_url כתובת URL של מקור ההפניה (referrer) מסוג HTTP.
RemoteHost principal.ip כתובת ה-IP של חשבון המשתמש.
RemoteUser principal.user.userid מזהה המשתמש של הגורם המרכזי.
resource.labels.instance_id target.resource.product_object_id מזהה אובייקט המוצר של משאב היעד.
resource.labels.project_id target.resource.attribute.labels.value הערך של התווית project_id.
resource.labels.zone target.resource.attribute.cloud.availability_zone אזור הזמינות של משאב היעד.
resource.type target.resource.resource_type סוג המשאב של היעד.
response network.http.response_code קוד תגובת HTTP.
SizeBytes network.received_bytes בייטים שהתקבלו מהלקוח.
src_ip principal.ip כתובת ה-IP של חשבון המשתמש.
src_port principal.port היציאה של החשבון הראשי.
ssl_cipher network.tls.cipher הצפנה ב-TLS.
ssl_version network.tls.version_protocol פרוטוקול גרסת TLS.
status network.http.response_code קוד תגובת HTTP.
target target.url כתובת היעד.
target_ip target.ip כתובת ה-IP של היעד.
target_port target.port היציאה של היעד.
time metadata.event_timestamp חותמת הזמן של האירוע.
uri_path target.process.file.full_path הנתיב המלא של קובץ היעד.
user principal.user.userid מזהה המשתמש של הגורם המרכזי.
useragent network.http.user_agent סוכן משתמש HTTP.
version_protocol network.tls.version_protocol פרוטוקול גרסת TLS.
Workername principal.hostname שם המארח של חשבון המשתמש.
x_forwarded_for הערך של הכותרת X-Forwarded-For.
metadata.log_type הערך מוגדר כ-APACHE בקוד של כלי הניתוח.
metadata.product_name הערך מוגדר כ-Apache Web Server בקוד של כלי הניתוח.
metadata.vendor_name הערך מוגדר כ-Apache בקוד של כלי הניתוח.
metadata.event_type הערך נקבע על סמך המידע על הגורם המבצע והיעד. אם גם העיקרון וגם היעד קיימים, סוג האירוע מוגדר כ-NETWORK_HTTP. אם קיים רק העיקרון, סוג האירוע מוגדר כ-STATUS_UPDATE. אחרת, הערך הוא GENERIC_EVENT.
additional.fields.key המפתח מוגדר ל-keep_alive,‏ duration_microseconds,‏ cookie,‏ http_content_type,‏ sHierarchy,‏ scResultCode בקוד של כלי הניתוח על סמך השדה.
target.port אם השדה proto הוא HTTP, היציאה מוגדרת ל-80. אם השדה proto הוא HTTPS, היציאה מוגדרת ל-443. אם השדה proto הוא FTP, היציאה מוגדרת כ-21.
target.resource.attribute.labels.key המפתח מוגדר כ-project_id בקוד של כלי הניתוח.
client_ip_address event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
server event.idm.read_only_udm.target.hostname וגם event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
bytes_in event.idm.read_only_udm.network.received_bytes מופה מיומן השינויים
PHPSESSID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
AuthToken event.idm.read_only_udm.additional.fields מופה מיומן השינויים
response_time_microseconds event.idm.read_only_udm.additional.fields מופה מיומן השינויים
hostname event.idm.read_only_udm.intermediary.hostname מופה מיומן השינויים
Filename event.idm.read_only_udm.principal.process.file.full_path מופה מיומן השינויים
kv_key event.idm.read_only_udm.additional.fields מופה מיומן השינויים
info event.idm.read_only_udm.additional.fields מופה מיומן השינויים
SourceModuleName event.idm.read_only_udm.additional.fields מופה מיומן השינויים
SourceModuleType event.idm.read_only_udm.additional.fields מופה מיומן השינויים
src_ip event.idm.read_only_udm.target.ip וגם event.idm.read_only_udm.target.asset.ip מופה מיומן השינויים
tls_version event.idm.read_only_udm.network.tls.version מופה מיומן השינויים
version_protocol event.idm.read_only_udm.network.tls.version_protocol מופה מיומן השינויים
syncAccuracy event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
isSynced event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים
tzKnown event.idm.read_only_udm.additional.fields מופה מיומן השינויים
user_location principal.location.country_or_region מופה מיומן השינויים
proto", "proto_version", "uri_path", and "uri_query additional.fields מופה מיומן השינויים
ip_msg principal.ip מופה מיומן השינויים
msg_method network.http.method מופה מיומן השינויים
useragentvalue network.http.user_agent מופה מיומן השינויים
bytes_out network.sent.bytes מופה מיומן השינויים
XForwardedForIP" and "RemoteHost principal.ip מופה מיומן השינויים
Remoteuser principal.user.userid מופה מיומן השינויים

שנה רישום

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

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