
يُعد تكوين سياسات SELinux (لينكس المعزز أمنيًا) أمرًا ضروريًا للحفاظ على بيئة لينكس آمنة. يضيف SELinux طبقة إضافية من الأمان إلى نواة لينكس من خلال فرض سياسات تحكم الوصول الإلزامية (MAC). قد يبدو التعامل مع SELinux معقدًا في البداية، لكن إتقانه يمكن أن يساعدك في تأمين التطبيقات والخدمات ونظام التشغيل بأكمله بشكل فعال.
في هذا الدليل المفصل، سنستعرض كيفية تكوين سياسات SELinux، ونتعرف على أهم أوامر SELinux، ونكتسب رؤى حول استكشاف الأخطاء وإصلاحها وصيانة SELinux في بيئتك.
مقدمة عن SELinux
SELinux هو وحدة أمان لنواة لينكس تتيح فرض سياسات التحكم في الوصول على العمليات والملفات والموارد الأخرى. بخلاف التحكم في الوصول التقديري (DAC) الذي يعتمد على أذونات الملفات والمجلدات، يعمل SELinux بمبدأ التحكم الإلزامي (MAC)، مما يعني أن السياسات تُفرض بغض النظر عن امتيازات المستخدم أو العملية.
هناك ثلاثة أوضاع رئيسية لـ SELinux:
- Enforcing (فرض): يتم فرض سياسات SELinux بنشاط.
- Permissive (سماحي): يقوم SELinux بتسجيل انتهاكات السياسات لكنه لا يفرضها.
- Disabled (معطل): يتم تعطيل SELinux تمامًا.
لماذا نقوم بتكوين سياسات SELinux؟
تكوين سياسات SELinux يساعدك على:
- التحكم في كيفية تفاعل التطبيقات مع الملفات والمجلدات.
- منع الوصول غير المصرح به إلى البيانات الحساسة.
- اكتشاف الأنشطة المشبوهة وتسجيلها.
- تعزيز أمان النظام ضد الثغرات والاستغلالات.
الآن، دعنا نتعمق في خطوات تكوين سياسات SELinux.
التحقق من حالة SELinux
قبل تكوين SELinux، من المهم التحقق من حالته في النظام.
الأمر:
$ sestatus
الشرح:
- يعرض الأمر
sestatus
الحالة الحالية لـ SELinux، بما في ذلك الوضع النشط ونوع السياسة وأي انتهاكات تم تسجيلها. - الحقول الأساسية في الإخراج:
- حالة SELinux: تشير إلى ما إذا كان SELinux مفعلاً أو معطلاً.
- الوضع الحالي: يظهر إذا كان SELinux في وضع
enforcing
أوpermissive
أوdisabled
. - نوع السياسة: يعرض نوع السياسة المستخدمة (عادةً
targeted
).
تغيير أوضاع SELinux
يمكنك تغيير أوضاع SELinux بشكل مؤقت أو دائم.
تغيير الوضع مؤقتًا
لتغيير SELinux إلى الوضع السماحي:
$ sudo setenforce 0
لإعادة SELinux إلى الوضع الفرضي:
$ sudo setenforce 1
الشرح:
- يغير الأمر
setenforce
وضع SELinux مؤقتًا حتى يتم إعادة تشغيل النظام.0
= الوضع السماحي.1
= الوضع الفرضي.
تغيير الوضع دائمًا
قم بتحرير ملف تكوين SELinux لتغيير الوضع بشكل دائم.
الأمر:
$ sudo nano /etc/selinux/config
ابحث عن السطر:
SELINUX=enforcing
قم بتغييره إلى:
SELINUX=permissive
أو
SELINUX=disabled
احفظ الملف وأعد تشغيل النظام:
$ sudo reboot
الشرح:
- يضمن تعديل ملف
/etc/selinux/config
أن الوضع سيبقى كما هو بعد إعادة تشغيل النظام. - استخدم الوضع
disabled
فقط عند الضرورة القصوى، لأنه يعطل SELinux بالكامل.
فهم سياقات SELinux
يستخدم SELinux سياقات لتعريف قواعد التحكم في الوصول للملفات والعمليات والموارد الأخرى. يتكون كل سياق من المكونات التالية:
- المستخدم: المستخدم في SELinux (مثل
system_u
). - الدور: الدور المعين للمستخدم أو العملية (مثل
object_r
). - النوع: النوع المرتبط بالملف أو العملية (مثل
httpd_sys_content_t
).
عرض سياقات الملفات
الأمر:
$ ls -Z /path/to/directory
الشرح:
- يعرض الأمر
ls -Z
سياقات SELinux للملفات والمجلدات. - مثال على الإخراج:
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
system_u
: المستخدم في SELinux.object_r
: الدور.httpd_sys_content_t
: النوع.s0
: مستوى الأمان.
تعديل سياقات ملفات SELinux
لتغيير سياقات الملفات، استخدم الأمر chcon
.
تغيير سياق الملف مؤقتًا
الأمر:
$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html
الشرح:
- الخيار
-t
يحدد النوع الذي تريد تعيينه (مثلhttpd_sys_content_t
لمحتوى خادم الويب). - التغييرات المؤقتة لا تبقى بعد إعادة تشغيل النظام أو إعادة التصنيف.
استعادة السياقات الافتراضية
الأمر:
$ sudo restorecon -v /var/www/html/index.html
الشرح:
- يعيد الأمر
restorecon
السياق الافتراضي لملف أو مجلد بناءً على قواعد السياسة. - الخيار
-v
يعرض الإخراج بالتفصيل.
التعامل مع المتغيرات (Booleans) في SELinux
توفر المتغيرات (Booleans) في SELinux طريقة لتشغيل أو إيقاف السياسات المحددة دون الحاجة إلى إعادة كتابة السياسة.
عرض المتغيرات المتاحة
الأمر:
$ getsebool -a
الشرح:
- يعرض الأمر
getsebool
قائمة بجميع المتغيرات المتاحة وحالتها الحالية (on
أوoff
).
تغيير المتغير مؤقتًا
الأمر:
$ sudo setsebool httpd_enable_cgi on
الشرح:
- يقوم الأمر
setsebool
بتغيير حالة المتغير مؤقتًا. في هذا المثال، يتم تمكين سكربتات CGI لخادم الويب Apache.
تغيير المتغير دائمًا
الأمر:
$ sudo setsebool -P httpd_enable_cgi on
الشرح:
- الخيار
-P
يجعل التغيير دائمًا عبر عمليات إعادة التشغيل.
إنشاء وتجميع سياسات SELinux
في بعض الأحيان، قد تحتاج إلى إنشاء سياسات مخصصة للسماح لتطبيقات أو خدمات محددة بالعمل بشكل صحيح تحت نظام SELinux.
إنشاء سجل تدقيق
الأمر:
$ sudo ausearch -m avc -ts recent
الشرح:
- يقوم الأمر
ausearch
بالبحث في سجل التدقيق عن انتهاكات مرتبطة بـ SELinux (AVCs). - الخيار
-m avc
يحدد رسائل Access Vector Cache فقط.
إنشاء وحدة سياسة
الأمر:
$ sudo audit2allow -a -M my_custom_policy
الشرح:
- تقوم أداة
audit2allow
بتحويل سجلات التدقيق إلى وحدة سياسة مخصصة لـ SELinux. - الخيار
-M
يحدد اسم الوحدة.
تثبيت وحدة السياسة
الأمر:
$ sudo semodule -i my_custom_policy.pp
الشرح:
- يستخدم الأمر
semodule
لتثبيت أو إدارة وحدات سياسات SELinux. - الخيار
-i
يقوم بتثبيت وحدة السياسة المترجمة (.pp
file).
حل مشكلات SELinux
قد يمنع SELinux أحيانًا سلوك التطبيقات الشرعي. استخدم الأوامر التالية لتشخيص المشكلات وحلها.
عرض سجلات التدقيق
الأمر:
$ sudo cat /var/log/audit/audit.log | grep denied
الشرح:
- يقوم هذا الأمر بتصفية سجل التدقيق لعرض العمليات المرفوضة فقط بسبب سياسات SELinux.
التحقق من تنبيهات SELinux
الأمر:
$ sudo sealert -a /var/log/audit/audit.log
الشرح:
- تقوم أداة
sealert
بتحليل سجلات التدقيق وتقديم توصيات تفصيلية لحل المشكلات المتعلقة بـ SELinux.
تعطيل SELinux للاختبار
على الرغم من أنه لا يُوصى بتعطيل SELinux بشكل دائم، يمكنك تعطيله مؤقتًا للاختبار.
الأمر:
$ sudo setenforce 0
الشرح:
- يقوم هذا الأمر بتبديل SELinux إلى وضع السماح (Permissive Mode)، مما يعطل التنفيذ مع الاستمرار في تسجيل الانتهاكات.
لإعادة تمكين SELinux:
$ sudo setenforce 1
أفضل الممارسات لتكوين سياسات SELinux
- فهم السياسات: قم بالتعرف على سياسات SELinux الافتراضية قبل إجراء أي تغييرات.
- استخدام الخيارات المرنة (Booleans): استفد من خيارات SELinux المرنة لتبديل الميزات بدلاً من كتابة سياسات جديدة.
- الاختبار في وضع السماح: استخدم وضع السماح لاكتشاف المشكلات دون حظر الوظائف.
- سجلات التدقيق: قم بمراجعة سجلات التدقيق بانتظام للبحث عن انتهاكات مرتبطة بـ SELinux.
- نسخ السياسات احتياطيًا: قم دائمًا بعمل نسخة احتياطية من السياسات والتكوينات المخصصة.
الأسئلة الشائعة
- ما هو SELinux ولماذا هو مهم؟
- SELinux هو وحدة أمان لنظام لينكس تنفذ سياسات التحكم في الوصول لتعزيز أمان النظام عن طريق تقييد الوصول غير المصرح به.
- كيف يمكنني التحقق مما إذا كان SELinux مفعلاً؟
- استخدم الأمر
sestatus
للتحقق مما إذا كان SELinux مفعلاً وعرض وضعه الحالي.
- استخدم الأمر
- ما الفرق بين وضعي السماح والتنفيذ؟
- في وضع السماح، يقوم SELinux بتسجيل انتهاكات السياسات دون فرضها. في وضع التنفيذ، يقوم SELinux بحظر العمليات غير المصرح بها.
- كيف يمكنني استعادة السياق الافتراضي لـ SELinux لملف معين؟
- استخدم الأمر
restorecon
:$ sudo restorecon -v /path/to/file
- استخدم الأمر
- هل يمكن تعطيل SELinux بشكل دائم؟
- نعم، من خلال تعديل ملف
/etc/selinux/config
وتعيينSELINUX=disabled
. ومع ذلك، لا يُوصى بذلك لأسباب أمنية.
- نعم، من خلال تعديل ملف
- ما الأدوات التي يمكنني استخدامها لاستكشاف مشكلات SELinux وحلها؟
- استخدم أدوات مثل
ausearch
وaudit2allow
وsealert
لتشخيص المشكلات المتعلقة بـ SELinux وحلها.
- استخدم أدوات مثل
الخلاصة
قد تبدو عملية تكوين سياسات SELinux صعبة في البداية، ولكن مع اتباع نهج منظم وفهم الأدوات والأوامر الخاصة به، تصبح العملية قابلة للإدارة. بدءًا من تبديل الأوضاع إلى تعديل سياقات الملفات وإنشاء سياسات مخصصة وحل المشكلات، يلعب كل جزء دورًا مهمًا في الحفاظ على بيئة لينكس آمنة وفعالة.
باتباع أفضل الممارسات ومراجعة النظام بانتظام، يمكنك تحقيق الاستفادة القصوى من إمكانيات SELinux وحماية بنيتك التحتية من الوصول غير المصرح به.