איסוף יומני ביקורת של Tanium

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני ביקורת של Tanium ב-Google Security Operations באמצעות Amazon S3, באמצעות יכולת הייצוא המובנית של Tanium Connect ל-S3. הכלי לניתוח מחלץ את היומנים, ובהתחלה מנקה שדות רבים שמוגדרים כברירת מחדל. לאחר מכן, הוא מנתח את הודעת היומן באמצעות grok ומסנן json, ומחלץ שדות כמו חותמת זמן, כתובת IP של המכשיר ופרטי ביקורת. הכלי לניתוח נתונים ממפה את השדות שחולצו ל-UDM, ומטפל בסוגי נתונים שונים ובלוגיקה מותנית כדי לאכלס שדות UDM מתאימים על סמך הנוכחות והערכים של מאפיינים ספציפיים ביומן הביקורת של Tanium.

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

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

  • מופע של Google SecOps
  • גישת אדמין ל-Tanium Connect ול-Tanium Console
  • גישת אדמין ל-AWS‏ (S3, ‏ IAM)

יצירת קטגוריה ב-Amazon S3

  1. פותחים את מסוף Amazon S3.
  2. אם צריך, אפשר לשנות את האזור.
    • בסרגל הניווט, בוחרים את האזור שבו רוצים שיומני הביקורת של Tanium יישמרו.
  3. לוחצים על Create Bucket.
    • שם הקטגוריה: מזינים שם בעל משמעות לקטגוריה (לדוגמה, tanium-audit-logs).
    • אזור: בוחרים את האזור המועדף (לדוגמה, us-east-1).
    • לוחצים על יצירה.

יצירת משתמש IAM עם גישה מלאה ל-Amazon S3

  1. פותחים את מסוף IAM.
  2. לוחצים על משתמשים > הוספת משתמש.
  3. מזינים שם משתמש (לדוגמה, tanium-connect-s3-user).
  4. בוחרים באפשרות Programmatic access (גישה באמצעות תוכנה) או באפשרות AWS Management Console access (גישה ל-AWS Management Console), או בשתיהן, לפי הצורך.
  5. בוחרים באפשרות סיסמה שנוצרה אוטומטית או באפשרות סיסמה בהתאמה אישית.
  6. לוחצים על הבא: הרשאות.
  7. בוחרים באפשרות צירוף מדיניות קיימת ישירות.
  8. מחפשים את המדיניות AmazonS3FullAccess ובוחרים בה עבור המשתמש.
  9. לוחצים על הבא: תגים.
  10. לוחצים על הבא: בדיקה.
  11. לוחצים על יצירת משתמש.
  12. מעתיקים ושומרים את המזהה של מפתח הגישה ואת מפתח הגישה הסודי לעיון בעתיד.

הגדרת הרשאות בקטגוריית Amazon S3

  1. במסוף Amazon S3, בוחרים את הקטגוריה שיצרתם קודם.
  2. לוחצים על הרשאות > מדיניות של מאגר.
  3. בעורך מדיניות הקטגוריה, מוסיפים את המדיניות הבאה:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user"
          },
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::tanium-audit-logs",
            "arn:aws:s3:::tanium-audit-logs/*"
          ]
        }
      ]
    }
    
  4. מחליפים את המשתנים הבאים:

    • משנים את YOUR_ACCOUNT_ID למזהה החשבון ב-AWS.
    • אם השם שונה, מחליפים את tanium-audit-logs בשם הקטגוריה בפועל.
    • אם שם המשתמש שונה, מחליפים את tanium-connect-s3-user בשם המשתמש בפועל ב-IAM.
  5. לוחצים על Save.

הגדרת Tanium Connect לייצוא ל-S3

יצירת חיבור ל-AWS S3 ב-Tanium Connect

  1. נכנסים לTanium Console כאדמינים.
  2. עוברים אל Tanium Connect > Connections.
  3. לוחצים על יצירת חיבור.
  4. בקטע General Information (מידע כללי), מציינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם תיאורי (לדוגמה, Tanium Audit to S3).
    • תיאור: מזינים תיאור משמעותי (לדוגמה, Export Tanium audit logs to S3 for Google SecOps ingestion).
    • הפעלה: בוחרים באפשרות הזו כדי להפעיל את החיבור.
    • רמת היומן: בוחרים באפשרות מידע (ברירת מחדל) או משנים לפי הצורך.

