Pure-in-the-middle attack, Vast data and tools for VMware admins

Pure-in-the-middle attack

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

לפני שבוע וקצת, חברת Pure הכריזה על פתרון חדש שהוצג כפתרון פורץ דרך ומאפשר ביצוע הצפנת נתונים מקצה לקצה ללא נטרול טכנולוגית ביטול הכפילויות המובנית במערכות היצרן.  האמת היא די רחוקה מזה, למעשה מה שמוצע כאן בפתרון הוא שילוב של שני כלים, הראשון הצפנה ברמת Host והשני הצפנה ברמת מערך האחסון, הבעיה היא שאלו שני כלים נפרדים והתהליך כולל פתיחה של ההצפנה והצפנה מחדש בעת כתיבה ושוב בעת קריאה, מתבצעת כאן החלפה של ההצפנה ובאמצע שלב של clear text כלומר, מי שיטמיע את הפתרון, יטמיע לעצמו מתקפה של men in the middle קלאסית.

image credit to blocksandfiles.com

Vast storage to the rescue?

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

אגב רנן חלק שמעביר כאן את ההדרכה, מייסד ומנכ"ל החברה ולשעבר VP R&D של ExtremeIO מדליק את הקבוצה בסביבות דקה 6:05 עם ההערה שלא צריך יותר לגבות, סנפשוטים זה מספיק. אני כמובן חולק עליו אבל אני לא איש R&D כמוהו ומה שעובד במחקר לא תמיד עובד בשטח.

תראו למשל את מה שקרה בשבוע שעבר לענקית הפלדה Norsk Hydro, חברה שמעסיקה 35,000 איש שעברה לעבוד עם דפים וכלי כתיבה אחרי שמערך המחשוב שלה הושבת כליל אחרי מתקפת Ransom והיום מודיע ש"מרבית" השירותים שלה חזרו לתפקוד, רק חלק ואחרי שבוע!

נקודה נוספת ששווה התייחסות בקליפ זה ה shout out של כריס אוונס עלינו, אינפינידט, תודה כריס! (דקה 7:35)


Renen Hallak, CEO introducing Vast at #SFD18

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

שימו לב לנקודה אחת אחרת בהקשר שלהם, תראו את פער המחירים בין NL-SAS לבין SSD על פי המחירים שהם רואים, זה עוד יותר קיצוני ומובהק מהמספרים שאנחנו מציגים אפילו!

screenshot from the #SFD18 video above

כלים שימושיים בסביבות VMware

השנה התקבלתי שוב לתכנית vExpert לשמחתי הרבה והיה לי כיף לגלות שעדיין יש לי מה ללמוד גם ברמת הבסיס. באחד הפרקים האחרונים של Virtually speaking סקרו את עשרת הכלים הכי שימושיים לאדמינים של סביבות ESXi ואלו שלושה כלים שלא הכרתי ונראים לי מאד שימושיים:

ONYX – אוניקס הוא תוסף שמתרגם פעולות מהממשק הוובי של vCenter לקוד powercli. נראה לי כמו כלי סופר יעיל לגשר בין כלי GUI אינטואיטיבי ובין עולמות ה API בהם אנחנו אשכרה צריכים לדעת מה אנחנו רוצים לעשות. הפלט כמובן ניתן לעריכה והתאמה ולכן יכול לשמש אותנו כטמפלט מעכשיו הלאה

HCIBench – אם אתם זוכרים, כבר כתבתי כאן פעם על VDBench, הכלי המועדף עלינו לבדיקות ביצועים. מסתבר שיש פלינג נחמד שמבצע auto deployment לסביבה מבוססת VDBench להרצת בדיקות ביצועים של HCI, ממש מגניב!

שני הכלים האלו הם פלינגים, כלים ותוכנות שלא נתמכים רשמית על ידי VMware אבל כן מפותחים ונתמכים על ידי הקהילה ועובדי VMware, משהו כמו code.infinidat.com שלנו רק, מה לעשות, גדול עשיר ומרשים יותר.

הכלי השלישי הוא הכלי האהוב עלי ברשימה, או יותר נכון הכלי שהכי הרשים אותי.

As-Built-Report – יא וורדי איזה כלי, ממש התביישתי שלא הכרתי אותו עדיין, כלי קהילה, open source, שמאפשר לייצר דוחות מותאמים אישית על כלל סביבת ה IT הקיימת כולל vSphere, NSX, Cisco UCS, Nutanix, Pure, ממש שווה להעיף מבט על הכלי.

שויין, זה מה שיש לי להפעם,

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

אה, ואגב, אני מחפש חבר לצוות שלי לתפקיד Technical Advisor שדומה קצת לתפקידי TAM/TAC  בחברות אחרות או  תפקידי Success בסטארט-אפים מגניבים אז אם אתה מתאימים או מכירים מישהי\מישהו, תהיו חברים!

שלכם כמו תמיד,

ניר מליק

