بررسی اجمالی SELinux
لینوکس تقویتشده با امنیت (SELinux) یک معماری امنیتی برای سیستمهای Linux® است که به مدیران اجازه میدهد تا کنترل بیشتری بر روی افرادی که میتوانند به سیستم دسترسی داشته باشند، داشته باشند. در ابتدا توسط آژانس امنیت ملی ایالات متحده (NSA) به عنوان یک سری وصله به هسته لینوکس با استفاده از ماژولهای امنیتی لینوکس (LSM) توسعه داده شد.
SELinux در سال 2000 برای جامعه منبع باز منتشر شد و در سال 2003 در هسته بالادست لینوکس ادغام شد.
یک سیستم عامل دارای SELinux را به صورت رایگان امتحان کنید.
SELinux چگونه کار میکند؟
SELinux کنترلهای دسترسی را برای برنامهها، فرآیندها و فایلهای یک سیستم تعریف میکند.
از خطمشیهای امنیتی استفاده میکند، که مجموعهای از قوانین است که به آن SELinux میگوید به چه چیزی میتوان یا نمیتوان دسترسی داشت، برای اعمال دسترسی مجاز توسط یک خطمشی.
هنگامی که یک برنامه یا فرآیند، که به عنوان موضوع شناخته میشود، درخواستی برای دسترسی به یک شی، مانند یک فایل، ارائه میکند، SELinux با یک کش جهتدار، دسترسی (AVC) بررسی میکند، جایی که مجوزها برای سوژهها و اشیاء ذخیره میشوند.
اگر SELinux قادر به تصمیمگیری در مورد دسترسی بر اساس مجوزهای حافظه پنهان نباشد، درخواست را به سرور امنیتی ارسال میکند. سرور امنیتی زمینه امنیتی برنامه یا فرآیند و فایل را بررسی میکند. زمینه امنیتی از پایگاه داده سیاست SELinux اعمال میشود. سپس اجازه داده میشود یا رد میشود.
اگر مجوز رد شود، پیام “avc: denied” در /var/log.messages موجود خواهد بود.
نحوه پیکربندی SELinux
چندین راه وجود دارد که میتوانید SELinux را برای محافظت از سیستم خود پیکربندی کنید. رایجترین آنها خط مشی هدفمند یا امنیت چند سطحی (MLS) هستند.
خط مشی هدفمند گزینه پیشفرض است و طیف وسیعی از فرآیندها، وظایف و خدمات را پوشش میدهد. MLS میتواند بسیار پیچیده باشد و معمولاً فقط توسط سازمانهای دولتی استفاده میشود.
با نگاه کردن به فایل /etc/sysconfig/selinux میتوانید بفهمید که سیستم شما در چه چیزی قرار است اجرا شود. این فایل دارای بخشی است که به شما نشان میدهد که آیا SELinux در حالت مجاز است، حالت اجرا یا غیرفعال است، و اینکه کدام خط مشی قرار است بارگذاری شود.
بیشتر بخوانید: کتاب Red Hat Certified Engineer (RHCE) Study Guide
برچسبگذاری و اجرای نوع SELinux
اجرای نوع و برچسبگذاری مهمترین مفاهیم برای SELinux هستند.
SELinux به عنوان یک سیستم برچسبگذاری کار میکند، به این معنی که همه فایلها، فرآیندها و پورتهای یک سیستم دارای برچسب SELinux مرتبط با آنها هستند. برچسبها روشی منطقی برای گروه بندی اشیا با هم هستند. کرنل برچسبها را در هنگام بوت مدیریت میکند.
برچسبها در قالب user:role:type:level هستند (سطح اختیاری است). کاربر، نقش و سطح در پیادهسازیهای پیشرفتهتر SELinux مانند MLS استفاده میشود. نوع برچسب برای خط مشی هدفمند مهم ترین است.
SELinux از اجرای نوع برای اعمال سیاستی که بر روی سیستم تعریف شده است استفاده میکند. اجرای نوع بخشی از یک خط مشی SELinux است که تعیین میکند آیا فرآیندی که با یک نوع خاص اجرا میشود میتواند به فایلی که با یک نوع خاص برچسبگذاری شده است دسترسی پیدا کند یا خیر.
فعال کردن SELinux
اگر SELinux در محیط شما غیرفعال شده است، میتوانید SElinux را با ویرایش /etc/selinux/config و تنظیم SELINUX=permissive فعال کنید. از آنجایی که SELinux در حال حاضر فعال نبود، نمیخواهید فوراً آن را روی حالت اجرا تنظیم کنید، زیرا احتمالاً مواردی در سیستم دارای برچسب اشتباه است که میتواند سیستم را از بوت شدن باز دارد.
میتوانید با ایجاد یک فایل خالی به نام .autorelabel در فهرست اصلی و سپس راهاندازی مجدد، سیستم را مجبور کنید تا بهطور خودکار فایل سیستم را برچسبگذاری مجدد کند. اگر سیستم خطاهای زیادی دارد، باید در حالت مجاز راهاندازی مجدد کنید تا بوت با موفقیت انجام شود. بعد از اینکه همه چیز دوباره برچسب زد، SELinux را روی enforcing با /etc/selinux/config تنظیم کنید و راهاندازی مجدد کنید یا setenforce 1 را اجرا کنید.
اگر یک sysadmin کمتر با خط فرمان آشنا باشد، ابزارهای گرافیکی در دسترس هستند که میتوان از آنها برای مدیریت SELinux استفاده کرد.
SELinux یک لایه امنیتی اضافی برای سیستم شما فراهم میکند که در توزیع های لینوکس تعبیه شده است. باید روشن بماند تا در صورت به خطر افتادن سیستم شما بتواند از آن محافظت کند.
کنترل دسترسی اختیاری (DAC) در مقابل کنترل دسترسی اجباری (MAC)
به طور سنتی، سیستمهای لینوکس و یونیکس از DAC استفاده میکردند. SELinux نمونهای از سیستم مک برای لینوکس است.
با DAC، فایلها و فرآیندها صاحب دارند. میتوانید از کاربر بخواهید مالک یک فایل، گروهی مالک یک فایل یا موارد دیگری باشد که میتواند هر شخص دیگری باشد. کاربران میتوانند مجوزهای فایلهای خود را تغییر دهند.
کاربر root دارای کنترل دسترسی کامل با سیستم DAC است. اگر دسترسی ریشه دارید، میتوانید به فایلهای هر کاربر دیگری دسترسی داشته باشید یا هر کاری که میخواهید در سیستم انجام دهید.
اما در سیستمهای MAC مانند SELinux، سیاستهای مدیریتی در مورد دسترسی وجود دارد. حتی اگر تنظیمات DAC در فهرست اصلی شما تغییر کند، یک خط مشی SELinux برای جلوگیری از دسترسی کاربر یا فرآیند دیگری به فهرست، سیستم را ایمن نگه میدارد.
خطمشیهای SELinux به شما امکان میدهند خاص باشید و تعداد زیادی از فرآیندها را پوشش دهید. میتوانید با SELinux تغییراتی ایجاد کنید تا دسترسی بین کاربران، فایلها، دایرکتوریها و موارد دیگر را محدود کنید.
بیشتر بخوانید: کتاب Red Hat Enterprise Linux 8 Administration
نحوه رسیدگی به خطاهای SELinux
هنگامی که در SELinux با خطا مواجه میشوید چیزی وجود دارد که باید برطرف شود. احتمالاً یکی از این 4 مشکل رایج است:
- برچسبها اشتباه است. اگر برچسبگذاری شما نادرست است، میتوانید از ابزار برای تعمیر برچسبها استفاده کنید.
- یک سیاست باید اصلاح شود. این میتواند به این معنی باشد که باید SELinux را در مورد تغییری که ایجاد کردهاید مطلع کنید یا ممکن است نیاز به تنظیم یک خط مشی داشته باشید. میتوانید با استفاده از ماژولهای بولی یا سیاست آن را برطرف کنید.
- یک اشکال در سیاست وجود دارد. ممکن است اشکالی در خط مشی وجود داشته باشد که باید برطرف شود.
- سیستم شکسته شده است. اگرچه SELinux میتواند در بسیاری از سناریوها از سیستم شما محافظت کند، اما احتمال به خطر افتادن یک سیستم هنوز وجود دارد. اگر مشکوک به این موضوع هستید، فوراً اقدام کنید.
بولینها چیست؟
Booleans تنظیمات روشن/خاموش برای توابع در SELinux هستند. صدها تنظیمات وجود دارند که میتوانند قابلیتهای SELinux را روشن یا خاموش کنند و بسیاری از آنها قبلاً از پیش تعریف شده اند. با اجرای getsebool -a میتوانید متوجه شوید که کدام Boolean قبلاً در سیستم شما تنظیم شده است.
منبع: RedHat