ביצוע סריקות Nessus

‫Nessus הוא סורק אבטחה שמשמש לזיהוי נקודות חולשה באבטחה בחומרה ובתוכנה.

במאמר הזה מפורטים השלבים לביצוע הפעולות הבאות:

  • התקנה של Nessus

  • ביצוע סריקות Nessus

  • ייצוא תוצאות סריקה של Nessus

1. רקע

‫Tenable Nessus הוא כלי של צד שלישי שנדרש לו רישיון. מידע נוסף על Nessus זמין במקורות המידע הבאים:

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

  • תחנת עבודה

    • כדי לארח את Nessus, צריך להשתמש ב-bootstrapper ‏ (te-bf) או בתחנת עבודה מקבילה שאפשר לגשת אליה.
  • נדרשת הרשאת גישה

    • פועלים לפי IAM-R0005:

      • צריך לקבל תפקיד של אדמין באשכול לכל אשכול יעד.
    • פועלים לפי ההוראות במאמר IAM-R0004:

      • יוצרים את קובץ ה-KUBECONFIG לכל אשכול יעד.
  • כלים נדרשים

    • kubectl
    • ssh-keygen
  • תוכנה

    • נדרש קובץ התקנה של Nessus שתואם למערכת ההפעלה של תחנת העבודה. לפני שממשיכים, צריך להוריד את קובץ ההתקנה מהכתובת https://www.tenable.com/downloads/nessus ולהעביר אותו לתחנת העבודה של Nessus.
  • רישוי

    • נדרש קוד הפעלה של רישיון Tenable Nessus יחיד (Pro, ‏ Export או Manager). אם אין לכם קוד הפעלה של רישיון, פנו לאיש הקשר בצוות שלכם בנושא רישוי של צד שלישי או רשימת חומרים (BOM) של תוכנה.

3. התקנה של Nessus

בקטע הזה מוסבר איך להתקין את Nessus בתחנת העבודה של Nessus.

אם Nessus כבר מותקן ומופעל, אפשר לדלג על הקטע הזה.

אם Nessus לא זמין יותר (לדוגמה, אם הוא הותקן במחשב שכבר לא קיים), צריך לאפס את הרישיון ששימש להפעלת המופע הקודם של Nessus לפני שממשיכים.

  1. מייצאים את הנתיב לקובץ ההתקנה של Nessus:

    NESSUS_INSTALLER=
    
  2. מתקינים את Nessus באמצעות dpkg:

    dpkg -i ${NESSUS_INSTALLER:?}
    
  3. מפעילים מחדש את Nessus ומוודאים שהוא פועל:

    sudo systemctl restart nessusd
    sudo systemctl status nessusd
    
  4. כדי לרשום את Nessus במצב אופליין, צריך לקבל קוד אתגר:

    /opt/nessus/sbin/nessuscli fetch --challenge
    
  5. במחשב שמחובר לאינטרנט, נכנסים לדף ההפעלה במצב אופליין של Nessus בכתובת https://plugins.nessus.org/v2/offline.php.

  6. מעתיקים את קוד ההפעלה אופליין של Nessus ואת קוד ההפעלה של רישיון Nessus לדף ההפעלה אופליין של Nessus ולוחצים על Submit (שליחה).

  7. בדף ההפעלה במצב אופליין של Nessus אמורות להופיע עכשיו כתובת URL של פלאגין Nessus ורישיון מוצר. תצטרכו את שני הערכים האלה בשלבים הבאים.

  8. שומרים את כתובת ה-URL של הפלאגין של Nessus במיקום בטוח לעיון בהמשך, כי היא תידרש בהמשך המדריך הזה.

  9. שומרים את הרישיון מהדף Nessus offline activation (הפעלה אופליין של Nessus) בתחנת העבודה של Nessus בקובץ בשם /opt/nessus/etc/nessus/nessus.license.

  10. החלת הרישיון על Nessus:

    /opt/nessus/sbin/nessuscli fetch --register-offline /opt/nessus/etc/nessus/nessus.license
    
  11. יצירת משתמש עם הרשאת אדמין:

    פועלים לפי ההנחיות של nessuscli adduser כדי ליצור משתמש admin. פרטי הכניסה האלה ישמשו בהמשך לביצוע סריקות ולהורדת תוצאות, לכן חשוב לשמור אותם במקום בטוח.

    /opt/nessus/sbin/nessuscli adduser
    
  12. בזמן ש-Nessus פועל, אפשר לגשת לממשק המשתמש שלו דרך יציאה 8834. בדפדפן שבחרתם, עוברים אל https://<nessus-workstation-ip>:8834 ומתחברים כמשתמש admin.

