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

המיתוס: שינוי אחד, בכל מקום בבת אחת

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

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

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

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

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

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

grep -rl auth-user-pass /etc/openvpn /etc/NetworkManager
grep -rl auth-user-pass ~/.config 2>/dev/null

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

איזה סוד אתם באמת מסובבים

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

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

החליפו את הערך השמור במקום שבו הוא חי

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

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

nmcli connection modify work vpn.secrets "password=NEW"
nmcli connection up work

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

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

הפעלות ואסימונים שורדים יותר מהסיסמה

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

ההנחיה למחזור החיים של אישורים ב-NIST SP 800-63B מחזיקה מאמתים והפעלות בקטגוריות נפרדות, ולכן החלפת סיסמה והתנתקות גלובלית הן פעולות שונות. התייחסו אליהן כאל שתי משימות עם שני קריטריוני השלמה. הראשונה מסתיימת כשהערך החדש עובד, והשנייה מסתיימת כשההפעלות הישנות נעלמו.

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

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