הוירוס, עבודה מרחוק – והלאפטופ

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

מהרגע שעניין הוירוס קיבל דחיפות יותר ויותר גדולה בארץ, חברות עטו על יבואני מחשבים לרכוש לאפטופים לעובדים, בין אם מדובר ברכישה קטנה של בודדים או מאות. כל לאפטופ קיבל טיפול פירמוט והתקנת Image עם כל האפליקציות של החברה, חיבור VPN, חיבור לשיחות וידאו ועוד מספר דברים – וכך כיום רוב החברות עובדות: מרחוק, עם VPN, עם Zoom/teams/WebEx/Skype לצורך פגישות ושיחות וכו'.

וכאן גם מתחילה הבעיה הגדולה, בכל מה שקשור לאבטחת מידע: ככל שיש יותר לאפטופים מבוססי Windows/Mac שמתחברים לרשת הארגונית דרך ה-VPN, הסיכוי לפריצה – גדול עד גדול מאוד. אף קבוצה שפורצת לא מחפשת לפרוץ ישירות את התשתית הארגונית בכך שינסו לתקוף את ה-Firewall/IPS/IDS, הכל עושים "מסביב", דרך קבלני משנה, דרך לאפטופים של עובדים שלא מבינים כלום באבטחת מידע. כל מה שצריך בסופו של יום זה פשוט לפרוץ ללאפטופ שנמצא בבית במגוון שיטות, וברגע שאותו לאפטופ יהיה מחובר דרך ה-VPN, הפורץ יוכל להריץ ברקע מגוון סקריפטים כדי לסרוק/לגנוב מידע ועוד. לא מאמינים? תכירו את חברת Visser, קבלן משנה של NASA, SpaceX, Tesla ועוד מספר חברות – דרכה פרצו לאותן חברות וגנבו מידע ומאוחר יותר פרסמו אותו.

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

האם ניתן לעשות משהו בנידון? כן.

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

  1. ממבוזר – למרוכז. אחד הדברים הראשונים שצריך לעשות, הוא, מה לעשות, לעבור לפתרון VDI. עם תשתית VDI (ואני מדבר על תשתית VDI שרצה על מכונות VM, פחות על פתרונות של VDI לאפליקציות ספציפיות) אפשר להנות ממספר יתרונות:
    1. אין צורך בדרייברים שמגיעים מיצרני לאפטופים ומחשבים. בפתרון VDI מבוסס VMware לדוגמא, יש צורך בהתקנה של ה-VMware Tools וזה כבר יתקין את הדרייברים הנחוצים ותו לא. כך נחסוך בעיות של חורי אבטחה בדרייברים.
    2. הרבה יותר קל לנהל צי של מכונות וירטואליות מבחינת הקמה/כיבוי/הגדרות וכל ה-Life Cycle בהשווה לטיפול במכונה פיזית.
    3. אין צורך להתקין ערימת אפליקציות על Image. יש כלים כמו ThinApp או Enigma Virtual Box (לא להתבלבל בין זה לבין וירטואליזציית VirtualBox – אלו 2 דברים שונים) שנותנים אפשרות להריץ אפליקציות שהמשתמש צריך ללא צורך בהתקנה מראש, כך שהמשתמש יכול לקבל Image עם המינימום שבמינימום ולינקים לדברים נוספים בהתאם להרשאות ולצורך. כך אפשר להוריד את וקטור התקיפה – אין צורך בקורא PDF ישן או אפליקציות אחרות שהמשתמש לא צריך אותם.
  2. מעבר לשימוש ב-Thin Client. כן, כל לאפטופ יכול להתחבר ל-VPN בקלות, אבל אותו לאפטופ הוא מטרה מעולה וקלה מאוד לפריצה. לעומת זאת, מכשירי Thin Client טובים (Dell, HPE, Lenovo – כולם מוכרים כאלו) הם קשים יותר לפריצה הואיל והמערכת הפעלה הלינוקסאית שבתוכם מגיעה מראש כ-Read Only, וקשה יותר לפרוץ אליה מאשר ללאפטופ או לדסקטופ. אפשר לקחת את זה צעד קדימה ופשוט להשתמש במערכות כמו Stratodesk עם דיסק און קי שנחסום אותו לכתיבה – שממנו נבצע Boot, את זה הרבה יותר קשה לפרוץ.
  3. מניעת שימוש במשאבי אחסון מקומיים. מניעת אפשרות גישה לכונן C בלאפטופ המקומי יכולה לעזור בכך שגם לפורץ לא תהיה אפשרות העלאת סקריפטים וקבצים אחרים למכונת VM שהמשתמש יתחבר אליה. אפשר תמיד להקים File Server בתשתית המקומית ולמפות לכל משתמש כמה עשרות ג'יגהבייט כדיסק רשת לאחסון דברים.

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

  • אין צורך ברכישת אחסון סופר-יקר AFA עבור VDI. אפשר להשתמש עם דיסקים מקומיים ו-vSAN. הכי חשוב שהדיסק SSD המשמש לצרכי Caching יהיה SSD טוב, כמו Optane, הואיל ורוב העבודה של VDI עולה מה-Cache וכמעט שלא מהדיסקים האחרים.
  • אין צורך לרכוש כרטיסי GPU יקרים כולל מנוי חודשי ל-nVidia, כל עוד המשתמשים מבצעים עבודות בסיסיות ולא עבודות וידאו/תלת-מימד או עבודות הכרחיות.
  • מומלץ לרכוש מעבדים עם Cache גדול (מכיוון שהמעבד, בהיעדר GPU, מרנדר את התצוגה, ה-L3 Cache שלו חשוב, כמה שיותר גדול, יותר טוב). כיום מעבדי AMD EPYC כמו 7F72, 7F52, 7F32 הם מעבדים מעולים לכך (שימו לב, אלו מעבדים שהוכרזו רק שלשום, נכון לכתיבת שורות אלו, והם יוצעו למכירה ללקוחות בתחילת החודש הקרוב).
  • מומלץ לשנות/לשדרג/להחליף לרשיון "כרוך" (Bundle) ולא לרכוש עצמאית תוספת רשיון. דברו עם נציג שיווק פתרון הוירוטואליזציה שלכם.
  • אין צורך לרכוש במאות דולרים Thin Client. אפשר את הפתרון של Stratodesk (לינק למעלה) יחד עם Raspberry Pi 3/4 ובכך לחסוך יותר מ-50% מהמחיר פר חתיכה.

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

