SELinux على عائلة RHEL ممتاز — وهو أول شيء يصل إليه كثير من المشغلين لتعطيله عند حدوث مشكلة. لا تفعل ذلك. الوضع Permissive يسجل الرفض المُحتمَل دون أن يفرضه، فتستطيع التصحيح دون فقدان شبكة الأمان.
المتطلبات المسبقة
- Rocky 9 / Alma 9 / RHEL 9 مع
sudo. - خدمة "تعمل على dev وتفشل على RHEL".
الخطوة 1: تأكيد الحالة الحالية
sestatus
getenforce
ثلاث حالات: Enforcing (الافتراضي)، Permissive (يسجل ولا يمنع)، Disabled (مُعطّل تمامًا).
الخطوة 2: التحويل إلى Permissive وقت التشغيل فقط
sudo setenforce 0
getenforce
هذا غير دائم — يعود بعد إعادة التشغيل.
الخطوة 3: انظر إلى حالات الرفض
sudo grep -i 'avc:.*denied' /var/log/audit/audit.log | tail -30
sudo ausearch -m AVC -ts recent | tail
sudo journalctl _TRANSPORT=audit -p err -n 50
استخدم sealert:
sudo dnf install -y setroubleshoot-server
sudo sealert -a /var/log/audit/audit.log | less
الخطوة 4: إصلاح السياسة بشكل صحيح
تسمية ملف خاطئة:
sudo ls -lZ /var/www/html/missing-page.html
sudo restorecon -Rv /var/www/html
دليل مخصص:
sudo semanage fcontext -a -t httpd_sys_content_t '/srv/web(/.*)?'
sudo restorecon -Rv /srv/web
منفذ مخصص:
sudo semanage port -a -t http_port_t -p tcp 8081
ثغرة سياسة حقيقية:
sudo ausearch -m AVC -ts recent | audit2allow -M skyline-myapp
sudo semodule -i skyline-myapp.pp
الخطوة 5: العودة إلى Enforcing
sudo setenforce 1
getenforce
SELINUX=disabled في /etc/selinux/config غير منصوح به أبدًا.
التحقق
sestatus
sudo ausearch -m AVC -ts today | wc -l
الخاتمة
SELinux صديق وليس عقبة. استخدم permissive + sealert + audit2allow لفهم ما يحتاجه تطبيقك، ثم اشحن وحدة سياسة صغيرة وابقَ في Enforcing.
الخطوات التالية
- راجع مناطق firewalld.
- افهم DNF عبر أساسيات DNF.
Comments
0 total · 0 threads