4. עדכון של פלאגינים של Nessus

כדי להבטיח שתוצאות הסריקה יהיו רלוונטיות ועדכניות, צריך להוריד את הפלאגינים העדכניים של Nessus ולהחיל אותם על Nessus לפני שמריצים סריקות. צריך לקבל את הפלאגינים של Nessus ישירות מ-Tenable באמצעות כתובת ה-URL של הפלאגין של Nessus שמתקבלת מדף ההפעלה במצב אופליין של Nessus.

  1. מורידים את חבילת הפלאגינים.

    אפשרות 1: עוברים לכתובת ה-URL של הפלאגין Nessus באמצעות הדפדפן הרצוי, והחבילה תורד באופן אוטומטי.

    אפשרות 2: הורדת החבילה באמצעות wget wget "${PLUGIN_URL:?}" -O plugin-updates.tar.gz

  2. מעבירים את חבילת הפלאגין לתחנת העבודה של Nessus ומייצאים את מיקום הקובץ:

    NESSUS_PLUGIN_BUNDLE=
    
  3. מחילים את עדכוני הפלאגין על Nessus:

    /opt/nessus/sbin/nessuscli update ${NESSUS_PLUGIN_BUNDLE:?}
    
  4. העדכונים של התוספים נמשכים כ-30 דקות. אפשר לפעול לפי השלבים הבאים ליצירת סריקות בזמן שזה קורה, אבל כדאי להמתין עם הפעלת הסריקות עד שהקומפילציה של התוספים תסתיים.

5. הגדרת סריקות Nessus

צריך ליצור סריקות לכל שילוב ייחודי של כרטיס מועדון ופרטי כניסה. בקטע הזה נסביר איך ליצור את הסריקה הנדרשת באמצעות ממשק המשתמש של Nessus.

לפני שממשיכים, צריך לוודא שיש גישה לממשק המשתמש של Nessus בכתובת https://<nessus-workstation-ip>:8834 ולהתחבר כמשתמש admin.

5.1. איסוף של CIDR ברשת

סריקות Nessus נוצרות כדי לסרוק את ה-CIDR של הרשת החיצונית והפנימית של הסביבה.

  1. אוספים את ה-CIDR של הרשתות החיצוניות והפנימיות של רשת מכשיר היעד (מומלץ שהרשת הזו לא תחפוף לסביבה שכנה אחרת).

  2. טווח כתובות ה-IP כנראה יכלול את כתובת ה-IP של ה-bootstrapper או כתובות IP אחרות שאסור לסרוק. מזינים את הפקודות הבאות לכל כתובת IP שלא אמורה להיסרק (למשל כתובת IP של bootstrapper):

    IGNORE_IP=
    IGNORE_IP_REASON=
    
    echo "# ${IGNORE_IP_REASON:?}" >> /opt/nessus/etc/nessus/nessusd.rules
    echo "reject ${IGNORE_IP:?}" >>  /opt/nessus/etc/nessus/nessusd.rules
    

5.2. סריקות לגילוי מארחים

סריקות של גילוי רשתות לא מאומתות, והן נועדו לסרוק רשת כדי למצוא מטרות וחשיפות לא מאובטחות ברשת.

הסריקה הזו תוגדר לסריקת ה-CIDR של הרשתות החיצוניות והפנימיות שצוינו בקטע הקודם.

בממשק המשתמש של Nessus:

  1. יצירת סריקת גילוי מארחים בשם host-discovery
  2. מציינים מארחים: גם CIDR חיצוניים וגם פנימיים
  3. שמירה והפעלה

5.3. סריקות של מערכת הפעלה Node

סריקות הצמתים מאומתות ומיועדות לבדיקת מערכות הפעלה קריטיות כדי לזהות נקודות חולשה ידועות, הגדרות לא מאובטחות ותאימות.

פועלים לפי ההוראות שבקטע הזה כדי להגדיר את אשכול התשתית של הארגון:

  1. מייצאים את kubeconfig של האשכול:

    KUBECONFIG=
    
  2. מציגים את כל הצמתים באשכול:

    kubectl --kubeconfig=${KUBECONFIG:?} get nodes -o wide
    
  3. שימו לב לעמודה שבה מוצג ה-IP של הנתונים לכל צומת. לפני שממשיכים, מוודאים שאפשר לגשת לכתובת ה-IP של הנתונים ממחשב העבודה של Nessus באמצעות פינג.

    ping <node_data_ip>
    
  4. בממשק המשתמש של Nessus, מתחילים ליצור סריקה מתקדמת עם השם nodeos-compliance-<cluster_name>

  5. בסריקה המתקדמת, ממלאים את השדה 'מארחים' ברשימה של כל כתובות ה-IP של נתוני הצמתים משלב 1, כשהן מופרדות בפסיקים.

  6. פועלים לפי ההוראות שבמאמר נספח: הוספת פרטי כניסה ל-SSH של צומת באשכול כדי להוסיף פרטי כניסה לסריקה.

  7. עוברים לכרטיסייה 'תאימות' ובוחרים את הגרסה האחרונה שזמינה של 'DISA STIG Ubuntu 20.04 v1'. שומרים את הגדרת התאימות כמו שהיא, בלי לשנות את ערכי ברירת המחדל.

  8. שומרים את הגדרת הסריקה ומפעילים את הסריקה.

