כיצד לבצע: כיצד לבנות חומת אש "ביתית" משלך

(של אלסנדרו פיורי)
07/10/19

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

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

באופן כללי, יישום פיתרון תוכנה בחומרה שאינה ייעודית, כגון הפיתרון שננתח בהמשך, יכול להיות מועיל באופן קונקרטי במקרים הבאים:

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

אלה רק כמה דוגמאות, אך האפשרויות רבות.

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

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

האם ניתן, במעט סבלנות, לחסוך בחומת האש בחומרה וב- UTM (עם זאת מומלץ מאוד), ללכת ולהגן על "מצב נואש"?

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

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

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

מה שיכול לעזור לנו זה "וירטואליזציה"

וירטואליזציה היא טכניקה ספציפית המאפשרת לך "מופשט", או להנגיש במצב וירטואלי, רכיבי חומרה.
כדי להסביר טוב יותר את המושג, בואו נדמיין שיש לנו מעבד (הרכיב שמבצע פיזית את הפעולות) של "ליבות" 20 (היחידות השונות שמבצעות את החישובים במעבד).
באמצעות וירטואליזציה אנו יכולים "להפריד" למשל ליבות 10 ולהקדיש אותם למערכת הפעלה אחרת.
ניתן ליישם את אותה המושג "הקדשה" או "הפשטה" של חלק מהחומרה לתוכנות אחרות באמצעות זיכרון RAM, כרטיסי רשת וכו '.
זה מאפשר לך לקבל מערכת הפעלה "מארחת" (מערכת ההפעלה הראשית) ומערכות "אורח" מרובות (מערכות וירטואליות) באותה מכונה, בו זמנית.
הרכיב המאפשר "הפשטה" זו נקרא "Hypervisor".

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

אבל מדוע הווירטואליזציה יכולה לעזור לנו?

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

לכן חשוב לזכור שלושה היבטים מהותיים:

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

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

העובדה ש- VirtualBox הוא קוד פתוח, עוזרת לנו לא להיתקל בעלויות לא צפויות, וכדי לעזור לנו לא להיות "הפתעות רעות", לא נתקין את חבילת ה- Extension Pack של VirtualBox.

הפתרונות המוצעים כאן הם למעשה שניים, עם יתרונות וחסרונות יחסית:
- פתרון מבוסס על Windows 7 (כן, בדיוק על Windows 7)
- פתרון מבוסס OPNSense

לפיתרון המבוסס על Windows 7 יש את היתרון של צריכת משאבים מינימלית ומהירות חיבור שווה לזו של מכונת ה"מארח "המחוברת ישירות לרשת.
החיסרון של Windows 7 הוא שברירת המחדל אין לה מערכת מניעת חדירות (מערכת המאתרת וחוסמת אוטומטית מנות זדוניות).

לפיתרון המבוסס על OPNSense יש את היתרון שיש בכלי בקרה רבים וניתן להגדיר אותם בקלות כמערכת למניעת חדירות (IPS).
החיסרון של OPNSense הוא כלים משלה, מה שאומר שההשפעה על משאבי החומרה גדולה יותר, ומאחר ש- IPS חייבת לשלוט על זרימת הנתונים, ההשפעה על מהירות החיבור תהיה גם משמעותית.

OPNSense נבחרה ביחס ל- pfSense (מערכת הדומה ל- OPNSense) עבור מערכת הניתוח שלה.
PfSense משתמש ברכיב בשם "Snort", המנתח מנות במעבר והוא כבד למדי, במיוחד אם מותקן במחשב וירטואלי.
OPNSense משתמשת בסוריקטה או במערכת ניתוח חבילה אחרת המנצלת את פעולת ריבוי הגלישה, או בטכניקה המאפשרת לבצע מספר תהליכים בו זמנית על ידי המעבד.
נכון להיום סוריקטה היא מערכת NIDPS, או מערכת גילוי ומניעה של חדירת רשת (בדיוק מה שאנחנו צריכים, מכיוון שהיא מצליחה למנוע איומים ולא רק לזהות אותם), בעוד שנורט הוא NIDS, או מערכת גילוי חדירות לרשת.
עדיף שילוב זה, במיוחד במכונה וירטואלית בה יש להקדיש תשומת לב מיוחדת להשפעה של מערכות אלו על הביצועים הכוללים.

המערכת שיש להגן עליה היא Metasploitable, שהיא מכונה וירטואלית הבנויה בכוונה להיות פגיעה.

במקרה זה, בואו נדמיין כי Metasploitable היא המערכת שיש להגן עליה:

לפיכך אנו מנתחים כיצד להתקין וליישם את שני הפתרונות הללו.
התרחיש הראשוני רואה את המערכת שלנו ללא הגנות.

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

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

כפי שאתה יכול לראות, Metasploit הצליח לפתוח שני הפעלות במחשב:

לפיתרון הראשון יש לנו Windows 7, המותקן במחשב וירטואלי.
בואו נפתח VirtualBox ונגדיר שני כרטיסי רשת, כך:

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

בוא נראה כיצד להגדיר את התצורה של המכונה, ברמת התוכנה

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

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

כעת, אם רצינו לחשוף שירותים (למשל האתר) באינטרנט, לחץ על "הגדרות" והגדר "שרת אינטרנט (HTTP)"

מדוע התצורה הזו?

על ידי הפעלת שיתוף חיבור האינטרנט, רשת המשנה "192.168.137.x" פיקטיבית מוגדרת בכרטיס הרשת השני.
המכונה שלנו להגנה, במקרה זה, מוגדרת ככתובת ה- IP "192.168.137.143", לכן יש להגדיר כתובת זו במסכת "הגדרות שירות" כמוצג באיור הקודם.
כעת אנו מאשרים את הכל על ידי לחיצה על "אישור" על המסכות השונות.
לאחר אישור, אנו פותחים את "secpol.msc"
בסמל "קריטריוני אבטחת IP", על ידי לחיצה עם לחצן העכבר הימני, ניתן ליצור מדיניות אבטחה חדשה של IP.

