الحشد الشعبي

DOWNLOAD VIDEO
 

اخر التغريدات
مقاطع الفيديو

لقاء خاص، الحوثي: نحقق تطورا صناعيا عسكريا لن نكشف عنه الان #yemen #اليمن # اخر الاخبار #صحف #عاجل #تقارير

الموقع يدعم الحشد الشعبي
صنعاء(العالم)-29/05/2016- كشف رئيس اللجنة الثورية العليا في اليمن محمد علي الحوثي أن سفراء لدول كبرى شددوا على ضرورة إبعاد الرئيس المستقيل عبد ربه منصور هادي من المشهد السياسي، ملوحا بان هناك تطورا نوعيا وذاتيا في الصناعات الدفاعية اليمنية لا يمكن الكشف عنه الان....

التفاصيلقناة العالم الأخبارية http://ift.tt/1sjhppK

مقال : SELinux الجزء الثاني – الملفات والعمليات #الهكر_الاخلاقي #pentest #hacking

الموقع يدعم الحشد الشعبي

في الجزء الأول من سلسلة SELinux تعرفنا على كيفية تفعيل وإلغاء تفعيل SELinux وتغير بعض الإعدادات الخاصة بالسياسة باستخدام القيم المنطقية Boolean values. في هذا المقال سوف نتعرف على  security contexts الخاصة بالملفات والعمليات.

للتذكير فقط بالجزء الأول:

File security context: هو النوع type

Process security context: هو المجال domain

ملاحظة: كل التعليمات وحزم البيانات والملفات التي سوف نتعامل معها في هذا المقال تم تجريبها على نظام التشغيل CentOS 7 بشكل كامل فإن المبادئ تبقى نفسها في التوزيعات الأخرى.

في هذا المقال سنقوم بتشغيل التعليمات بصلاحيات root إذا لم تكن تستطيع العمل على حساب بصلاحيات root يمكنك استخدام حساب له صلاحيات sudo privileges واستخدام “sudo” قبل أي تعليمة.

 

إنشاء حسابات تجريبية


في البداية سنقوم بخلق أربعة حسابات تجريبية لنتمكن من إثبات وعرض إمكانيات SELinux:

  • regularuser
  • switcheduser
  • guestuser
  • restricteduser

يجب أن نملك صلاحيات root، لنبدأ باستخدام التعليمة التالية لإضافة حساب مستخدم باسم regularuser

useradd -c “Regular User” regularuser

ومن ثم يمكننا استخدام التعليمة “passwd” لضبط كلمة السر لهذا الحساب

passwd regularuser

سيتطلب مننا إدخال كلمة السر الجديدة وتأكيدها ومن ثم سيكون الحساب جاهز للاستخدام

Changing password for user regularuser.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

وبنفس الطريقة لنقوم بخلق حسابات لباقي المستخدمين

useradd -c “Switched User” switcheduser

passwd switcheduser

useradd -c “Guest User” guestuser

passwd guestuser

 

useradd -c “Restricted Role User” restricteduser

passwd restricteduser

 

SELinux من أجل الملفات والعمليات


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

وإذا تم الوصول إلى النظام من قبل تطبيق خبيث يعمل بصلاحيات root فإن التطبيق قادر على عمل أي شيء يريده لأنه يملك صلاحيات root وله كامل الحقوق والصلاحيات على كل الملفات.

SELinux تحاول التقدم خطوة للأمام لتجاوز هذه المخاطر، عند تطبيق SELinux فإن العمليات processes والتطبيقات application لها الحقوق والصلاحيات التي تحتاجها لتعمل ولا شيء غير ذلك.

سياسة SELinux الخاصة بالتطبيقات سوف تحدد ما هي أنواع الملفات التي تحتاج الوصول إليها وماهي العمليات المسموح لها تنفيذها. سياسات SELinux يتم كتابتها من قبل مطور التطبيق وتنتقل إلى توزيعه لينكس التي تدعمها، السياسة هي مجموعة من القواعد التي تحدد للعمليات والمستخدمين الحقوق والصلاحيات الخاصة بهم.

نبدأ هذا المقال بفهم ماهي SELinux contexts and domains

أول جزء من الحماية يتم من خلال تخصيص وسم label لكل شيء موجود في نظام لينكس. الوسم label هو مثل أي صفة أخرى للملف أو للعملية (المالك، المجموعة، تاريخ الإنشاء) , وهي تظهر حالة context الخاصة بالمصادر .

ماهي الحالة context ؟؟؟

هي مجموعة من معلومات الحماية التي تساعد SELinux في اتخاذ قرارات التحكم بالوصول.

كل شيء في نظام لينكس يمكن أن يملك security context (حساب المستخدم، الملف، المجلد، المنفذ) ولكن security context تختلف باختلاف أنواع الأشياء التي تتعامل معها.

 

SELinux File Contexts


لنتمكن من فهم SELinux file contexts سنبدأ برؤية نتيجة تنفيذ التعليمة  ls –l في المجلد etc/

