
ماژول SELinux چیست و چگونه از آن استفاده کنیم؟ + آموزش غیر فعال کردن
سیستمهای لینوکسی در سرورها و محیطهای حیاتی سازمانها گسترده شدهاند، امنیت سیستمها یکی از اولویتهای اصلی است. SELinux (Security-Enhanced Linux) یک چارچوب امنیتی قدرتمند برای لینوکس است که با اعمال سیاستهای دقیق کنترل دسترسی، خطرات ناشی از نفوذ و سوءاستفادهها را کاهش میدهد و به مدیران سیستم اجازه میدهد سطح امنیت را بهصورت دقیق و هوشمند مدیریت کنند.
SELinux چیست؟
SELinux یک ماژول امنیتی برای کرنل لینوکس است و هدف آن افزایش امنیت سیستمهای لینوکسی با استفاده از مدل کنترل دسترسی اجباری (Mandatory Access Control – MAC) است. این ابزار دسترسی فرآیندها و کاربران به منابع سیستم مانند فایلها، پورتها و پروسهها را محدود میکند و تنها مجوزهای تعریفشده در سیاستها را میپذیرد.
در واقع SELinux یک لایه محافظتی فراتر از مجوزهای استاندارد لینوکس ارائه میدهد. حتی اگر یک کاربر یا سرویس موفق به دور زدن مجوزهای سنتی شود، سیاستهای SELinux میتوانند از دسترسی غیرمجاز جلوگیری کنند. این ویژگی باعث میشود SELinux ابزاری حیاتی برای سرورهای حیاتی، محیطهای تولید و سیستمهایی باشد که امنیت بالایی نیاز دارند.
حالتهای اجرای SELinux
Enforcing (اجرای کامل)
در این حالت SELinux تمامی سیاستهای امنیتی را بهصورت فعال اجرا میکند و دسترسیهای غیرمجاز را مسدود میکند. این حالت مناسب محیطهای تولیدی است که امنیت سیستم برایشان حیاتی است.
Permissive (مجازی یا هشداردهنده)
در این حالت SELinux قوانین را بررسی میکند و تخلفات را ثبت میکند اما مانع از اجرای آنها نمیشود. این حالت بیشتر برای تست سیاستها و بررسی سازگاری برنامهها قبل از فعال کردن Enforcing استفاده میشود.
Disabled (غیرفعال)
در این حالت SELinux بهطور کامل غیرفعال است و هیچ سیاست امنیتی اعمال نمیشود. این حالت تنها در شرایط خاص و با آگاهی کامل از خطرات احتمالی توصیه میشود، زیرا سیستم بدون محافظت SELinux در معرض تهدیدات قرار میگیرد.
معماری و نحوه کار SELinux
کرنل لینوکس با ماژول امنیتی SELinux:
هسته لینوکس نقش اصلی را در اعمال سیاستهای SELinux ایفا میکند. ماژول امنیتی SELinux در کرنل قرار دارد و مسئول کنترل دسترسی به منابع سیستم است. هر زمان که یک پروسه بخواهد به یک فایل، پورت یا منبع دیگری دسترسی پیدا کند، این درخواست ابتدا توسط ماژول امنیتی بررسی میشود تا مطابقت آن با سیاستها سنجیده شود.
سیاستهای امنیتی (Policies):
سیاستها مجموعه قوانینی هستند که دسترسی کاربران، فرآیندها و سرویسها به منابع سیستم را تعریف میکنند. این قوانین مشخص میکنند که چه چیزی مجاز است و چه چیزی غیرمجاز. SELinux به دو نوع سیاست اصلی تقسیم میشود: Targeted Policy برای سرویسها و فرآیندهای خاص، و MLS/MCS Policy برای محیطهای حساس با سطح دسترسی پیچیده.
نوع دسترسیها و مجوزها (Types and Contexts):
هر فایل پروسه و پورت در سیستم دارای یک context امنیتی است که شامل اطلاعات هویت و نوع دسترسی است. این context به SELinux کمک میکند تصمیم بگیرد که آیا یک پروسه میتواند به یک منبع دسترسی پیدا کند یا خیر.
ماژولهای مدیریت و ابزارهای کاربری:
ابزارهایی مانند sestatus، getenforce و audit2allow برای بررسی وضعیت SELinux، تغییر حالت اجرا و تحلیل لاگها استفاده میشوند. این ابزارها به مدیران سیستم اجازه میدهند سیاستها را مدیریت کنند، خطاها را شناسایی کنند و دسترسیها را مطابق نیاز سازمان تنظیم کنند.
لاگها و مکانیزم گزارشدهی (Audit Logs):
SELinux همه فعالیتها و تلاشهای دسترسی غیرمجاز را در audit log ثبت میکند. این لاگها برای شناسایی نقاط ضعف امنیتی، تحلیل نفوذ و بهبود سیاستهای امنیتی بسیار حیاتی هستند. گزارشدهی دقیق SELinux کمک میکند تا مدیران سیستم اقدامات اصلاحی را سریعاً اعمال کنند و امنیت سیستم را تقویت نمایند.
کاربردهای SELinux در سازمانها
- محافظت از سرویسهای حیاتی سرور
- جلوگیری از نفوذ و دسترسی غیرمجاز
- تضمین امنیت محیطهای تولید
- کنترل دقیق دسترسی کاربران و فرآیندها
- کاهش ریسک حملات داخلی و بدافزارها
- اعمال سیاستهای امنیتی سازمانی
- مدیریت دسترسی به فایلها، پورتها و منابع حساس
انواع سیاستهای SELinux
Targeted Policy
این سیاست بهطور پیشفرض روی اکثر توزیعهای لینوکس فعال است و فقط سرویسها و فرآیندهای حساس را تحت کنترل قرار میدهد. هدف آن افزایش امنیت بدون ایجاد مشکل برای برنامههای معمولی و کاربران است.
MLS (Multi-Level Security)
این سیاست برای محیطهای با حساسیت بالا طراحی شده است و بر اساس سطوح مختلف امنیتی، دسترسی به منابع را محدود میکند. هر کاربر و هر منبع دارای سطح امنیتی مشخص است و قوانین دقیق برای تعامل بین سطوح مختلف اعمال میشود.
MCS (Multi-Category Security)
سیاست MCS مشابه MLS است اما به جای سطوح امنیتی، بر اساس دستهبندیهای مختلف منابع و دادهها اعمال میشود. این سیاست بیشتر برای کنترل دسترسی به دادههای دستهبندیشده در محیطهای سازمانی کاربرد دارد.
آموزش نصب SELinux و دستورات اولیه
نصب SELinux در توزیعهای لینوکس
در بسیاری از توزیعهای لینوکس مانند Red Hat، CentOS و Fedora، SELinux بهصورت پیشفرض نصب و فعال است. برای بررسی وضعیت SELinux میتوان از دستور زیر استفاده کرد:
sestatus
اگر SELinux نصب نباشد، میتوانید بستههای مربوطه را با دستور زیر نصب کنید:
sudo yum install selinux-policy selinux-policy-targeted
در توزیعهای مبتنی بر Debian/Ubuntu از این دستور استفاده کنید:
sudo apt-get install selinux-basics selinux-policy-default
تغییر حالت اجرای SELinux
برای تغییر حالت SELinux بین Enforcing، Permissive و Disabled میتوان از دستور زیر استفاده کرد:
sudo setenforce 1 فعال کردن Enforcing
sudo setenforce 0 فعال کردن Permissive
برای دائمی کردن تغییر حالت، فایل پیکربندی /etc/selinux/config را ویرایش کنید و مقدار SELINUX= را به یکی از مقادیر enforcing، permissive یا disabled تغییر دهید.
بررسی و مدیریت سیاستها و contextها
برای مشاهده context یک فایل از دستور زیر استفاده کنید:
ls -Z filename
برای تغییر context میتوانید از دستور chcon و برای بازیابی context پیشفرض از دستور restorecon استفاده کنید:
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
sudo restorecon /var/www/html/index.html
مشاهده و تحلیل لاگها
تمام فعالیتها و دسترسیهای مسدود شده توسط SELinux در فایل لاگ /var/log/audit/audit.log ذخیره میشوند. برای تحلیل سریع لاگها و ایجاد قوانین جدید میتوان از ابزار audit2allow استفاده کرد:
sudo cat /var/log/audit/audit.log | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp
با این دستورات و ابزارها، مدیران سیستم میتوانند SELinux را نصب، پیکربندی و مدیریت کنند و سطح امنیت سیستم خود را بهصورت دقیق کنترل نمایند.
نحوه غیر فعال کردن SELinux
غیر فعال کردن SELinux به دلایل خاصی مانند رفع مشکلات سازگاری برنامهها یا آزمایش محیط ممکن است لازم شود، اما قبل از انجام این کار باید آگاه باشید که با غیرفعال کردن SELinux سیستم بدون لایه محافظتی اصلی خود در برابر دسترسیهای غیرمجاز قرار میگیرد.
برای غیر فعال کردن SELinux به صورت موقت، میتوان از دستور setenforce استفاده کرد:
sudo setenforce 0
این دستور حالت SELinux را به Permissive تغییر میدهد و سیاستها دیگر اجرا نمیشوند، اما تغییرات پس از راهاندازی مجدد سیستم از بین میرود.
برای غیرفعال کردن دائمی SELinux باید فایل پیکربندی /etc/selinux/config را ویرایش کنید و مقدار SELINUX= را به disabled تغییر دهید:
SELINUX=disabled
سپس سیستم را ریاستارت کنید تا تغییرات اعمال شود. پس از راهاندازی مجدد، SELinux کاملاً غیر فعال خواهد بود و هیچ سیاست امنیتی اعمال نخواهد شد.
توصیه میشود تنها در شرایط خاص و با آگاهی کامل از خطرات امنیتی، SELinux را غیرفعال کنید و در محیطهای تولیدی همواره آن را فعال نگه دارید.
جمعبندی…
SELinux یک ابزار امنیتی قدرتمند برای سیستمهای لینوکسی است که با اعمال سیاستهای دقیق کنترل دسترسی، از سیستم و دادههای حیاتی سازمانها محافظت میکند. با درک معماری، حالتهای اجرایی و سیاستهای SELinux و استفاده صحیح از دستورات و ابزارهای مدیریت، مدیران سیستم میتوانند سطح امنیتی بالایی ایجاد کرده و خطرات نفوذ و سوءاستفاده را به حداقل برسانند.
موارد اخیر
-
معرفی و بررسی کامل سیستمعامل CentOS؛ از گذشته تا جانشینهای امروز
-
معرفی سیستمعامل راکی لینوکس (Rocky Linux) و مقایسه آن با CentOS
-
معرفی سیستمعامل AlmaLinux و کاربرد های آن | AlmaLinux برای چه کسانی مناسب است؟
-
ماژول SELinux چیست و چگونه از آن استفاده کنیم؟ + آموزش غیر فعال کردن
-
راهکار بازیابی از فاجعه یا Disaster Recovery چیست و چرا اهمیت دارد؟
-
فرایند Failover چیست و چه انواعی دارد؟ تفاوت Failover با Disaster Recovery
-
SAML چیست و چرا برای سازمانها اهمیت دارد؟
-
پروتکل OAuth چیست و چگونه کار میکند؟ مزایا و معایب OAuth
-
برسی RTO و RPO و تفاوتهای آنها : چرا RTO و RPO برای کسبوکار حیاتی هستند؟
-
تکثیر داده یا Data Replication چیست و چگونه آنرا پیاده سازی کنیم؟
برترین ها
-
ماژول SELinux چیست و چگونه از آن استفاده کنیم؟ + آموزش غیر فعال کردن
-
راهکار بازیابی از فاجعه یا Disaster Recovery چیست و چرا اهمیت دارد؟
-
فرایند Failover چیست و چه انواعی دارد؟ تفاوت Failover با Disaster Recovery
-
SAML چیست و چرا برای سازمانها اهمیت دارد؟
-
پروتکل OAuth چیست و چگونه کار میکند؟ مزایا و معایب OAuth
اشتراک گذاری این مطلب
دیدگاهتان را بنویسید
نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *
