Capabilities في نظام لينكس
نظام صلاحيات مشابه لـ sudi كتبت عنه في تدوينه SUID والصلاحيات في نظام لينكس لكن في Capabilities يتم تجزئه الصلاحيات الى اجزاء صغيره لتفادي اعطاء صلاحيات زائده عن حاجه المستخدم وممكن تسبب اختراق للنظام وتصعيد الصلاحيات.
من اهم الامور في حماية نظامك هو اعطاء المستخدم اقل قدر من الصلاحيات اللتي تسمح له ان يقوم بمهامه.
مثلا لو كان عندنا برنامج يحتاج يتنصت على بورت بين 1-1023 نحتاج صلاحيات root لتشغيله
الحلول المتاحه عشان يشغل الملف هذا مستخدم عادي :
اعطاء المستخدم صلاحيات root او باسورد الـ root وهذا الحل خطير جداً لانك اعطيك المستخدم كامل الصلاحيات على النظام فقط لتشغيل ملف واحد
يتم اعطاء الملف صلاحيات SUID بحيث المستخدم يشغل الملف بصلاحيات الروت وهذا الحل فيه ايضا نوع من الخطوره لانك اعطيك الملف صلاحيات كامله على النظام لو كان الملف قابل للتعديل وتم استغلاله لتنفيذ عمليات اخرى ممكن يسبب اختراق او تصعيد صلاحيات للنظام
استخدام Capabilities بحيث يتم اعطاء البرنامج صلاحيه فتح منفذ فقط ( CAP_NET_BIND_SERVICE ) وبهذا الشكل يقدر المستخدم يقوم بمهامه على النظام بأقل مقدار ممكن من الصلاحيات.
بعض صلاحيات Capabilities
CAP_SETUID = السماح بتغيير UID
CAP_SETGID = السماح بتغيير GID
CAP_CHOWN = السماح بتغيير مالك ملف ما
قائمه الصلاحيات كامله تجدها هنا
مثل مانلاحظ حتى مع Capabilities توجد خطوره في حاله استخدامه بطريقه خاطئه بسبب وجود صلاحيات حساسه
مستقبلا راح نستعرض بعض طرق استغلال الاعدادت الخاطئه للـ capabilities و SUID في تصعيد الصلاحيات
عشان نستعرض الملفات الي عندها صلاحيات capabilities نستخدم هذا الامر
getcap -r / 2>/dev/null
اما في حاله رغبتك في اعطاء ملف test ما صلاحيات تغيير UID على سبيل المثال نستخدم هذا الامر
setcap cap_setuid+ep /home/buhaimed/test
اتمنى اني وفقت شرح Capabilities بطريقه سهله
اذا كانت التدوينه مفيده لاتنسى مشاركتها مع اصدقائك من خلال الضغط على ايقونه تويتر بالاسفل