ls -l /etc/*.conf

 

نتيجة تنفيذ هذه التعليمة سيكون مشابه للتالي:

... 
-rw-r--r--. 1 root root 19 Aug 19 21:42 /etc/locale.conf
-rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf
-rw-r--r--. 1 root root 5171 Jun 10 07:35 /etc/man_db.conf
-rw-r--r--. 1 root root 936 Jun 10 05:59 /etc/mke2fs.conf
...

لنقم بإضافة Z- للتعليمة السابقة

ls -Z /etc/*.conf

سوف نحصل على عمود إضافي بعد المستخدم والمجموعة والمالك


-rw-r–r–. root root system_u:object_r:locale_t:s0 /etc/locale.conf
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/logrotate.conf
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/man_db.conf
-rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/mke2fs.conf

هذا العمود يظهر security contexts لهذه الملفات.

يمكننا أن نقول عن ملف أنه يملك وسم label خاص ب security context عندما يملك الملف هذه المعلومات.

-rw-r–r–. root    root  system_u:object_r:etc_t:s0       /etc/logrotate.conf

 

Security contexts هي هذه المعلومات:

system_u:object_r:etc_t:s0

يوجد أربع أجزاء منفصلة باستخدام النقطتين ” : ” وكل جزء هو security context :

  • الجزء الأول: هو SELinux user context الخاص بالملف (سيتم مناقشته لاحقاً ولكن الآن هو system_u).

كل حساب لمستخدم في نظام لينكس يتم اعتباره على انه مستخدم SELinux وفي هذا المثال فإن المستخدم root مالك هذا الملف تم اعتباره على أنه المستخدم system_u SELinux user.

هذه العملية تتم من وفق السياسة الخاصة ب SELinux.

  • الجزء الثاني: هو SELinux role (الأدوار) وفي هذا المثال هو object_r لمعرفة ما هي SELinux roles يمكنك مراجعة الجزء الأول من هذه السلسلة.
  • الجزء الثالث: هو type (النوع) وفي هذا المثال هو etc_t.

وهذا الجزء يعرف ما هو النوع type الذي ينتمي له الملف أو المجلد، كما ترى فإن معظم الملفات الموجودة في المجلد etc/ تنتمي إلى etc_t type.

يمكن أن تعتقد بأن النوع type هو جزء من “group” أو جزء من الوصف الخاص بالملف، النوع type هو طريقة لتصنيف هذا الملف.

يمكننا أن نرى بعض الملفات التي من الممكن أن تنتمي لأنواع أخرى مثل locale.conf الذي له النوع locale_t

حتى ولو كانت كل الملفات تابعة لنفس المستخدم ولنفس المجموعة يمكن أن تنتمي لأنواع types مختلفة.

مثال أخر: لنقم بفحص type context للمجلد home

ls -Z /home

المجلد home يملك type context مختلف userhomedir_t:

drwx——. guestuser guestuser unconfined_u:object_r:user_home_dir_t:s0    guestuser
drwx——. root root system_u:object_r:lost_found_t:s0 lost+found
drwx——. regularuser regularuser unconfined_u:object_r:user_home_dir_t:s0    regularuser
drwx——. restricteduser restricteduser unconfined_u:object_r:user_home_dir_t:s0    restricteduser
drwx——. switcheduser switcheduser unconfined_u:object_r:user_home_dir_t:s0    switcheduser
drwx——. sysadmin sysadmin unconfined_u:object_r:user_home_dir_t:s0 sysadminunconfined_u:object_r:user_home_dir_t:s0         sysadmin

 

  • الجزء الرابع: هو security context وفي هذا المثال هو s0 وهو يعمل مع MLS – multilevel security وهو طريقة أخرى من أجل تطبيق سياسة الحماية الخاصة ب SELinux وهذا الجزء يعرض حساسية sensitivity المصادر (s0) سوف نتحدث عن الحساسية sensitivity وعن التصنيف categories لاحقاً. أول ثلاث أجزاء هي المهمة من أجل إعداد SELinux.

SELinux Process Contexts


يمكننا تشغيل خدمة  الأباتشي وخدمة SFTP (قمنا بتنصيبها في الجزء الأول من هذه السلسلة) باستخدام التعليمات التالية:

service httpd start

service vsftpd start

يمكننا استخدام التعليمة “ps” مع بعض الإضافات لرؤية العمليات الخاصة بكل من Apache and SFTP على السيرفر

ps -efZ | grep ‘httpd\|vsftpd’

Z-   يستخدم لعرض SELinux contexts. نتيجة تنفيذ هذه التعليمة سوف تعرض العمليات الجارية ورقم العملية ورقم العملية الأب لكل عملية:

system_u:system_r:httpd_t:s0            root        7126    1       0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7127    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7128    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7129    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7130    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:httpd_t:s0            apache      7131    7126    0 16:50 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
system_u:system_r:ftpd_t:s0-s0:c0.c1023 root        7209    1       0 16:54 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 7252 2636  0 16:57 pts/0 00:00:00 grep --color=auto httpd\|vsftpd

security context هو:

system_u:system_r:httpd_t:s0

وهو مكون من أربع أجزاء:

  • User
  • Role
  • Doming
  • Sensitivity

User , role and sensitivity هي نفسها لكل الملفات ولكن domain يختلف بين العمليات.

في المثال السابق يمكننا رؤية بعض العمليات التي تعمل ضمن httpd_t domain وعملية أخرى تعمل ضمن ftpd_t domain

ماذا يفعل المجال domain للعمليات ؟؟؟

إنه يقوم بإعطاء العملية حالة context لتعمل بها، كفقاعة حول العملية (حدود للعملية). وهو الذي يخبر العملية ما الأمور التي تستطيع القيام بها والأمور التي ممنوع القيام بها. ومن خلال هذا التقييد يتم التأكيد على أن كل مجال process domain يستطيع التعامل مع أنواع محددة من الملفات ولا شيء أكثر من ذلك. باستخدام هذه الطريقة حتى ولو تم سرقة العملية من قبل عملية أخرى أو من قبل مستخدم شرير فإن أسواء الاحتمالات هو تخريب الملفات التي يمكن الوصول إليها فقط من قبل هذه العملية.

مثلاً: العملية vsftp لا تملك وصول إلى الملفات المستخدمة من قبل sendmail or samba هذا التقييد يتم على مستوى النواة kernel level وهو يطبق بالقوة من قبل سياسة SELinux التي يتم تحميلها إلى الذاكرة وبالتالي فإن التحكم بالوصول أصبح أمر إلزامي.

 

التسميات


SELinux تستخدم اللاحقات التالية:

u: للإشارة إلى المستخدمين users

r: للإشارة إلى القواعد roles

t: للإشارة إلى الأنواع types للملفات وللإشارة إلى المجالات domains للعمليات.

 

كيف تصل العمليات إلى المصادر


تعرفنا على الملفات والعمليات و الحالات contexts التي تقوم بتحديد الأنواع types والمجالات domains المملوكة من قبل الملفات والعمليات.

كيف تعمل العملية ؟؟؟

العملية تحتاج للوصول إلى الملفات للقيام ببعض المهام (فتح ملف والقراءة منه أو التعديل عليه أو تنفيذ ملف) كل عملية يمكنها الوصول فقط إلى أنواع محددة من المصادر (ملفات ومجلدات ومنافذ وأمور أخرى). SELinux تحدد هذا الوصول من خلال السياسة الخاصة بها.

قواعد الوصول يمكن تعريفها باستخدام التعليمة التالية:

allow <domain> <type>:<class> { <permissions> };

تحدثنا مسبقاً عن الأنواع types والمجالات domains

سنتعرف على class والذي يعرف ماهي المصادر المسموح بالوصول لها (ملفات، مجلدات، أجهزة، منافذ)

التعليمة السابقة يمكن شرحها كالتالي:

  • إذا كانت العملية ضمن مجال domain معين.
  • وإذا كانت المصادر التي تحاول الوصول إليها موجودة ضمن class and type معين.
  • اسمح لها بالوصول.
  • وإلا امنعها من الوصول.

لنرى كيف تعمل هذه التقنية، لنفترض أن الحالات contexts الخاصة بعملية httpd التي تعمل على نظام التشغيل CentOS 7 هي:

system_u:system_r:httpd_t:s0 7126 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7127 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7128 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7129 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7130 ? 00:00:00 httpd
system_u:system_r:httpd_t:s0 7131 ? 00:00:00 httpd

المسار الافتراضي لسيرفر الويب هو var/www/html/ .لنقم بخلق ملف ضمن هذا المسار ومن ثم نفحص الحالة context الخاص به.

 

touch /var/www/html/index.html

ls -Z /var/www/html/*

File context لمحتوى الويب ستكون httpdsyscontent_t  :

-rw-r–r–. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/index.html

يمكننا استخدام تعلمية sesearch لعرض الأنواع types المسموح الوصول إليها من قبل العملية httpd:

sesearch –allow –source httpd_t –target httpd_sys_content_t –class file

source domain: هو httpd_t وهو المجال domain الخاص بالأباتشي. إهتمامنا سيكون حول المصادر الهدف target resources وهي الملفات التي تملك  httpdsyscontent_t : type context.

نتيجة تنفيذ التعليمة السابقة ستكون كالتالي:

Found 4 semantic av rules:
allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;
allow httpd_t httpd_content_type : file { ioctl read getattr lock open } ;
allow httpd_t httpd_content_type : file { ioctl read getattr lock open } ;
allow httpd_t httpdcontent : file { ioctl read write create getattr setattr lock append unlink link rename execute open } ;

 

السطر الأول:

allow httpd_t httpd_sys_content_t : file { ioctl read getattr lock open } ;

 

يعني أن httpd (سيرفر الأباتشي) يستطيع التحكم بالدخل والخرج I/O control ويستطيع القراءة والحصول على الوصف get attribute وقفل وفتح الملفات ضمن النوع httpdsyscontent type. في هذا المثال فإن الملف index.html موجود ضمن نفس هذا النوع. لنقم بتعديل الصفحة السابقة الموجودة في المسار التالي: /var/www/html/index.html/

لتحوي على التالي:

<html>
<title>
This is a test web page
</title>
<body>
<h1>This is a test web page</h1>
</body>
</html>

ومن ثم لنقم بتغيير الصلاحيات للمجلد /var/www/ ومحتوياته

chmod -R 755 /var/www

 

ومن ثم لنقم بإعادة تشغيل سيرفر الأباتشي

service httpd restart

 

لنقم الآن بطلب هذا الملف من المتصفح:

1

يمكننا الوصول لهذا الملف وهذا يعني أن httpd مسموح لها الوصول لهذا النوع من الملفات. نقم بعملية تغيير بسيطة من خلال تعديل الحالة context لهذا الملف. سوف نستخدم التعليمة chcon مع إضافة –type وهذا يسمح لنا بتحديد النوع الجديد للمصادر الهدف

chcon –type var_t /var/www/html/index.html

 

قمنا بتغيير نوع الملف إلى var_t . يمكننا التأكد من ذلك باستخدام التعليمة التالية:

ls -Z /var/www/html/

 

نتيجة تنفيذ هذه التعليمة:

-rwxr-xr-x. root root unconfined_u:object_r:var_t:s0   index.html

 

لنقم الآن بمحاولة الوصول لنفس الصفحة السابقة (httpd يحاول قراءة هذا الملف)

سوف نحصل على رسالة الخطأ forbidden

2

ماذا حدث هنا ؟؟؟؟

تم منع عملية الوصول لهذا الملف. سيرفر الويب مسموح له الوصول فقط إلى أنواع محددة من الملفات والنوع vart ليس من ضمن هذه الأنواع. عندما قمنا تغير الحالة context للملف index.html لتصبح vart فإن سيرفر الأباتشي لم يستطع قراءة هذا الملف وحصلنا على رسالة الخطأ السابقة. للسماح بقراءة الملف سنقوم بتغيير نوع الملف باستخدام التعليمة restorcon مع الخيار –v الذي يظهر التغير الذي تم على context labels.

restorecon -v /var/www/html/index.html

restorecon reset /var/www/html/index.html context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

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

 

وراثة الحالة context للمجلدات والملفات


بغض النظر عن السياسة المطبقة يمكننا خلق ملفات أو عمليات جديدة لها نفس الحالة context الخاصة بالعملية الأب أو المجلد الأصل.

(وراثة الحالة context inheritance)

إذا كان لدينا عملية لها الاسم “proca” وقامت بتوليد عملية أخرى لها الاسم “procb” فإن العملية الجديدة سوف تعمل ضمن نفس المجال domain والذي له الاسم proc_a بغض النظر عن السياسة المطبقة من قبل SELinux.

وبشكل مشابه إذا كان لدينا مجلد له النوع type: somecontext وقمنا بخلق ملف ضمن هذا المجلد فإن هذا الملف سوف يكون له نفس النوع بغض النظر عن السياسة المطبقة من قبل SELinux. لنقم بعرض الحالات contexts الخاصة بالمجلد /var/www/

ls -Z /var/www

 

المجلد html الموجود ضمن المجلد /var/www/ له  type context: httpdsyscontent_t . وكما رأينا سابقاً فإن الملف index.html (الموجود في هذا المجلد) له نفس النوع أيضاً:

drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html

 

هذه الوراثة لا تتم عندما نقوم بنسخ ملفات من مكان لآخر. في عملية النسخ سيتم تحديد نوع الملف بحسب نوع المجلد الهدف (مكان اللصق). لنقم بنسخ الملف index.html والذي له type context: httpdsyscontent_t. إلى المجلد /var/

cp /var/www/html/index.html /var/

 

إذا قمنا بعرض الحالة الخاصة بملف في المكان الجيد فسوف تكون vsr_t :

 

ls -Z /var/index.html
-rwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /var/index.html

يمكننا إلغاء التغيير في الحالة عند عملية النسخ باستخدام الخيار preserver=context– مع تعلمية النسخ cp.

عندما يتم نقل أو نسخ مجلد أو ملف فإن الحالة الاصلية original context تبقى نفسها. في المثال التالي قمنا بنقل الملف /var/index.html إلى المجلد /etc/

mv  /var/index.html  /etc/

وعند فحص الحالة الجديدة في المجلد /etc/ نجد أنها لم تتغير وهي var_t

ls -Z /etc/index.html
-rwxr-xr-x. root root unconfined_u:object_r:var_t:s0 /etc/index.html

لماذا يجب أن نهتم بالحالات contexts في عمليات النسخ والنقل ؟؟؟

فكر في السيناريو التالي: إذا كنت تريد نسخ ملفات HTML الخاصة بسيرفر الويب إلى مجلد منفصل ضمن المجلد الرئيسي root folder. ولأسباب تتعلق بالحماية، لا تريد لأي مهاجم أن يستطيع بسهولة تخمين مكان ملفات الموقع. قمت بتحديث التحكم بالوصول للمجلد وقمت بتعديل ملف الإعدادات الخاص بالويب للإشارة إلى المكان الجديد وقمت بإعادة تشغيل سيرفر الأباتشي ولكن عملية الوصول لصفحات الويب لم تنجح. إذا نظرت إلى الحالات contexts الخاصة بالمجلد والملفات الموجودة في داخله سوف تعرف سبب هذه المشكلة.

 

تجريب File Context Error


في البداية لنقم بخلق مجلد له الاسم www ضمن المجلد الرئيسي root ومن ثم لنقم بخلق مجلد باسم html ضمن المجلد www

mkdir -p /www/html

 

لنقم بكتابة التعليمة التالية:

 

ls -Z /www/
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 html

كما ترى فإن context: default_t . لنقم بنسخ محتوى المجلد /var/www/html إلى المجلد /www/html

cp /var/www/html/index.html /www/html/

 

الملفات التي تم نسخها سيكون لها نفس الحالة default_t. لنقم الآن بتعديل ملف الإعدادات httpd.conf للإشارة إلى المجلد الجديد الموجود ضمن المسار /www/html

vi /etc/httpd/conf/httpd.conf

 

تعديل هذا الملف يتم من خلال فتح الملف باستخدام محرر النصوص (vi في هذا المثال) ومن ثم إضافة الإشارة #  إلى المسار القديم ليصبح عبارة عن تعليق وإضافة المسار الجديد

# DocumentRoot “/var/www/html”

DocumentRoot “/www/html”

سنقوم أيضاً بتعديل حقوق الوصول لتصيح كالتالي:

#<Directory “/var/www”>
# AllowOverride None
# Allow open access:
# Require all granted
#</Directory>

<Directory “/www”>
AllowOverride None
# Allow open access:
Require all granted
</Directory>

ومن ثم حفظ هذا التغيير وإعادة تشغيل الأباتشي

service httpd restart

 

بعد الانتهاء من عملية التعديل السابقة وعند محاولة الوصول لصفحة الويب index.html سوف نحصل على رسالة الخطأ 403 forbidden

السبب هو أن الملف index.html قد تغيرت الحالة context الخاصة به أثناء عملية النسخ ويجب إعادتها لحالتها الأصلية httpdsyscontent_t.

ولكن كيف يتم ذلك ؟؟؟

 

تغير واستعادة SELinux File Contexts


في المثال السابق استخدمنا التعليمات chcon and resstorecon. تشغيل التعليمة chcon هو إجراء مؤقت ويمكننا استخدامه في حالات تصليح الأخطاء الخاصة بمنع الوصول ويمكننا استخدام التعليمة restorecon للعودة للحالة السابقة. تشغيل التعليمة chcon يتطلب معرفة الحالة الصحيحة للملف من خلال إضافة  type– لتحديد الحالة للهدف. التعليمة restorecon لا تتطلب تحديد ذلك وبمجرد تنفيذ هذه التعليمة سيتم إعادة تطبيق الحالة الصحيحة للملف وهذا التغير سيكون بشكل دائم. كيف سيعرف النظام أي حالة يجب أن يطبقها عند تنفيذ التعليمة restorcon.

SELinux تتذكر الحالة لكل ملف أو مجلد في السيرفر.

في نظام CentOS 7 فإن الحالات contexts موجودة في الملف التالي:

/etc/selinux/targeted/contexts/files/file_contexts

الحالات contexts للمجلدات والملفات الجديدة تسجل في الملف التالي:

/etc/selinux/targeted/contexts/files/file_contexts.local

عندما نقوم بتنفيذ التعليمة restorecon فإن SELinux يبحث عن الحالة الصحيحة في الملفين السابقين ويقوم بتطبيقها.

محتوى الملف السابق يمكن عرضه باستخدام التعليمة التالية:

 

cat /etc/selinux/targeted/contexts/files/file_contexts

/usr/(.*/)?lib(/.*)? system_u:object_r:lib_t:s0
/opt/(.*/)?man(/.*)? system_u:object_r:man_t:s0
/dev/(misc/)?agpgart -c system_u:object_r:agp_device_t:s0
/usr/(.*/)?sbin(/.*)? system_u:object_r:bin_t:s0
/opt/(.*/)?sbin(/.*)? system_u:object_r:bin_t:s0
/etc/(open)?afs(/.*)? system_u:object_r:afs_config_t:s0

