מפתח ה-VPN שלכם קריא לכולם: מה לתקן
מפתח פרטי אמור להיות קריא רק לשירות שמשתמש בו ולאף אחד אחר. תקנו את ההרשאה, מצאו את העתקים, והחליפו את המפתח אם הקובץ נחשף.
הסימן הראשון הוא בדרך כלל אזהרה ולא תקלה. לקוח מסרב לטעון מפתח מפני שהקובץ קריא לקבוצה או לכולם, או שבדיקת אבטחה מוצאת client.key בהרשאה 644 בתיקיית פרופיל שמכילה גם חבילות מיוצאות. שום דבר עוד לא נשבר, וזו בדיוק הסיבה שהאזהרה נדחית. המפתח עובד, המנהרה עולה, והקובץ קריא לכל חשבון במכונה.
התסמין הוא אזהרת הרשאות, לא הפסקה
במערכת דמוית Unix מפתח פרטי אמור להיות קריא רק לחשבון שמפעיל את השירות. הרשאה 600 עם הבעלים הנכון היא הסידור הרגיל. הרשאה 644 משמעה שכל משתמש מקומי יכול להעתיק את המפתח, ובמארח בנייה משותף זה קהל אמיתי.
לקוחות שבודקים זאת עושים לכם טובה. אלה שלא בודקים אינם הוכחה שהקובץ בטוח, וחיבור מוצלח לא אומר דבר על מי עוד יכול לקרוא את החומר שאיפשר אותו. התייחסו לאזהרה כממצא כולו. היא מדויקת, והיא הגיעה לפני שמישהו העתיק את הקובץ.
התאימו את ההרשאה לזהות השירות
גישה לבעלים בלבד מתאימה למפתח שהבעלים הזה משתמש בו. שירות עם קבוצה משותפת במכוון עשוי להזדקק לסידור מבוקר אחר, כגון קריאת קבוצה במפתח בבעלות חשבון שירות. קביעת הרשאה מספרית אחת לכל הקבצים באופן עיוור שוברת לקוחות נתמכים, וגם chmod -R 777 אינו פתרון לשום דבר.
בדקו את הבעלים ואת חשבון השירות לפני שתשנו משהו. לתעודות CA ציבוריות ולמפתחות זהות פרטיים יש דרישות סודיות שונות גם כשהם נמצאים באותה תיקייה, ולכן הרשאה רקורסיבית על התיקייה כולה מתייחסת לשניהם כאל אותו אובייקט.
ls -l /etc/openvpn/client/
stat -c '%U %G %a %n' /etc/openvpn/client/*.key
id openvpn
בפלטפורמות אחרות השתמשו במאגר המפתחות או במודל בקרת הגישה המתועד במקום לתרגם הרשאות Unix לניחוש. שם קובץ שמסתיים ב-private הוא תווית, לא מנגנון אכיפה.
מצאו את העתקים שההרשאה לא מכסה
עורכים, ארכיוני גיבוי, פרופילים מיוצאים וחבילות זמניות יכולים כל אחד לשמור על אותה זהות. הגנו על העתקים אלה לפי תוכנם, מפני שהדקת הקובץ המקורי לא עושה דבר לזה שבארכיון החודש שעבר.
סיסמת גישה על קובץ מפתח מועילה לחומר מאוחסן ואינה מצדיקה פרסום הקובץ המוצפן לצד הסיסמה שלו. הרשאות מגינות על אובייקט מערכת הקבצים הנוכחי; הן אינן אומרות דבר על אישור גישה שכבר הועתק למקום אחר.
חפשו את העתקים לפני שתכריזו שהעבודה הסתיימה: grep -rl שורת הכותרת של המפתח בתיקיות סבירות, ומבט על החרגות הגיבוי. התוצאה בדרך כלל מעניינת יותר מהקובץ שהתחלתם בו.
לאחר התיקון, אמתו והחליפו
בדקו שהשירות המיועד עדיין מאמת, ואז ודאו שאף חשבון מיותר לא קיבל גישה. הגבילו פלט אבחון למטא-נתונים, מפני ש אין צורך להדפיס את המפתח כדי להוכיח שהקובץ קריא וזה מכניס את החומר ליומן.
אם המפתח נחשף, הדקו את ההרשאה, ואז החליפו את אישור הגישה ובטלו את הישן. מפרט POSIX chmod מסביר מה משמעות כל סיבית הרשאה, וזה שווה לדעת לפני שהביקורת הבאה תבקש מכם להצדיק את המספר שבחרתם.