ProHoster > وبلاگ > اداره > برگه تقلب SELinux برای مدیران سیستم: 42 پاسخ به سؤالات مهم
برگه تقلب SELinux برای مدیران سیستم: 42 پاسخ به سؤالات مهم
ترجمه مقاله به طور اختصاصی برای دانشجویان دوره تهیه شده است "مدیر لینوکس".
در اینجا به سوالات مهم در مورد زندگی، جهان و همه چیز در لینوکس با امنیت بهبود یافته پاسخ خواهید داد.
"حقیقت مهم این است که همه چیز همیشه آنطور که به نظر می رسد نیست، دانش عمومی است..."
-داگلاس آدامز، راهنمای سواری مجانی به کهکشان
ایمنی. افزایش قابلیت اطمینان. مکاتبه. خط مشی. چهار اسب سوار آخرالزمان sysadmin. ما علاوه بر وظایف روزانه خود - نظارت، پشتیبان گیری، پیاده سازی، پیکربندی، به روز رسانی و غیره - مسئولیت امنیت سیستم های خود را نیز بر عهده داریم. حتی سیستمهایی که ارائهدهنده شخص ثالث توصیه میکند که امنیت پیشرفته را غیرفعال کنیم. انگار کاره اتان هانت از «ماموریت: غیرممکن»
در مواجهه با این معضل، برخی از مدیران سیستم تصمیم می گیرند قرص آبی، زیرا فکر می کنند هرگز پاسخ سوال بزرگ زندگی، جهان و همه اینها را نخواهند دانست. و همانطور که همه می دانیم، این پاسخ 42 است.
با توجه به کتاب راهنمای سفر به کهکشان، در اینجا 42 پاسخ به سؤالات مهم در مورد کنترل و استفاده وجود دارد. SELinux را در سیستم های شما
1. SELinux یک سیستم کنترل دسترسی اجباری است، به این معنی که هر فرآیند دارای یک برچسب است. هر فایل، دایرکتوری و شی سیستم دارای برچسب هایی نیز می باشد. قوانین خط مشی دسترسی بین فرآیندهای برچسب گذاری شده و اشیاء را کنترل می کند. هسته این قوانین را اجرا می کند.
2. دو مفهوم مهم عبارتند از: برچسب زدن - علامت گذاری (فایل ها، فرآیندها، پورت ها و غیره) و نوع اجرا (که فرآیندها را بر اساس انواع از یکدیگر جدا می کند).
4. هدف از تامین امنیت چند سطحی (امنیت چند سطحی - MLS) مدیریت فرآیندها (دامنه ها) بر اساس سطح امنیت داده هایی است که استفاده خواهند کرد. به عنوان مثال، یک فرآیند مخفی نمی تواند داده های فوق سری را بخواند.
5. تضمین امنیت چند دسته ای (امنیت چند دسته ای - MCS) از فرآیندهای مشابه در برابر یکدیگر محافظت می کند (به عنوان مثال، ماشین های مجازی، موتورهای OpenShift، جعبه های sandbox SELinux، کانتینرها و غیره).
6. گزینه های هسته برای تغییر حالت های SELinux در هنگام بوت:
autorelabel=1 → باعث می شود که سیستم برچسب گذاری مجدد را اجرا کند
selinux=0 → هسته زیرساخت SELinux را بارگیری نمی کند
enforcing=0 → بارگیری در حالت مجاز
7. اگر نیاز دارید کل سیستم را دوباره برچسب بزنید:
# touch /.autorelabel
#reboot
اگر علامتگذاری سیستم حاوی تعداد زیادی خطا باشد، ممکن است لازم باشد برای موفقیت در علامتگذاری در حالت مجاز بوت شوید.
8. برای بررسی فعال بودن SELinux: # getenforce
9. برای فعال/غیرفعال کردن موقت SELinux: # setenforce [1|0]
10. بررسی وضعیت SELinux: # sestatus
11. فایل پیکربندی: /etc/selinux/config
12. SELinux چگونه کار می کند؟ در اینجا یک نمونه علامت گذاری برای وب سرور آپاچی آمده است:
راه اندازی اسکریپت: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
فرآیند: /usr/sbin/httpd -DFOREGROUND → httpd_t
پورت ها: 80/tcp, 443/tcp → httpd_t, http_port_t
فرآیند در حال اجرا در زمینه httpd_t، می تواند با یک شی برچسب گذاری شده تعامل داشته باشد httpd_something_t.
13. بسیاری از دستورات یک استدلال را می پذیرند -Z برای مشاهده، ایجاد و تغییر زمینه:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
زمینهها زمانی ایجاد میشوند که فایلها بر اساس زمینه دایرکتوری والد خود (به استثنای برخی موارد) ایجاد میشوند. RPM ها می توانند زمینه هایی را مانند هنگام نصب ایجاد کنند.
14. چهار دلیل اصلی برای خطاهای SELinux وجود دارد که با جزئیات بیشتر در نکات 15-21 در زیر توضیح داده شده است:
مسائل مربوط به برچسب زدن
به دلیل چیزی که SELinux باید بداند
خطا در سیاست/برنامه SELinux
اطلاعات شما ممکن است به خطر بیفتد
15.مشکل برچسب زدن: اگر فایل های شما داخل هستند /srv/myweb به اشتباه علامت گذاری شده اند، ممکن است دسترسی ممنوع شود. در اینجا چند راه برای رفع این مشکل وجود دارد:
اگر برچسب را می شناسید: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
اگر فایلی با علامت گذاری معادل می شناسید: # semanage fcontext -a -e /srv/myweb /var/www
بازیابی زمینه (برای هر دو مورد): # restorecon -vR /srv/myweb
16.مشکل برچسب زدن: اگر فایل را به جای کپی کردن جابجا کنید، فایل زمینه اصلی خود را حفظ می کند. برای رفع این مشکل:
دستور متن را با برچسب تغییر دهید: # chcon -t httpd_system_content_t /var/www/html/index.html
دستور متن را با برچسب پیوند تغییر دهید: # chcon --reference /var/www/html/ /var/www/html/index.html
بازیابی زمینه (برای هر دو مورد): # restorecon -vR /var/www/html/
17. اگر SELinux باید بدانیدکه HTTPD در پورت 8585 گوش می دهد، به SELinux بگویید:
# semanage port -a -t http_port_t -p tcp 8585
18.SELinux باید بدانید مقادیر بولی که اجازه می دهد بخش هایی از خط مشی SELinux در زمان اجرا بدون اطلاع از بازنویسی خط مشی SELinux تغییر کند. به عنوان مثال، اگر می خواهید httpd ایمیل ارسال کند، وارد کنید: # setsebool -P httpd_can_sendmail 1
19.SELinux باید بدانید مقادیر منطقی برای فعال/غیرفعال کردن تنظیمات SELinux:
برای دیدن همه مقادیر بولی: # getsebool -a
برای مشاهده توضیحات هر کدام: # semanage boolean -l
برای تنظیم یک مقدار بولی: # setsebool [_boolean_] [1|0]
برای نصب دائمی، اضافه کنید -P. به عنوان مثال: # setsebool httpd_enable_ftp_server 1 -P
20. سیاستها/برنامههای SELinux ممکن است حاوی خطاهایی باشند، از جمله:
مسیرهای کد غیرمعمول
پیکربندی
تغییر مسیر stdout
توصیفگر فایل نشت می کند
حافظه اجرایی
کتابخانه های ضعیف
بلیط های باز (گزارشی به Bugzilla ارسال نکنید؛ Bugzilla SLA ندارد).
21.اطلاعات شما ممکن است به خطر بیفتداگر دامنه های محدودی دارید که سعی می کنید:
25. اگر خطای SELinux رخ داد، از گزارش استفاده کنید setroubleshoot ارائه چندین راه حل ممکن
به عنوان مثال، از journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
***** Plugin restorecon (99.5 confidence) suggests ************************
If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html
26. ورود به سیستم: SELinux اطلاعات را در بسیاری از مکان ها ثبت می کند:
27. ورود به سیستم: جستجوی خطاهای SELinux در گزارش حسابرسی:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. برای یافتن پیامهای کش بردار دسترسی به SELinux (AVC) برای یک سرویس خاص:
# ausearch -m avc -c httpd
29. سودمندی audit2allow اطلاعات را از گزارش های عملیات ممنوع جمع آوری می کند و سپس قوانین خط مشی مجوز SELinux را تولید می کند. مثلا:
برای ایجاد یک توصیف قابل خواندن توسط انسان در مورد چرایی عدم دسترسی: # audit2allow -w -a
برای مشاهده یک قانون اجرایی نوع که اجازه دسترسی رد شده را می دهد: # audit2allow -a
برای ایجاد یک ماژول سفارشی: # audit2allow -a -M mypolicy
گزینه -M یک نوع فایل اجرایی (.te) با نام مشخص شده ایجاد می کند و قانون را در یک بسته خط مشی (pp.) کامپایل می کند: mypolicy.pp mypolicy.te
برای نصب یک ماژول سفارشی: # semodule -i mypolicy.pp
30. برای پیکربندی یک فرآیند جداگانه (دامنه) برای کار در حالت مجاز: # semanage permissive -a httpd_t
31. اگر دیگر نمی خواهید دامنه مجاز باشد: # semanage permissive -d httpd_t
32. برای غیرفعال کردن همه دامنه های مجاز: # semodule -d permissivedomains
33. فعال کردن خط مشی MLS SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
مطمئن شوید که SELinux در حالت مجاز اجرا می شود: # setenforce 0
از یک اسکریپت استفاده کنید fixfilesبرای اطمینان از اینکه فایل ها در راه اندازی مجدد بعدی برچسب گذاری مجدد می شوند:
# fixfiles -F onboot # reboot
34. کاربر با محدوده MLS خاص ایجاد کنید: # useradd -Z staff_u john
با استفاده از دستور useradd، کاربر جدید را به یک کاربر SELinux موجود نگاشت کنید (در این مورد، staff_u).
35. برای مشاهده نقشه بین کاربران SELinux و Linux: # semanage login -l
36. یک محدوده خاص برای کاربر تعریف کنید: # semanage login --modify --range s2:c100 john
37. برای تصحیح برچسب فهرست اصلی کاربر (در صورت لزوم): # chcon -R -l s2:c100 /home/john
38. برای مشاهده دسته بندی های فعلی: # chcat -L
39. برای تغییر دستهها یا شروع به ایجاد دستههای خود، فایل را به صورت زیر ویرایش کنید:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. برای اجرای یک دستور یا اسکریپت در یک فایل، نقش و زمینه کاربر خاص: