در این آموزش سعی داریم آموزشی در ارتباط با SELinux رو قرار بدیم باید متذکر بشم در برای اینکه متوجه بشید SELinux چی هست میتونید لینک زیر رو ببینید
https://en.wikipedia.org/wiki/Security-Enhanced_Linux
چون من فرض میکنم در ارتباط با اون اطلاعات لازم رو دارید
۳ تا وضعیت برای SELinux وجود دارد که به ترتیب هر کدام را بررسی میکنیم
سه حالت فوق به اسامی زیر هست
در مرحله باید باید بررسی کنیم چه نوعی برای ما فعال هست پس دستور زیر را در ترمینال وارد کنید
getenforce
در صورتی که تغییر در SELinux انجام نداده باشید باید Enforcing را برای شما نمایش دهد. یک روش دیگری هم برای دیدن وضعیت فعال SELinux وجود دارد با دستور زیر که به همراه خروجی دستور نمایش داده شده است.
-> $sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 31
برای این منظور فرض کنید ما میخواهیم حالت را از enforcing به permissive تغییر دهیم از دستور زیر استفاده میکنیم
[root@dlp ~]# setenforce 0 [root@dlp ~]# getenforce Permissive
و برای برگشت به حالت enforcing به شکل زیر استفاده کنید
[root@dlp ~]# setenforce 1 [root@dlp ~]# getenforce Enforcing
فقط توجه داشته باشید در صورت ریستارت کردن سیستم همه چیز به حالت پیش فرض برمیگرده
فقط کافیه فایل etc/selinux/config/
را با هر ادیتوری که دوست دارید باز کنید ما از vi استفاده کردیم در جلوی SELINUX=enforcing
حالت مورد نظر خودتان را بنویسید.نمونه خروجی فایل
[root@dlp ~]# vi /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. # change value you'd like to set SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
بعد از تغییر حالت باید سیستم را ریستارت کنید با دستور زیر
reboot
اگر به هر دلیلی SELinux را غیرفعال کردید و میخواهید مجددا آنرا فعال کنید باید برچسب گذاری را مجددا انجام دهید برای این منظور دستور زیر را در ترمینال وارد بکنید و در انتها سیستم را ریستارت میکنیم.
[root@dlp ~]# touch /.autorelabel [root@dlp ~]# reboot
اگر SELinux در حالت Enforcing یا Permissionive قرار دارد ، می توانید Policy آنرا انتخاب کنید. در صورت نیاز می توانید Policy انتخاب شده را برای محیط خود تغییر دهید.
برای تغییر Policy باید فایل etc/selinux/config/
را تغییر دهید.
به صورت پیش فرض Policy که روی فدورا فعال هست targeted است
اما اگر نوع Policy را تغییر دهید ، باید فایل آنرا هم نصب کنید.
اگر بدون نصب Policy را تغییر دهید ، سیستم بالا نخواهد آمد، بنابراین مراقب باشید.
با دستور زیر وضعیت Policy را میبینیم در خظ آخر خروجی مشخص هست
[root@dlp ~]# 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=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
فرض کنید که ما میخواهیم Policy را به minimum تغییر دهیم برای این منظور اول باید فایل آنرا نصب کنیم با دستور زیر
sudo dnf -y install selinux-policy-minimum
و اگر از دایرکتوری etc/selinux/
خروجی بگیریم متوجه میشید که minimum نصب شده است.
root@dlp ~]# ll /etc/selinux total 16 -rw-r--r--. 1 root root 547 Mar 18 16:23 config drwxr-xr-x. 6 root root 4096 Mar 18 17:26 minimum -rw-r--r--. 1 root root 2321 Nov 20 16:04 semanage.conf drwxr-xr-x. 6 root root 4096 Mar 18 16:24 targeted
حالا در این مرحله میخواهیم Policy را به minimum تغییر دهیم پس با ادیتور مورد علاقه خودتان فایل رو باز میکنیم
root@dlp ~]# vi /etc/selinux/config # change "SELINUXTYPE" section # 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=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=minimum
همانطور که مشخص هست ما خط آخر را به minimum تغییر دادیم سیستم را برای اعمال تغییرات ریستارت بکنید برای دیدن وضعیت دستور زیر را در ترمینال تایپ کنید
[root@dlp ~]# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: minimum # just changed Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31
۳ بسته برای minimum در مخازن وجود دارد که به ترتیب هر کدام را توضیح میدیم
کنترل دسترسی به پرونده ها یا فهرست هابه صورت کلی SELinux Context گفته می شود.
SELinux Context دارای نحو زیر است.
[SELinux User]:[Role]:[Type]:[Level]