لتغير حالة الملف index.html ضمن المسار www/html/ : نستخدم التعليمة semanage fcontext  والتي تقوم بكتابة الحالة الجديدة في الملف /etc/selinux/targeted/contexts/files/file_contexts.local .

 

semanage fcontext –add –type httpd_sys_content_t “/www(/.*)?”
semanage fcontext –add –type httpd_sys_content_t “/www/html(/.*)?”

للتأكد من ذلك يمكننا فحص محتوى ملف الإعدادات

cat /etc/selinux/targeted/contexts/files/file_contexts.local

 

يجب أن نرى التعديل كالتالي:

# This file is auto-generated by libsemanage
# Do not edit directly.

/www(/.*)? system_u:object_r:httpd_sys_content_t:s0
/www/html(/.*)? system_u:object_r:httpd_sys_content_t:s0

 

ثم يمكننا تنفيذ التعليمة restorecon

restorecon -Rv /www

 

هذه التعليمة تقوم بإعادة ضبط الحالة على ثلاث مستويات:

  • المستوى الأعلى /www
  • ثم على المستوى /www/html
  • ثم على مستوى الملفات الموجودة في هذا المجلد مثل الملف /www/html/index.html

restorecon reset /www context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /www/html context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /www/html/index.html context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

الآن وإذا حاولنا الوصول لصفحة الويب السابقة فسوف تنجح العملية ولن نحصل على رسالة الخطأ.