5.4. קדימה, פסק זמן!

הסריקות אמורות להימשך יותר מ-30 דקות. עכשיו כדאי לקחת הפסקה או לעשות משהו אחר עד שהן יסתיימו.

6. ייצוא תוצאות הסריקה

בקטע הזה מוסבר איך לייצא את תוצאות הסריקה.

לכל סריקה שהושלמה, מורידים את התוצאות:

  1. בוחרים את הסריקה שהושלמה כדי לבדוק את התוצאות שלה.

  2. לוחצים על הלחצן 'דוח' בפינה השמאלית העליונה.

  3. בוחרים באפשרות 'פורמט הדוח' CSV ומסמנים את כל העמודות.

  4. לוחצים על 'יצירת דוח'. אחרי השהיה קצרה, הדוח אמור להוריד את עצמו.

  5. (אופציונלי) אם נדרש גם דוח HTML, בוחרים באפשרות 'פורמט דוח HTML' ואת תבנית הדוח שנראית לכם מתאימה. תבנית הדוח המומלצת היא Detailed Vulnerabilities By Plugin with Compliance/Remediation (פגיעויות מפורטות לפי תוסף עם תאימות/תיקון).

7. השלבים הבאים

צריך לעבד את דוחות ה-CSV או ה-HTML שמתקבלים בהתאם לתהליכי האבטחה של הסביבה שלכם. אם יש ספק, פנו לאיש קשר בנושא אבטחת מידע או תאימות לקבלת הוראות נוספות.

‫8. נספח

‫8.1. הוספת פרטי כניסה של SSH לצומת באשכול

בקטע הזה מוסבר איך מקבלים קבוצה של פרטי כניסה ל-SSH כדי ש-Nessus יוכל לסרוק את הצמתים של אשכול יעד.

  1. מייצאים את kubeconfig של האשכול:

    KUBECONFIG=
    
  2. הצגת רשימת מפתחות ה-SSH של האשכול

    kubectl --kubeconfig=${KUBECONFIG} get -A secret | grep ssh-key
    
  3. מזהים את מרחב השמות של הסוד 'ssh-key' שמתאים לאשכול היעד ומייצאים את מרחב השמות:

    CLUSTER_NS=
    
  4. יוצרים ספריית SSH של Nessus:

    NESSUS_FOLDER=nessus
    mkdir -p ${NESSUS_FOLDER}/.ssh
    
  5. מייצאים את זוג מפתחות ה-SSH לספריית ה-SSH של Nessus:

    kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    
    kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa-cert\.pub }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
    
  6. מתקנים את ההרשאות של זוג המפתחות:

    # fix permissions
    chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
    
  7. ממירים את המפתח הפרטי לפורמט pem עם ביטוי סיסמה ריק:

    ssh-keygen -p -m PEM -f ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    

    פלט תקין אמור להיראות כך:

    Key has comment 'root@te-bd-bootstrapper'
    Enter new passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved with the new passphrase.
    
  8. מעבירים את nessus-<cluster>-id_rsa ואת nessus-<cluster>-id_rsa-cert.pub לתחנת העבודה שמשמשת לגישה לממשק המשתמש של Nessus.

  9. בממשק המשתמש של Nessus, עוברים לכרטיסייה Credentials (פרטי כניסה) בהגדרות הסריקה.

  10. יוצרים פרטי כניסה חדשים ל-SSH ובוחרים באפשרות 'אישור' לשיטת האימות.

  11. מזינים את ההגדרות הבאות לשיטת האימות של אישור SSH:

    • שם משתמש: root

    • אישור משתמש: הוספת קובץ nessus-<cluster>-id_rsa-cert.pub

    • מפתח פרטי: לוחצים על סמל הוספת הקובץ nessus-<cluster>-id_rsa.

  12. שומרים את הגדרות ה-SSH.

  13. חזרה למקום שבו נעשה שימוש בהפניה לקטע הזה.