למה שירות VPN שעולה באתחול לא יכול לקרוא את מחזיק המפתחות שלך
ל-VPN בזמן אתחול אין סוכן סודות פרום לשאול ממנו. קרא את דגלי הסוד של החיבור לפני שאתה מאפס סיסמה שהשרת מעולם לא דחה.
חיבור שעובד אחרי ההתחברות ונכשל לפניה בדרך כלל אומר שניסיון האתחול לא הצליח להשיג סוד, ולא שהשרת דחה אחד. האישור קיים; ההקשר שמבקש אותו אינו קיים. ההבחנה הבודדת הזו חוסכת איפוס סיסמה מיותר.
עקוב אחרי הבקשה: משהו מפעיל את החיבור לפני שקיימת הפעלת שולחן עבודה, ומאגר הסודות שבדרך כלל עונה עדיין לא נפתח. שני ההקשרים חלוקים על מי מחזיק בסוד, והפרופיל רושם מי מהם אמור לספק אותו.
מה נתיב האתחול באמת מבקש
באתחול, NetworkManager עולה כשירות מערכת בלי הפעלת משתמש, בלי D-Bus של הפעלה ובלי מחזיק מפתחות פרום. עדיין אפשר להעלות פרופיל חיבור, אבל רק עם סודות שהשירות יכול להגיע אליהם בעצמו. כל מה שבבעלות סוכן סודות ממתין עד שאדם מתחבר והסוכן מופיע. השירות עושה בדיוק מה שהתצורה שלו אומרת; הפרופיל הוא הדבר שצריך להשתנות.
הכשל כתוב בתוך החיבור ולא מוסתר במחזיק מפתחות.
לקרוא את דגלי הסוד של חיבור
שאל את החיבור מה הוא מצפה, לא מה שולחן העבודה זוכר. עמודת הדגלים עונה על השאלה ישירות, והיא שורדת אתחולים בקובץ הפרופיל שעל הדיסק.
התחל ברשימת הפרופילים, ואז אשר איזה חיבור מוגדר לעלות מעצמו. אחר כך שפוך חיבור אחד וקרא את דגלי הסיסמה:
nmcli -f NAME,UUID,TYPE,AUTOCONNECT connection show nmcli connection show "Work VPN" | grep -i -E "password|secret|key" journalctl -b -u NetworkManager --grep "secret"
הפקודה הראשונה מאשרת אילו פרופילים קיימים ואם אחד מוגדר לחיבור אוטומטי, וזו הדרך שבה ניסיון ללא השגחה מתחיל מלכתחילה. השנייה חושפת את ערכי הדגלים, והשלישית מציגה את השירות מתלונן שאף סוכן לא ענה עבור סוד נתון. שורת יומן שמכנה סוד כשייך לסוכן היא כל האבחנה במשפט אחד.
| Flag value | Where the secret lives | Behaviour before login |
|---|---|---|
| 0 | Stored in the connection profile | Available to the system service |
| 1 | Owned by a secret agent | Blocks until the agent is unlocked |
| 2 | Never stored | Prompts on every activation |
| 4 | Not required | Never requested at all |
למה העברת החיבור לתחום המערכת משנה את התשובה
חיבור בבעלות משתמש מופעל תחת הסוכן של אותו משתמש, ולכן הוא עובד בצורה מושלמת ברגע ששולחן העבודה עולה. העברתו לתחום המערכת מסירה את הסוכן מהנתיב, כך שאותו פרופיל מתנהג אחרת בלי שינוי של שורה אחת בתצורת ה-VPN.
ההעברה הזו היא עיצוב לגיטימי, והיא נושאת דרישה: הסוד חייב להיות נגיש לשירות המערכת. אחסונו בפרופיל, אספקתו דרך אישור בתחום המערכת או קבלת בקשה אינטראקטיבית ברגע הנכון הם כולם תשובות תקפות. להשאיר את דגל 1 ולקוות זה לא.
מפתח פרטי עם מילת צופן משלו מוסיף שכבה שנייה. אפילו סיסמת חשבון שמורה לא תפתח מפתח שרוצה מילת צופן, לכן ודא איזה סוד השלב שנכשל באמת מבקש לפני שאתה משנה משהו.
מה לא לעשות, ומה לעשות במקום
הפיכת כל קובץ אישורים לקריא לכולם, או כיבוי האימות כדי שלא תידרש בקשה, מחליפה אי-נוחות באתחול בחשיפה קבועה. שניהם גם מסתירים את התלות במקום לפתור אותה, ועדכון התמונה הבא מחזיר את אותו כשל.
בשלב הזה, פעלו לפי המנגנון שההפצה שלך מתעדת להפעלה ללא השגחה, ואז אשר שדגלי הפרופיל תואמים לו. בדוק את התוצאה מאתחול נקי ולא ממעטפת שכבר יש לה סוכן. רשום את בעל החיבור, את מקור הסוד ואת השלב שחייב לעבוד, כדי ששינוי מאוחר בהפעלה האוטומטית לא יוכל להחזיר בשקט תלות בכך שמישהו יפתח קודם שולחן עבודה. תיעוד הוא ההבדל בין שירות מתוקן לבין אחד שנשבר שוב ברבעון הבא.
בדוק מאתחול נקי מבוקר ולא מניסיון חוזר ידני אחרי התחברות. הניסיון החוזר מצליח מהסיבה שהניסיון באתחול נכשל, וזו בדיוק הראיה שבדיקה מהירה הורסת.