SElinuxیک امکان و ویژگی لینوکس است که مکانیزمی برای پشتیبانی از خط مشی های امنیتی سطح دسترسی هسته لینوکس ( Kernel ) را فراهم می آورد.این برنامه تحت حمایت و توسعه سازمان امنیت ملی آمریکا ( National Security Agency ) هستش و در بسیاری از توزیع های لینوکس بطور پیش فرض وجود دارد. به زبان ساده SELinux میتواند خط مشی های امنیتی برای اینکه کدام( دسته ها، کابران ، برنامه ها ) بتواند به کدام اجزا ( فایل ها و device ها ) دسترسی داشته باشد ، تعریف و اجرا کند. در واقع میتوان SELinux را به عنوان یک دیوار آتش یا Firewall داخلی برای سیستم عامل تصور کرد.
در این سامانه ، سیستم عامل دسترسی های سیستمی را کنترل کرده و در مواردی که امنیت در خطر باشد ، محدودیت هایی را اعمال می کند.
به عنوان مثال :
- Administrator ها هیچ راهی برای کنترل کاربر ها ندارند. شرایطی را متصور شوید که کاربر می تواند به فایل های حساس سیستمی مانند کلید SSH و یا پوشه های حاوی آنها دسترسی خواندن همگانی بدهد. مثلا /ssh./~
- پردازش ها می توانند سطوح دسترسی را تغییر دهند. فایل های ایمیل یک کاربر تنها باید توسط او قابل خواندن باشد. ولی نرم افزار mail client می تواند دسترسی خواندن عمومی به این فایل ها بدهد.
- پردازش ها سطوح دسترسی کاربران اجرا کننده آنها را به ارث می برند. به عنوان مثال مرورگر اینترنتی در اثر آلوده شدن با یک بدافزار می تواند کلید SSH محرمانه کاربر را بخواند. هر چند توجیه و نیازی برای این رفتار وجود ندارد.
توسعه Selinux از نسخه 2.6 کرنل در سال 2003 در حوزه کاری تیم توسعه اصلی هسته لینوکس به سرپرستی لینوس توروالدز ادغام شد. هم اکنون selinux در بسیاری از توزیع های لینوکسی بصورت پیشفرض وجود دارد از جمله ردهت(RedHat) و فدورا(Fedora) . اولین توزیع لینوکسی که بصورت پیشفرض از selinux استفاده کرد RedHat نسخه 4 بود.
Selinux سه مد ( mode ) کاری دارد:
Selinux سه مد ( mode ) کاری دارد:
Enforcing
این حالت پیشفرض selinux است و نصب آن بر روی همین مد است. در این شرایط سیاست های امنیتی selinux بر روی سیستم اعمال می شود ، دسترسی های غیر مجاز ممنوع و فعالیت ها در قالب لاگ ثبت می شود.
Permissive
در این حالت selinux فعال است ولی سیاست های امنیتی آن لازم الاجرا نبوده و تنها به اخطار دادن و ثبت ریز فعالیت ها بسنده می کند. این مد بیشتر برای عیب یابی و بررسی رفتار selinux مناسب است.
Disabled
در این حالت selinux خاموش است.
بواسطه دستور sestatus می توان وضعیت selinux را بر روی سیستم بررسی نمود. تنظیمات selinux در فایل زیر قابل مشاهده است:
بواسطه دستور sestatus می توان وضعیت selinux را بر روی سیستم بررسی نمود. تنظیمات selinux در فایل زیر قابل مشاهده است:
/etc/selinux/config
با اعمال تغییر درSElinux می توان حالت کلی selinux را از لحظه بوت تعیین کرد.
جهت استفاده بهینه از Selinux نیاز به دانش مدیریت آن است. بدلیل ضعف دانش مدیران سرور در این حوزه ، غیر فعال کردن آن را که ساده ترین گزینه است ترجیح می دهند. البته در نادر مواردی بدون ایجاد ریسک می توان اقدام به غیرفعال کردن آن نمود که طبیعتا دانش و اشراف بالای مدیر آن سرور را طلب می کند.
چرا SELinux را با این همه مزیت غیرفعال میکنیم ؟
در اصل راحت طلبی منجر به غیر فعال کردن این سرویس می گردد، وگرنه با صرف وقت و دارا بودن دانش کافی می توان آن را مطابق نیاز تان کانفیگ کنید و فعال نگه دارید.
با توجه به توضیحات بالا میتوان تصور کرد که SELinux برای برنامه ها و پردازش های موجود در سیستم عامل روند بسیار سخت گیرانه ای در پیش گیرد. بسیاری از کنترل پنل ها برای نصب احتیاج به غیر فعال کردن SELinux دارند ، این انتخاب با شماست که آنرا غیرفعال کنید یا نه.
چگونه SELinux را غیرفعال کنیم ؟
برای غیر فعال کردن SELinux باید فایل تنظیمات در آدرس /etc/selinux/config را ویرایش کنیم ، برای اینکار دستور زیر را اجرا کنید :
کد:
nano /etc/selinux/config
و خط زیر را
کد:
SELINUX=enabled
به
کد:
SELINUX=disabled
تغییر دهید. و در نهایت با اجرای دستور زیر SELinux را برای ارتباط فعلی نیز غیرفعال میکنیم.
کد:
setenforce 0
روش دیگر :
برای غیر فعال سازی در ssh بزنید :
کد:
setup
در قسمت فایروال گزینه برای غیر فعال کردن موجود است. این آموزش برای راحتی کار هست . اما آموزش که در بالا است کاملتر می باشد .