איסוף יומנים מאזור 1

גרסת כלי הניתוח: 3.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של Area 1 Email Security (של Cloudflare) ב-Google Security Operations באמצעות AWS S3. הכלי לניתוח מעבד את היומנים בפורמט JSON. הוא מחלץ שדות רלוונטיים ממבנה ה-JSON המקונן, ממפה אותם למודל הנתונים המאוחד (UDM) ומעשיר את הנתונים במידע גיאוגרפי ובפרטי אבטחה כמו גיבוב קבצים מצורפים וסיווג.

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

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

  • מופע של Google SecOps
  • מארח עם Windows 2016 ואילך או Linux עם systemd
  • אם מריצים מאחורי שרת proxy, היציאות של חומת האש פתוחות
  • גישה עם הרשאות ל-Area 1 Email Security (של Cloudflare)

הגדרת AWS IAM וקטגוריית S3

  1. יוצרים קטגוריה ב-Amazon S3 לפי המדריך למשתמש: יצירת קטגוריה
  2. נכנסים למסוף AWS.
  3. עוברים אל S3 > Create bucket.
  4. מזינים שם לקטגוריה (לדוגמה, area1-security-logs).
  5. משאירים את הגדרות ברירת המחדל האחרות (או מגדירים הצפנה וניהול גרסאות אם צריך).
  6. לוחצים על יצירה.
  7. שומרים את השם והאזור של הקטגוריה לעיון עתידי.
  8. יוצרים משתמש לפי מדריך המשתמש הזה: יצירת משתמש IAM.
  9. בוחרים את המשתמש שנוצר.
  10. לוחצים על הכרטיסייה פרטי כניסה לאבטחה.
  11. בקטע מפתחות גישה, לוחצים על יצירת מפתח גישה.
  12. בוחרים באפשרות שירות של צד שלישי בתור תרחיש שימוש.
  13. לוחצים על הבא.
  14. אופציונלי: מוסיפים תג תיאור.
  15. לוחצים על Create access key (יצירת מפתח גישה).
  16. לוחצים על הורדת קובץ CSV ושומרים את מפתח הגישה ואת מפתח הגישה הסודי לעיון בהמשך.
  17. לוחצים על סיום.
  18. לוחצים על הכרטיסייה הרשאות.
  19. בקטע Permissions policies, לוחצים על Add permissions.
  20. בוחרים באפשרות צירוף מדיניות ישירות.
  21. מחפשים את המדיניות AmazonS3FullAccess.
  22. בוחרים את המדיניות.
  23. לוחצים על הבא.
  24. לוחצים על הוספת הרשאות.

קבלת פרטי כניסה ל-API של Area 1

  1. נכנסים ללוח הבקרה של Area 1 Security (Cloudflare).
  2. עוברים אל הגדרות > גישה ל-API.
  3. יוצרים את מפתח ה-API (טוקן).
  4. מעתיקים את האסימון ושומרים אותו במקום מאובטח.

הגדרת חבילות Python הנדרשות

  1. נכנסים למארח של איסוף היומנים (לדוגמה, AWS VM) ומריצים את הפקודה הבאה כדי להגדיר את פרטי הכניסה של AWS:

    pip install boto3 requests
    aws configure
    

