SELinux چیست و چگونه کار میکند؟
سیستمعامل لینوکس یکی از محبوبترین و حرفهایترین سیستمعاملهایی است که میتوانید برای مدیریت سرورها از آن استفاده کنید. این سیستمعامل ویژگیهای مختلفی دارد که امنیت سرور را افزایش میدهد. یکی از روشهایی که میتوانید با استفاده از آن بهراحتی امنیت سیستمعامل سرور خود را افزایش دهید، استفاده از SELinux است.
Security Enhanced Linux یا همان SELinux یک معماری امنیتی پیشرفته مبتنی بر لینوکس است که قدرت اختیار فوقالعادهای به مدیران سرور میدهد. میتوانید به کمک این ماژول امنیتی امنیت دادههای سرور خود را بیشتر کرده و آن را در برابر حملات مخرب محافظت کنید. اگر میخواهید در مورد SELinux چیست و کاربردهای آن آشنا شوید میتوانید تا انتهای این مقاله ما را همراهی کنید.
SELinux چیست ؟
SELinux (Security-Enhanced Linux) یک ماژول امنیتی برای هسته لینوکس است که توسط آژانس امنیت ملی ایالات متحده (NSA) توسعه داده شده است. هدف اصلی SELinux افزایش امنیت سیستمهای لینوکس از طریق اعمال سیاستهای دسترسی دقیق به منابع سیستم، بهویژه فایلها، پروسسها، و دستگاهها است. این ابزار از یک مدل کنترل دسترسی اجباری (MAC) استفاده میکند که میتواند دسترسیهای کاربران و برنامهها را بهطور دقیقتری محدود کند و از حملات امنیتی مانند دسترسی غیرمجاز به دادهها و اجرای برنامههای مخرب جلوگیری کند.
در SELinux، هر فایل، پروسه، و حتی هر کاربر دارای یک برچسب امنیتی خاص است که تعیین میکند چه دسترسیهایی میتواند به آنها داده شود. سیاستهای SELinux بهطور پیشفرض بهگونهای طراحی شدهاند که بیشترین امنیت را فراهم کنند، حتی اگر برنامهها و کاربران به اشتباه یا عمدی بخواهند اقدامات مخربی انجام دهند. این سیاستها میتوانند شامل محدودیتهای دسترسی به فایلها، محدودیتهای پردازش، و حتی کنترلهایی برای شبکه و دستگاههای خاص باشند.
یکی از ویژگیهای برجسته SELinux این است که در صورت بروز نقض امنیتی، میتواند اقدامات پیشگیرانه انجام دهد، مانند مسدود کردن دسترسی یا حتی ثبت وقایع بهطور دقیق. SELinux بهطور پیشفرض در اکثر توزیعهای لینوکس فعال است و میتوان آن را برای کاربردهای مختلف پیکربندی کرد. اگرچه در برخی مواقع ممکن است مشکلاتی ایجاد کند یا نیاز به تنظیمات خاص داشته باشد، اما در مجموع به عنوان ابزاری موثر برای تقویت امنیت سیستمهای لینوکس شناخته میشود.
اصطلاح Security-Enhanced
اصلاح Security Enhanced یکی از اصطلاحات مهم در دنیای لینوکس است. این اصطلاح به معنای امنیت تقویت شده بوده و بهعنوان ماژولی مستقل برای لینوکس شناخته میشود. در واقع با فعالسازی این ماژول، قابلیتهایی به کرنل لینوکس اضافه میشود که در مقام توسعهدهنده بوده و برخی از فرایندها را مسدود میکند.
بسیاری از توزیعهای لینوکس این ماژول را بهصورت یک فیچر پیشفرض درون خود دارند؛ اما در صورت عدم وجود این ماژول روی توزیع میتوانید آن را بهراحتی نصب و فعالسازی کنید. با کمک این ماژول کنترل نرمافزارها، نصب آنها و مجوز استفاده آنها با تدابیر امنیتی کنترل میشود.
ویژگیهای SELinux و نکات مهم قبل از استفاده
ویژگیهای بارزی که در ماژول SELinux وجود دارد شامل موارد زیر هستند:
- فراهم Policy امنیتی سازگار با هر سیستم
- اجرای فرایند وراثت و مقداردهی اولیه
- دارای سرویسهای کرنل و اشیا برچسبهای مخصوص به خود
- محافظتشدن و محرمانه بودن دادهها
- تعریف رابطهای Policy به طور کامل و آسان
- پشتیبانی از تغییرات Policy
- و…
یکی از ویژگیهایی که باید قبل از نصب و فعالسازی SELinux با آن آشنا باشید، ویژگی MAC (مخفف عبارت Mandatory Access Control) است. MAC روی DAC پیادهسازی شده و در حال حاضر تمامی توزیعهای لینوکس از آن بهره میبرند. موجودیتهایی که در این ماژول وجود دارد شامل کاربر، گروه و متفرقه میشود که بهتمامی آنها به اختیار UGO (User, Group, Others) گفته میشود.
هر کدام از این موجودیتها مجوز ترکیبی روی یکی از فهرستها دارند. به طور مثال، یکی از کاربرهای Linixhint در فهرست اصلی خودمان داریم که مجوزهای به خصوصی دارد. این کاربر به گروه خود و سایز گروهها مربوط بوده و میتوانید مجوزهای آن را در خروجیهای زیر مشاهده کنید.
تمامی دسترسیهای که در تصویر مشاهده میکنید میتواند توسط کاربر Linuxhint تغییر پیدا کند.
راهاندازی SELinux در سیستمعامل CentOS
حال که ویژگیها و نحوه کارکردن SELinux را بررسی کردیم بهتر است راهاندازی آن در سیستمعامل CentOS را نیز بررسی کنیم.
در اولین مرحله باید سرویسهای SFTP و Apache را نصب کنید که دستور زیر به این کار کمک میکند:
ls -l /home/linuxhint/ [/cc$ sudo yum install httpd
همانند تصویر زیر با استفاده از حرف Y مجوز نصب را صادر نمایید.
در بخش بعدی با دستور زیر سرویس httpd را راهاندازی کنید:
ls -l /home/linuxhint/ [/cc$ sudo yum install httpd [/cc$ service httpd start
سپس باید بسته vsftpd را روی CentOS نصب کنید که دستور زیر در این کار کمک میکند:
sudo yum install vsftpd
پس از نصب باید این سرویس را فعال کنید:
service vsftpd start
با کمک دستور زیر میتوانید بستههای SELinux که در توزیع مدنظر سیستمعامل شما نصب هستند را مشاهده کنید:
rpm -qa | grep selinux
حال میتوانید به کمک دستور زیر پکیجهایی که موردنیاز SELinux است را نصب کنید:
sudo yum install policycoreutils selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans
حال تمامی بستههای SELinux و سرویسهای موردنیاز آن در سیستم شما نصب شدهاند.
انواع حالتهای SELinux
برای این که بتوانید به بهترین شکل از ماژول SELinux استفاده کنید باید با حالتهای مختلف آن آشنا باشید. این حالتها به شکل زیر هستند:
1.Permissive
حالت Permisive یکی از حالتهای ماژول SELinux است که مشابه به یک حالت نیمهفعال است. در این حالت سرویس به طور کامل کارنکرده و هیچکدام از دسترسیها را محدود نمیکند. اما در این حالت نقض هر کدام از Policyهای SELinux ثبت شده و برای حالتهای آزمایشی کاربردی است.
2.Enforcing
این حالت را میتوان حالت اصلی ماژول SELinux دانست. در حالت Enforcing امنیت سیستم یا سرور شما به طور کامل با این ماژول تأمین میشود. در چنین حالتی ماژول تمامی دسترسیهای غیرمجاز بهواسطه فرایندها و کاربران به اجرا گذاشته خواهد شد.
نکته دیگری که باید دررابطهبا این حالت بدانید این است که این ماژول در حالت Enforcing تمامی عملکردهای اضافی را درون لاگ خود ثبت خواهد کرد. میتوانید برای محدودکردن دسترسیهای غیرمجاز از این حالت استفاده کنید.
3.Disabled
همانطور که از نام حالت Disabled مشخص است، در این حالت تمامی عملکردهای ماژول SELinux به طور کامل غیرفعال خواهد شد. در واقع اگر میخواهید سیستمعامل لینوکس شما بدون هیچگونه امنیت اضافی کار کند میتوانید روی این حالت سوئیچ کنید. برای این که بدانید ماژول SELinux در چه حالتی فعال است میتوانید از دستور زیر استفاده کنید:
getenforce
همچنین دستور زیر میتواند خالت فعالیت دقیق ماژول را به شما نمایش دهد:
sestatus
با کمک دستور زیر میتوانید فایل پیکربندی ماژول را بررسی کنید:
sudo cat /etc/selinux/config
میتوانید در این فایل حالتهای مختلف SELinux را بررسی کنید.
فعالکردن SELinux در CentOS
اگر میخواهید ماژول SELinux را در سیستمعامل خود فعال کنید باید در اولین مرحله فایل پیکربندی آن را باز کنید:
sudo nano /etc/selinux/config
با باز کردن فایل پیکربندی مشاهده میکنید که ماژول در حالت Enforcing قرار گرفته است.
سپس باید با استفاده از دستور زیر حالت را به Primisive تغییر دهید تا فایلهای ضروری Context مربوط به خود را داشته باشند:
SELINUX=permissive
حال باید CentOS را با استفاده از دستور زیر مجدداً راهاندازی کنید:
sudo reboot
با این کار تمامی فایلها با کانتکست مخصوص به خود لیبلگذاری میشوند تا SELinix با خطایی مواجه نشود.
در مرحله بعدی باید به دنبال رشته SELinux is preventing باشید.
sudo cat /var/log/messages | grep "SELinux is preventing"
پس از واردکردن دستور بالا در صورت بروزندادن خطا به مرحله بعد بروید.
sudo cat /var/log/messages | grep "SELinux"
حال باید حالت SELinux را دوباره به حالت Enforcing تغییر دهید:
sudo nano /etc/sysconfig/selinux
سپس تغییرات را با استفاده از کلیدهای ترکیبی Ctrl+O ذخیره کنید.
برای ثبت تغییرات مجدداً CentOS را راهاندازی کنید:
sudo reboot
سپس با کمک دستور زیر وضعیت SELinux را بررسی نمایید:
sestatus
میتوانید همانند تصویر زیر مود ماژول را بررسی کنید:
برای تغییردادن مود ماژول میتوانید از دستور زیر کمک بگیرید:
sudo setenforce permissive
sestatus
در آخرین مرحله نیز برای بازگرداندن SELinux به حالت Enforcing از دستور زیر کمک بگیرید:
sudo setenforce enforcing
سخن پایانی
ماژولهای مختلفی هستند که میتوانید با نصب و راهاندازی آنها در سیستمعامل لینوکس، عملکرد و امنیت آن را به طور کال تقویت کنید. ماژول SELinux یکی از محبوبترین این ماژولها است که با محدودکردن دسترسی به فایلهای مختلف امنیت سرور شما را بیشتر میکند.
این ماژول در بیشتر توزیعهای لینوکس وجود دارد؛ در صورتی هم که توزیع لینوکس سرور شما مجهز به این ماژول نبود میتوانید با دستوراتی بهراحتی آن را نصب و راهاندازی کنید. در این مقاله آموزشی سعی کردیم به طور کامل تمامی مراحلی که برای نصب، راهاندازی و تغییر حالت این ماژول وجود دارد را با هم بررسی کردیم.
SELinux چیست؟
SELinux نوعی معماری امنیتی است که مبتنی بر لینوکس بوده و برای ارتقای امنیت سیستمعاملهای لینوکسی استفاده میشود.
چه سازمانی SELinux را توسعه داده است؟
SELinux یک ماژول امنیتی است که برای اولینبار توسط آژانس ملی امنیت ایالات متحده آمریکا برای هسته لینوکس ارائه شد.
آیا عملکرد SElinux همانند فایروال است؟
به دلیل محدودکردن دسترسی به برخی از فایلها میتوان عملکرد این ماژول را مانند فایروال دانست.
آیا پس از نصب و فعالسازی SELinux میتوان آن را غیرفعال کرد؟
بله؛ شما میتوانید با استفاده از دستورات خاصی حالت این ماژول را به حالت غیرفعال تغییر دهید.
فاماسرور