Selinux چیست و چگونه کار می کند؟

خرداد 30, 1399Security Enhanced Linux

امنیت در دیدگاه سنتی عبارت است از ایجاد محدودیت در کاربر ها و یا فایل ها بواسطه تعیین permission و همچنین راه اندازی یک دیوار آتش ( Firewall ) جهت نظارت بر ارتباطات شبکه ای یک سیستم. آیا بهتر نبود سیستمی سطوح دسترسی نرم افزار ها و فایل ها و یا تغییر آنها را کنترل می کرد؟ چه اتفاقی خواهد افتاد اگر یک کاربر فایل کلید امنیتی SSH را به اشتباه برای عموم قابل خواندن کند؟

Selinux کوتاه شده عبارت Security-Enhanced Linux به معنی لینوکس با امنیت بهبود یافته است. این ماژول کرنل ( Kernel ) در 22 دسامبر سال 2000 توسط آژانس ملی امنیت آمریکا و تحت لایسنس GPL توسعه داده شد و هدف آن بهبود امنیت کلی سیستم عامل لینوکس بود. سیستم نظارتی selinux از نوع MAC می باشد که کوتاه شده عبارت mandatory access control ( کنترل دسترسی اجباری ) است. در این سامانه ، سیستم عامل دسترسی های سیستمی را کنترل کرده و در مواردی که امنیت در خطر باشد ، محدودیت هایی را اعمال می کند. به عنوان مثال :

سطوح دسترسی های لینوکس

  • Administrator ها هیچ راهی برای کنترل کاربر ها ندارند. شرایطی را متصور شوید که کاربر می تواند به فایل های حساس سیستمی مانند کلید SSH و یا پوشه های حاوی آنها دسترسی خواندن همگانی بدهد. مثلا /ssh./~
  • پردازش ها می توانند سطوح دسترسی را تغییر دهند. فایل های ایمیل یک کاربر تنها باید توسط او قابل خواندن باشد. ولی نرم افزار mail client می تواند دسترسی خواندن عمومی به این فایل ها بدهد.پردازش ها سطوح دسترسی کاربران اجرا کننده آنها را به ارث می برند. به عنوان مثال مرورگر اینترنتی در اثر آلوده شدن با یک بدافزار می تواند کلید SSH محرمانه کاربر را بخواند. هر چند توجیه و نیازی برای این رفتار وجود ندارد.
  • توسعه سلینوکس از نسخه 2.6 کرنل در سال 2003 در حوزه کاری تیم توسعه اصلی هسته لینوکس به سرپرستی لینوس توروالدز ادغام شد. هم اکنون سلیونکس در بسیاری از توزیع های لینوکسی بصورت پیشفرض وجود دارد. اولین توزیع لینوکسی که بصورت پیشفرض از selinux استفاده کرد RedHat نسخه 4 بود.Selinux سه مد ( mode )  کاری دارد:

Enforcing

این حالت پیشفرض سلینوکس است و نصب آن بر روی همین مد است. در این شرایط سیاست های امنیتی selinux بر روی سیستم اعمال می شود ، دسترسی های غیر مجاز ممنون و فعالیت ها در قالب لاگ ثبت می شود.

Permissive

در این حالت selinux فعال است ولی سیاست های آن الزام آور نبوده و تنها به اخطار دادن و ثبت ریز فعالیت ها بسنده می کند. این مد بیشتر برای عیب یابی و بررسی رفتار selinux مناسب است.

Disabled

در این حالت selinux خاموش است. بواسطه دستور sestatus می توان وضعیت selinux را بر روی سیستم بررسی نمود. تنظیمات selinux در فایل زیر قابل مشاهده است:

/etc/selinux/config

با اعمال تغییر در =SELINUX می توان حالت کلی selinux را از لحظه بوت تعیین کرد. همچنین در زمان کارکرد سیستم عامل می توان با دستور setenforce وضعیت کاری selinux را تغییر داد. گزینه های قابل استفاده در مقابل setenforce عبارتند از:

  • Enforcing یا 1 جهت قرار دادن در وضعیت Enforcing
  • Permissive جهت قرار داده در وضعیت عیب یابی
  • 0 جهت خاموش کردن

