SELinux

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

SELinux (ראשי תיבות של Security Enhanced Linux, פירוש מילולי: לינוקס עם אבטחה מתקדמת) הוא יישום של Mandatory Access Control עבור מערכות לינוקס, לדוגמה רוב הפצות Red Hat כוללות בתוכן את SE Linux (בהפצות Debian,Ubuntu וכדומה ניתן להתקין את SE Linux). למעשה, מדובר בהרחבה לליבת לינוקס שנועדה לספק מערכת הרשאות שחלה על כל העצמים במערכת ולא רק על מערכת הקבצים עצמה, כלומר עוד שכבת הגנה אל יישומי המערכת. המערכת מבוססת על כמה פרויקטים קודמים של הסוכנות לביטחון לאומי.

רקע[עריכת קוד מקור | עריכה]

כל מערכת לינוקס מממשת מנגנון DAC. בשיטה זו לכל קובץ יש משתמש שהוא הבעלים של הקובץ וקבוצה שהיא הבעלים של הקובץ. לכל משתמש יש שליטה מסוימת (בהתאם להרשאות עבור כל קובץ) בקובץ ולכל המשתמשים בקבוצה שהיא הבעלים של הקובץ יש שליטה מסוימת בו (בהתאם להרשאות עבור כל קובץ).במידה ומוגדר כך אמור להיות למשתמש-על (root) יש יכולת שליטה מלאה בכל הקבצים במערכת.

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

סקירה[עריכת קוד מקור | עריכה]

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

כאשר SELinux פועל, מנגנוני ההגנה שלו פועלים בנוסף למנגנוני ההגנה המובנים של מערכת הקבצים (DAC). אם משתמש מנסה לגשת לקובץ ואין לו הרשאות, המערכת תחסום את הגישה לקובץ. אם יש לו הרשאות, המערכת תיבחן את מדיניות ה-SELinux המתאימה ובהתאם לה תאשר או תחסום את הגישה של המשתמש לקובץ.

מבנה[עריכת קוד מקור | עריכה]

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