الأداة  matchpathcon يمكن أن تساعد في مشاكل تصليح الأخطاء، هذه الأداة تقوم بالنظر إلى الحالة الحالية للمصادر وتقارنها مع محتوى قاعدة البيانات SELinux context database وإذا وجدت اختلاف تقترح اجراء التعديل.

matchpathcon -V /www/html/index.html

-V: للتحقق من الحالة.

النتيجة ستكون كالتالي:

/www/html/index.html verified.

في حال وجود ملف له وسم خاطئ سوف تكون النتيجة كالتالي:

/www/html/index.html has context unconfined_u:object_r:default_t:s0, should be system_u:object_r:httpd_sys_content_t:s0

 

انتقال المجال Domain Transition


تعرفنا على كيفية وصول العمليات لمصادر النظام، سنتعرف الآن على كيفية وصول العمليات لعمليات أخرى.

Domain transition: في هذه  الطريقة تقوم العملية بتغيير الحالة context الخاصة بها من مجال  domain لمجال أخر. ليكن لدينا العملية “proca” والتي تعمل ضمن الحالة context: contextat. باستخدام domain transition فإن العملية proca يمكنها تشغيل التطبيق (البرنامج أو السكريبت التنفيذي) ذو الاسم appx والذي من الممكن أن يولد عملية أخرى. العملية الجديدة لها الاسم procb والتي تعمل ضمن المجال الذي له context: contrxtbt

