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