באשף אנו נותנים שם לתצורה שלנו ואנחנו תמיד ממשיכים קדימה, עד שנוצר המסנן.
בנקודה זו אנו מוצאים את עצמנו מול מסך חדש, ולכן אנו לוחצים על "הוסף", אנו תמיד קדימה למסך "רשימות מסנן IP".
כאן אנו לוחצים על "הוסף"

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

במסך הבא (פעולות סינון) אנו לוחצים על "הוסף", אנו נותנים את השם "חסום" ואנחנו לוחצים על "חסום".

לאחר יצירת פעולת הסינון, בחרו אותה והמשיכו לאשר את יצירת הכלל השלם.
כעת חסמנו את כל היציאות לכל חיבורי המכונה, מכיוון שבמקרה שלנו אנו רוצים להפוך את האתר לזמין ביציאת 80, עלינו ליצור כלל נוסף, המאשר העברת נתונים ביציאת 80.

ביצירת פילטר ה- IP, ברגע שאנו מגיעים לדף "פרוטוקולים" אנו מציינים "TCP" ובנמלים, בשדה הטקסט השני אנו לוחצים על האפשרות "יציאה זו" ומציינים את יציאת 80.

בזמן פעולות פילטר, הפעם עלינו לציין "הרשאה".

לאחר השלמת התצורה, לחץ באמצעות לחצן העכבר הימני על המסנן שנוצר ואז על "הקצה"

בשלב זה נוכל לבצע שוב את הבדיקות שלנו:

האתר עובד

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

לאחר מכן אנו תוקפים את המכונה שלנו שוב כדי לבדוק אם התצורה שינתה משהו:

כפי שאנחנו יכולים לראות, Metasploit לא הצליחה לפתוח פעילויות.

מדוע יש לנו שינוי התנהגות פתאומי זה, למרות שלא שינינו / עדכנו את המערכת?

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

אם היינו משתמשים רק בשיתוף חיבורים, Metasploit עדיין היה מצליח לפתוח מושב, כאילו שהעברת יציאה נקבעה ל- 80 (כדי להפוך את האתר לזמין מבחוץ), זה לא היה מונע "קשרים הפוכים ", או חיבור ליציאה שנפתחה על ידי לקוח פנימי לרשת כדי לאפשר חיבור של שרת מרוחק.

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

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

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

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

כדי לאפשר ניתוח חבילות, בהכרח נצטרך להסתמך על תוכנת "מניעת חדירות".
למצב זה, זוהתה OPNSense, שכאמור משתמשת בסוריקטה כמערכת ניתוח חבילה, וב- Netmap כדי להפחית את עומס ה- CPU ולייעל את כרטיסי הרשת.

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

כדי לאפשר ל- OPNSense לפעול במיטבו, נקדיש למכונה הוירטואלית 2 GB RAM (בשונה מהפתרון הראשון, שבו אפילו GB אחד הספיק).

להלן דוגמה לקונפיגורציה של OPNSense:

כשאתה מפעיל את ההתקן, מופיע מסך ההתחברות:

למכונה שאנו צריכים להגן, אם כן, במקרה שלנו תהיה כתובת IP "192.168.2.2" ושער "192.168.2.1" ככתובת IP.
אנו יכולים להיכנס לתצורת OPNSense, לחבר מכשיר לרשת LAN ובעזרת דפדפן רגיל, להצביע על הקישור "https://192.168.2.1"

הפאנל הבא ייפתח:

לאחר הכניסה, אנו מול הפאנל הראשי של OPNSense:

בוא נעבור ל"שירותים "→" איתור חדירות "→" ניהול "ובדוק את כל האפשרויות:

לחץ על "החל" ועבור ל"הורדה ":

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

לבסוף, בתחתית העמוד, לחץ על "הורד ועדכן כללי".

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

מטמון פרוקסי הוא רכיב שכבר קיים ב- OPNSense, המאפשר לסוריקטה להרחיב את יכולת איתור הפריצה.
הסיבה לכך היא שפרוטוקולים מוצפנים, כגון HTTPS, סוריקטה לא תוכל לפענח את הנתונים העוברים בזמן אמת.
כדי להימנע מבעיה זו, מטמון פרוקסי מאפשר לך לפעול כגשר בין הרשת החיצונית לאתר שביקר.
כגשר, המנות מפוענחות על ידי ה- Proxy, שרק לאחר מכן משדר אותן שוב לשירות בפועל.
ברור שפעולה זו מתרחשת גם באופן ספקולארי.
זה מאפשר לשלוט בחבילות על ידי Suricata.

התוכנה המאפשרת את כל זה נקראת "דיונון".
כדי לאפשר דיונון ב- OPNSense, עבור אל "שירותים" → "פרוקסי אינטרנט" → "ניהול", סמן "הפעל פרוקסי":

לאחר מכן אנו עוברים ל"פרוקסי קדימה "ומאפשרים את שלושת הסימנים כמו באיור.

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

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

להעמיק:
https://www.offensive-security.com/metasploit-unleashed/requirements/
https://en.wikipedia.org/wiki/Internet_Connection_Sharing
https://wiki.opnsense.org/
https://it.wikipedia.org/wiki/Squid
https://it.wikipedia.org/wiki/IPsec
https://it.wikipedia.org/wiki/Virtualizzazione
https://www.virtualbox.org/wiki/Documentation

צילום: חיל הנחתים האמריקני