كيفية تكوين سياسات سيلنكس

إعداد سياسات SELinux تكوين سياسات SELinux دليل أوامر SELinux

يُعد تكوين سياسات SELinux (لينكس المعزز أمنيًا) أمرًا ضروريًا للحفاظ على بيئة لينكس آمنة. يضيف SELinux طبقة إضافية من الأمان إلى نواة لينكس من خلال فرض سياسات تحكم الوصول الإلزامية (MAC). قد يبدو التعامل مع SELinux معقدًا في البداية، لكن إتقانه يمكن أن يساعدك في تأمين التطبيقات والخدمات ونظام التشغيل بأكمله بشكل فعال.

في هذا الدليل المفصل، سنستعرض كيفية تكوين سياسات SELinux، ونتعرف على أهم أوامر SELinux، ونكتسب رؤى حول استكشاف الأخطاء وإصلاحها وصيانة SELinux في بيئتك.

مقدمة عن SELinux

SELinux هو وحدة أمان لنواة لينكس تتيح فرض سياسات التحكم في الوصول على العمليات والملفات والموارد الأخرى. بخلاف التحكم في الوصول التقديري (DAC) الذي يعتمد على أذونات الملفات والمجلدات، يعمل SELinux بمبدأ التحكم الإلزامي (MAC)، مما يعني أن السياسات تُفرض بغض النظر عن امتيازات المستخدم أو العملية.

هناك ثلاثة أوضاع رئيسية لـ SELinux:

  • Enforcing (فرض): يتم فرض سياسات SELinux بنشاط.
  • Permissive (سماحي): يقوم SELinux بتسجيل انتهاكات السياسات لكنه لا يفرضها.
  • Disabled (معطل): يتم تعطيل SELinux تمامًا.

لماذا نقوم بتكوين سياسات SELinux؟

تكوين سياسات SELinux يساعدك على:

  1. التحكم في كيفية تفاعل التطبيقات مع الملفات والمجلدات.
  2. منع الوصول غير المصرح به إلى البيانات الحساسة.
  3. اكتشاف الأنشطة المشبوهة وتسجيلها.
  4. تعزيز أمان النظام ضد الثغرات والاستغلالات.

الآن، دعنا نتعمق في خطوات تكوين سياسات 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

  1. فهم السياسات: قم بالتعرف على سياسات SELinux الافتراضية قبل إجراء أي تغييرات.
  2. استخدام الخيارات المرنة (Booleans): استفد من خيارات SELinux المرنة لتبديل الميزات بدلاً من كتابة سياسات جديدة.
  3. الاختبار في وضع السماح: استخدم وضع السماح لاكتشاف المشكلات دون حظر الوظائف.
  4. سجلات التدقيق: قم بمراجعة سجلات التدقيق بانتظام للبحث عن انتهاكات مرتبطة بـ SELinux.
  5. نسخ السياسات احتياطيًا: قم دائمًا بعمل نسخة احتياطية من السياسات والتكوينات المخصصة.

الأسئلة الشائعة

  • ما هو 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 وحماية بنيتك التحتية من الوصول غير المصرح به.

LEAVE A COMMENT