הגדרת מקור החיבור

  1. בקטע Configuration, בוחרים באפשרות Tanium Audit בשדה Source.
  2. קובעים את ההגדרות של מקור הביקורת:
    • מספר הימים של היסטוריה שאוחזרו: מזינים את מספר הימים של נתוני ביקורת היסטוריים שרוצים לאחזר (לדוגמה, 7 לשבוע אחד).
    • סוגי ביקורת: בוחרים את סוגי הביקורת שרוצים לייצא. בוחרים באחת מהאפשרויות הבאות:
      • היסטוריית פעולות: פעולות שהונפקו על ידי מפעילי מסוף.
      • אימות: אירועים של אימות משתמשים.
      • תוכן: שינויים ותיקונים בתוכן.
      • קבוצות: שינויים בקבוצות מחשבים.
      • חבילות: פעילויות שקשורות לחבילות.
      • חיישנים: שינויים בחיישנים.
      • הגדרות המערכת: שינויים בהגדרות המערכת.
      • משתמשים: פעילויות שקשורות לניהול משתמשים.

הגדרת היעד AWS S3

  1. בקטע Destination (יעד), בוחרים באפשרות AWS S3.
  2. מספקים את פרטי ההגדרה הבאים:
    • שם היעד: מזינים שם (לדוגמה, Google SecOps S3 Bucket).
    • מפתח גישה ל-AWS: מזינים את מזהה מפתח הגישה של משתמש ה-IAM שנוצר קודם.
    • מפתח סודי של AWS: מזינים את מפתח הגישה הסודי של משתמש IAM שנוצר קודם.
    • שם הקטגוריה: מזינים את שם הקטגוריה ב-S3 (לדוגמה, tanium-audit-logs).
    • ‫Bucket Path (נתיב לדלי): אופציונלי. מזינים קידומת נתיב (לדוגמה, tanium/audit/).
    • אזור: בוחרים את האזור ב-AWS שבו נמצאת הקטגוריה (לדוגמה, us-east-1).

הגדרת הפורמט ולוח הזמנים

  1. בקטע Format (פורמט), מגדירים את פורמט הפלט:
    • סוג הפורמט: בוחרים באפשרות JSON.
    • כולל כותרות עמודות: בוחרים אם רוצים לכלול כותרות עמודות.
    • יצירת מסמך: מבטלים את הסימון של האפשרות הזו כדי לשלוח נתוני JSON גולמיים.
  2. בקטע Schedule (תזמון), מגדירים מתי החיבור יפעל:
    • סוג התזמון: בוחרים באפשרות Cron.
    • ביטוי Cron: מזינים ביטוי Cron לייצוא קבוע (לדוגמה, 0 */1 * * * לייצוא כל שעה).
    • תאריך התחלה: הגדרת תאריך ההתחלה של התזמון.
  3. לוחצים על שמירת השינויים.

בדיקה והרצה של החיבור

  1. בדף Connect Overview (סקירה כללית של Connect), עוברים אל Connections (חיבורים).
  2. לוחצים על החיבור שיצרתם (Tanium Audit to S3).
  3. לוחצים על Run Now (הפעלה עכשיו) כדי לבדוק את החיבור.
  4. מאשרים שרוצים להפעיל את החיבור.
  5. עוקבים אחרי סטטוס החיבור ומוודאים שיומני הביקורת מיוצאים לדלי S3.

אופציונלי: יצירת משתמש IAM ומפתחות עם הרשאת קריאה בלבד ל-Google SecOps

  1. עוברים אל AWS Console > IAM > Users > Add users.
  2. לוחצים על הוספת משתמשים.
  3. מספקים את פרטי ההגדרה הבאים:
    • משתמש: מזינים secops-reader.
    • סוג הגישה: בוחרים באפשרות מפתח גישה – גישה פרוגרמטית.
  4. לוחצים על יצירת משתמש.
  5. מצרפים מדיניות קריאה מינימלית (מותאמת אישית): משתמשים > secops-reader > הרשאות > הוספת הרשאות > צירוף מדיניות ישירות > יצירת מדיניות.
  6. בעורך ה-JSON, מזינים את המדיניות הבאה:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::tanium-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::tanium-audit-logs"
        }
      ]
    }
    
  7. מגדירים את השם ל-secops-reader-policy.

  8. עוברים אל יצירת מדיניות > מחפשים או בוחרים > הבא > הוספת הרשאות.

  9. עוברים אל Security credentials > Access keys > Create access key (פרטי כניסה לאבטחה > מפתחות גישה > יצירת מפתח גישה).

  10. מורידים את קובץ ה-CSV (הערכים האלה מוזנים לפיד).

