فهرست مندرجات

کانفیگ و بررسی SELinux

در این آموزش سعی داریم آموزشی در ارتباط با SELinux رو قرار بدیم باید متذکر بشم در برای اینکه متوجه بشید SELinux چی هست میتونید لینک زیر رو ببینید

https://en.wikipedia.org/wiki/Security-Enhanced_Linux

چون من فرض میکنم در ارتباط با اون اطلاعات لازم رو دارید

SELinux Operating Mode

۳ تا وضعیت برای SELinux وجود دارد که به ترتیب هر کدام را بررسی میکنیم

سه حالت فوق به اسامی زیر هست

بررسی mode فعال

در مرحله باید باید بررسی کنیم چه نوعی برای ما فعال هست پس دستور زیر را در ترمینال وارد کنید

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

تغییر mode بصورت موقت

برای این منظور فرض کنید ما میخواهیم حالت را از enforcing به permissive تغییر دهیم از دستور زیر استفاده میکنیم

[root@dlp ~]# setenforce 0
[root@dlp ~]# getenforce
Permissive 

و برای برگشت به حالت enforcing به شکل زیر استفاده کنید

[root@dlp ~]# setenforce 1
[root@dlp ~]# getenforce
Enforcing  

فقط توجه داشته باشید در صورت ریستارت کردن سیستم همه چیز به حالت پیش فرض برمیگرده

تغییر mode بصورت دائم

فقط کافیه فایل 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 Policy Type

اگر 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 Context دارای نحو زیر است.

[SELinux User]:[Role]:[Type]:[Level]