دليل SELinux للمبتدئين


تم إعداد ترجمة لهذه المادة لطلاب دورة Linux Security.




SELinux أو Security Enhanced Linux هي آلية متقدمة للتحكم في الوصول تم تطويرها بواسطة وكالة الأمن القومي الأمريكية (NSA) لمنع الاختراقات الضارة. يقوم بتنفيذ نموذج التحكم في الوصول القسري (أو الإلزامي) (التحكم الإلزامي في الوصول إلى التحكم في الوصول إلى الوسائط ، MAC) أعلى النموذج التقديري الحالي (أو الانتقائي) (التحكم في الوصول التقديري ، DAC) ، أي أذونات القراءة والكتابة والتنفيذ.


يحتوي SELinux على ثلاثة أوضاع:


  1. فرض - رفض الوصول على أساس قواعد السياسة.
  2. إجراءات التسجيل المسموح بها والتي تنتهك السياسات التي سيتم حظرها في وضع التنفيذ.
  3. معطل - تعطيل SELinux تماما.

افتراضيًا ، تكون الإعدادات في /etc/selinux/config


تغيير أوضاع SELinux


لمعرفة الوضع الحالي ، قم بتشغيل


 $ getenforce 

لتغيير الوضع إلى متساهل ، قم بتشغيل الأمر التالي


 $ setenforce 0 

أو ، لتغيير الوضع من التسامح إلى فرض ، القيام


 $ setenforce 1 

إذا كنت بحاجة إلى تعطيل SELinux بالكامل ، فلا يمكن القيام بذلك إلا من خلال ملف التكوين


 $ vi /etc/selinux/config 

لتعطيل ، قم بتغيير المعلمة SELINUX كما يلي:


 SELINUX=disabled 

الإعداد SELinux


يتم تمييز كل ملف وعملية بسياق SELinux ، والذي يحتوي على معلومات إضافية مثل المستخدم والدور والنوع ، إلخ. إذا كانت هذه هي المرة الأولى التي تقوم فيها بتمكين SELinux ، فيجب عليك أولاً تهيئة السياق والتسميات. تُعرف عملية وضع العلامات والسياق باسم التوسيم. لبدء وضع العلامات ، في ملف التكوين ، قم بتغيير الوضع إلى السماح .


 $ vi /etc/selinux/config SELINUX=permissive 

بعد تحديد الوضع المتساهل ، قم بإنشاء ملف مخفي فارغ يسمى autorelabel في الجذر


 $ touch /.autorelabel 

وأعد تشغيل الكمبيوتر


 $ init 6 

ملاحظة: نستخدم الوضع المتساهل لوضع العلامات ، لأن استخدام وضع فرض يمكن أن يؤدي إلى تعطل النظام أثناء إعادة التشغيل.


لا تقلق إذا توقف التحميل على بعض الملفات ، فالتأشير يستغرق بعض الوقت. بعد وضع علامة على نظام التشغيل الخاص بك وتشغيله ، يمكنك الانتقال إلى ملف التكوين وتعيين وضع فرض ، وكذلك تشغيل:


 $ setenforce 1 

لقد نجحت الآن في تمكين SELinux على جهاز الكمبيوتر الخاص بك.


مراقبة السجلات


قد يكون لديك نوع من الخطأ أثناء وضع علامة أو أثناء تشغيل النظام. للتحقق مما إذا كان SELinux يعمل بشكل صحيح ولا يمنع الوصول إلى أي منفذ أو تطبيق ، وما إلى ذلك ، تحتاج إلى إلقاء نظرة على السجلات. يوجد سجل SELinux في /var/log/audit/audit.log ، لكنك لست بحاجة إلى قراءته بالكامل للعثور على الأخطاء. يمكنك استخدام audit2why للعثور على الأخطاء. قم بتشغيل الأمر التالي:


 $ audit2why < /var/log/audit/audit.log 

نتيجة لذلك ، تحصل على قائمة بالأخطاء. إذا لم تكن هناك أخطاء في السجل ، فلن يتم عرض أية رسائل.


تكوين سياسة SELinux


سياسة SELinux هي مجموعة من القواعد التي توجه أمان SELinux. تحدد السياسة مجموعة من القواعد لبيئة معينة. سوف نتعلم الآن كيفية تكوين السياسات للسماح بالوصول إلى الخدمات المقيدة.


1. القيم المنطقية (مفاتيح)


تتيح لك رموز التبديل (المنطقية) تغيير أجزاء من السياسة أثناء عملك ، دون الحاجة إلى إنشاء سياسات جديدة. إنها تسمح لك بإجراء تغييرات دون إعادة التشغيل أو إعادة ترجمة سياسات SELinux.


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


 $ semanage boolean -l 

