SELinux چیست و چه کاربردی دارد؟ آشنایی با Security Enhanced Linux

0 45
امتیاز دهید!

فهرست

SELinux چیست؟

SELinux یا Security Enhanced Linux (لینوکس تقویت شده از نظر امنیتی) یک معماری امنیتی برای سیستم‌های Linux است که به مدیران اجازه می‌دهد کنترل بیشتری بر روی دسترسی افراد به سیستم ها، داشته باشند. SELinux در ابتدا توسط آژانس امنیت ملی ایالات متحده (NSA) به عنوان یک سری وصله به هسته لینوکس با استفاده از ماژول های امنیتی لینوکس (LSM) توسعه داده شد. SELinux در سال ۲۰۰۰ برای جامعه اوپن سورس منتشر شد و در سال ۲۰۰۳ در هسته بالادست لینوکس ادغام شد.

بنابراین، SELinux یک مکانیسم امنیتی لینوکس بر اساس اصل کنترل دسترسی اجباری یا MAC است. مانند سیستم حسابرسی لینوکس (Linux Audit System: AuditD)، SELinux نیز یک ویژگی هسته لینوکس است. SELinux امروزه توسط بسیاری از توزیع‌های لینوکس از جمله Debian، Fedora، openSUSE، Red Hat Enterprise Linux (RHEL)، Ubuntu و غیره پشتیبانی می‌شود. شایان ذکر است که SELinux تنها یکی از مکانیسم‌های امنیتی موجود از طریق هسته لینوکس است و سایر روش‌های نظارت لینوکس می‌توانند برای پیاده‌سازی کنترل‌های امنیتی به جای SELinux یا تقویت آن استفاده شوند.

منظور از Security Enhanced Linux چیست؟

کد هسته لینوکس به طور مداوم توسط شرکت ها، داوطلبان و سازمان های غیر انتفاعی در حال توسعه است. لینوکس تقویت‌شده با امنیت یا همان SELinux یک برنامه افزودنی از هسته لینوکس است و به عنوان یک ماژول امنیتی مستقل در دسترس است. در سال ۲۰۰۳ به طور رسمی در هسته لینوکس ادغام شد. برخی از توزیع‌های لینوکس SELinux را به صورت استاندارد ارائه می‌کنند، اما اگر به آن نیاز ندارید، می‌توانید به راحتی آن را غیرفعال کنید. SELinux به مدیران کنترل بیشتری بر پراسس های در حال اجرا در سیستم آنها می دهد. هر پراسسی که ضروری تلقی نمی شود مسدود می شود. این امر خطرات مرتبط با آسیب پذیری های امنیتی در برنامه های کاربر را تا حد زیادی کاهش می دهد.

SELinux چگونه کار می کند؟

SELinux کنترل های دسترسی (Access Control) را برای برنامه ها، پراسس ها و فایل های یک سیستم تعریف می کند. با تعیین کردن یک سری پالیسی، به SELinux گفته می شود که دسترسی به چه چیزی مجاز و به چه چیزی غیرمجاز است. با این روش پالیسی مورد نظر در مورد دسترسی ها اعمال می شود.

هنگامی که یک برنامه یا پراسس (که به آن Subject گفته می شود)، درخواستی برای دسترسی به یک شی، مانند یک فایل (Object)، ارائه می‌کند، SELinux با یک AVC یا همان Access Vector Cache بررسی می‌کند، چه مجوزهایی برای پراسس ها و اشیا وجود دارد. اگر SELinux نتواند بر اساس مجوزهای ذخیره شده در مورد دسترسی تصمیم بگیرد، درخواست را به سرور امنیتی ارسال می کند. سرور امنیتی زمینه امنیتی برنامه یا فرآیند و فایل را بررسی می کند. زمینه امنیتی از پایگاه داده سیاست SELinux اعمال می شود. سپس اجازه داده می شود یا رد می شود. اگر مجوز رد شود، پیام “avc: denied” در /var/log.messages موجود خواهد بود.

تنظیم SELinux

چندین راه وجود دارد که می توانید SELinux را برای محافظت از سیستم خود پیکربندی کنید. رایج ترین آنها خط مشی هدفمند (Targeted Policy) یا امنیت چند سطحی (MLS) هستند. خط مشی هدفمند گزینه پیش فرض است و طیف وسیعی از فرآیندها، وظایف و خدمات را پوشش می دهد. MLS می تواند بسیار پیچیده باشد و معمولاً فقط توسط سازمان های دولتی استفاده می شود.

