
getenforce מציג את המצב, ו-setenforce משנה אותו זמנית. הקביעה הקבועה נמצאת בקובץ /etc/sysconfig/selinux.ls -Z מציג את התווית של הקבצים, ו-ps -eZ מציג את התווית של התהליכים.restorecon.chcon -t משנה את התווית באופן ידני, ואפשרות -R מחילה זאת על כל תתי התיקיות.getsebool -a מציג את המתגים. setsebool -P allow_ftpd_full_access on מאפשר ל-FTP גישה מלאה, וה-P שומר את הערך.semanage port -l מציג אילו פורטים מותרים לכל סוג שירות. הוספת פורט 120 ל-http_port_t נעשית עם semanage port -a.מבנה ושמות דיסקים ומחיצות בלינוקס:

הטקסט המלא של הדקות הראשונות בהרצאה «SELinux» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים לסרטון בנושא SE-Linux. SE-Linux זאת מערכת שפותחה על ידי הסוכנות הביון האמריקנית ה-NSA כדי להגביר באופן מהותי את אבטחת המידע שניתן להגיע איתה במערכות לינוקס.
בסרטון זה אנחנו נלמד על איך להגדיר את המערכת הזאת ומה היא יכולה לעשות. אבל ראשית בואו קודם נבין את הצורך למה המערכת הזאת משמשת.
דוגמה שלפניכן אני מריץ בתוך על שולחן העבודה שלי את הקלקולטור ואם אני מסתכל ב-Task Manager שימו לב הקלקולטור הוא רץ תחת ההרשאות של המשתמש שלי תחת ההרשאות של מיכאל.
עכשיו מה זה אומר בעצם של התוכנה של הקלקולטור היא תוכל לעשות את כל מה שהמשתמש שלי רשאי לעשות במחשב התוכנה של הקלקולטור תוכל לגשת למיי דוקיומנטס תוכל להעביר לפתוח פורטים לאינטרנט תוכל להעביר קבצים ובעצם ההרשאות שלה הם מקבילות לכל ההרשאות שלי בתוך
המערכת וכמובן שהנושא הזה יכול להוות בעיה כי אני תוכנה כזאתי פשוטה שאני סך הכל רוצה שתעשה טאסק פשוט של לחבר או לחסר כמה מספרים אני לא רוצה שהיא תתחיל לבדוק לי את המסמכים או לפתוח פורטים החוצה אני רוצה שכל דבר במערכת יעשה את מה שהוא אמור לעשות ולא תהיה לו גישה מעבר לכך.
אחת הדרכים להתמודד עם המצב כמו שהם מתמודדים איתו בווינדאוס זה לעשות run as administrator לאפליקציה מסוימת. יחד עם זה זה לא עונה על כל הצרכים כי גם אם אני רוצה שמשהו ירוץ בתור אדמיניסטרטור אני רוצה שהוא יעשה רק את התפקיד שבעצם מוטל עליו.
ובפועל אנחנו בדוגמה הזאת אנחנו סומכים על המתכנת של הקלקיולטור שהקלקיולטור לא עושה דברים יותר ממה שאנחנו רוצים לעשות שהוא לא שולח מידע שאנחנו לא רוצים. ויותר מזה אם מישהו יצליח לפרוץ לקוד של הקלקיולטור או להשתיל שם איזשהו וירוס או להשתמש באיזושהי פרצת אבטחה אז דרך האפליקציה התמימה של הקלקיולטור
הוא יוכל בעצם לעשות ולהשתלט על המערכת או לפחות על כל התוכן שזמין ליוזר שמריץ אותה. יתרון לפני סילינוקס היה לכל תוכנה בעצם להגביל אותה ליוזר מסוים ושלאותו משתמש אותו יוזר תהיה לו רק הרשאות גישה מאוד מצומצמות שמתאימות לתפקיד שלו.
יחד עם זאת מה כאשר האפליקציה צריכה לבצע משימות של מספר יוזרים כמו למשל שרת FTP שצריך הרשאות רוט כי הוא בעצם יוכל לשרת מידע ולשרת את כל היוזרים במערכת אם אנחנו נסתכל על הפרוסס של ה-FTP, BS מינוס EF שיראה לנו את כל הפרוססים, גרפ Vs FTP,
אנחנו נראה בעצם שהפרוסס רץ תחת המשתמש רוט, כלומר הוא רץ תחת המשתמש שמנהל את המערכת ובעצם אם קיימת איזושהי פרצת אבטחה בתוך הפרוסס הזה, אז הוא יוכל לעשות בעצם כל פעולה בתוך המערכת.
יותר מזה, כאשר משתמש מתחבר למערכת, למשל אני רוצה לתת לו חשבון FTP כדי שהוא יוכל להוריד קבצים מסוימים במערכת. ואם אני אסתכל על ה-Slash או על ההרשאות של אותו משתמש במערכת ls-l-slash, אני אראה שלהרבה מאוד תיקיות יש פה אפשרות גישה של read לכולם, כלומר read לאדרס וזה אומר שאם אני אתן הרשאות
בעצם והמשתמש יוכל להיכנס דרך ה-FTP הוא יוכל דרך אותו חשבון FTP בעצם לקרוא כל דבר שהוא קריא בתוך המערכת לאדרס וכמובן שאני לא רוצה מצב שבו משתמש נכנס דרך ה-FTP ולמשל משנה לי דברים בתוך התיקייה של ה-boot או קורה דברים בתוך התיקייה של ה-boot או בתוך התיקייה של ה-etc.
אז אפילו שברגע שאני אתחבר ל-ftp, בואו תראו את הדוגמה, אני מתחבר ל-ftp, נוצר לי סשן על השרת, אני אעשה עכשיו ps-ef grap vsftp, אני אראה בעצם שהשרת, אפילו שאני רואה שהשרת FTP רץ תחת ה-UID של יוזר 500, שזה בעצם היוזר של FTP, אוקיי,
הנה הוא, UID 500, עדיין כל מה שזמין ליוזר FTP הוא בעצם יהיה זמין גם לשרת ה-FTP וגם למי שפורץ. לסיכום, למשתמש יש לו גישה להרבה תיקיות והרבה מקומות במערכת ואנחנו נרצה להגביל אותו כאשר הוא נכנס למערכת משירותים מסוימים.
בדוגמה הזאתי FTP. בואו נראה את הדוגמה. כרגע המצב של ה-SE-Linux הוא ב-disabled. הנה אני עושה פה, או יותר נכון ב-permissive, כלומר שהוא מאפשר את כל הפעולות ומודיע עליהן בלוג.
זה get enforce, אני רואה שהמצב הוא permissive. ואם אני אסתכל במה שאני רואה דרך ה-ftp, אני אראה שאני רואה פה בעצם את כל התיקיות שנמצאות ב-slash על המערכת.
עכשיו שימו לב, אני הולך להפעיל את ה-se Linux. אוקיי, set enforcing, אוקיי, עובר ל-ftp, task manager, עובר ל-ftp, אני עושה פה refresh, ושימו לב, כמות התיקיות שלי הצטמצמה משמעותית, למשל אני לא אראה פה את תיקיית הבוט לדוגמה, ועוד כמה תיקיות שאסור לי להיכנס אליהן למערכת.
יחד עם זאת, שימו לב שאם אני אכנס דרך הפוטי למערכת, אני אכנס לסרבר 1, אכנס בתור היוזר של FTP, FTP יוזר 1, אוקיי?
אז אני אוכל לעשות cd/boot ולראות את הקבצים שיש בפנים. עכשיו, אני יכול לראות אותם, ויחד עם זאת, דרך ה-FTP, התיקייה הזאתי של בוט היא פשוט לא נראית ולא זמינה לי.
אם אני אבטל את ה-SE לינוקס, אשים אותו במצב פרמיסיב, אוקיי? ואני אסתכל על הלוג, אני אעשה tail שיציג לי את השורות האחרונות ומינוס F שימשיך לרענן ולקרוא את הקובץ על var log audit audit.log אני אסתכל על התוכן של הלוג כאשר ה-SE לינוקס במצב פרמיסיב ועכשיו אני ארענן פה את התקייה, אוקיי?
אני רואה שבעצם נוצרות לי פה הודעות אזהרה כיוון שSE Linux הוא עדיין פעיל, יחד עם זאת הוא במצב פרמיסיב, כלומר הוא כן יאפשר את הפעולות האלה. אז נוצרות לי פה בעצם אזהרות שאומרות איזה פעולות הן נעשות שהפוליסה של ה-SE Linux אוסרת עליהן.
כלומר שה-SE Linux היה צריך למנות, ועכשיו אני אכנס לתיקיית בוט ואני רואה פה ואני רואה פה בעצם אזהרה שהתוכן של קובץ מסוים בתיקיית בוט בדיווייס מסוים בעצם היה אמור להידחות מכיוון שמי שניסה לגשת אליו זה בעצם תוכנת ה-ftpd ftpdmon.
בהמשך הסרטון אנחנו נבהיר איך המערכת עובדת, עכשיו אני אסביר לכם איך בעצם שולטים בעבודה של המערכת הזאת, אוקיי? אז כדי לדעת אם ה-SE-Linux מאופשר במערכת, אני משתמש בפקודה getEnforce שהיא בעצם אומרת מה המצב הנוכחי של ה-SE-Linux.
המצב הנוכחי יכול להיות Enforcing, כלומר המערכת פעילה והיא בעצם מגבילה את המשתמשים עם הפוליסה שלה, וכלומר הפוליסה מיושמת, יכולה להיות במצב Permissive, ויכולה להיות במצב Disabled שזה מצב שבה המערכת אפילו לא בודקת את הפוליסה.
מה שקובע אם ה-SE-Linux יפעל כשהמערכת עולה זה הגדרות בתוך הקובץ סיס קונפיג סי לינוקס וכאן בעצם יש לי את ההגדרה של סי לינוקס שווה אינפורסינג פרמיסיב או דיסייבלד מה שאני אשנה כאן הוא בעצם יקבע איך השרת יעלה.
יש מספר סוגים של פוליסות יש פוליסה שהיא טארגטד ויש פוליסה שהיא מולטי לבל סקיורטי פוליסי הטארגטית היא הגדרה יותר כללית וכוללת במערכת והמולטי לבל סקיורטי פרוטקשן זוהי הגדרה שהיא יותר פרטנית.
פה אני בעצם לא ארחיב ואסביר על הגדרות האלה בסרטון הזה לפחות. במילה אחת הפוליסה מסוג טארגטית היא מתייחסת בעצם למקור כלומר טארגט למשל אם זה שירות FTP ואם זה שירות ווב ומה אפשר לעשות איתו ומולטי לבל סקיורטי פוליסי הוא בעצם מחלק את הגישה למספר רמות שונות כלומר למשל קוראים להיות משתמשים או פרוססים שהם
יהיו ברמת אבטחה שונה ובהתאם לכך הם יקבלו הרשאות שונות במערכת ויוכלו לעשות אינטראקציות שונות עם פרוססים וקבצים אחרים.
בקובץ הזה מה שחשוב לזכור זה את ההגדרה פה של Enforcing, Permissive או Disabled שזה יקבע איך המערכת תעלה. אז איך בעצם SE-Linux עובדת או איך היא נקבע מה יכול לעשות אינטראקציה עם מה או מתי לתת גישה ומתי לא לתת גישה בעצם כל קובץ, או פרוסס במערכת מוצמדת אליו תגית, איזושהי תווית שהיא
אומרת מה תפקיד אותו קובץ במערכת או מה תפקיד אותו פרוסס. למשל עכשיו אני בתוך תיקיית הבית של רות, אני רוצה ls מינוס l ואפשרות z גדולה, היא בעצם תגרום לls להציג את התווית של ה-se-linux שמוצמדת לקבצים.
למשל, אני רואה כאן, רגע, ls רגיל, כדי שתראו את הרשימה של הקבצים שיש לי, ועכשיו אני אעשה ls מינוס lz, אני רואה למשל שיש לי פה קובץ אינדקס html שהתוכן שלו הוא בעצם אובייקט מסוג admin home t, וזה בעצם אומר שזה אובייקט וההקשר שלו במערכת
הזאתי הוא קובץ תוכן שנמצא בספריית הבית של רות. למשל אם אני אכנס לספריית בית של היוזר שעצרנו cd/home/ftpuser1 אני אעשה ls-lz אוקיי, אני אראה שפה בעצם נמצאים קבצים שהתוכן שלהם הוא מסוג User Home.
אם אני אכנס לתוך תיקייה של HTTP ששם נמצא התוכן שבעצם מוגש ל-Web, למשל cd/hvarwww.html זאת התיקייה הדפולטית, ברירת מחדל שבה נמצא התוכן של השרת Web זה ls מינוס lz, אני אראה כאן שהתוכן הוא מסוג HTTP d-System Content.
עכשיו, אם אנחנו מסתכלים על הפרוססים ונריץ ps מינוס ef עם האות הגדולה z אנחנו נראה בעצם את התוויות שמוצמדות על התהליכים, אוקיי?
למשל, כדי שזה יהיה יותר ברור, אני אעשה עכשיו גרפ וסנן רק את השורה של ה-HTTP-D. אני אראה בעצם שהפרוסס גם יש לו תווית שיש סוג של תוכן, הוא בעצם סוג טייפ, הוא מסוג HTTP-D.
עכשיו, פה אנחנו רואים בעצם הפרמטר השני בין הנקודותיים, בעצם התפקיד של הרכיב והוא מסוג סיסטם אוקיי אגב לקבצים תמיד יש תפקיד של אובייקט כי לקובץ עצמו לא יכול להיות תפקיד תפקיד אחר מי חוץ מהיותו קובץ אז בעצם יש לנו פרוססים שרצים עם תווית מסוימת ויש לנו קבצים שאליהם
מוצמדים תוויות מסוימות עכשיו הפוליסי של ה-SE-Linux הוא בעצם אומר איזה אינטראקציה יכולה להיות בין פרוסס עם תווית מסוימת לקובץ עם תווית מסוימת, או למשל רכיבים אחרים במערכת שיש להם תוויות כמו פורטים או אזורים בזיכרון.
למשל פרוסס שרץ עם תווית של HTTPDT יוכל בעצם לפתוח תוכן ולקרוא תוכן של מסוג HTTPDCIS content זה מוגדר בפוליסי ולמשל הוא לא יוכל לפתוח קונטנט אחר של בוט למשל או מקום אחר ואז כאשר כל בקשה בעצם במערכת של פרוסס לפתוח
קובץ מסוים, לפתוח פורט, לבצע קריאה בזיכרון, הקרנל בודק האם התוויות של הפרוסס מתאימות לתוויות שיש על הקבצים, ולפיכך מתקבלת בעצם החלטה האם לאפשר לפרוסס לעשות את הפעולה, לזרוק הודעת שגיאה בתוך קובץ האודיט.
ואם עכשיו אנחנו נסתכל על קובץ האודיט ונסתכל שם על השגיאות שיש var log audit log, אנחנו בעצם נראה שיש לנו הודעה שבעצם תוכן