מודעות פרסומת

הקרמה באה בבעיטת סיבוב ואז היא הריצה Vdbench

ואוו איך הקרמה התפוצצה לי בפרצוף מהר הפעם.

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

נתחיל מהעובדה שבנתב"ג, אחרי שעמדתי 55 דקות בתור לביטחון ועוד 50 דקות בתור לצ'ק-אין למרות שעשיתי צ'ק-אין באתר של טורקיש ולכאורה אני אמור להגיע לאקספרס צ'ק-אין, הודיעו לי שאני לא יכול לעלות לטיסה לאיסטנבול. המטוס שאמור להגיע מאיסטנבול לקחת אותנו מאחר, הוא עדיין לא המריא מאיסטנבול ואין סיכוי שנספיק לעלות על טיסת ההמשך שלנו לדלהי. אחרי המתנה ארוכה ומעצבנת, סתם בעמידה מול דלפקי הצ'ק-אין, העבירו אותי לטיסת לופטהנזה לפרנקפורט. הקונקשן בפרנקפורט עוד יותר קצר ושדה התעופה עוד יותר גדול אז אחרי ריצה – נסיעה ברכבת הפנימית – ריצה – שיחה מתנשפת עם נציגת air india הספקתי לארגן לעצמי מקום ביציאת חירום לטיסת ההמשך הארוכה ואז הגיעה נקודת האור הכמעט יחידה בנסיעה הזו, הספקתי לאכול שתי נקניקיות ולשתות בירה אחת לפני שעליתי לטיסת ההמשך. אני מקצין קצת כי לא באמת הספקתי לשתות את הבירה אבל הרשו לי לעלות איתה לטיסה וככה זכיתי להיות מהאחרונים שעולים על 787 עמוס ולקבל מבטים של כל הנוסעים "הנה השיכור שבגללו אנחנו מתעכבים" למרות שלא היה עיכוב בכלל ועליתי בזמן תפסיקו להסתכל עלי don’t you judge me! אגב 787 אכן מטוס נחמד מאד וכשמטים את המשענת אחורה המושב מחליק טיפה קדימה, די קול.

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

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

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

real workloads

Vdbench הוא כלי של אורקל שמיועד לבדיקות עומסים ותקינות של מערכות אחסון. מדובר בכלי פשוט מבוסס Java ולכן ירוץ כמעט על כל מערכת הפעלה שתתקלו בה כולל הפצות Windows, UX, AIX, לינוקס, Mac ואפילו RaspBerry Pi (למרות שקשה לי לראות מה המטרה להריץ עומסים מכלי כל כך קטן, אולי אם מריצים כמה במקביל).

אם הכלי הוא כלי Java אז צריך Java . אם קיבלתם שרת ריק, כמוני, ואם השרת שלכם הוא שרת ממשפחת הפדורה, כל מה שצריך לעשות זה להריץ yum install java. צריך הרשאות root לבצע את זה אז אם אתם ל root  ואני מקווה שאתם לא עובדים עם root סתם אז תריצו sudo yum install java. השרת צריך גישה לאינטרנט כדי שהתהליך הזה יעבוד חלק, הוא יגש לrepository, יוריד לעצמו את כל מה שהוא צריך ואחרי כמה דקות ושני אישורים זה מה שאתם רוצים לראות:

Installed:

  java-1.8.0-openjdk.x86_64 1:1.8.0.141-1.b16.el7_3

Dependency Installed:

  copy-jdk-configs.noarch 0:1.2-1.el7                                  fontconfig.x86_64 0:

  fontpackages-filesystem.noarch 0:1.44-8.el7                          giflib.x86_64 0:4.1.

  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.141-1.b16.el7_3           javapackages-tools.n

  libICE.x86_64 0:1.0.9-2.el7                                          libSM.x86_64 0:1.2.2

  libXcomposite.x86_64 0:0.4.4-4.1.el7                                 libXext.x86_64 0:1.3

  libXfont.x86_64 0:1.5.1-2.el7                                        libXi.x86_64 0:1.7.4

  libXrender.x86_64 0:0.9.8-2.1.el7                                    libXtst.x86_64 0:1.2

  libfontenc.x86_64 0:1.1.2-3.el7                                      libxslt.x86_64 0:1.1

  lksctp-tools.x86_64 0:1.0.17-2.el7                                   python-javapackages.

  python-lxml.x86_64 0:3.2.1-4.el7                                     ttmkfdir.x86_64 0:3.

  tzdata-java.noarch 0:2017b-1.el7                                     xorg-x11-font-utils.

  xorg-x11-fonts-Type1.noarch 0:7.5-9.el7

Dependency Updated:

  nspr.x86_64 0:4.13.1-1.0.el7_3          nss.x86_64 0:3.28.4-1.2.el7_3          nss-sysini

  nss-tools.x86_64 0:3.28.4-1.2.el7_3     nss-util.x86_64 0:3.28.4-1.0.el7_3

