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

נתמך ב:

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

‫vsftpd (Very Secure FTP Daemon) הוא שרת FTP שמייצר הודעות syslog לחיבורי FTP, להעברות קבצים, לאירועי אימות ולפעילות בסשן.

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

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

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל הגדרות 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
    

    השירות אמור להופיע כ-active (running).

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

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן 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/vsftpd:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: VSFTPD
            raw_log_field: body
    
    service:
        pipelines:
            logs/vsftpd_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/vsftpd
    

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

מחליפים את ה-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 ל-vsftpd

  1. עורכים את קובץ התצורה של vsftpd:

    sudo nano /etc/vsftpd.conf
    
  2. מגדירים את הפרמטרים הבאים:

    syslog_enable=YES
    log_ftp_protocol=YES
    
  3. מגדירים את rsyslog להעברת יומני vsftpd. עריכה של /etc/rsyslog.conf או יצירה של קובץ חדש /etc/rsyslog.d/vsftpd.conf:

    sudo nano /etc/rsyslog.d/vsftpd.conf
    
  4. מוסיפים את כלל ההעברה הבא (מחליפים את <bindplane-ip> בכתובת ה-IP של סוכן Bindplane):

    if $programname == 'vsftpd' then @<bindplane-ip>:514
    
  5. מפעילים מחדש את vsftpd ואת rsyslog כדי להחיל את השינויים:

    sudo systemctl restart vsftpd
    sudo systemctl restart rsyslog
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
certificate security_result.detection_fields.key: "cert"
security_result.detection_fields.value: הערך של certificate
הערך של השדה certificate ממופה לאובייקט security_result.detection_fields עם המפתח cert.
cipher network.tls.cipher הערך של השדה cipher ממופה ישירות.
client_ip principal.ip הערך של השדה client_ip ממופה ישירות.
date metadata.event_timestamp המאפיין הזה משמש עם המאפיינים month, year ו-time כדי ליצור את metadata.event_timestamp. הפורמט נגזר מהשדה timestamp ביומן הגולמי, מנותח ומומר לאובייקט של חותמת זמן.
day metadata.event_timestamp המאפיין הזה משמש עם המאפיינים month, year ו-time כדי ליצור את metadata.event_timestamp.
desc metadata.description הערך של השדה desc (שחולץ מהשדה type) ממופה ישירות. ההגדרה הזו חלה על הפעולות "MKDIR",‏ "RMDIR" ו-"DELETE".
description network.ftp.command
security_result.description
target.file.full_path
אם type הוא 'פקודת FTP', הערך ממופה ל-network.ftp.command. אם הערך של type הוא DEBUG והוא לא תואם לתבניות SSL ספציפיות, הוא ממופה ל-security_result.description. אם type מתחיל ב-OK ולא ב-OK LOGIN, והיומן מתאר פעולת קובץ (MKDIR, ‏ RMDIR, ‏ DELETE), הוא ממופה ל-target.file.full_path.
file_name target.file.full_path הערך של השדה file_name ממופה ישירות.
file_size network.received_bytes
network.sent_bytes
אם הערך של type הוא OK DOWNLOAD או FAIL DOWNLOAD, הערך מומר למספר שלם לא חתום וממופה ל-network.received_bytes. אם הערך של type הוא OK UPLOAD או FAIL UPLOAD, הערך מומר למספר שלם לא חתום וממופה ל-network.sent_bytes. הערך צריך להיות USER_LOGIN אם type הוא OK LOGIN. צריך להגדיר את הערך "FILE_UNCATEGORIZED" אם type קשור לפעולות בקבצים ("OK UPLOAD",‏ "OK DOWNLOAD",‏ "FAIL DOWNLOAD",‏ "OK MKDIR",‏ "OK RMDIR",‏ "OK DELETE",‏ "FAIL UPLOAD"). מגדירים את הערך STATUS_UPDATE לכל שאר הערכים של type. תמיד צריך להגדיר את האפשרות VSFTPD. תמיד מוגדר כ-"VSFTPD". תמיד צריך להגדיר את האפשרות VSFTPD.
month metadata.event_timestamp המאפיין הזה משמש עם המאפיינים day, year ו-time כדי ליצור את metadata.event_timestamp.
pid principal.process.pid הערך של השדה pid ממופה ישירות.
response_code network.http.response_code הערך של השדה response_code מומר למספר שלם וממופה.
reused_status ‫security_result.detection_fields.key: 'reused status'
security_result.detection_fields.value: ערך של reused_status
הערך של השדה reused_status ממופה לאובייקט security_result.detection_fields עם המפתח reused status.
speed ‫additional.fields.key: "download_speed" או "upload_speed"
additional.fields.value.string_value: הערך של speed
אם הערך של type הוא OK DOWNLOAD או FAIL DOWNLOAD, הערך ממופה ל-additional.fields עם המפתח download_speed. אם הערך של type הוא OK UPLOAD או FAIL UPLOAD, הערך ממופה ל-additional.fields עם המפתח upload_speed.
ssl_shutdown_state ‫security_result.detection_fields.key: 'מצב השבתה של SSL'
security_result.detection_fields.value: הערך של ssl_shutdown_state
הערך של השדה ssl_shutdown_state ממופה לאובייקט security_result.detection_fields עם המפתח SSL Shutdown State.
ssl_version network.tls.version הערך של השדה ssl_version ממופה ישירות.
time metadata.event_timestamp המאפיין הזה משמש עם המאפיינים day, month ו-year כדי ליצור את metadata.event_timestamp.
type metadata.description
security_result.action_details
הערך של השדה type ממופה ל-metadata.description, אלא אם הוא "OK LOGIN". הוא ממופה גם ל-security_result.action_details כשהוא מציין פעולת אישור או חסימה (מתחיל ב-"OK" או ב-"FAIL").
userid principal.user.userid
target.user.userid
אם הערך של type הוא OK LOGIN, הערך ממופה ל-target.user.userid. אחרת, הוא ממופה ל-principal.user.userid.
year metadata.event_timestamp משמש עם day,‏ month ו-time כדי ליצור את metadata.event_timestamp. הערך צריך להיות NETWORK אם type הוא OK LOGIN. מגדירים את הערך MACHINE אם type הוא OK LOGIN. הערך הוא ALLOW אם type מתחיל ב-OK. צריך להגדיר את הערך "BLOCK" אם type מתחיל ב-"FAIL".

יומן שינויים

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

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