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

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

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

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

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

קראו את התווית הנוכחית מול הצפויה

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

ls -lZ /etc/openvpn/client/office-ca.crt
matchpathcon /etc/openvpn/client/office-ca.crt
restorecon -Rn -v /etc/openvpn/client

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

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

שחזרו את המיפוי במקום להמציא חריגה

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

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

semanage fcontext -a -t openvpn_etc_t '/etc/openvpn/custom(/.*)?'
restorecon -Rv /etc/openvpn/custom

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

למה chcon אינו הפתרון

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

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

כשהתווית נכונה והגישה עדיין נכשלת

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

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

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

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