تم الانتقال من contextat to contextbt خلال البرنامج appx والذي يعمل كنقطة دخل ل contextb_t

3

لنقم بتشغيل العملية vsftp باستخدام التعليمة التالية: service vsftpd start

لنفترض أن العملية system هي الأب لكل العمليات وهذا سوف يبدل العملية System V init لتعمل في context: init_t

 

ps -eZ | grep init
system_u:system_r:init_t:s0 1 ? 00:00:02 systemd
system_u:system_r:mdadm_t:s0 773 ? 00:00:00 iprinit

العملية تعمل ضمن المجال domain: init_t والتي سوف تستدعي الملف التنفيذي /usr/sbin/vsftpd والذي له type context: ftpdexect وعندما يبدأ هذا البرنامج بالعمل فإن vsftpd ستعمل ضمن المجال domain: ftpd_t

يمكننا فحص domain contexts للملفات باستخدام التعليمة التالية:

ls -Z /usr/sbin/vsftpd

 

وستكون النتيجة كالتالي:

-rwxr-xr-x. root root system_u:object_r:ftpd_exec_t:s0 /usr/sbin/vsftpd

 

فحص العملية:

ps -eZ | grep vsftpd

 

النتيجة:

system_u:system_r:ftpd_t:s0-s0:c0.c1023 7708 ? 00:00:00 vsftpd

 