הגדרה של פיד ב-Google SecOps להטמעה של יומני ביקורת של Tanium

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על + הוספת פיד חדש.
  3. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Tanium Audit logs).
  4. בוחרים באפשרות Amazon S3 V2 בתור סוג המקור.
  5. בוחרים באפשרות Tanium Audit בתור סוג היומן.
  6. לוחצים על הבא.
  7. מציינים ערכים לפרמטרים הבאים של הקלט:
    • ‫S3 URI: ‏s3://tanium-audit-logs/tanium/audit/ (צריך לשנות את הנתיב אם השתמשתם בשם או בנתיב אחרים של קטגוריה).
    • אפשרויות למחיקת המקור: בוחרים את אפשרות המחיקה הרצויה.
    • הגיל המקסימלי של הקובץ: כולל קבצים שעברו שינוי במספר הימים האחרון. ברירת המחדל היא 180 ימים.
    • מזהה מפתח גישה: מפתח גישה של משתמש עם גישה לקטגוריית S3 (מהמשתמש עם הרשאת קריאה בלבד שנוצר למעלה).
    • מפתח גישה סודי: מפתח סודי של משתמש עם גישה לקטגוריית S3 (מהמשתמש עם הרשאת קריאה בלבד שנוצר למעלה).
    • מרחב השמות של הנכס: מרחב השמות של הנכס.
    • תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.
  8. לוחצים על הבא.
  9. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