יצירת הסקריפט Area 1 Log Puller

  1. יוצרים את הקובץ הבא על ידי הקלדת sudo vi area1_to_s3.py, ואז מעתיקים את הקוד הבא:

    • משנים את ההגדרות הבאות:
    #!/usr/bin/env python3
    import os
    import requests
    import boto3
    import datetime
    import json
    
    # Configuration
    AREA1_API_TOKEN = os.environ.get("AREA1_API_TOKEN")  # Load securely from env
    AWS_PROFILE = os.environ.get("AWS_PROFILE", None)    # Optional, for named profiles
    S3_BUCKET_NAME = "area1-security-logs"
    LOG_TYPE = "events"
    
    # Time range
    end_time = datetime.datetime.utcnow()
    start_time = end_time - datetime.timedelta(days=1)
    
    def fetch_area1_logs():
        url = f"https://api.area1security.com/v1/{LOG_TYPE}"
        headers = {
            "Authorization": f"Bearer {AREA1_API_TOKEN}",
            "Accept": "application/json"
        }
        params = {
            "startDate": start_time.strftime("%Y-%m-%dT%H:%M:%SZ"),
            "endDate": end_time.strftime("%Y-%m-%dT%H:%M:%SZ")
        }
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    
    def upload_to_s3(data):
        filename = f"area1_{LOG_TYPE}_{start_time.strftime('%Y%m%d')}.json"
    
        session = boto3.Session(profile_name=AWS_PROFILE) if AWS_PROFILE else boto3.Session()
        s3 = session.client("s3")
    
        s3.put_object(
            Bucket=S3_BUCKET_NAME,
            Key=f"logs/{filename}",
            Body=json.dumps(data).encode("utf-8"),
            ContentType="application/json"
        )
        print(f"[✓] Uploaded {filename} to s3://{S3_BUCKET_NAME}/logs/")
    
    if __name__ == "__main__":
        logs = fetch_area1_logs()
        upload_to_s3(logs)
    
  2. שמירה ויציאה vi: לוחצים על esc ואז מקלידים :wq.

אחסון משתני הסביבה

  1. יוצרים קובץ מאובטח לאחסון משתני סביבה ב-/etc/area1.env (או ב-/home/user/.area1.env)

    export AREA1_API_TOKEN="your_actual_area1_api_token"
    export AWS_PROFILE="<your_aws_programmatic_username>"
    
  2. מוודאים שהקובץ מאובטח:

    chmod 600 /etc/area1.env
    

הרצה ובדיקה של הסקריפט

  1. מריצים את הסקריפט הבא:

    python3 area1_to_s3.py
    
  2. הפרטים שיוצגו:

    Uploaded area1_events_20250701.json to s3://area1-security-logs/logs/
    

אוטומציה באמצעות Cron

  1. יוצרים סקריפט Wrapper ל-Cron על ידי הרצת sudo vi /usr/local/bin/run_area1.sh ואז מעתיקים את הקוד הבא:

    #!/usr/bin/env bash
    set -euo pipefail
    
    source /etc/area1.env
    /usr/bin/python3 /opt/scripts/area1_to_s3.py
    
  2. הופכים את הקובץ לקובץ הפעלה:

    chmod +x /usr/local/bin/run_area1.sh
    
  3. מוגדר לפעול מדי יום בשעה 01:00 UTC:

    crontab -e
    0 1 * * * /usr/local/bin/run_area1.sh >> /var/log/area1_to_s3.log 2>&1
    

הגדרת פידים

יש שתי נקודות כניסה שונות להגדרת פידים בפלטפורמת Google SecOps:

  • הגדרות SIEM > פידים
  • מרכז התוכן > חבילות תוכן

הגדרת פידים מתוך 'הגדרות SIEM' > 'פידים'