العملية تعمل ضمن init_t domain وهو الملف التنفيذي وله النوع type: ftpdexect هذا الملف بدأ العمل ضمن ftpd_t domain. لا يمكن للمستخدم أو التطبيق التحكم بعملية الانتقال وهي عبارة عن شرط مسبق موجود في سياسة SELinux التي يتم تحميلها إلى الذاكرة عن إقلاع النظام. في السيرفر الذي يعمل بدون SELinux فإن المستخدم يستطيع بدأ العملية من خلال الانتقال لحساب أقوى (له صلاحيات أعلى). في SELinux هذا التحكم بالوصول يكون مكتوب بشكل مسبق ضمن السياسة وهذا هو سبب قول أن SELinux تطبيق سياسة تحكم بالوصول الإلزامية Mandatory Access Control.

Domain transition يخضع لثلاث قواعد صارمة:

  • العملية الأب التي تعمل ضمن source domain يجب أن تملك صلاحيات تنفيذية للتطبيق الموجود بين المجالين.
  • ملف الحالة file context للتطبيق يجب أن يتم تعريفه ك entrypoint للمجال الهدف.
  • المجال الأصلي يجب أن يملك صلاحيات للقيام بعملية التحويل للمجال الهدف.

لنقم بتنفيذ التعليمة sesearch على المثال السابق vsftpd لرؤية القواعد الثلاثة السابقة.

في البداية فإن source domain initt يجب أن يملك صلاحيات تنفيذية على التطبيق الدخل ضمن ftpdexec_t context

sesearch -s init_t -t ftpd_exec_t -c file -p execute -Ad

 

النتيجة تظهر العمليات ضمن init domain والتي تستطيع القراءة والحصول على الوصف get attribute وفتح الملفات ضمن ftpdexec_t context :

Found 1 semantic av rules:

   allow init_t ftpd_exec_t : file { read getattr execute open } ;

لنقم بفحص الملف التنفيذ إذا كان نقطة دخل للمجال الهدف ftpd_t :

sesearch -s ftpd_t -t ftpd_exec_t -c file -p entrypoint -Ad

والنتيجة:

Found 1 semantic av rules:

   allow ftpd_t ftpd_exec_t : file { ioctl read getattr lock execute execute_no_trans entrypoint open } ;

 

وفي النهائية فإن source domain initt يجب أن يملك صلاحيات ليتم تحويله إلى المجال الهدف ftpdt

sesearch -s init_t -t ftpd_t -c process -p transition -Ad

وهو يملك هذه الصلاحية

Found 1 semantic av rules:

   allow init_t ftpd_t : process transition ;

 

المجالات الغير محددة Unconfined Domains:

تعرفنا على المجالات domains والتي هي عبارة عن حدود حول العملية والتي تحدد للعملية المسموح والممنوع القيام به وهذا يسمى تقييد العملية confines the process.

SELinux يحوي أيضاً على عمليات تعمل ضمن مجالات غير محدودة unconfined domains. يمكنك تخيل العمليات الغير محدودة على أنها العمليات التي يمكنها الوصول لكل أنواع المصادر في النظام وهذا الوصول الغير محدود ليس عشوائي وهو محدد ضمن سياسة SELinux

الخلاصة


قمنا بتغطية المفاهيم الأساسية ل SELinux وتعرفنا على طريقة إدارة file and process context والتي تعتبر أساس نجاح تطبيق SELinux

في المقال القادم سنعرف على طريقة تعامل SELinux مع المستخدمين.

 

ترجمة لمقال: an introduction to SELinux on CentOS 7 – Part 2: Files and Processes لصاحبها Sadequl Hussain



الهكر الاخلاقي http://ift.tt/1UlITEh

المتحدث باسم الخارجية الايرانية : السعودية تعمل لاستمرار الفوضى في سوريا والمستفيد منها الكيان الصهيوني #news #الاخبار السياسية #العراق #العرب

الموقع يدعم الحشد الشعبي

