أمن Linux / متوسط: حدود الخدمة والسياسة ودورة الحياة / الدرس 7
مراجعة حدود تنفيذ الخدمة باستخدام systemd
ربط هوية الخدمة ورؤية الملفات وانتقالات الامتياز والحالة المشروعة القابلة للكتابة.
في هذه الصفحة
أهداف الدرس
- شرح غرض توجيهات تنفيذ مختارة وما لا تثبته.
- فصل إتاحة الكتابة في عرض الملفات عن الإذن التقديري.
اشتقاق حد الخدمة من سير عملها
يحتاج عامل التقارير مدخلات عامة ودليل حالة صغيرا قابلا للكتابة وتبعيات تشغيل مراجعة. لا ينبغي أن يكتسب إدارة المضيف لمجرد بدء مشغل له. تستطيع خدمة systemd التعبير عن الهوية وقيود بيئة التنفيذ، لكن يجب أن تلائم التوجيهات عبء العمل الفعلي والإصدار المدعوم. وثائق systemd في Ubuntu 24.04 مرجع هذا الجزء؛ ولا تثبت وحدة أو تبدأ. سجل قراءة المدخلات وإنشاء الحالة والاتصال والفشل، حتى يقيم القيد مقابل السلوك المفيد بدلا من جمعه كدرجة غير مفسرة.
قراءة جزء إعداد تنفيذ توضيحي
يختار الجزء حساب خدمة مختلقا، ويقترح no_new_privs ، ويجعل معظم عرض الملفات للقراءة فقط وفق دلالات ProtectSystem=strict ، ويسمي استثناء قابلا للكتابة. يغير PrivateTmp رؤية الأدلة المؤقتة، ولا يضمن عزلا كاملا. لا يمنح ReadWritePaths ملكية أو إذن كتابة تقديريا، ولا يجعل نظام ملفات أساسيا للقراءة فقط قابلا للكتابة. ليس الجزء وحدة كاملة ولا يتضمن تنفيذيا. تبقى الحسابات والملكية والتبعيات والدعم والإنفاذ غير متحققة. لا تلصقه في إعداد مضيف كملف تقوية عام.
[Service]
User=report-lab
NoNewPrivileges=yes
ProtectSystem=strict
ReadWritePaths=/var/lib/report-lab
PrivateTmp=yes
يراجع الجزء مفاهيم موثقة فقط، ولا يثبت أو يحلل بواسطة systemd أو يطبق. الحساب والمسار توضيحيان، ولا تتغير خدمة أو أذونات المضيف.
نمذجة شروط الكتابة المتكاملة
يعامل البرنامج الإذن التقديري وإتاحة الملفات للخدمة ونطاق التطبيق حقائق مراجعة مستقلة، ويشترط صدقها كلها وفق سياسة القرار الخيالية. لا يحاكي النواة أو كل تجاوز وتفاعل في systemd. يوضح لماذا لا يصلح استثناء كتابة مسار رفض DAC أو التطبيق تلقائيا. قد تؤثر أيضا واصفات موروثة ومساحات أسماء وسياسة إلزامية وتركيبات تحتاج مراجعة مستقلة. أظهر افتراضات النموذج، ولا تسم ثلاث قيم منطقية تنفيذا كاملا للتحكم بالوصول.
def write_allowed(dac, service_view, application_scope):
return dac is True and service_view is True and application_scope is True
assert write_allowed(True, True, True) is True
assert write_allowed(False, True, True) is False
assert write_allowed(True, False, True) is False
assert write_allowed(True, True, False) is False
print("four complementary write-policy cases checked")
four complementary write-policy cases checked
يقيم البرنامج الكامل قيما معلنة في الذاكرة دون كتابة ملف أو فحص إذن أو استعلام مدير. يثبت علاقة السياسة فقط لا إنفاذ العزل الفعلي.
مراجعة التبعيات والحالة الدائمة معا
قد تحتاج الخدمة المقيدة مكتبات ومقابس وحل أسماء وشهادات وأدلة بيانات. حدد كل تبعية بدلا من توسيع نظام الملفات كله عندما يفشل البدء. افصل المدخلات المقروءة والحالة القابلة للكتابة والعمل المؤقت والأسرار بالغرض والعمر. لا تلغي الرؤية المؤقتة الخاصة ضرورة إنشاء الملفات وتنظيفها بأمان. يجب ألا تكشف السجلات أو تقارير الفشل القيم المحمية. لا تعطل كل قيد للحصول على بدء ناجح ثم تسم الخدمة مقواة؛ يحفظ التصحيح المحدد الحد المقصود والعمل المشروع.
فصل نص الوحدة المقصود عن السلوك الفعلي
يثبت تحقق مؤقت معتمد الإعداد المحمل فعلا، ويرصد عمل المدخلات والمخرجات المسموح ورفض العمليات غير المتعلقة. سجل إصداري systemd والنواة والخصائص المتاحة أو المتجاهلة أو غير المتوافقة. لا تنفذ هذه العمليات هنا؛ يبقى الجزء غير قابل للتنفيذ، ومثال Python حسابا محليا للحقائق. لا تثبت درجة أو مراجعة ملف وحدها الاحتواء. حدد ما تدعمه القراءة وحدود التشغيل المنتظرة، بما فيها افتراضات الحساب والمسار والقدرات والسياسة ودورة الخدمة.
الأخطاء الشائعة وإصلاحها
يمنح ReadWritePaths إذن DAC
- لماذا يحدث؟
- تخلط الرؤية والملكية.
- كيف تصلحه؟
- راجع الهوية والوضع و ACL والسياسة مستقلة.
- كيف تتجنب تكراره؟
- اختبر الشروط المتكاملة لا توجيها واحدا.
يسمى الجزء عزلا كاملا
- لماذا يحدث؟
- التبعيات والإنفاذ غير متحققين.
- كيف تصلحه؟
- حدد نطاقه واطلب دليلا تشغيليا معتمدا.
- كيف تتجنب تكراره؟
- افصل النية والمحمل والمرصود.
يزيل فشل البدء كل القيود
- لماذا يحدث؟
- لا تحدد التبعية الفاشلة.
- كيف تصلحه؟
- حدد المورد والتصحيح الضيق.
- كيف تتجنب تكراره؟
- اجمع العمل الناجح والرفض المجاور.
اختبر فهمك
1. يوجد استثناء يسمح بالكتابة في عرض ملفات الخدمة، لكن قيمة DAC في النموذج هي false. ماذا يقرر النموذج المحلي؟
اعرض الحل المشروح
يرفض وفق سياسة التقاطع المعلنة. يصف الاستثناء إتاحة المسار ضمن عرض ملفات الخدمة، ولا يمنح ملكية أو إذنا تقديريا. يجب أن يحدد التشخيص الفعلي الحد الذي رفض الوصول في بيئة مصرح بها. لا يغير هذا المساق أذونات أو إعدادات وحدة.
2. لماذا لا يكفي ملف systemd مراجع لإثبات الاحتواء؟
اعرض الحل المشروح
قد لا يحمل أو توجد استبدالات أو إعدادات غير مدعومة أو اعتماد وموارد وتبعيات مختلفة. افحص البيئة الفعالة والقبول والرفض مستقلا. احفظ مراجعة النية دون ضمان تشغيل.
أهم ما تعلمته
- تلائم التوجيهات العمل والإصدار.
- لا يمنح عرض الكتابة الإذن التقديري.
- يحتاج الاحتواء حالة فعالة وسلوكا مرصودا.