با نگاه کردن به فایل /etc/sysconfig/selinux می توانید بفهمید که سیستم شما در چه چیزی قرار است اجرا شود. این فایل دارای بخشی است که به شما نشان می دهد که آیا SELinux در حالت مجاز است، حالت اجرا یا غیرفعال است، و اینکه کدام خط مشی قرار است بارگذاری شود.

لیبل گذاری (Labeling) و اعمال تایپ ها (Type Enforcement)

Type Enforcement و Labeling مهم ترین مفاهیم برای SELinux هستند. SELinux به عنوان یک سیستم Labeling کار می کند، به این معنی که همه فایل ها، فرآیندها و پورت های یک سیستم دارای برچسب SELinux مرتبط با آنها هستند. برچسب ها روشی منطقی برای گروه بندی اشیا با هم هستند. کرنل برچسب ها را در هنگام بوت مدیریت می کند. برچسب ها در قالب user:role:type:level هستند (سطح اختیاری است).

SELinux از Type Enforcement برای اعمال سیاستی که بر روی سیستم تعریف شده است استفاده می کند. Type Enforcement بخشی از یک پالیسی SELinux است که تعیین می کند آیا پراسسی که با یک نوع (Type) خاص اجرا می شود می تواند به فایلی که با یک نوع خاص برچسب گذاری شده است دسترسی پیدا کند یا خیر.

فعال سازی SELinux

اگر SELinux در محیط شما غیرفعال شده است، می توانید SElinux را با ویرایش /etc/selinux/config و تنظیم SELINUX=permissive فعال کنید. از آنجایی که SELinux در حال حاضر فعال نبود، نمی‌خواهید فوراً آن را روی حالت اجرا تنظیم کنید، زیرا احتمالاً مواردی در سیستم دارای برچسب اشتباه است که می‌تواند سیستم را از بوت شدن باز دارد.

می‌توانید با ایجاد یک فایل خالی به نام .autorelabel در فهرست اصلی و سپس راه‌اندازی مجدد، سیستم را مجبور کنید تا به‌طور خودکار فایل سیستم را برچسب‌گذاری مجدد کند. اگر سیستم خطاهای زیادی دارد، باید در حالت مجاز راه‌اندازی مجدد کنید تا بوت با موفقیت انجام شود. بعد از اینکه همه چیز دوباره برچسب زد، SELinux را روی enforcing با /etc/selinux/config تنظیم کنید و راه اندازی مجدد کنید یا setenforce 1 را اجرا کنید.

اگر یک sysadmin کمتر با خط فرمان آشنا باشد، ابزارهای گرافیکی در دسترس هستند که می توان از آنها برای مدیریت SELinux استفاده کرد. SELinux یک لایه امنیتی اضافی برای سیستم شما فراهم می کند که در توزیع های لینوکس تعبیه شده است. باید روشن بماند تا در صورت به خطر افتادن سیستم شما بتواند از آن محافظت کند.

کنترل دسترسی اختیاری (Discretionary access control – DAC) و کنترل دسترسی اجباری (Mandatory access control – MAC)

به طور سنتی، سیستم های لینوکس و یونیکس از DAC استفاده می کردند. SELinux نمونه ای از سیستم مک برای لینوکس است. با DAC، فایل ها و فرآیندها صاحب دارند. می‌توانید از کاربر بخواهید مالک یک فایل، گروهی مالک یک فایل یا موارد دیگری باشد که می‌تواند هر شخص دیگری باشد. کاربران می توانند مجوزهای فایل های خود را تغییر دهند. کاربر root دارای کنترل دسترسی کامل با سیستم DAC است. اگر دسترسی ریشه دارید، می توانید به فایل های هر کاربر دیگری دسترسی داشته باشید یا هر کاری که می خواهید در سیستم انجام دهید.

اما در سیستم‌های MAC مانند SELinux، سیاست‌های مدیریتی در مورد دسترسی وجود دارد. حتی اگر تنظیمات DAC در فهرست اصلی شما تغییر کند، یک خط مشی SELinux برای جلوگیری از دسترسی کاربر یا فرآیند دیگری به فهرست، سیستم را ایمن نگه می دارد. خط‌مشی‌های SELinux به شما امکان می‌دهند خاص باشید و تعداد زیادی از فرآیندها را پوشش دهید. می توانید با SELinux تغییراتی ایجاد کنید تا دسترسی بین کاربران، فایل ها، دایرکتوری ها و موارد دیگر را محدود کنید.

درباره ما

ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
دوره‌های آکادمی ترجنس | courses.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence

ارسال یک پاسخ