למנוע מ-NetworkManager להציג סיסמת VPN שמורה
לשאול בכל פעם, למסור למחזיק מפתחות או להחזיק קובץ שרק root יכול לקרוא. לכל בחירה חשיפה אחרת, ודגל הסיסמה צריך להתאים לה.
NetworkManager יכול להחזיק סיסמת VPN כדי שהחיבור יעלה בלי שאף אחד יקליד אותה, והוא יכול להציג את הערך הזה שוב דרך העורך או דרך nmcli --show-secrets. קיימים שלושה מודלי בעלות, והתנהגות התצוגה היא רק סימפטום של זה שבחרתם. בחרו תחילה את המודל ואז הגדירו את הדגל שמתאים לו, במקום להסתיר שדה עם מציין מקום שיבלבל את האדם הבא.
שלושה מודלי בעלות
המודל הראשון שואל בכל פעם. שום דבר לא נשמר, הסוד קיים רק למשך ההפעלה, וכל מי שמתחיל את החיבור צריך לדעת את הסיסמה. זו האפשרות הפחות נוחה והקלה ביותר להגנה.
השני מוסר את הסוד למחזיק מפתחות בבעלות המשתמש. הסוכן נפתח כשההפעלה מתחילה ומספק את הערך לפי דרישה, מה שמרחיק אותו מקובץ החיבור אבל קושר את החיבור להפעלה של אותו משתמש. מכאן נובעים שני תנאים: הסוכן חייב לרוץ, והוא חייב להיות פתוח.
השלישי מאחסן אישור מוגן לחיבור מערכת. הוא שורד אתחולים ועובד לפני שמישהו מתחבר, ובתמורה הערך יושב על הדיסק ומוגן בהרשאות קובץ ולא בהצפנה.
כל מודל סביר בהקשר הנכון. הטעות היא לערבב ביניהם, וכך מחשב נייד מגיע לסוד בשני מקומות ובלי תשובה ברורה מי מהם הקובע. כתבו איזה מודל פרופיל משתמש. שורה אחת במדריך הצוות חוסכת מהאדם הבא להמציא מקום רביעי לחפש בו.
לקרוא את המצב הנוכחי לפני שינוי
הסתכלו על הפרופיל ועל מצב הסוד בתור המשתמש שמנהל את החיבור. הפקודה השנייה היא זו שאומרת לכם אם הערך באמת קריא.
nmcli connection show "Office VPN"
nmcli --show-secrets connection show "Office VPN"
sudo stat -c '%U %a %n' /etc/NetworkManager/system-connections/*.nmconnection
קובץ מפתח בתיקייה הזו הוא בדרך כלל בבעלות root עם מצב 600. זה מרחיק משתמשים רגילים ולא מרחיק את root, וזה חשוב כשהמכונה משותפת או כשגיבוי רץ כ-root.
הרשאות קובץ הן גבול, לא הצפנה. כל מי שיכול לקרוא את הקובץ כ-root מקבל את הסיסמה בטקסט גלוי. זהו סחר מקובל בשרת ללא השגחה וגרוע בתחנת עבודה משותפת. כתיבה חד-פעמית מונעת ויכוח ארוך בשאלה אם הערך מוגן.
מה כל ערך דגל עושה
סוד ה-VPN נושא מאפיין flags, והערכים אינם מובנים מאליהם מן המספרים בלבד.
| Value | Meaning | Practical effect |
|---|---|---|
| 0 | No special flag | Secret is typically saved with the connection |
| 1 | Agent-owned | A keyring or secret agent supplies it |
| 2 | Not saved | Prompted at each activation |
| 4 | Not required | Connection proceeds without asking |
ההתנהגות בפועל תלויה גם בתוסף ובשאלה אם סוכן רץ, לכן התייחסו לטבלה כאל החוזה ולהתנהגות הנצפית כאל מה שאתם מאמתים. ערך שעובד על שולחן עבודה אחד יכול להתנהג אחרת בשרת ללא הפעלה. בפער הזה חיים רוב הפניות המבלבלות.
הגדירו את המאפיין במפורש במקום למחוק שורה ולקוות. דגל חסר אינו מדיניות, ועדכון החבילה הבא עלול למלא אותו במשהו שלא התכוונתם אליו.
להתאים את המודל למועד שבו החיבור מתחיל
אם החיבור מתחיל רק כשמשתמש מחובר, בעלות הסוכן מתאימה היטב ומרחיקה את הסוד מן הקובץ. אם הוא מתחיל בעת האתחול, לפני שקיימת הפעלה כלשהי, סוכן לא יכול לעזור.
זהו כל ההחלטה עבור רוב המכונות. זה גם מסביר סוג של דוחות מבלבלים שבהם החיבור עובד באופן אינטראקטיבי ונכשל לאחר אתחול. הדגל מעולם לא השתנה; ההקשר השתנה.
במקרה ללא השגחה, התשובה המעשית היא קובץ מוגבל בבעלות root או מקור אישורים מאושר. הרחיקו אותו מפרופיל החיבור אם הפרופיל הזה ייוצא אי פעם או יועתק למכונה אחרת.
אם הערך כבר היה גלוי, החליפו אותו
שינוי דגל מותיר את הסיסמה עצמה ללא נגיעה. ערך שהופיע בצילום מסך, בהיסטוריית ה-shell, בחבילה שנשלחה לתמיכה או בקובץ שאחרים יכלו לפתוח צריך להיחשב כגלוי.
החליפו אותו בשרת, ואז תקנו את הלקוח וסיימו כל הפעלה שאומתה עם הישן. מחיקת החיבור המקומי אינה מבטלת דבר בצד השני, וזה החלק שאנשים מפספסים.
אחר כך הפסיקו לשים את הסיסמה בשורת הפקודה. היא נוחתת בהיסטוריית ה-shell ויכולה להופיע ברשימת תהליכים; השתמשו בהנחיה האינטראקטיבית או בסוכן במקום.
לאמת בחיבור מחדש
חזרו על הפקודה שהציגה את הסוד ואשרו שהשדה כבר אינו מודפס. אחר כך התנתקו והתחברו מחדש, ואתחלו אם החיבור מתחיל אוטומטית, כי התקלה המעניינת מופיעה רק כשהקשר ההפעלה משתנה.
אם הסוד עדיין מופיע, פרופיל אחר או סוכן אחר מספק אותו. בדקו את החיבור הפעיל ואת מחזיק המפתחות במקום למחוק קבצים עד שהתסמין יזוז.