سلطة CA مشتركة وأبواب منفصلة: خدمة واحدة لكل ملف قبول
الشهادة التي تجتاز فحوص السلطة المشتركة ليست تصريحًا بدخول كل خدمة. القبول يجب أن يكون في ملف خاص بكل خدمة يطلبه البرنامج الخفي.
الشهادة التي تتحقق مقابل سلطة مشتركة تكون قد اجتازت اختبار ثقة، لا اختبار عضوية. وكثيرًا ما يُدمج هذان القراران لأنهما يحدثان معًا وقت الاتصال، ويبقى الدمج غير مرئي حتى يُقبل في خدمة شخص لا ينبغي أن يكون فيها. والإصلاح ليس سلطة ثانية؛ بل قرار ثانٍ يُتخذ لكل خدمة ويُسجَّل حيث يقرأه البرنامج الخفي. أبقِ الاثنين منفصلين وسيختفي معظم الالتباس في هذا المجال.
سلسلة موثوقة لا تقول شيئًا عن عضوية الخدمة
يمكن لخدمتين أن تقبلا نفس التسلسل الهرمي المُصدِر ومع ذلك يكون لديهما مجموعتان مختلفتان. حاسوب محمول واحد ينتمي إلى الأولى ولا يجوز أن يصل إلى الثانية، بينما ينتمي عملاء آخرون من نفس التسلسل إلى هناك فعلًا. وإزالة السلطة من تلك الخدمة ستستبعد كل من يستخدمها بشكل مشروع، لذا فالعمل هو القبول لا الثقة.
من المفيد تصور قفلين على باب واحد. الشهادة تفتح القفل الخارجي، وقرار خاص بالخدمة يفتح القفل الداخلي؛ ولا أحدهما بديل عن الآخر. والخدمة التي لا تملك إلا القفل الخارجي لا تفرض العضوية على الإطلاق، وإنما تتحقق من الهوية فقط. اكتب القرارين قبل تعديل أي شيء، لأن السياسة التي توجد فقط في هيئة اتصال عامل لا يمكن تدقيقها. وما يلي يتعلق بالقفل الداخلي.
حوِّل التجاوزات الاختيارية إلى بوابة قبول
عادةً ما يكون دليل إعداد العميل وسيلة راحة: فالملفات فيه تتجاوز إعدادات العملاء الذين تسميهم، والعميل الذي لا ملف له يعمل ببساطة بالإعدادات الافتراضية للخادم. وتوجيه واحد يحوّل تلك الراحة إلى بوابة، بحيث يعني غياب الملف رفض الاتصال.
client-config-dir /etc/openvpn/service-a/clients
ccd-exclusive
توثّق نسخة المجتمع من OpenVPN 2.6 ccd-exclusive في دليلها بوصفه هذا الشرط بالضبط، ويعتمد البحث عن الملف المسمّى على هوية العميل الفعلية. وقد تختلف البِنى الأخرى والخوادم التي تديرها المنتجات، لذا تحقق من الإصدار المثبّت قبل الاعتماد على الدلالة نفسها في مكان آخر.
اعتبرها مسارًا مثالًا وتحقق من التخطيط المنشور بدلًا من إنشاء دليل اخترعته إحدى الأدلة. واترك فحوص الشهادات القائمة وفحوص هوية الخادم ومصادقة الحساب كما هي بالضبط، لأن المقطع يضيف شرطًا ولا يزيل شيئًا. وجهّز التغيير قبل الإنتاج، لأن الرفض الذي يظهر في نقطة خاطئة يبدو كفشل شهادة ويوجّه التحقيق نحو السلطة. وتأكد بعد ذلك من أن سطر السجل الخاص بعميل مرفوض يذكر ملف الإعداد المفقود لا السلسلة.
دليل واحد لكل خدمة، لا قائمة مشتركة واحدة
العضوية تنتمي إلى الخدمة التي تفرضها، لذا تحتفظ كل خدمة بدليلها وملفاتها الخاصة. توجيه خدمتين إلى قائمة واحدة يجعلهما تتشاركان العضوية سواء قصد أحد ذلك أم لا، ويصبح من الصعب تتبع التغيير الناتج إلى قرار. ويمكن أن تبقى السلطة المشتركة مشتركة؛ أما ملفات القبول فلا. وفصلها يعني أيضًا أن خطأً في خدمة واحدة لا يمكن أن يوسّع أخرى بصمت.
إدخال DEFAULT هو الحالة التي تضلّل الناس. فهو يوفّر إعدادات بديلة عند عدم العثور على ملف مسمّى، لكنه ليس الملف المسمّى الذي تتطلبه البوابة، لذا لا يمكنه قبول عميل بمفرده. اختبر عميلًا ليس له أي إدخال على الإطلاق وتأكد من الرفض؛ فإن قُبل ذلك العميل فمعنى ذلك أن البديل مطبّق و ccd-exclusive غير سارٍ في تلك الحالة.
الهوية الفعلية تحدد أي ملف يُقرأ
يستخدم البحث الهوية التي صادق بها العميل فعليًا، وهي عادةً الاسم الشائع في الشهادة. وحيث يتحقق الخادم أيضًا من اسم مستخدم وكلمة مرور ويحوّل ذلك الاسم إلى الاسم الشائع، يجب أن يطابق الملف اسم المستخدم المصادق عليه بدلًا من ذلك. وعدم التطابق يترك دليلًا مليئًا بأسماء ملفات معقولة لا تُختار أبدًا.
القراءة هي النصف الآخر. فالبرنامج الخفي عادةً ما يتخلى عن امتيازاته بعد بدء التشغيل، لذا يحتاج الحساب المخفَّض إلى صلاحية قراءة الدليل وكل إدخال فيه. ويجب ألا يتمكن العملاء من إنشاء إدخالهم الخاص عبر أي مسار قابل للكتابة، لأن القبول الذاتي يبطل الآلية تمامًا. تحقق من أذونات التحميل والمشاركة وليس من نمط الملف فقط، لأن دليلًا يبدو مغلقًا لحساب قد يكون مفتوحًا لآخر. ثم تأكد من الحساب الذي تستخدمه العملية الجارية فعليًا، لا الحساب الذي يذكره ملف الوحدة. وهما يتطابقان فقط عندما لا يغيّرهما شيء آخر.
راقب الرفض والقبول والإلغاء كلًا على حدة
جرّب هوية تنتمي إلى الخدمة وتأكد من أنها تتصل. جرّب شهادة صالحة بلا إدخال وتأكد من رفضها. جرّب هوية مقبولة في الخدمة الأخرى وتأكد من أنها غير مقبولة هنا. وسجّل نسخة الخدمة والهوية الفعلية بجانب كل نتيجة، لأن النتيجة بلا هذا السياق لا يمكن لأحد آخر إعادة إنتاجها.
السحب عملية منفصلة عن الإلغاء. فتحرير ملف قبول يزيل استحقاق خدمة واحدة بينما تبقى الهوية صالحة في كل مكان آخر، أما مفتاح مخترق فيحتاج استجابة إلغاء على مستوى المؤسسة. وقرر مسبقًا ما يحدث للجلسات القائمة بالفعل، لأن لا تحرير الدليل ولا قائمة الإلغاء تنهيها بمفردها.
القبول هو أيضًا البوابة الأولى فقط. فالانضمام إلى خدمة لا يقول شيئًا عن الشبكات الفرعية أو قواعد البيانات أو واجهات الإدارة خلفها، وسياسة تلك الموارد يجب أن تُكتب وتُختبر على حدة.