تعطل خدمة MFA: احسم قبول الدخول إلى VPN قبل أن يفشل
خدمة عامل ثانٍ غير قابلة للوصول ليست تحدياً مرفوضاً. وثّق قاعدة القبول وسلوك إعادة المحاولة ومن يجوز له استخدام الوصول الطارئ.
يتوقف قبول الدخول إلى VPN، ويقول التنبيه إن خدمة العامل الثاني غير قابلة للوصول. وهل يستطيع أحد أن يتصل بعد ذلك سؤال سياسة كان يجب أن يُجاب عنه قبل الانقطاع لا أثناءه. فالمدقق غير المتاح ليس دليلاً على نجاح عامل، والتحدي المرفوض ليس الحدث نفسه الذي يمثله التحدي غير القابل للوصول. ويحوّل دليل التشغيل أدناه هذا التمييز إلى قاعدة مكتوبة يمكنك اختبارها.
الخطوة 1: سمِّ النتائج الثلاث منفصلة
اكتب ثلاث حالات وارفض دمجها: فشل المصادقة الأولية، ورُفض تحدّي العامل الثاني أو انتهت مهلته، ولم تُجب خدمة MFA إطلاقاً. لكل حالة مالك مختلف وسطر سجل مختلف واستجابة صحيحة مختلفة. ورسالة مهلة عامة واحدة تخفي أيّها أنت فيه، وهذا الغموض هو ما يحوّل الانقطاع إلى جدال. سمِّ الحالات في دليل التشغيل قبل أن تحتاجها.
الرفض يعني أن المدقق أجاب وقال لا، وهو نتيجة سياسة لا مشكلة توافر. والمحاولة المنتهية تعني أن التحدي وُجد ولم يكمله أحد في الوقت المناسب. والخدمة غير القابلة للوصول تعني أن السؤال لم يُجب عنه إطلاقاً. والثالث وحده هو الانقطاع.
الخطوة 2: اقرأ نمط الفشل الذي يستخدمه الوسيط فعلياً
اعثر على الإعداد الذي يحكم السلوك عندما يتعذر الاتصال بالخدمة، واقرأه من التكوين العامل لا من قالب. في وسيط RADIUS الخاص بـ Duo، تكون قيم failmode الموثقة هي safe و secure، حيث يسمح safe بمحاولة فقط عندما تنجح المصادقة الأولية، ويرفض secure المحاولة في تلك الحالة.
radtest alice '' 127.0.0.1 0 testing123
journalctl -u duo-authproxy -n 50 --no-pager
الاسم safe يصف خيار توافر، لا ضماناً بأن كل جلسة مقبولة حصلت على عامل ثانٍ جديد. وتلك الجملة تنتمي إلى سجل المخاطر، لأنها المقايضة الدقيقة التي يجريها الإعداد. لا تعمّم القيمة على مزوّد آخر أو تكامل آخر أو نمط وسيط مختلف؛ اقرأ توثيق ذلك المنتج لمعادله الخاص. والتكوين المنسوخ من مثال بائع دون هذا الفهم مفاجأة تنتظر الانقطاع التالي.
توقف إن لم يستطع أحد أن يقول أي نمط نشط. فبقية دليل التشغيل تعتمد على تلك الإجابة.
الخطوة 3: اجعل إعادات المحاولة تطابق التدفق
حاذِ مهلة البوابة وسلوك إعادة المحاولة مع تدفق المصادقة الذي تقوده. فإعادات المحاولة غير المنسقة تنشئ مطالبات متعددة وتخلط مطابقة المحاولات وتترك السجل عاجزاً عن تحديد أي نتيجة تخص أي عملية دخول. والمهلة الطويلة جداً ليست تصميم توافر؛ بل انتظار أطول للإجابة نفسها.
ss -lunp 'sport = :1812'
tail -n 50 /var/log/duo/authproxy.log
مهلة الطلب الخاصة بالوسيط حدٌّ منفصل: فطلب المصادقة الذي يُصدر ولا يكتمل أبداً يُرفض، وهذا الرفض ليس انقطاعاً يمكن التراجع عنه. تعامل مع الرفض والتحدي غير المكتمل والخدمة غير القابلة للوصول كثلاثة مدخلات مختلفة لجدول قرارك. ثم اجعل الجدول صريحاً: أي حالة تقبل، وأي حالة تُمسك، وأي حالة تُصعّد إلى إنسان.
إن أعاد مكونان المحاولة معاً، فأصلح ملكية إعادة المحاولة أولاً. فالمطالبات المكررة عرض جانبي لمالكين اثنين، لا لخدمة بطيئة.
الخطوة 4: احكم الوصول الطارئ بشكل منفصل
إن كان الوصول الطارئ مطلوباً، فأعطه نطاقه وهويته وتفويضه ومسار تدقيقه الخاص. والتعطيل الصامت لـ MFA لجميع المستخدمين ليس إجراءً طارئاً؛ بل إضعاف دائم ملتصق به حادث. ويعتمد مالك الأمن قاعدة القبول والرؤية ومسار التصعيد مسبقاً.
grep -R failmode /etc/duo /etc/radiusclient 2>/dev/null
systemctl status duo-authproxy
اختبر المصفوفة كاملة في بيئة غير إنتاجية: فشل المصادقة الأولية، والرفض المتعمد، وانتهاء صلاحية التحدي، وتعذر الخدمة. ولكل حالة سجّل نتيجة القبول والسبب الذي كُتب في السجل. لا تُنشئ انقطاعاً في الإنتاج لاكتشاف السلوك المُكوّن، ولا تختبر المسار الطارئ لأول مرة أثناء الحادث الذي كُتب من أجله. وإجراء تعافٍ لم يُشغّل قط وثيقة لا ضابط.
ينتهي دليل التشغيل عندما تُسمّى الحالات الثلاث، ويُقرأ نمط الفشل من النظام العامل، وتكون لإعادات المحاولة ملكية واحدة، ويكون للوصول الطارئ اعتماده ومراجعته. والتنفيذ المتوقع مع مسار تعافٍ معروف هو النتيجة التي تستحق التوثيق.