קצת על Guacamole, כניסה מורשית ואבטחה

כמעט בכל עסק/חברה/מוסד יש לא מעט מקרים בהם יש צורך בעזרה מבחוץ כשיש תקלה טכנית בשרת כלשהו או בתוכנה כלשהי. באותם מקרים בדרך כלל יצרו קשר עם אותו יועץ/אינטגרטור/טכנאי חיצוני, יחברו אותו דרך תוכנה כמו Team Viewer/AnyDesk או תוכנות אחרות ואז אותו סיוע מבחוץ בעצם "משתלט" על התחנה המקומית ועושה את מה שהוא צריך לעשות כדי לטפל בבעיה/תקלה.

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

שיטה נוספת שחלק משתמשתים בה – היא הגדרת משתמש וסיסמא ל-VPN של החברה, וכך מי שמסייע מבחוץ יתחבר עם הרשאות ה-VPN לרשת הפנימית ויטפל בתקלה. זה פתרון לא רע עם חסרון אחד גדול מבחינת אבטחת מידע: קשה לדעת מה המסייע מבחוץ עושה/יעשה ברשת. אפשר לבדוק בכלי אבטחת מידע (חומת אש וכו') איזו מכונה התחברה לאיזו מכונה אחרת ואפילו שם משתמש, אבל אי אפשר לדעת מה בדיוק נעשה. חוץ מזה, הרעיון שמישהו מבחוץ יהיה בתוך הרשת הפנימית של החברה יכול לגרום לאי נוחות אצל כמה אנשים הן במחלקת אבטחת מידע והן במחלקת ה-IT, גם אם זה מישהו מוכר לחברה.

הנה שיטה שאני משתמש בה ואולי היא יכולה להיות ישימה גם אצלכם.

קצת רקע: עבדכם הנאמן נותן שרותי יעוץ ואינטגרציה למגוון פלטפורמות. חלקן פופולריות ומוכרות (כמו vSphere) וחלקן קצת פחות – כמו oVirt, OpenShift, OpenStack, Ceph, Gluster, Kubernetes (ויש עוד לא מעט תוכנות) וכמובן מערכות לינוקס שונות. כל המערכות הללו רצות נון סטופ אצלי ב-LAB מסיבות שונות:

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

וכאן אולי אפתיע אתכם: אני לא משתמש ב-VPN או תוכנות שליטה מרחוק מבחוץ. זה לא בעיה של רשיונות או בעיה של התקנת VPN.

אני משתמש ב-Guacamole.

למי שלא מכיר, Guacamole היא אפליקציית Java שרצה תחת Appplication Server כמו Tomcat או Wildfly (או JBOSS) המאפשרת חיבור מכשירים, תחנות ושרתים לממשק Web מאוחד, הגדרת משתמשים והרשאות וכניסה דרך הדפדפן לתוך כל חיבור. יש כמובן מספר תוכנות כאלו שנמצאות בכל חברה המאפשרות להתחבר ב-SSH/Telnet/RDP/VNC, רק שאת Guacamole לא צריך להתקין על כל מכונה. מספיק שיש דפדפן סטנדרטי ומודרני.

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

  • הראשון הוא עניין TOTP (כלומר Time-based One-time Password) – כך שמי שמתחבר מבחוץ יצטרך להשתמש ב-MFA בכל פעם שהוא מתחבר (בנוסף לשם משתמש וסיסמא)
  • הגישה שהוא מקבל – היא למכשיר/מכונה אחת או יותר שהוא צריך. אם הוא ינסה להיכנס למכונות אחרות – אני יוכל לראות זאת.
  • המכונה שהוא ניגש אליה – שמורה ב-snapshot ב-ZFS כך שאם הוא יגרום נזק, אפשר תוך שניות ספורות לחזור אחורה.
  • וכמובן הכל מוקלט – ל-Guacamole יש אפשרות "הקלטת session" שמקליט כל מקש שהמשתמש מבחוץ מקיש ומה הוא רואה על המסך, כך שאני יכול לראות בזמן אמת מה הוא מקיש ומאוחר יותר אני יכול להמיר את ההקלטה לקובץ MP4 כדי לראות בבירור מה בוצע במכונה.
  • מכונות קריטיות ב-LAB – אינן זמינות דרך ה-session.
  • הגישה מבחוץ זמינה רק לאחר שהפעלתי זאת. כברירת מחדל, אין גישה מבחוץ לשום דבר.

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

על מנת לממש את הדברים ב-LAN של חברה, מבצעים את הצעדים הבאים:

    • מקימים מכונת VM עם לינוקס ועליה מתקינים את Guacamole ומוסיפים את תוסף ה-TOTP (לחובבי אובונטו, יש בלינק הזה סקריפט מוכן להתקנת האפליקציה באופן אוטומטי)
    • מגדירים משתמשים (אפשר לחבר את זה ל-Active Directory לפי ההוראות בקובץ PDF זה. זה קצת מורכב) ומגדירים סשנים למכונות או ציוד שיש צורך בגישה אליהם. שימו לב – כל סשן למעט עם חיבור VNC מתנתק ברגע שסוגרים את ה-TAB, כך שאם רוצים להשאיר דברים רצים בלינוקס לדוגמא, אפשר להשתמש ב-nohup או להשתמש ב-screen או TMUX.
    • מגדירים אלו סשנים יהיו זמינים לאלו משתמשים
    • על מנת שסשן יוקלט, בכל הגדרת חיבור יש בסוף הדף הגדרות להקלטה. בד"כ יספיק path ושם כלשהו כדי להפעיל את ההקלטה (ההקלטה תישמר בתוך שרת ה-Guacamole, לא במכונה שמתחברים אליה דרך ה-Guacamole). חשוב לזכור, ההקלטה היא בפורמט דחוס שיש צורך בהמרה, ואותו כדאי לשמור בסטורג' או ב-NAS כך שמומלץ לחבר את שרת ה-Guacamole לאיזה NFS share על מנת לשמור הקלטות לעתיד לצרכי אבטחת מידע. כל הקלטה כזו ניתן מאוחר יותר להמיר לקובץ MP4 על מנת שלא לתפוס יותר מדי מקום באחסון.
    • ב-Firewall מגדירים Static NAT בין IP חיצוני ל-IP פנימי שמריץ את ה-Guacamole. את החוק הזה מכבים ומפעילים לפי צורך. (למתוחכמים – אפשר לכתוב סקריפט פשוט שמשתמש ב-CURL ומתחבר ל-API של ה-Firewall על מנת להפעיל/לכבות את החוק הספציפי).

לסיכום: Guacamole היא עוד אופציה לאפשר כניסה מרחוק לטיפול בבעיה מסויימת. היא לא השיטה שהכי תתאים לכל מצב (במיוחד אם לדוגמא המחשב פתוח ורואים את התקלה על המסך – שם Team Viewer מתאים מכיוון שעם Guacamole יש צורך בסשן חיבור חדש כל פעם למעט VNC – אבל אז צריך להתקין על כל מכונה VNC), אבל זו עוד אפשרות שנותנת משהו חשוב מבחינת אבטחת מידע: הקלטה של כל הפעילות שנעשית מרחוק.