איסוף יומני LDAP של Red Hat Directory Server
במאמר הזה מוסבר איך להטמיע יומני LDAP של Red Hat Directory Server ב-Google Security Operations באמצעות סוכן Bindplane.
Red Hat Directory Server הוא שירות ספריות LDAP ברמה ארגונית שמבוסס על תקנים פתוחים. הוא מספק ניהול זהויות משתמשים, אימות ובקרת גישה מרוכזים לסביבות Linux ו-UNIX. שרת הגילוי שומר יומני גישה, שגיאות, ביקורת, כשלים בביקורת ואבטחה בספרייה /var/log/dirsrv/slapd-instance_name/, ומתעד חיבורי לקוחות, פעולות LDAP, שינויים בהגדרות, פעולות שנכשלו ואירועי אבטחה כמו ניסיונות אימות ובעיות הרשאה.
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מכונה של Google SecOps
- מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין המארח של שרת הגילוי של Red Hat
- אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- גישת רוט (Root) או גישת sudo למארח של Red Hat Directory Server
- Red Hat Directory Server 11 ואילך מותקן ופועל
- שירות
rsyslogמותקן ופועל במארח של שרת הגילוי
קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane
כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים באחת מהשיטות הבאות:
- פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
- פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
אפשרות 1: יצירת חשבון שירות ל-Chronicle API (מומלץ)
- נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
- נכנסים לדף IAM & Admin > Service Accounts.
- לוחצים על Create service account.
- מספקים את פרטי ההגדרה הבאים:
- Service account name: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - Service account description: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- Service account name: מזינים שם לחשבון (לדוגמה,
- לוחצים על Create and continue.
- בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
- לוחצים על המשך ואז על סיום.
- לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
- לוחצים על Add key > Create new key.
- בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
- שומרים את קובץ המפתח בשם
ingestion-auth.jsonבספריית Bindplane Collector (/opt/observiq-otel-collector/ingestion-auth.jsonב-Linux אוC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsonב-Windows), או מעדכנים אתcreds_file_pathב-config.yamlכך שיתאים לנתיב שבו שומרים את הקובץ. - עוברים אל IAM & Admin > Settings ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדת קובץ אימות להטמעת נתונים (גרסה מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות SIEM > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.
איך מקבלים מספר לקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile.
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Linux לפי ההוראות הבאות.
התקנה ב-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.yaml
עריכת קובץ תצורה
מחליפים את כל התוכן של
config.yamlבהגדרות הבאות:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/redhat_ds: protocol: https # Region of your instance, for example us, europe, asia-southeast1 location: <LOCATION> # Project number of the Google Cloud project linked to the instance project: '<PROJECT_NUMBER>' compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: REDHAT_DIRECTORY_SERVER raw_log_field: body service: pipelines: logs/redhat_ds: receivers: - udplog exporters: - chronicle/redhat_ds
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
udplog: סוג הנמען על סמך הפרוטוקול:-
udplogל-UDP syslog -
tcplogל-syslog של TCP -
syslogעבור syslog RFC 3164/5424
-
-
0.0.0.0: כתובת ה-IP להאזנה:0.0.0.0כדי להאזין בכל הממשקים (מומלץ)- כתובת IP ספציפית להאזנה בממשק אחד
-
514: מספר היציאה להאזנה (לדוגמה,514, 1514, 6514)
-
הגדרת הייצוא:
-
<customer_id>: מספר הלקוח מהשלב הקודם -
location: מחליפים את<LOCATION>באזור של המכונה של Google SecOps (לדוגמה,us,europeאוasia-southeast1). המייצא מוסיף את הערך הזה בתחילתchronicle.googleapis.com. לרשימה המלאה, ראו נקודות קצה אזוריות. -
project: מחליפים את<PROJECT_NUMBER>במספר הפרויקט מתוך IAM & Admin > Settings. -
endpoint: משאירים את הערךchronicle.googleapis.com. - משנים את
creds_file_pathלנתיב של קובץ מפתח ה-JSON של חשבון השירות (אפשרות 1), בהתאם לפלטפורמה:- Linux:
/opt/observiq-otel-collector/ingestion-auth.json
- Linux:
-
מייצא API להטמעה מדור קודם
אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק
exportersבקוד הבא. מגדירים אתcreds_file_pathלנתיב לקובץ האימות של ההעברה, ואם המופע שלכם נמצא מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/redhat_ds: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: REDHAT_DIRECTORY_SERVER raw_log_field: body
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X.
- Linux: מקישים על
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את הסוכן של Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
הפעלת רישום ביומן של ביקורת ושל כשלים בביקורת ב-Red Hat Directory Server
כברירת מחדל, ב-Red Hat Directory Server מופעל רישום ביומן של גישה, שגיאות ואבטחה, אבל מושבת רישום ביומן של ביקורת ושל ביקורת שנכשלה. כדאי להפעיל את היומנים האלה כדי לתעד את כל השינויים בספרייה ואת הפעולות שנכשלו.
- פותחים מסוף עם הרשאות בסיס או sudo במארח של שרת הגילוי.
מפעילים את יומן הביקורת באמצעות הפקודה הבאה:
dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditlog-logging-enabled=onכדי להפעיל את יומן הביקורת של הכשלים, מריצים את הפקודה הבאה:
dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditfaillog-logging-enabled=onמוודאים שכל סוגי היומנים מופעלים:
dsconf -D "cn=Directory Manager" instance_name config get nsslapd-accesslog-logging-enabled nsslapd-errorlog-logging-enabled nsslapd-auditlog-logging-enabled nsslapd-auditfaillog-logging-enabled nsslapd-securitylog-logging-enabledמוודאים שקובצי היומן קיימים בספריית היומנים:
ls -la /var/log/dirsrv/slapd-instance_name/
אופציונלי: הפעלת רישום ביומן באמצעות מסוף האינטרנט
- נכנסים למסוף האינטרנט של Red Hat Directory Server.
- בוחרים את המופע.
- עוברים אל Server > Logging.
- בוחרים את סוג היומן שרוצים להפעיל (לדוגמה, יומן ביקורת).
- מפעילים את המתג של רישום ביומן עבור סוג היומן שנבחר.
- לוחצים על שמירת הגדרות היומן.
הגדרת rsyslog להעברת יומני שרת של שרת הספריות לסוכן Bindplane
שרת הספריות של Red Hat כותב יומנים לקבצים ב-/var/log/dirsrv/slapd-instance_name/ ולא ישירות ל-syslog. אפשר להשתמש במודול rsyslog imfile כדי לעקוב אחרי קובצי היומן האלה ולהעביר את הרשומות לסוכן Bindplane.
יוצרים קובץ תצורה חדש של rsyslog להעברת יומני שרת של Directory Server:
sudo nano /etc/rsyslog.d/rhds-forward.confמוסיפים את התוכן הבא לקובץ התצורה:
# Load the imfile module to read log files module(load="imfile" PollingInterval="10") # Monitor the access log input(type="imfile" File="/var/log/dirsrv/slapd-instance_name/access" Tag="dirsrv-access" Severity="info" Facility="local6") # Monitor the error log input(type="imfile" File="/var/log/dirsrv/slapd-instance_name/errors" Tag="dirsrv-errors" Severity="err" Facility="local6") # Monitor the audit log input(type="imfile" File="/var/log/dirsrv/slapd-instance_name/audit" Tag="dirsrv-audit" Severity="info" Facility="local6") # Monitor the security log input(type="imfile" File="/var/log/dirsrv/slapd-instance_name/security" Tag="dirsrv-security" Severity="info" Facility="local6") # Forward all Directory Server logs to the Bindplane agent local6.* @BINDPLANE_IP:514מאמתים את תחביר ההגדרות של rsyslog:
sudo rsyslogd -N1מפעילים מחדש את שירות rsyslog כדי שהשינויים ייכנסו לתוקף:
sudo systemctl restart rsyslogכדי לוודא שהיומנים של שרת הגילוי מועברים, בודקים את היומנים של סוכן Bindplane:
sudo journalctl -u observiq-otel-collector -f
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
attrs_label |
about.labels |
ממוזג |
cn_label |
about.labels |
ממוזג |
conn_label |
about.labels |
ממוזג |
csn_label |
about.labels |
ממוזג |
err_label |
about.labels |
ממוזג |
etime_label |
about.labels |
ממוזג |
fd_label |
about.labels |
ממוזג |
filter_label |
about.labels |
ממוזג |
label |
about.labels |
ממוזג |
method_label |
about.labels |
ממוזג |
msgid_label |
about.labels |
ממוזג |
name_label |
about.labels |
ממוזג |
nentries_label |
about.labels |
ממוזג |
offset_label |
about.labels |
ממוזג |
op_label |
about.labels |
ממוזג |
optime_label |
about.labels |
ממוזג |
org_label |
about.labels |
ממוזג |
ou_label |
about.labels |
ממוזג |
scope_label |
about.labels |
ממוזג |
slot_label |
about.labels |
ממוזג |
tag_label |
about.labels |
ממוזג |
targetop_label |
about.labels |
ממוזג |
version_label |
about.labels |
ממוזג |
wtime_label |
about.labels |
ממוזג |
desc |
metadata.description |
מיפוי ישיר |
creationDate |
metadata.event_timestamp |
ניתוח הכתובות שברשימה: UNIX_MS |
recordDate |
metadata.event_timestamp |
ניתוח הכתובות שברשימה: UNIX_MS |
time |
metadata.event_timestamp |
ניתוח הכתובות שברשימה: dd/MMM/yyyy:HH:mm:ss Z |
ts |
metadata.event_timestamp |
ניתוח הכתובות שברשימה: MMM d HH:mm:ss |
operation |
metadata.product_event_type |
מיפוי ישיר |
mrId |
metadata.product_log_id |
מיפוי ישיר |
properties._ecs_agent_version |
metadata.product_version |
מיפוי ישיר |
host |
principal.asset.hostname |
מיפוי ישיר |
oid |
principal.asset.product_object_id |
מיפוי ישיר |
host |
principal.hostname |
מיפוי ישיר |
client_ip |
principal.ip |
ממוזג |
namespace |
principal.namespace |
מיפוי ישיר |
user |
principal.user.userid |
מיפוי ישיר |
sec_result |
security_result |
ממוזג |
properties._hostname |
target.asset.hostname |
מיפוי ישיר |
properties.host |
target.asset.hostname |
מיפוי ישיר |
properties._hostname |
target.hostname |
מיפוי ישיר |
properties.host |
target.hostname |
מיפוי ישיר |
target_ip |
target.ip |
ממוזג |
properties.country |
target.location.country_or_region |
מיפוי ישיר |
properties._file_path |
target.process.file.full_path |
מיפוי ישיר |
properties._file_size |
target.process.file.size |
שינוי שם/מיפוי |
discipline_label |
target.resource.attribute.labels |
ממוזג |
document_type_label |
target.resource.attribute.labels |
ממוזג |
environment_label |
target.resource.attribute.labels |
ממוזג |
hostgroup_label |
target.resource.attribute.labels |
ממוזג |
platform_label |
target.resource.attribute.labels |
ממוזג |
product_label |
target.resource.attribute.labels |
ממוזג |
project_label |
target.resource.attribute.labels |
ממוזג |
base |
target.user.group_identifiers |
ממוזג |
dn |
target.user.group_identifiers |
ממוזג |
| לא רלוונטי | metadata.event_type |
קבוע: NETWORK_CONNECTION |
| לא רלוונטי | metadata.product_name |
קבוע: REDHAT_DIRECTORY_SERVER |
| לא רלוונטי | metadata.vendor_name |
קבוע: REDHAT |
| לא רלוונטי | target.platform |
קבוע: LINUX |
properties._file_inode |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
properties._file_offset |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
conn |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
op |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
err |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
tag |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
nentries |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
wtime |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
optime |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
etime |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
csn |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
cn |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
ou |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
filter |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
attrs |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
scope |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
o |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
targetop |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
msgid |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
method |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
version |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
fd |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
slot |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
name |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
properties.discipline" ,"properties.document_type" ,"properties.environment" ,"properties.hostgroup" ,"properties.platform" ,"properties.product |
target.resource.attribute.labels |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.