
Selinux چیست و چگونه کار می کند؟
Selinux چیست؟ امنیت در دیدگاه سنتی عبارت است از ایجاد محدودیت در کاربر ها و یا فایل ها بواسطه تعیین permission و همچنین راه اندازی یک دیوار آتش ( Firewall ) جهت نظارت بر ارتباطات شبکه ای یک سیستم. آیا بهتر نبود سیستمی سطوح دسترسی نرم افزار ها و فایل ها و یا تغییر آنها را کنترل می کرد؟ چه اتفاقی خواهد افتاد اگر یک کاربر فایل کلید امنیتی SSH را به اشتباه برای عموم قابل خواندن کند؟ در این مقاله از مجموعه مقالات آموزش لینوکس وبلاگ پارس پک به بررسی و آموزش Selinux می پردازیم.
تعریف Selinux
Selinux کوتاه شده عبارت Security-Enhanced Linux به معنی لینوکس با امنیت بهبود یافته است. این ماژول کرنل ( Kernel ) در 22 دسامبر سال 2000 توسط آژانس ملی امنیت آمریکا و تحت لایسنس GPL توسعه داده شد و هدف آن بهبود امنیت کلی سیستم عامل لینوکس بود. سیستم نظارتی selinux از نوع MAC می باشد که کوتاه شده عبارت mandatory access control ( کنترل دسترسی اجباری ) است. در این سامانه ، سیستم عامل دسترسی های سیستمی را کنترل کرده و در مواردی که امنیت در خطر باشد ، محدودیت هایی را اعمال می کند. به عنوان مثال :
سطوح دسترسی های لینوکس
- Administrator ها هیچ راهی برای کنترل کاربر ها ندارند. شرایطی را متصور شوید که کاربر می تواند به فایل های حساس سیستمی مانند کلید SSH و یا پوشه های حاوی آنها دسترسی خواندن همگانی بدهد. مثلا /ssh./~
- پردازش ها می توانند سطوح دسترسی را تغییر دهند. فایل های ایمیل یک کاربر تنها باید توسط او قابل خواندن باشد. ولی نرم افزار mail client می تواند دسترسی خواندن عمومی به این فایل ها بدهد.پردازش ها سطوح دسترسی کاربران اجرا کننده آنها را به ارث می برند. به عنوان مثال مرورگر اینترنتی در اثر آلوده شدن با یک بدافزار می تواند کلید SSH محرمانه کاربر را بخواند. هر چند توجیه و نیازی برای این رفتار وجود ندارد.
- توسعه سلینوکس از نسخه 2.6 کرنل در سال 2003 در حوزه کاری تیم توسعه اصلی هسته لینوکس به سرپرستی لینوس توروالدز ادغام شد. هم اکنون سلیونکس در بسیاری از توزیع های لینوکسی بصورت پیشفرض وجود دارد. اولین توزیع لینوکسی که بصورت پیشفرض از selinux استفاده کرد RedHat نسخه 4 بود.Selinux سه مد ( mode ) کاری دارد:
Enforcing
این حالت پیشفرض سلینوکس است و نصب آن بر روی همین مد است. در این شرایط سیاست های امنیتی selinux بر روی سیستم اعمال می شود ، دسترسی های غیر مجاز ممنوع و فعالیت ها در قالب لاگ ثبت می شود.
Permissive
در این حالت selinux فعال است ولی سیاست های آن الزام آور نبوده و تنها به اخطار دادن و ثبت ریز فعالیت ها بسنده می کند. این مد بیشتر برای عیب یابی و بررسی رفتار selinux مناسب است.
Disabled
در این حالت selinux خاموش است. بواسطه دستور sestatus می توان وضعیت selinux را بر روی سیستم بررسی نمود. تنظیمات selinux در فایل زیر قابل مشاهده است:
/etc/selinux/config
با اعمال تغییر در =SELINUX می توان حالت کلی selinux را از لحظه بوت تعیین کرد. همچنین در زمان کارکرد سیستم عامل می توان با دستور setenforce وضعیت کاری selinux را تغییر داد. گزینه های قابل استفاده در مقابل setenforce عبارتند از:
- Enforcing یا 1 جهت قرار دادن در وضعیت Enforcing
- Permissive جهت قرار داده در وضعیت عیب یابی
- 0 جهت خاموش کردن
جهت استفاده بهینه از Selinux نیاز به دانش مدیریت آن است. بدلیل ضعف دانش مدیران سرور لینوکس در این حوزه ، غیر فعال کردن آن را که ساده ترین گزینه است ترجیح می دهند. البته در نادر مواردی بدون ایجاد ریسک می توان اقدام به غیرفعال کردن آن نمود که طبیعتا دانش و اشراف بالای مدیر آن سرور را طلب می کند.