איסוף יומנים של 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
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות SIEM > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ באופן מאובטח במערכת שבה יותקן 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השירות אמור להופיע כ-active (running).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן 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/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
- 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 ל-vsftpd
עורכים את קובץ התצורה של vsftpd:
sudo nano /etc/vsftpd.confמגדירים את הפרמטרים הבאים:
syslog_enable=YES log_ftp_protocol=YESמגדירים את rsyslog להעברת יומני vsftpd. עריכה של
/etc/rsyslog.confאו יצירה של קובץ חדש/etc/rsyslog.d/vsftpd.conf:sudo nano /etc/rsyslog.d/vsftpd.confמוסיפים את כלל ההעברה הבא (מחליפים את
<bindplane-ip>בכתובת ה-IP של סוכן Bindplane):if $programname == 'vsftpd' then @<bindplane-ip>:514מפעילים מחדש את 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.commandsecurity_result.descriptiontarget.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_bytesnetwork.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.descriptionsecurity_result.action_details |
הערך של השדה type ממופה ל-metadata.description, אלא אם הוא "OK LOGIN". הוא ממופה גם ל-security_result.action_details כשהוא מציין פעולת אישור או חסימה (מתחיל ב-"OK" או ב-"FAIL"). |
userid |
principal.user.useridtarget.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.