במסוף מופיעה הודעה על systemd-tty-ask-password-agent, והמנהרה אינה פעילה. הקריאה המפתה היא שה-VPN דחה סיסמה ומשהו כעת ממתין לתיקון. מדויק יותר לומר ששירות ביקש מ-systemd קלט אינטראקטיבי, ושאל הבקשה טרם נענתה. איזה שירות שאל, ואיזה סוד הוא רוצה, הן שתי שאלות שאפשר ליישב לפני שמקלידים משהו.

שני תנאים קובעים מי אמור להשיב

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

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

זהו הכלל כולו, וכדאי לומר אותו לפני הפקודות. כל מה שלמטה נובע ממנו.

הציגו את הבקשה לפני שמקלידים משהו

הסוכן יכול לפרט מה ממתין בלי להשיב דבר. sudo systemd-tty-ask-password-agent --list מדפיס את הבקשות הפתוחות, ופלט זה הוא הראיה שנדרשת כדי לקשר בקשה ליחידה. קראו אותו לפני מסירת פרטי זיהוי, והרחיקו תיאורי בקשות מכל הדבקת אבחון פומבית.

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

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

איזה סוד המופע באמת צריך?

auth-user-pass נוגע לאימות חשבון מול שירות ה-VPN, ובלי קובץ פרטי זיהוי ההתנהגות המתועדת היא לשאול בקונסולה. askpass לעומת זאת משיג את מילת המעבר שמשחררת חומר מפתח מוגן, והוא עושה זאת לפני שהתהליך עובר לרקע. אלה סודות שונים עם תוחלת חיים שונה.

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

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

מה --query עושה ומה --list אינו עושה

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

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

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

החליטו, ואז תעדו את הבחירה

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

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

מאמרים קשורים