اكد المتحدث باسم وزارة الخارجية الإيرانية حسين جابري انصاري، ان السعودية تسعى لزرع فوضى – في اشارة الى دور الجماعات الارهابية المدعومة سعوديا – تمتد لآفاق غير محددة في سوريا من اجل ان تزيد يأس الشعوب من تحقق مطالبها في الحرية والامل ٫ والكيان الصهيوني هو الرابح الاول من استمرار هذه االازمة. واضاف : “إن إيران تختلف مع السعودية في عدة قضايا لأن السعودية تعتبر نفسها خصما لإيران في المنطقة، ان السعودية ومنذ فترة طويلة تتخذ سياسة خارجية قائمة على العداء وزيادة التوتر في المنطقة، لذلك نرى أن العلاقات السعودية الإيرانية خلال السنوات الماضية كانت متوترة في الفترة التي سبقت قطع العلاقات”. وشدد جابري على أن إيران لن تسمح للدول الأخرى باتخاذ القرارات حيال سوريا وفرض ما يريدونه على الشعب السوري وقال جابري انصاري في مقابلة مع التلفزيون الايراني مساء السبت حول الخطوط الحمراء الايرانية في سوريا : أن الخط الاحمر الاساسي لإيران الإسلامية هو منع الاطراف الاجنبية من تقرير مصير الشعب السوري، ان الاطراف الاجنبية بامكانهم ان يسهلوا حصول اتفاق سياسي للرجوع الى اصوات الشعب السوري. واضاف : لا احد يمتلك حق الانتداب على الشعب السوري وايران لا تسمح للدول الأخرى باتخاذ القرارات حيال سوريا وفرض ما يريدونه على الشعب السوري ومستقبل سوريا، ان الخط الاحمر في سوريا هو ان يقرر الشعب السوري مستقبل بلادهم.

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

السعودية تسيس الحج بمواقفها

وفيما يتعلق بموسم الحج أشار جابري أنصاري الى زيارة وفد منظمة الحج والزيارة الايرانية الى السعودية قائلا إن التفاوض بشأن الحج كان على عاتق منظمة الحج والزيارة ووفدنا ذهب الى السعودية وعاد منها، مضيفا “لقد أكدُت عدة مرات أن السعودية تتحمل مسؤولية ما جرى حتى الآن، وإن هذا البلد يخالف أصول الضيافة ويقحم خلافاته السياسية في موضوع الحج”.



اعضاء مجلس الشورى الاسلامي يجدد انتخاب لاريجاني رئيسا للمجلس وخسارة منافسه عارف #news #الاخبار السياسية #العراق #العرب

الموقع يدعم الحشد الشعبي

أعيد انتخاب د. علي لاريجاني الأحد 29 مايو/أيار، رئيسا لمجلس الشورى الإيراني بـ173 صوتا مقابل 103 لخصمه الإصلاحي محمد رضا عارف.وجرى هذا التصويت بعد انتخابات تشريعية سمحت بإعادة توازن للقوى بين المحافظين من جهة والإصلاحيين المتحالفين مع المعتدلين بقيادة الرئيس حسن روحاني من جهة أخرى، لكنها غير كافية ليتاح للأخيرين تولي رئاسة البرلمان. وحقق لاريجاني (57 عاما) بذلك فوزا كبيرا بحصوله على أكثر من 61 بالمئة من الأصوات. وشارك في التصويت 281 نائبا من أصل أعضاء البرلمان البالغ عددهم 290 نائبا. وحصل الإصلاحي عارف على عدد من الأصوات أقل من عدد النواب المعلن من قبل معسكره.

وتفيد أرقام وضعتها “وكالة فرانس برس” غداة الانتخابات التشريعية استنادا إلى نتائج رسمية بأن الإصلاحيين حصلوا على 133 مقعدا، والمحافظين على 125 مقعدا والمستقلين على 26 مقعدا. لكن النواب الذين انتخبوا بدعم من الأحزاب الإصلاحية والمعتدلة فضلوا التصويت للاريجاني المعروف ببراغماتيته والمؤيد للاتفاق الذي وقع بين طهران والقوى الكبرى في يوليو/تموز 2015 حول البرنامج النووي الإيراني، خلاف للأكثر تشددا في معسكر المحافظين الذي ينتمي إليه.



#امن "داعش" يرمي قتلاه بنهر الفرات لإخفاء الجثث تحسباً من هروب بقية عناصره #العراق #security #iraq

الموقع يدعم الحشد الشعبي
اكد مصدر مطلع من داخل مدينة الفلوجة عن قيام "داعش " برمي قتلاه بنهر الفرات في المدينة.

from الغدیر خدمة امن http://bit.ly/25qkfHO
via المصدر

#امن البيشمركة تبدأ عملية عسكرية في محور الخازر لتحرير المناطق من "داعش" #العراق #security #iraq

الموقع يدعم الحشد الشعبي
بدأت قوات البيشمركة الكردية فجر اليوم الاحد عملية عسكرية في محور الخازر لتحرير عدة مناطق من سيطرة عصابات "داعش" الارهابية .

from الغدیر خدمة امن http://bit.ly/1TN4aKn
via المصدر

الخارجية البريطانية.. "القذافي وراء إسقاط الطائرة" #africa #قارة_افريقيا #اخبار #صحف #احداث

الموقع يدعم الحشد الشعبي
نشرت صحيفة الصنداي تايمز تقريراً عن سيدة بريطانية بقيت تبحث سنوات طويلة في ظروف مقتل زوجها العالم في حادث سقوط طائرة ليبية، إلى أن تمكنت أخيراً من إثبات أن الطائرة أسقطت بأمر من رئيس النظام الليبي السابق معمر القذافي....