Complete!

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

מה הכוונה משהו סביר לעבודה? החלק החשוב בבדיקות כאלו הוא לדמות משהו ריאלי, אין הרבה טעם להריץ 100% read IO של בלוקים בגודל 2K. למה? כי אין הרבה אפליקציות שככה נראה הIO Pattern שלהן אז למרות שנקבל מספרים די מגניבים, אלו מספרים חסרי משמעות יישומית ללקוח. היות וניסינו לעבוד מסודר ועשינו את עבודת ההכנה ידענו איך נראה ה workload של הלקוח לשרת בודד וככה בנינו את קובץ ההגדרות שלנו ואז אפשר לשחק עם הקובץ, להריץ אותו לדמות שרת בודד, להריץ אותו לדמות כמה שרתים, להוריד את ה performance peak, להריץ רק את performance peak וכן הלאה. הסיבה להוריד את ה performance peak או להריץ רק את השיא היא שלפעמים יש שונות מאד גדולה בין מה שהשרת עושה במהלך רוב הזמן ומה שהוא עושה בשיא הביצועים, במקרה שלנו למשל, בשיא הפעילות השרת מריץ בלוקים פי 2 יותר גדולים בקריאה ופי 10 יותר גדולים בכתיבה (batch job) ולכן כדאי לראות כמה וריאציות שונות של היחס בין אלו לאלו.

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

*

* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

*

 * Author: Henk Vandenbergh.

*

 *Example 1: Single run, one raw disk

 *SD:      Storage Definition

*WD:    Workload Definition

*RD:     Run Definition

*

sd=sd1,lun=/dev/rdsk/c0t0d0sx

wd=wd1,sd=sd1,xfersize=4096,rdpct=100

rd=run1,wd=wd1,iorate=100,elapsed=10,interval=1

 *Single raw disk, 100% random read of 4k records at i/o rate of 100 for 10 seconds

SD מגדיר את הדיסקים אליהם אנחנו רוצים לכתוב, במקרה הזה דיסק בודד שנמצא בנתיב /dev/rdsk/c0t0d0sx

WD מגדיר מה מרצים כלומר איך נראה ה workload, בדוגמה הזו מדובר על בלוקים בגודל 4K ואגב, אפשר פשוט לכתוב 4K במקום 4096 ומדובר כאן על 100% קריאה – rdpct=100 – read percent 100

RD מגדיר כמה מריצים וכאן מוגדר להריץ iorate=100 כלומר 100 פעמים מה שמוגדר ב WD.

לבדיקות ביצועים אמינות ויציבות כדאי להריץ לפני כן workload בסיסי של fillup שמטרתו די ברורה מהשם שלו, למלא את הדיסקים לפחות באופן חלקי. למה? כי כולנו יודעים שמערכת ריקה לא מתנהגת כמו מערכת מלאה או מלאה חלקית, אם היא ריקה אז אין תחרות על משאבים, תהליכי ה metadata פשוטים יותר, אין בעיות למצוא מקום פנוי לבצע תהליכי כתיבה, כל תהליכי הקריאה פשוטים, אין בשום מקום תהליכי scrub או תהליכי garbage collection, הכל נקי וחלק ופנוי ולא אמין.

ההרצה בפועל היא פקודה מאד פשוטה

./vdbench -f configfilename

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

וזו התוצאה הצפויה, הכלי מדווח שהוא יוצר את קובץ הפלט, שההתקנים מחוברים ושהוא מתחיל לעבוד על קובץ הקונפיגורציה שבחרתם. הפלט למטה מראה לנו בערך 6000 IOps של כתיבה בלבד בבלוקים של 256K, זה שלב ה fillup ובבלוקים כאלו גדולים גם זמן התגובה (latency) בהתאם

 

13:30:44.188 Created output directory '/home/vdbench50406/ outputfilename

13:30:44.202 input argument scanned: '- configfilename

13:30:44.202 input argument scanned: '- outputfilename

13:30:44.341 Starting slave: /home/vdbench50406/vdbench SlaveJvm -m localhost

13:30:44.865 All slaves are now connected

13:30:46.001 Starting RD=fillup; I/O rate: 15000; elapsed=30000; For loops: threads=32

Aug 02, 2017  interval        i/o   MB/sec   bytes   read     resp     read    write     re

                             rate  1024**2     i/o    pct     time     resp     resp      m

13:31:06.042         1    6073.95  1518.49  262144   0.00   51.710    0.000   51.710  107.9

13:31:26.049         2    6148.60  1537.15  262144   0.00   51.924    0.000   51.924  103.0

13:31:46.045         3    6184.25  1546.06  262144   0.00   51.756    0.000   51.756  106.2

 

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

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

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

20170801_191543

זהו, יצא די ארוך הפעם, מקווה שיועיל למישהו.

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

20170803_082600

אל תהססו לספר לי מה דעתכם.

שלכם תמיד,

ניר מליק