سيعرض هذا الأمر قائمة بالمفاتيح المتوفرة مع حالتها الحالية (تشغيل / إيقاف أو إيقاف / إيقاف) والوصف. يمكنك تحسين البحث بإضافة grep للعثور على النتائج ذات الصلة بـ ftp فقط:


 $ semanage boolean -l | grep ftp 

والعثور على ما يلي


 ftp_home_dir -> off Allow ftp to read & write file in user home directory 

تم إيقاف setsebool $ setsebool ftp_home_dir on التبديل هذا ، لذلك سنقوم بتمكينه من خلال setsebool $ setsebool ftp_home_dir on


الآن سيكون بإمكان بروتوكول نقل الملفات الخفي الخاص بنا الوصول إلى دليل المستخدم الرئيسي.
ملاحظة: يمكنك أيضًا الحصول على قائمة بالمفاتيح المتوفرة دون وصف عن طريق إجراء getsebool -a


2. التسميات والسياق


هذه هي الطريقة الأكثر شيوعًا لتنفيذ سياسات SELinux. كل ملف ، مجلد ، عملية ومنفذ يتميز بسياق SELinux:


  • بالنسبة للملفات والمجلدات ، يتم تخزين العلامات كسمات موسعة في نظام الملفات ويمكن عرضها باستخدام الأمر التالي:
     $ ls -Z /etc/httpd 
  • بالنسبة للعمليات والمنافذ ، يتحكم المركز في العلامة ، ويمكنك رؤية هذه التسميات على النحو التالي:

هذه العملية


 $ ps –auxZ | grep httpd 

ميناء


 $ netstat -anpZ | grep httpd 

مثال
الآن دعونا نلقي نظرة على مثال لفهم التسميات والسياق بشكل أفضل. افترض أن لدينا خادم ويب /var/www/html/ /home/dan/html/ بدلاً من الدليل /var/www/html/ /home/dan/html/ . ستعتبر SELinux هذا انتهاكًا للسياسة وقد لا تتمكن من تصفح صفحات الويب الخاصة بك. هذا لأننا لم نقم بإعداد سياق الأمان المرتبط بملفات HTML. لعرض سياق الأمان الافتراضي ، استخدم الأمر التالي:


 $ ls –lz /var/www/html -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/ 

هنا ، حصلنا على httpd_sys_content_t كسياق لملفات html. نحتاج إلى تعيين سياق الأمان هذا لدليلنا الحالي ، والذي يحتوي الآن على السياق التالي:


 -rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/ 

أمر بديل للتحقق من سياق أمان ملف أو دليل:


 $ semanage fcontext -l | grep '/var/www' 

سنستخدم أيضًا semanage لتغيير السياق بعد العثور على سياق الأمان الصحيح. لتغيير سياق / home / dan / html ، قم بتشغيل الأوامر التالية:


 $ semanage fcontext -a -t httpd_sys_content_t '/home/dan/html(/.*)?' $ semanage fcontext -l | grep '/home/dan/html' /home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 $ restorecon -Rv /home/dan/html 

بعد تغيير السياق باستخدام semanage ، سيقوم الأمر restorecon بتحميل السياق الافتراضي للملفات والدلائل. سيكون بإمكان خادم الويب الخاص بنا الآن قراءة الملفات من المجلد /home/dan/html ، حيث تم تغيير سياق الأمان لهذا المجلد إلى httpd_sys_content_t .


3. وضع السياسات المحلية


قد تكون هناك مواقف تكون فيها الطرق المذكورة أعلاه غير مجدية بالنسبة لك ، وتحصل على أخطاء (avc / denial) في audit.log. عندما يحدث هذا ، تحتاج إلى إنشاء سياسة محلية. يمكنك العثور على جميع الأخطاء مع audit2why ، كما هو موضح أعلاه.


لحل الأخطاء ، يمكنك إنشاء سياسة محلية. على سبيل المثال ، حصلنا على خطأ يتعلق بـ httpd (apache) أو smbd (samba) ، فنحن نخطئ في الأخطاء وننشئ سياسة لها:


 apache $ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy samba $ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy 

هنا http_policy و smb_policy هما اسمان للسياسات المحلية التي أنشأناها. نحتاج الآن إلى تحميل هذه السياسات المحلية التي تم إنشاؤها في سياسة SELinux الحالية. يمكن القيام بذلك على النحو التالي:


 $ semodule –I http_policy.pp $ semodule –I smb_policy.pp 

تم تحميل سياساتنا المحلية ، ولم يعد علينا استلام أي ملف avc أو رفض تسجيل الدخول.




كانت محاولتي لمساعدتك على فهم SELinux. آمل أنه بعد قراءة هذا المقال سوف تشعر براحة أكبر مع SELinux.

Source: https://habr.com/ru/post/ar460387/


All Articles