ActionId metadata.product_log_id ממופה ישירות מהשדה ActionId.
ActionName security_result.action_details ממופה ישירות מהשדה ActionName.
Approver additional.fields[Approver].value.string_value ממופה ישירות מהשדה Approver.
Approver principal.user.userid ממופה מהשדה Approver אם הפרמטר Issuer לא קיים.
audit_name metadata.description ממופה ישירות מהשדה audit_name.
audit_row_id additional.fields[audit_row_id].value.string_value ממופה ישירות מהשדה audit_row_id.
audit_type additional.fields[audit_type].value.string_value ממופה ישירות מהשדה audit_type.
authentication_type principal.user.attribute.labels[authentication_type].value ממופה ישירות מהשדה authentication_type שחולץ מהשדה details.
Command principal.process.command_line ממופה ישירות מהשדה Command אחרי פענוח כתובת ה-URL.
creation_time target.resource.attribute.creation_time ממופה ישירות מהשדה creation_time.
details network.session_id הערך חולץ מהשדה details באמצעות ניתוח של צמדי מפתח/ערך.
details principal.user.attribute.labels[authentication_type].value הערך חולץ מהשדה details באמצעות ניתוח של צמדי מפתח/ערך.
details principal.asset.ip, principal.ip כתובת ה-IP מחולצת מהשדה details באמצעות ניתוח של צמדי מפתח/ערך, וממופה לשדות principal.asset.ip ו-principal.ip.
DistributeOver additional.fields[DistributeOver].value.string_value ממופה ישירות מהשדה DistributeOver.
dvc_ip intermediary.hostname ממופה ישירות מהשדה dvc_ip שחולץ מהודעת ה-syslog.
dvc_ip observer.ip ממופה ישירות מהשדה dvc_ip אם השדה logstash.collect.host לא קיים.
Expiration additional.fields[Expiration].value.string_value ממופה ישירות מהשדה Expiration.
host.architecture target.asset.hardware.cpu_platform ממופה ישירות מהשדה host.architecture.
host.id target.asset.asset_id מופה ישירות מהשדה host.id, עם הקידומת Host ID:.
host.ip target.ip ממופה ישירות מהשדה host.ip.
host.mac target.mac ממופה ישירות מהשדה host.mac.
host.name target.hostname ממופה ישירות מהשדה host.name אם הפרמטר host.hostname לא קיים.
host.os.kernel target.platform_patch_level ממופה ישירות מהשדה host.os.kernel.
host.os.name additional.fields[os_name].value.string_value ממופה ישירות מהשדה host.os.name.
host.os.version target.platform_version ממופה ישירות מהשדה host.os.version.
InsertTime additional.fields[InsertTime].value.string_value ממופה ישירות מהשדה InsertTime.
Issuer additional.fields[Issuer].value.string_value ממופה ישירות מהשדה Issuer.
Issuer principal.user.userid ממופה ישירות מהשדה Issuer אם הוא קיים.
last_modified_by principal.resource.attribute.labels[last_modified_by].value ממופה ישירות מהשדה last_modified_by.
log.source.address principal.ip כתובת ה-IP מחולצת מהשדה log.source.address וממופה ל-principal.ip.
log.source.address principal.port היציאה מחולצת מהשדה log.source.address.
logstash.collect.host observer.ip ממופה ישירות מהשדה logstash.collect.host אם הוא קיים.
logstash.collect.timestamp metadata.collected_timestamp ממופה ישירות מהשדה logstash.collect.timestamp.
logstash.ingest.timestamp metadata.ingested_timestamp ממופה ישירות מהשדה logstash.ingest.timestamp.
logstash.irm_environment additional.fields[irm_environment].value.string_value ממופה ישירות מהשדה logstash.irm_environment.
logstash.irm_region additional.fields[irm_region].value.string_value ממופה ישירות מהשדה logstash.irm_region.
logstash.irm_site additional.fields[irm_site].value.string_value ממופה ישירות מהשדה logstash.irm_site.
logstash.process.host intermediary.hostname ממופה ישירות מהשדה logstash.process.host.
message dvc_ip, json_data, timestamp הניתוח בוצע באמצעות grok כדי לחלץ את dvc_ip, json_data ו-timestamp.
modification_time target.resource.attribute.last_update_time ממופה ישירות מהשדה modification_time.
modifier_user_id principal.resource.attribute.labels[modifier_user_id].value ממופה ישירות מהשדה modifier_user_id.
object_id target.resource.product_object_id ממופה ישירות מהשדה object_id.
object_name target.resource.name ממופה ישירות מהשדה object_name.
object_type_name target.resource.attribute.labels[object_type_name].value ממופה ישירות מהשדה object_type_name.
PackageName additional.fields[PackageName].value.string_value ממופה ישירות מהשדה PackageName.
SourceId additional.fields[SourceId].value.string_value ממופה ישירות מהשדה SourceId.
StartTime additional.fields[StartTime].value.string_value ממופה ישירות מהשדה StartTime.
Status security_result.action מופה ל-'BLOCK' אם Status הוא 'Closed', ל-'ALLOW' אם Status הוא 'Open'.
Status security_result.summary ממופה ישירות מהשדה Status.
tanium_audit_type metadata.product_event_type ממופה ישירות מהשדה tanium_audit_type.
timestamp metadata.event_timestamp ממופה ישירות מהשדה timestamp שחולץ מהודעת ה-syslog או מהשדה message.
type additional.fields[type].value.string_value ממופה ישירות מהשדה type.
type_name metadata.product_event_type ממופה ישירות מהשדה type_name.
User principal.user.userid ממופה ישירות מהשדה User. הערך נקבע על ידי לוגיקת הניתוח על סמך הנוכחות של src_ip, ‏has_target ו-has_user. הערך יכול להיות NETWORK_CONNECTION,‏ USER_RESOURCE_ACCESS,‏ STATUS_UPDATE או GENERIC_EVENT. הערך מוטמע כ-"TANIUM_AUDIT". הערך מוטמע בקוד כ-'cybersecurity'. הערך מוטמע כ-"TANIUM_AUDIT".
@version metadata.product_version ממופה ישירות מהשדה @version.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value ממופה ישירות מהשדה agent.ephemeral_id.
agent.id observer.asset_id מופה ישירות מהשדה agent.id, עם הקידומת filebeat:.
agent.type observer.application ממופה ישירות מהשדה agent.type.
agent.version observer.platform_version ממופה ישירות מהשדה agent.version.
Comment security_result.description ממופה ישירות מהשדה Comment.
host.hostname target.hostname ממופה ישירות מהשדה host.hostname אם הוא קיים.
input.type network.ip_protocol מופה ל-TCP אם input.type הוא tcp או TCP.
syslog_severity security_result.severity הערך שמופה הוא HIGH אם הערך של syslog_severity הוא error או warning,‏ MEDIUM אם הערך הוא notice,‏ LOW אם הערך הוא information או info.
syslog_severity security_result.severity_details ממופה ישירות מהשדה syslog_severity.

יומן שינויים

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

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