לא עניתי אבל על השאלה המתבקשת: “מה עושים?” כיצד מתגוננים ו/או מתכננים מערכות תוכנה מאובטחות יותר[א]?
– על שאלות אלו אנסה לענות בפוסט הנוכחי.
מודל ה-CIA
מודל בסיסי שבא לכוון אותנו כיצד לספק אבטחת מידע, מגדיר שלוש צלעות:
- Confidentiality (סודיות) – מניעת חשיפה לא מורשית של מידע.
- אבני יסוד בהגנה: Authentication (אימות זהות), Authorization (ניהול הרשאות), והצפנה.
- Integrity (שלמות הנתונים) – מניעת שינוי לא רצוי של נתונים, זיוף נתונים, או השחתת נתונים. הידיעה שנתונים שמשתמשים ניגשים אליהם הם אותנטיים ולא שונו ע”י גורם עויין.
- אבני יסוד בהגנה: חתימה דיגיטלית, Authentication, ו Audit (רישום הגישות לנתונים)
- Availability (זמינות) – ווידוא שניתן לגשת לנתונים בכל זמן.
- אבני יסוד בהגנה: יתירות, וגיבויים / Disaster Recovery.
.
למשל: נניח שיש גורם שמצפין את המידע שלי בהצפנה כפולה: ה Confidentiality בשמיים – לא ניתן לגשת למידע. אבל אם גם אני לא מסוגל לגשת למידע, כי אין לי את המפתח להצפנה (Availability) – אז מה הטעם?!זה בדיוק מה שתוכנות ransomware עושות – והן פוגעות באבטחת המידע שלנו, אפילו שהן “רק מצפינות אותו עוד יותר” (כי לנו אין את מפתח ההצפנה, ויהיה עלינו לשלם כופר על מנת לקבל אותו).
4 עקרונות יסוד נוספים
מודל ה CIA הוא שימושי – אך כנראה הוא המודל הבסיסי ביותר שניתן לחשוב עליו. להלן קבוצה של עקרונות יסוד חשובים שליקטתי. העקרונות הללו הם ה Design Principles היסודיים, בחשיבה על תכנון מערכת כמערכת מאובטחת.
Non-Repudiation (אי-התכחשות)
- Authentication (אימות זהות) – ארחיב עליה בהמשך.
- Audit או לוגים – רישום מה קרה ומי עשה את זה ומתי.
- לחלק את אותו username והססמה לקבוצת אנשים – ואז לא ניתן לדעת מי מהם ביצע את הפעולה, או האם הקבוצה בעצם התרחבה ללא “כוונת המשורר”.
- להשתמש במערכת ב”משתמשים טכניים” (technical users) להם יש הרשאות עדיפות ואיתם מבצעים את הפעולות הרגישות – תוך כדי שממסכים מי המשתמש האמיתי שיזם את הפעולה.
- דוגמה: הפקודה “sudo bash” בלינוקס.
- דוגמה נוספת: משתמש הפעיל חישוב של דו”ח / תהליך במערכת, והמערכת מעבירה SQL Query למשתמש טכני (שלו יש גישה מלאה לבסיס הנתונים – כי למשתמש לא נתן כזו גישה! חס ושלום). כשנגלה שמשהו לא טוב קרה בבסיס הנתונים ע”י המשתמש הטכני – לא נדע לקשר זאת לגורם אנושי.
- לבני האדם יש דברים חשובים יותר בחיים משינון ססמאות מורכבות. רובנו “נופלים” לאותן ססמאות חוזרות (12345, password, querty, וכו’) – מה שמקל על תוקף פוטנציאלי “לנחש” את הססמה שלנו. בעזרת “מילון” / סטטיסטיקה של הססמאות הנפוצות ביותר, ואולי ע”י כמה פרטי רקע שניתן למצוא עלינו ברשת. פעמים רבות יהיה ניתן “למצוא” את הססמה שלנו גם בלי להכיר אותנו באופן אישי.
מכירים את המסכים עליהם מודבק פתק PostIt עם הססמה למערכת? - בעזרת תוכנת מחשב פשוטה ניתן לנסות ולנחש את הססמה שלנו ב Brute force: פשוט לנסות שוב ושוב עוד קומבינציות. אולי מילון של 8000 ססמאות נפוצות (יש כאלו לשפות דיבור שונות), ואולי לנסות את כל האפשרויות לאורך זמן. עדיין קיימות מערכות רבות שלא ינסו לחסום את המשתמש, גם כאשר הוא מנסה להיכנס למערכת עם אלפי ססמאות שונות בכל שעה, ובמשך ימים רבים.
- ה Password Strength Meter של My1Login יעריך את חוזק הססמה כנגד Brute Force וייתן כמה טיפים. למשל: מדוע הססמה “MyPasswordIsStrong” היא חלשה למדי.
- חלק מהחלשות שלנו כבני אנוש הן חולשות חברתיות, אותן תוקפים יודעים לנצל – מה שנקרא Social Engineering.
- אם מישהו ממש נחמד יבקש מכם עזרה – לא תעזרו לו?
- נניח שלא. אם הוא יעשה משהו טוב עבורכם ואז יבקש עזרה בחזרה – לא סביר יותר שתעזרו לו בחזרה? לא תתנו לו “רק לדקה” את הגישה שלכם למערכת כדי לעזור לו “במצוקה”?
- יש סיפור על בחור אירופאי שחדר ל CIA אי שם בשנות ה-90 עם אפס אמצעים. הוא ראה בספר הטלפונים את מרחב מספרי הטלפונים של ה CIA (כולם מתחילים ב….) והתקשר באופן אקראי למשתמשים. הוא הציג את עצמו כאיש IT ואמר שהוא ממש מתנצל, אבל בשל בעיה הוא חייב לנתק אותם לכמה שעות מהמערכת.
“אבל זה לא אפשרי! אני חייב לעבוד!” – רטן עובד ה CIA האקראי בצד השני.
“אתה יודע מה…” גילה אמפתיה חברית איש ה-IT מדומה “תן לי את הססמה שלך ואני אסדר לך משהו. אבל אל תגלה לאף אחד!”. כמה עובדים נידבו את שם המשתמש והססמה שלהם לקול בטלפון (שבכלל מקורו באירופה) – הכל מרצון טוב להמשיך לעבוד ולא להתבטל…
התוקף, חדר למערכת, כמשתמש לגיטימי – מתחת לרדאר של כל אמצעי ההגנה (שהיו מקובלים אז).
- Something you Know – כמו ססמה או שם חיית המחמד הראשונה שלכם.
- Something you Have – למשל כרטיס עובד, קוד שנשלח למכשיר הטלפון (הטלפון = something you have), או Certificate שמותקן על המחשב האישי (עדיף נייד).
- Something you Are – למשל מדדים ביומטריים כמו: טביעת אצבע, חתימה, קול, צילום רשתית (זה כבר לא מדע בדיוני), צורת הליכה (שמסתבר שהיא דיי ייחודית – כמו טביעת אצבע), וכו’.
דוגמה נפוצה אחרת ל MFA הן מכשיר כספומט שדורש גם כרטיס אשראי וגם קוד PIN.
MFA הוא סוג של Defense-In-Depth – עקרון שעליו נדבר בהמשך.
כאשר יש מצב ביניים לא ברור, ולא ניתן לקבוע אם משתמש מורשה לבצע פעולה והאם לאו – מה נעשה? ניתן לו לבצע, או שנחסום אותו?
ע”פ עקרון ה”נופל סגור” – בכדי לאפשר אבטחה התנהגות ברירת המחדל צריכה להיות מניעה. מדוע?
- כי לא לאפשר גישה – אומר שלא ניתן לגנוב מידע.
- כי אם נרשה גישה גם במצבי קצה – האקרים יכולים ללמוד עליהם ואז דרכם נעשית קלה יותר: עליהם “להביא” את עצמם למצב קצה – ואז הם “בפנים”.
כשעבדתי בחברת אימפרבה, חברה של מוצר אבטחה (WAF לסוגיו. אסביר מה זה WAF בהמשך) – דווקא נקטנו בגישה של “נופל פתוח”.למה? האם חברת אימפרבה דאגה פחות לאבטחה?
התשובה היא כזו: סאפ היא זו שכתבה את המוצר, ידעה מה באמת הצרכים העסקיים, ויכלה לשנות אותו ע”פ הצורך כך שגם כאשר יש Implicit Deny – המשתמשים לא נפגעים יותר מדי.
המוצר של אימפרבה הוא מוצר חיצוני, שיש לו מעט מאוד מידע על הנעשה במערכת וכיצד נכון להשתמש בה. אם בכל פעם שיש ספק היינו חוסמים את המשתמש – סביר שהרבה משתמשים היו נחסמים הרבה פעמים, ומביעים תסכול שיגרום מן הסתם ל”הרגעת” מערכת האבטחה הסוררת. זה לא מקום שחברת אבטחה יכולה להרשות לעצמה להגיע אליו.
אפשר לומר אפילו יותר: את המוצרים של סאפ רוכשים ומגבים המנהלים של היחידות העסקיות. זה רכש שמגיע מבפנים (או בעיקר: מלמעלה). את הרכש של מוצרי האבטחה (כך לפחות זה היה אז) – מבצעים בעיקר אנשי “יחידת האבטחה”, ויש להם יכולת הרבה יותר קטנה להציב תקורה על העובדים ביחידה העסקית. הם אמורים “לספק אבטחה מבלי להפריע לביזנס”.
Defense In Depth (הגנה לעומק)
הרעיון לפיו יהיו לנו כמה שכבות הגנה יתירות, לרוב מסוגים שונים. כך שאם שכבת הגנה אחת כושלת – יישארו לנו אמצעי הגנה פעילים נגד התוקף. כלומר: על מנת להגיע לנתונים מסוימים יהיה על התוקף לעבור יותר ממכשול אחד.
חומת ברלין היא דוגמה קלאסית ל”הגנה לעומק”. אני אעבור בקצרה על אמצעי-ההגנה (ה Controls) העיקריים שהיא כללה, מימין לשמאל בתרשים:
- קיר בטון חלק בגובה 4 מ’ – הקשה מאוד לטיפוס.
- שדה של ברזנטים מחודדים (spike mats, נקרא “הדשא של סטאלין”) שמקשה מאוד על ריצה והופך נפילה למסוכנת.
- גדר חשמלית.
- מחסומי טנקים – שנועדו לחסום מעבר של רכבים.
- 302 מגדלי שמירה עם שומרים חמושים שלא יהססו לירות בדמות לא ברורה.
- פטרול של שומרים מלווים בכלבי תקיפה + שביל גישוש (שביל עם חול מיושר) ברוחב 6 עד 15 מ’ שאדם שיעבור דרכו ישאיר עקבות – וכך ידעו על הימצאותו.
- שביל הגישוש הוא יתיר לגדר החשמלית – לזיהוי חדירה של גורם לא מורשה למרחב.
- מרחב גדול שהושטח על מנת להסיר מקומות מחבוא אפשריים – בו דמות שעוברת תהיה בולטת. נקרא “רצועת המוות”.
- תעלה למניעת מעבר כלי רכב.
- זוהי הגנה יתירה למחסומי הטנקים, שהזכרנו קודם לכן.
- קיר בטון חלק בגובה 4 מטר עם גדר תיל בראשו – החומה שגבלה עם גרמניה המערבית.
האם אתם יודעים כיצד נראו טירות בימי-הביניים?
אם אתם חובבי היסטוריה ולחימה – בוודאי שאתם יודעים!
בדרך כלל היו לטירות 2 או 3 חומות, בהם שערים.
כל חומה, סיפקה רמה אחרת של אבטחה – שהתאימה לה.
למשל:
- בתחומי החומה החיצונית היו השווקים והשטחים המשותפים לאזרחים. השומר בשער שביצע ביקורת בסיסית למדי על הנכנסים (למשל: אסור להיכנס עם נשק בולט, כמו גרזן ענק)
- בתחומי החומה האמצעים, היו משרדי שלטון או התגוררו אצילים. השומר בשער ביצע סינון קפדני יותר. למשל: כניסה מותרת רק לאזרחים ישרים. איך מזהים יושר? ע”פ בגדים חגיגיים ונקיים, כמובן!
- החומה הפנימית ביותר הגנה על הנכס החשוב ביותר של הממלכה: המלך! כניסה בשער זה התאפשר רק בתיאום מראש והיכרות אישית עם הנכנסים.
דוגמה מהעולם האמיתי
מחוץ ל Data Center שורר האינטרנט – מלא באיומים ופורעי חוק.
- הם סורקים את ה ports שפתוחים לאינטרנט, ומנסים לזהות פגיעויות ידועות (באגים, קונפיגורציה לא מספיקה, וכו’).
- מנסים להפיץ תולעים, סוסים טרויאנים, או Malware (נוזקות) מסוגים שונים ומשונים.
- אוספים מידע על המערכת שלנו ואופי השימוש בה. מידע שיוכל לשמש כיתרון עבור התוקף האינטליגנטי.
- חסימת הודעות משובשות / שלא עומדות בתקן הפרוטוקול (ניסיונות לאתגר את אמינות המערכת שלנו).
- חסימת הודעות שמקורן ב ip address של תוקף / לא בטוח. או שאנו מגדירים את הכתובות הללו בעצמנו על פי ניסיון עבר, או שאנו מנויים לשירות חיצוני שעוקב ומעדכן אותנו על כתובות כאלו.
- חסימת תעבורה שמיישמת התקפות נפוצות: למשל – לשלוח הודעה שבה כתובת השלוח היא הכתובת שלנו, כך שננסה לענות לעצמנו (וכך נעמיס את עצמו סתם).
- אחד שמחבר את ה DMZ לאינטרנט – וכולל חוקי הגנה גנריים ובסיסיים (כפי שציינתי למעלה)
- אחד שמחבר את ה DMZ לרשת הפנימית יותר, ומאפשר רק תעבורה מתוך השרתים שלנו – כאלו שסיננו את התעבורה בצורה מקיפה יותר ואישרו אותה.
אנו מעדיפים שה Traffic העוין מהאינטרנט קודם כל ייתקל בשרת מעודכן שכזה – ועליו וינסה עליו את “הטריקים שלו” ( – ולא יצליח) מאשר שייתקל בתוכנה שלנו שאותה יותר קשה להחזיק עמידה ומעודכנת.
ברשת הפנימית הראשונית – אנו מציבים את שרתי הווב שלנו. אלו שמתקשרים עם המשתמשים (דרך ווב או דרך APIs). התעבורה שמגיעה עליהם עברה כבר סינון של ה Firewall החיצוני וה Reverse Proxy (או WAF), וה Firewall שבכניסה לרשת מאפשר רק לתעבורה כזו להיכנס (ע”י חסימת כל כתובות ה IP מלבד אלו של ה Reverse Proxy / WAF).ברשת הפנימית נמצא באופן טיפוסי את הרכיבים הבאים:
מה הצעד הבא?
- ניהול חשבונות
- אכיפת גישה
- צמצום גישה (Least Privilege principle)
- Audit וניטור
- ניהול סיכונים (בהיבט ה SSH)
- זיהוי ואימות משתמשים.
אם אתם לא מגינים על כור אטומי – ייתכן ומספיק לקרוא תקציר (יש בד”כ כמה כאלו – מחברות אבטחה שונות).
![]() |
מקור: https://rofori.wordpress.com |
- Frameworks רגלוטוריים – אותם המדינה מחייבת על ארגונים מסויימים.
- למשל: HIPAA לארגונים המחזיקים מידע רפואי, SOX – לחברות בורסאיות בארה”ב, NERC CIP – לחברות החשמל בצפון אמריקה, וכו’
- Frameworks רגלוטוריים למחצה – אשר ארגון מקבל על עצמו כחלק מחוזה / הסדר מסחרי.
- הדוגמה הכי נפוצה: PCI-DSS של חברות האשראי. אם אתם מנהלים מידע על כרטיסי אשראי ואתם לא עומדים ברמת ההגנה של ה Framework / או בסטנדרטים שלו (למשל: לא יותר מ 1% מהעסקאות שאתם סולקים הם לא-לגיטימיות) – חברות האשראי עלולות להפסיק לעבוד אתכם. עבור ארגונים רבים – זהו עניין קיומי.
- יש Frameworks קצת פחות ידועים בעולם עריכת הדין, חשבנאות, וכו’.
- Voluntary Frameworks – שהארגון בוחר לאמץ ביוזמתו בגלל צרכים כאלו או אחרים.
- ISO/IEC 27001 – הוא ה Framework הנפוץ בתחום, ובד”כ אימוץ שלו כולל הסמכה ע”י גוף שהוסמך לכך (חברות ייעוץ שונות).
- הוא נחשב בסיסי, נדרש לעתים על מנת להיות ספק של ארגונים גדולים. דיי “מרובע” בתפיסות שלו, בעיקר מסביב לתהליכים.
- יש לו 2 גרסאות תקפות: 2005 – גרסה מאוד ממוקדת תהליכים (“Plan-Do-Check-Act”) והתיעוד שלהם (למי שמכיר ISO 9000), וגרסאת 2013 – שנחשבת יותר גמישה ומעשית.
- NIST SP800-53 (נקרא גם NIST 800 series) – הוא תקן אבטחה לו נדרשים גופים ממשלתיים בארה”ב (ועוד כמה מדינות שאמצו אותו כתקן) – אבל גם זמין לכל דורש.
- (ISC)2 Common Body of Knowledge (CBK) – זה בעצם ה Framework ה”פנימי” של הסמכות ה CISSP – ההסמכה ה”נחשבת” בעולם אבטחת המידע.
- (DHS Cyber Resilience Review (CRR – עוד Framework אמריקאי (יש רבים כאלו), הפעם של הארגון לבטחון המולדת (DHS).
- CIS Critical Security Controls (כרגע בגרסה 6.0) – תקן “פתוח”, שנוצר ע”י קבוצה של מומחי-אבטחה בלתי תלויים, וללא מטרות רווח, ש”מחוייבים לחופשיות האינטרנט”.
- לעתים מזוהה עם חברת SANS – שמסייעת להפיץ אותו.
- OWASP TOP 10 – זהו לא Framework, אלא ניתוח תלת-שנתי של 10 ההתקפות הנפוצות ביותר על שרתי ווב, מידע פרטי, מובייל, וכו’ (יש מספר גרסאות של הדו”ח). אם אתם רוצים להתחיל עם הבסיס של הבסיס – זה המקום.
- וכו’ וכו’
- ISO/IEC 27001 – הוא ה Framework הנפוץ בתחום, ובד”כ אימוץ שלו כולל הסמכה ע”י גוף שהוסמך לכך (חברות ייעוץ שונות).
אם אתם פשוט כותבים תוכנה ומנסים לאבטח אותה, ולא לאבטח ארגון שלם – כנראה ש OWASP זה השלב הראשון, ו ISC^2 / CIS / NIST – הם המקומות להמשיך וללמוד מהם /לקבל מהם מושג וכיוון.
סיכום
המידע הזה עשה לי הרבה סדר בראש כשנתקלתי בו.
במשך שנים הכרתי כל מיני סוגי התקפות (DDOS, ARP Poisoning, או CSRF) – אך לא היה לי כל סדר מה יותר חשוב ממה, ובאיזה אופן כדאי להתגונן.
אני מקווה שהפוסט הזה עשה מעט סדר. עולם אבטחת המידע (“סייבר”) הוא גדול ומורכב. יש תחומי מומחיות של Penetration Testing, איתור וניתוח Malware, מודיעין, Reverse Engineering, ועוד.
אני? אני ניסיתי רק לתת את הבסיס.
שיהיה בהצלחה!
—–
[א] לא קיימת מערכת מוגנת ב 100%, וגם אם תיאורטית היה ניתן ליצור אותה – היא לא הייתה משתלמת עסקית. מחירי האבטחה עולים בצורה מעריכית – ככל שאנו הולכים ומתקרבים ל”אבטחה מושלמת”.
מסודר ומובן קצר ולעניין P:
תודה!