האם --key-password של OpenConnect הוא סיסמת חשבון ה-VPN שלכם?
האפשרות --key-password של OpenConnect פותחת מפתח פרטי מקומי. סיסמת החשבון מאמתת מול השער, ואחת לעולם אינה מחליפה את האחרת.
קראו את שם האפשרות ככתבו. היא נותנת שם למפתח, והבלבול מתחיל כאשר הקובץ שנפתח מזוהה בטעות עם החשבון שמאומת. הדביקו את סיסמת החשבון באפשרות הזו והלקוח ינסה לפתוח בה קובץ מפתח, מה שנכשל מסיבות שאין להן שום קשר לכניסה ל-VPN.
החלק המבלבל הוא שחיבור אחד יכול בהחלט להזדקק לשתי הסודות. אימות עם תעודת לקוח עשוי לדרוש מפתח מוצפן, ואותו שער עשוי עדיין לבצע החלפת אימות משתמש לאחר שהתעודה התקבלה. אף אחת מהסודות אינה מספקת את השלב האחר, וכשל באחד נראה מבחוץ דומה מאוד לכשל בשני.
שני סודות, שתי מטלות שונות
קראו את התפקידים כגישה לקובץ לעומת אישור כניסה לרשת. סיסמת המפתח מפענחת את המפתח הפרטי PEM הנקוב ב---sslkey כדי שניתן יהיה להציג את תעודת הלקוח של TLS. הפענוח הזה מתרחש מקומית, בתוך תהליך הלקוח, והמשפט הסודי עצמו לעולם אינו נוסע אל השער. מה שהשער רואה הוא התעודה וחתימה שנעשתה במפתח. המדריך של OpenConnect מציב את --key-password לצד --certificate ו---sslkey, ובגרסאות שיכולות להשתמש במפתח השמור ב-TPM נושאת אותה אפשרות במקום זאת את סיסמת מפתח השורש של האחסון.
סיסמת החשבון שונה במהותה. היא נכנסת להחלפת האימות: טופס של שם משתמש וסיסמה, אסימון, סבב SAML או שילוב כלשהו שהשער מכריז עליו. יש פריסות שאינן מבקשות אותה כלל כאשר התעודה היא הגורם היחיד, ואחרות מבקשות אותה גם לאחר תעודה, כי התעודה מוכיחה את המכשיר ואילו החשבון מוכיח את האדם.
ערבוב של השניים יוצר שגיאות מטעות. שער שדוחה כניסה מדווח בדרך כלל על כשל אימות, ואילו סיסמת מפתח שגויה נכשלת בדרך כלל מוקדם יותר, כאשר שכבת TLS אינה יכולה לקרוא את קובץ המפתח. אלה שלבים שונים עם תיקונים שונים, והשמות דומים מספיק כדי שאנשים יחליפו ביניהם ואז ירדפו אחרי היומן הלא נכון. שימו לב איזו בקשה הופיעה לפני שתשנו הגדרה כלשהי, כי הנוסח של הבקשה הוא האבחון הזול ביותר שיש לכם.
מתי באמת נדרשת סיסמת המפתח
לאפשרות יש משמעות רק כאשר יש מפתח מוצפן לפתוח. אם אתם מתחברים עם שם משתמש וסיסמה וללא תעודת לקוח, ל---key-password אין על מה לפעול, והוספתו לא משנה דבר. אם אתם מתחברים עם --certificate ו---sslkey, הפורמט של קובץ המפתח עצמו קובע אם תתבקש סיסמה בכלל.
שני הסודות בפקודה אחת נפוצים בסביבות מנוהלות: תעודת מכשיר במפתח מוצפן, בתוספת כניסה לכל משתמש. הרצף הנכון הוא לתת ללקוח לבקש את סיסמת המפתח מקומית, להשלים את לחיצת היד של התעודה, ואז לטפל בנפרד בבקשת החשבון של השער. הניסיון למלא מראש את שניהם באמצעות סקריפט אחד בשימוש חוזר הוא המקום שבו הבלבול בדרך כלל מתחיל.
אבחון שימושי הוא להסתכל מתי הכשל מתרחש. אם הלקוח עוצר לפני שמתחיל אימות רשת כלשהו, חשדו בקובץ המפתח, בפורמט שלו או בסיסמה. אם הפעלת TLS נוצרת והשער דוחה את המשתמש לאחר מכן, המפתח עשה את עבודתו והבעיה היא בהחלפת החשבון.
להרחיק את שני הסודות מהיסטוריית המעטפת
ניתן לקרוא ארגומנטים של שורת הפקודה על ידי משתמשים מקומיים אחרים דרך טבלת התהליכים, והם נלכדים לעתים קרובות בהיסטוריית המעטפת, בסקריפטים ובתמלולי תמיכה. OpenConnect יכול לקרוא את סיסמת החשבון מקלט התקני עם --passwd-on-stdin, וסיסמת המפתח יכולה להגיע מבקשה אינטראקטיבית או מסוכן במקום מארגומנט. אף מנגנון לא הופך את הסוד לבטוח בעצמו, אבל שניהם מרחיקים אותו מהמקומות החשופים ביותר.
מקבצים מגיע אותו טיפול. סקריפט שכותב סיסמה לקובץ זמני צריך ליצור אותו בהרשאות מגבילות, למחוק אותו ביציאה ולהימנע מתיקיות קריאות לכולם. סיסמה ששורדת את ההפעלה בתיקייה זמנית היא עותק ששכחתם ליצור. משתני סביבה גלויים לתהליכי ילד ולעתים קרובות מודפסים על ידי כלי ניפוי, ולכן אינם שדרוג חינם לעומת ארגומנטים.
פלט האבחון הוא הדליפה השקטה. יומני לקוח ברמת פירוט גבוהה יותר יכולים להראות גופי בקשות או ערכי אפשרויות, ותמלול מסוף מועתק קל להדביק בכרטיס, ולכן קראו את הפלט לפני שתשתפו אותו.
כפתור שולחן עבודה מת הוא תקלה אחרת
רשומת VPN בשולחן העבודה שמציגה סמל מסתובב ואז כלום היא בדרך כלל לא בעיית אימות בכלל. הכפתור שייך למנהל רשת, לאפלט של ספק או לתוסף שמפעיל את OpenConnect בשמכם, ורכיב חסר או פרופיל שאינו קריא יכולים לייצר בדיוק את הסימפטום הזה. גלו איזה תהליך הכפתור מפעיל וקראו את השגיאה שלו לפני שתיגעו באישורים.
מפתה להקל את אימות התעודה או להשבית בדיקה כאשר ממשק המשתמש מסרב להתחבר. זה הופך תקלת אינטגרציה של הלקוח לירידת אבטחה וכמעט אינו מתקן את בעיית ההפעלה. שמרו על אימות השרת שלם, ודאו שהפרופיל מצביע אל השער המיועד, ובדקו שהעוזר שהממשק מצפה לו אכן מותקן.
רשימת בדיקה קצרה מפרידה בין המקרים. כשל מקומי לפני שיוצא חבילה כלשהי מצביע על המפתח או על התקנת הלקוח. דחייה של השער לאחר הפעלת TLS מצביעה על החלפת החשבון. כפתור שלעולם אינו מפעיל את הלקוח מצביע על האינטגרציה עם שולחן העבודה. שלוש תקלות שונות, שאחת מהן היא סיסמה שעמדתם להדביק בתיבה הלא נכונה.