حقیقتش توی یک گروه بحث بر سختی کار با SELinux شده بود که از نظرمن اونقدرام وحشتناک نیست و از لحاظ کارکرد هم می تونه از دید های آسون باشه. SELinux که به گفتار فارسی اس ائی لینوکس خوانده می شود کوتاه شده عبارت Security-Enchanted Linux می باشد. یک ماژول امنیتی بسیار مهم و پرکاربرد در لینوکس می باشد که به موجب آن ما توانایی پیاده سازی Policy های مختلف همچون Access Control Policy را پیدا خواهیم کرد
به طور ساده SELinux وظیفه پیاده سازی MAC مخفف Mandatory Access Control و DAC مخفف Discretionary Access Control می باشد را دارد. پیاده سازی MAC به مدیران شبکه امکان محدودیت سازی و ایجاد Access Control Policy بر روی کاربران به منظور محدود سازی دسترسی آن ها به دیوایس ها، شبکه ها، برنامه ها و راه شروع Process های مختلف در سیستم را می دهد. برای مثال دسترسی یک کاربر به سیستم به صورت GUI، در این مکان کاربر به تمام قسمت های سیستم دسترسی دارد و برای مثال ما قصد نداریم قسمتای مهمی مثله SSH-Key های مارا کاربر ببینید با استفاده از SELinux توانایی متمایز سازی دسترسی آن به فایل های SSH-Key را پیدا می کنیم
در کرنل لینوکس ماژولی تحت عنوان LSM (مخفف Linux Security Module) وجود دارد که با استفاده از آن میتوانید علاوه بر DAC یک لایه امنیتی بیشتر به Process ها ,Service ها و نرم افزار های فعال سیستم اضافه کند.
به صورت پیش فرض SELinux پس از نصب بر روی هر Operation System این حالت را به خود می گیرد. در این حالت SELinux دسترسی های درون سیستم را تعیین میسازد و دسترسی های غیرمجاز و غیرمعتبر به صورت Log ذخیره می کند.
این حالت که در اکثر مواقع در محیط های مختلف حساس مورد استفاده قرار نمی گیرد بیشتر جنبه تست کارکرد SELinux را دارد. دراین حالت فقد پیغام های اخطار از طرف Kernel درقالب پیغام های AVC و یا همان Access Visibility به سمت دسترسی های غیرمجاز بسنده می کند/
دراین حالت SELinux غیرفعال می باشد.
فایل پیکربندی SELinux در مسیر زیر قرار دارد
/etc/selinux/config
محتویات این فایل را با دستور cat مشاهده می کنیم
┌─[✗]─[AmirHosein@Parrot]─[~] └──╼ $cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # default - equivalent to the old strict and targeted policies # mls - Multi-Level Security (for military and educational use) # src - Custom policy built from source SELINUXTYPE=default # SETLOCALDEFS= Check local definition changes SETLOCALDEFS=0
ما با استفاده از دستور sestatus توانایی دیدن حالت فعلی selinux به شکل زیر هستیم:
┌─[AmirHosein@Parrot]─[~] └──╼ $sestatus SELinux status: disabled
همانظور که مشاهده می کنید بر روی حالت disabled قرار دارد
به منظور فعال سازی آن بیکربندی فایل /etc/selinux/config قسمت SELINUX= را تغییر دهید( برای تغییر می توانید از یک ادیتور مانند nano استفاده کنید )
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # default - equivalent to the old strict and targeted policies # mls - Multi-Level Security (for military and educational use) # src - Custom policy built from source SELINUXTYPE=default # SETLOCALDEFS= Check local definition changes SETLOCALDEFS=0
سبس سیستم خود را با دستور زیر راه اندازی مجدد کنید
reboot
دیدن وضعیت selinux بعد از راه اندازی مجدد سیستم:
┌─[AmirHosein@Parrot]─[~] └──╼ $sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 23 Policy from config file: targeted