מילת צופן של מפתח SSH מגנה על הקובץ, לא על המסלול
מילת הצופן מצפינה את קובץ המפתח הפרטי; היא אינה מבטלת את הזהות ואינה מאבטחת את המסלול. אחסון נפרד, משך חיי הסוכן ושימוש ללא השגחה.
כונן גיבוי ממחשב נייד ישן עדיין מכיל מפתח SSH פרטי, ומישהו שואל אם ה-VPN מגן עליו. הוא לא מגן, ומעולם לא הגן. ה-VPN מגן על נתיב בין שתי רשתות; מילת הצופן מגנה על הקובץ; הסוכן מגן על הפעלה שרצה. שלושה מנגנונים שונים, שלושה אופני כשל שונים, והעתק גנוב מתעניין רק בשני הראשונים.
מילת הצופן שייכת לקובץ
מילת צופן של מפתח SSH מצפינה את חומר המפתח הפרטי במנוחה. היא אינה סיסמת החשבון שנשלחת לשרת, ואינה פרטי ההזדהות שמשמשים להצטרפות ל-VPN. ערבוב ביניהם מוביל לשינויים שאינם מטפלים בחשיפה.
מדריך ssh-keygen של OpenSSH מכסה טיפול במילות צופן, כולל המתג -p שמגדיר מילת צופן חדשה למפתח שכבר קיים.
עבור מפתח קיים צורת הפקודה פשוטה, והיא כותבת מחדש את הקובץ:
ssh-keygen -p -f ~/.ssh/id_ed25519
השתמשו בתהליך התחזוקה והשחזור המאושר של בעל המפתח, כי מדובר בכתיבה, לא בבדיקה. אל תפרסמו את הקובץ הפרטי ואל תשימו מילת צופן אמיתית על שורת פקודה משותפת. שינוי מילת צופן אינו מצפין מחדש העתק שנלקח קודם. רשמו את מיקום ההעתק הישן בכרטיס כדי שהבעלים יוכל להחליט אם להשמידו.
העתק שורד את המחשב הנייד ואת המנהרה
לאחר שקובץ מפתח הועתק, חיבור ה-VPN הפעיל של המחשב הנייד כבר לא אומר עליו דבר. מה שקובע הוא עד כמה הקובץ עצמו מוגן, ואילו שרתים עדיין סומכים על המפתח הציבורי המתאים.
שינוי מילת הצופן בקובץ הנוכחי אינו נוגע בהעתק, ואינו מסיר את אותו מפתח ציבורי מ-authorized_keys בשרת. ביטול והצפנה מחדש הם פעולות נפרדות.
לכן התייחסו למפתח פרטי שדלף כאירוע זהות, לא כאירוע רשת. הסירו או החליפו את המפתח שהתקבל דרך השרתים ותהליך הרישום שבעליהם. עצירת ה-VPN מגבילה מסלול אחד ברגע אחד; היא אינה ביטול.
שחרור הנעילה מעביר את הסוד אל סוכן
סוכן מחזיק זהויות מפוענחות לאימות מאוחר יותר, כדי שהמשתמש לא יקליד את מילת הצופן מחדש בכל חיבור. זו תכונת נוחות עם גבול אבטחה משלה.
ssh-agent יכול להגביל כמה זמן זהות נשארת טעונה באמצעות האפשרות -t, והגדרה לכל זהות יכולה לעקוף את הגבול הזה. בחרו את המדיניות לסוכן שאתם באמת מריצים במקום להניח שניתוק VPN שוכח כל מפתח טעון.
תהליך שנפרץ לאחר שחרור המפתח הוא בעיה אחרת מקובץ מוצפן גנוב. העברת הסוכן למארח אחר מאצילה יכולת אימות בלי להעתיק את קובץ המפתח, לכן הפעילו אותה רק לצורך מאושר.
פרטו מה הסוכן מחזיק כעת לפני ואחרי שינוי:
ssh-add -l
משימות ללא השגחה זקוקות לתוכנית משלהן
משימה מתוזמנת אינה יכולה לענות להנחיה. היא זקוקה להסדר מאושר של פרטי הזדהות למכונה, והחזקת סוד השחרור באותה תיקייה כמו המפתח, קריא לאותו חשבון, אינה יוצרת גבול שני.
עבדו עם בעל השירות על מסירת סודות נתמכת או הפעלה מבוססת חומרה, וכסו חידוש, כשל והתאוששות. הרצון שאדם יהיה ליד המקלדת משנה איך נראה כשל לעומת מארח שעולה בלי שאף אחד משגיח.
שמרו גם על בדיקת זהות המארח בשרת ועל מגבלות החשבון שלו. מסלול VPN נותן נתיב פרטי; הוא אינו מוכיח שכל מאזין SSH שאתם מגיעים אליו הוא המארח שהתכוונתם אליו. תעדו את המאזין ואת טביעת האצבע של מפתח המארח באותו מלאי כמו המפתח עצמו.
אמתו את הגבולות בנפרד
בחנו כל גבול בשאלה שלו. האם הקובץ נפתח בלי מילת הצופן? האם הסוכן עדיין מחזיק בזהות לאחר ניתוק? האם השרת עדיין מקבל את המפתח הציבורי?
שתי פקודות עונות לראשונה ולשלישית:
ssh-keygen -y -f ~/.ssh/id_ed25519
ssh -v [email protected]
תעדו הגנת קובץ, שימוש מותר במפתח והסרה בצד השרת כשלושה סעיפים נפרדים. מנהרה, מילת צופן וסוכן כל אחד שומר על חלק אחר של הקשר, ורק אחד מהם עוסק ברשת.