التفاصيلقناة العالم الأخبارية http://ift.tt/25qgBO9

هذا ما حدث عندما سقط طفل في بيت غوريلا؟! #america #NEWS #اخر الاخبار #موجز

الموقع يدعم الحشد الشعبي
قال مسؤول في حديقة حيوان مدينة سينسناتي الأمريكية إن حراس الحديقة قتلوا غوريلا ذكرا يوم السبت، بعد أن جر طفلا عمره أربع سنوات سقط في بيت الغوريلا....

التفاصيلقناة العالم الأخبارية http://ift.tt/1TMXaNB

تواصل العدوان على اليمن، وإيقاف توريد قنابل عنقودية للسعودية #yemen #اليمن # اخر الاخبار #صحف #عاجل #تقارير

الموقع يدعم الحشد الشعبي
قصف مرتزقة العدوان السعودي بالقنابل الضوئية والصواريخ والمدفعية الثقيلة جبل هيلان ومنطقة المطار ومزارع المواطنين في مديرية صرواح بمحافظة مأرب اليمنية....

التفاصيلقناة العالم الأخبارية http://ift.tt/1sj378O

وزراء الخارجية العرب يدعمون المبادرة الفرنسية والاحتلال يرفضها #palestine #اخبار #فلسطين الان #فضائح الكيان الصهيوني

الموقع يدعم الحشد الشعبي
دعمت الجامعة العربية المبادرة الفرنسية للتسوية الفلسطينية الإسرائيلية التي رفضتها تل أبيب بشدة.. فيما وصف الأمين العام للجامعة العربية نبيل العربي الكيان الإسرائيلي بأنه آخر معاقل الفاشية والتمييز العنصري في العالم....

التفاصيل قناة العالم الأخبارية http://ift.tt/1UlvL1V

الجامعة العربية تدعم المبادرة الفرنسية للتسوية الفلسطینية الإسرائيلية #palestine #اخبار #فلسطين الان #فضائح الكيان الصهيوني

الموقع يدعم الحشد الشعبي
دعمت الجامعة العربية المبادرة الفرنسية للتسوية الفلسطینية الإسرائيلية التي رفضها بشدة بنيامين نتنياهو.. بدوره وصف الأمين العام الجامعة نبيل العربي كيان الاحتلال بأنه آخر معاقل الفاشية والاستعمار والتمييز العنصري في العالم....

التفاصيل قناة العالم الأخبارية http://ift.tt/1UltVhK

سيلفي و"المجرم" خلفي .. لكن أين؟ #palestine #اخبار #فلسطين الان #فضائح الكيان الصهيوني

الموقع يدعم الحشد الشعبي
تفاجأ سكان تل أبيب بصورة لرئيس النظام العراقي البائد صدام حسين وضعت على حافة الطريق وسط تل أبيب....

التفاصيل قناة العالم الأخبارية http://ift.tt/1sEX9yL

اليمن بين التصعيد السعودي الميداني والسياسي+فيديو #yemen #اليمن # اخر الاخبار #صحف #عاجل #تقارير

الموقع يدعم الحشد الشعبي
(العالم) 28/05/2016 - تصعيد من العدوان السعودي والمرتزقة، تقول مصادر يمنية وتؤكد الخرق مجددا. طيران التحالف شن أكثر من خمس وأربعين غارة، على معسكر العمالقة في محافظة عمران، والحصيلة إصابة أربعة جنود يمنيين....

التفاصيلقناة العالم الأخبارية http://ift.tt/1XXM5ci

#الرياضه هال سيتي يعود إلى الدوري الإنجليزي الممتاز بعد عام من الهبوط #SPORT

الموقع يدعم الحشد الشعبي
بعد عام من الهبوط، فريق هال سيتي يصعد مجددا إلى الدوري الإنجليزي الممتاز لكرة القدم، وذلك إثر الفوز على شيفيلد ونزداي 1-0 في مباراة فاصلة.

التفاصيل على الرابط التالي http://bbc.in/1P7tBUN
المصدر

#الرياضه ريال مدريد يهزم اتليتكو مدريد ويفوز بدوري أبطال أوروبا #SPORT

الموقع يدعم الحشد الشعبي
تتويج فريق ريال مدريد بلقب بطولة دوري أبطال أوروبا لكرة القدم، وذلك بعد الفوز على مواطنه اتليتكو مدريد بركلات الترجيح (5-3) في المباراة النهائية التي أُقيمت في مدينة ميلانو الإيطالية.

التفاصيل على الرابط التالي http://bbc.in/1Ul2c0q
المصدر

مسيرة للمعارضة ضد موغابي في زيمبابوي #africa #قارة_افريقيا #اخبار #صحف #احداث

الموقع يدعم الحشد الشعبي
نظمت حركة المعارضة الرئيسية في زيمبابوي مسيرة حاشدة ضد الرئيس روبرت موغابي السبت مطالبة اياه بالتنحي بسبب اخفاقه في اصلاح الاقتصاد....

التفاصيلقناة العالم الأخبارية http://ift.tt/1WSgj0F

 
::جميع المشاركات المكتوبة تعبّر عن وجهة نظر كاتبها ... ولا تعبّر عن وجهة نظر إدارة الموقع::

C0DED BY IRAQ Electronic Army 2015-2016