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

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

لماذا خدمة PAM منفصلة

تأخذ إضافة auth-pam اسم خدمة كوسيط لها. يختار ذلك الاسم ملفًا تحت /etc/pam.d، والحزمة الموجودة في ذلك الملف هي ما يعمل أثناء تسجيل الدخول إلى VPN. إذا مررت الاسم نفسه الذي يستخدمه تسجيل الدخول على مستوى النظام، فإنك ترث كل قرار في تلك الحزمة، بما فيها القرارات التي أُضيفت لاحقًا لأسباب غير ذات صلة.

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

فصل الخدمة يحد أيضًا من نطاق التأثير. قاعدة خاصة بـ VPN في حزمة مشتركة يمكن أن تمنع وصول SSH أو الطرفية للجميع، مما يحوّل تغييرًا في الوصول إلى انقطاع.

كتابة قاعدة المجموعة

فحص الأهلية ينتمي إلى مرحلة الحساب، بعد التحقق من بيانات الاعتماد. قاعدة مثل account required pam_succeed_if.so user ingroup vpnusers تسمح باستمرار المعالجة فقط عندما يكون المستخدم الموثّق عضوًا في تلك المجموعة.

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

لا تضف use_uid بدافع العادة. بدونه تقيّم الوحدة المستخدم الذي يجري التحقق منه؛ ومعه تقيّم الوحدة الحساب الذي يعمل تحت إشرافه عملية OpenVPN، وهو عادةً root أو حساب خدمة، وبالتالي ليس الشخص الذي يسجل الدخول.

تأتي عضوية المجموعة من تحليل الهوية في النظام، لا من اسم تعرفه. للمستخدمين في الدليل، تأكد من أن الخلفية نفسها تجيب على استعلامات المجموعة لذلك المستخدم، لأن مجموعة محلية باسم مألوف كائن مختلف عن مجموعة الدليل بالاسم نفسه.

مزالق الترتيب والهوية

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

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

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

اختبار الأعضاء والغرباء وكلمات المرور الخاطئة

اختبر ثلاث حالات قبل أن تعتبر السياسة منتهية. عضو يتصل بنجاح. حساب صالح خارج المجموعة يتحقق من كلمة مروره لكن يُرفض وصوله إلى VPN. كلمة مرور خاطئة لأي من الحسابين تُرفض في مرحلة المصادقة، لا بقاعدة المجموعة.

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

أبقِ جلسة ثانية مفتوحة أثناء تحرير PAM، وتحقّق أيضًا من تسجيل الدخول العادي عبر SSH بعد التغيير. الغاية من الخدمة المخصصة هي أن يبقى تسجيل دخول النظام دون تأثر، والسبيل الوحيد لمعرفة ذلك هو اختباره.

إذا تعطّل شيء، استعد ملف الخدمة السابق من نسخة. القاعدة التي تريدها بسيطة القول: العضوية تجعل الحساب أهلًا للوصول إلى VPN، وكل فحص مطلوب آخر يظل ساريًا.

مقالات ذات صلة