جهت استفاده بهینه از Selinux نیاز به دانش مدیریت آن است. بدلیل ضعف دانش مدیران سرور در این حوزه ، غیر فعال کردن آن را که ساده ترین گزینه است ترجیح می دهند. البته در نادر مواردی بدون ایجاد ریسک می توان اقدام به غیرفعال کردن آن نمود که طبیعتا دانش و اشراف بالای مدیر آن سرور را طلب می کند.

 

بعد از توضیحات مقدماتی فوق میرسیم به بخش مهم این مطلب آموزشی و در واقع هدف اصلی که این پست رو در سایت قرار دادم ، یعنی  کلیپ 3 قسمتی از استاد ویقت فرانسوی .  لیست دستورات استفاده شده در این کلیپها هم قراردادم ، کلیپها هم به زبان انگلیسی روان هست.

 

 

 

دستورات اجرا شده در کلیپهای فوق :

Agenda

*what is Selinux and how does it work?
*Important task #1 :working with labels
*Understanding Booleans
*Analyzing Selinux behavior
*Fixing selinux problems
*case study



getenforce
vim /etc/sysconfig/selinux
setenforce

cd /
ls -Z
ps -Zaux



yum install httpd -y
cd /var/www
ls -Z

semanage fcontext -l
semanage fcontext -l |grep httpd

#generate manpage
man -k _selinux
yum whatprovides */sepolicy
yum -y install policycoreutils-devel
sepolicy --help
man sepolicy
man sepolicy-manpage
cd /usr/share/man
ls
sepolicy manpage -a -p /usr/share/man/man8
man -k _selinux
man apropos
mandb
man -k _selinux
man httpd_selinux
cd /var/www
ls -Z


man semanage-fcontext
mkdir /web
vim /web/index.html
hello from myweb

vim /etc/httpd/conf/httpd.conf

DocumentRoot "/web"


<Directory "/web">
AllowOverride None
Require all granted
</Directory>


<Directory "/web">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>



systemctl restart httpd
yum -y install elinks
elinks http://localhost

tailf /var/log/audit/audit.log

grep AVC /var/log/audit/audit.log


semanage fcontext -a -t httpd_sys_content_t  "/web(/.*)?"
restorecon -R -v /web
elinks http://localhost



Understanding booleans

*listing them
*showing more details
*setting them persistently


getsebool -a
semanage boolean -l
man -k _selinux | grep ftp
man ftpd_selinux
getsebool -a  | grep ftp
sesearch -b ftpd_anon_write -ACT
sesearch -b ftpd_anon_write -ACT | grep -v type_transit

setsebool -P ftpd_anon_write on




 

منابع

https://pentestcore.com/selinux-modules/
https://parspack.com/blog/hosting/server/selinux
https://linux-zone.org/forums/%D8%A7%D9%86%D8%AC%D9%85%D9%86-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-linux-forum/%D8%AA%D9%88%D8%B2%DB%8C%D8%B9-%D9%87%D8%A7%DB%8C-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-linux-distributions/general-linux/26095-selinux-%DA%86%DB%8C%D8%B3%D8%AA-%D8%9F-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84
آموزش SELinux در CentOS 7 – بخش اول: مفاهیم پایه
https://www.electronicdesign.com/technologies/embedded-revolution/article/21807408/dont-do-it-disabling-selinux

 

 

 

 


پست های مرتبط

کامنت کردن محدوده ایی از خطوط در vim

شهریور 16, 1400ترفندهای vim

خیلی وقتها نیاز داریم که چندین خط رو در ویرایشگر محبوب vim بصورت همزمان کامنت کنیم ، در این ویدیو کوتاه بصورت عملی اینکار رو آموزش می دیم. دستوری که وارد کردیم به این معنیه که ابتدای محدوده خطوطی که مشخص کردیم (خطوط 813 تا 845) کاراکتر # رو جایگذاری کن. comment out range of …

ادامه مطلب
Security Enhanced Linux چیست

شهریور 12, 1400Security Enhanced Linux

مقدمه امنیت در دیدگاه سنتی عبارت است از ایجاد محدودیت در کاربر ها و یا فایل ها بواسطه تعیین permission و همچنین راه اندازی یک دیوار آتش ( Firewall ) جهت نظارت بر ارتباطات شبکه ای یک سیستم. آیا بهتر نبود سیستمی سطوح دسترسی نرم افزار ها و فایل ها و یا تغییر آنها را …

ادامه مطلب

یک نظر ارسال کنید

ایمیل شما نزد ما امن می ماند