כדי להגדיר פיד:

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Area1 Logs).
  5. בוחרים באפשרות Amazon S3 בתור סוג המקור.
  6. בוחרים באפשרות Area1 Security בתור סוג היומן.
  7. לוחצים על הבא.
  8. מציינים ערכים לפרמטרים הבאים של הקלט:

    • אזור: האזור שבו נמצאת קטגוריית Amazon S3.
    • ‫S3 URI: ה-URI של הקטגוריה (הפורמט צריך להיות: s3://<your-log-bucket-name>). צריך להחליף את הערכים הבאים:
      • ‫your-log-bucket-name: שם הקטגוריה.
    • URI is a: בוחרים באפשרות Directory which includes subdirectories.
    • אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה בהתאם להעדפות.
    • מזהה מפתח הגישה: מפתח הגישה של המשתמש עם גישה לקטגוריית S3.
    • מפתח גישה סודי: מפתח סודי של משתמש עם גישה לקטגוריית S3.
  9. לוחצים על הבא.

  10. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

הגדרת פידים ממרכז התוכן

מציינים ערכים בשדות הבאים:

  • אזור: האזור שבו נמצאת קטגוריית Amazon S3.

    • ‫S3 URI: ה-URI של הקטגוריה (הפורמט צריך להיות: s3://<your-log-bucket-name>). צריך להחליף את הערכים הבאים:
      • ‫your-log-bucket-name: שם הקטגוריה.
    • URI is a: בוחרים באפשרות Directory which includes subdirectories.
    • אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה בהתאם להעדפות.
    • מזהה מפתח הגישה: מפתח הגישה של המשתמש עם גישה לקטגוריית S3.
    • ‫Secret Access Key (מפתח גישה סודי): המפתח הסודי של המשתמש עם גישה לדלי S3.§

אפשרויות מתקדמות

  • שם הפיד: ערך שמאכלס מראש את השדה ומזהה את הפיד.
  • סוג המקור: השיטה שבה נעשה שימוש כדי לאסוף יומנים ב-Google SecOps.
  • מרחב שמות של נכס: מרחב השמות שמשויך לפיד.
  • תוויות להעברה: תוויות שמוחלות על כל האירועים מהפיד הזה.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
alert_id security_result.rule_id הערך נלקח מהשדה alert_id.
alert_reasons security_result.description הערך נלקח מהשדה alert_reasons.
attachments.att_size security_result.about.file.size הערך נלקח מהשדה attachments.att_size ומומר למספר שלם לא מסומן.
attachments.disposition security_result.about.user.attribute.labels.value הערך נלקח מהשדה attachments.disposition.
attachments.extension security_result.about.file.mime_type הערך נלקח מהשדה attachments.extension.
attachments.md5 security_result.about.file.md5 הערך נלקח מהשדה attachments.md5.
attachments.name security_result.about.file.full_path הערך נלקח מהשדה attachments.name.
attachments.sha1 security_result.about.file.sha1 הערך נלקח מהשדה attachments.sha1.
attachments.sha256 security_result.about.file.sha256 הערך נלקח מהשדה attachments.sha256.
attachments.ssdeep security_result.about.file.ssdeep הערך נלקח מהשדה attachments.ssdeep.
delivery_mode security_result.detection_fields.value הערך נלקח מהשדה delivery_mode.
envelope_from principal.user.email_addresses, network.email.from הערך נלקח מהשדה envelope_from.
envelope_to network.email.to, target.user.email_addresses הערך נלקח מהשדה envelope_to.
final_disposition security_result.category_details הערך נלקח מהשדה final_disposition.
message_id metadata.product_log_id הערך נלקח מהשדה message_id אחרי הסרת התווים '<' ו-'>'.
replyto network.email.bounce_address הערך נלקח מהשדה replyto.
smtp_helo_server_ip principal.ip הערך נלקח מהשדה smtp_helo_server_ip.
smtp_helo_server_ip_as_name principal.location.name הערך נלקח מהשדה smtp_helo_server_ip_as_name.
smtp_helo_server_ip_as_number principal.asset_id הערך נלקח מהשדה smtp_helo_server_ip_as_number ומוסף לו הקידומת asset_id:.
smtp_helo_server_ip_geo principal.location.country_or_region, principal.location.state, principal.location.city הערך מחולץ מהשדה smtp_helo_server_ip_geo באמצעות תבנית Grok.
smtp_helo_server_name principal.administrative_domain הערך נלקח מהשדה smtp_helo_server_name.
מקור metadata.vendor_name הערך נלקח מהשדה source. אם השדה ריק, הערך שמוגדר הוא area1security.
נושא network.email.subject הערך נלקח מהשדה subject.
פעם metadata.event_timestamp הערך נלקח מהשדה time ומומר לחותמת זמן.
metadata.event_type הערך הוא EMAIL_TRANSACTION.
metadata.product_name הערך הוא AREA1.
metadata.log_type הערך הוא AREA1.
security_result.about.user.attribute.labels.key הערך הוא disposition.
security_result.category הערך הוא SOFTWARE_MALICIOUS.
security_result.detection_fields.key הערך הוא delivery_mode.
envelope_to.0" instead of "replyto network.email.to מופה מיומן השינויים

יומן שינויים

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

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