Fail2ban على بوابة VPN: ما يصلحه وما لا يصلحه
يحجب Fail2ban المصادر التي تفشل في سجلاتك، وهذا كل ما يفعله. أما هل يساعد بوابة VPN فذلك يتوقف على سطح تسجيل الدخول وعلى من يشارك العنوان.
كل خدمة مكشوفة تتلقى النصيحة نفسها: ضع fail2ban عليها. وبالنسبة إلى بوابة VPN فإن هذه النصيحة ليست خاطئة ولا كافية، والتعامل معها كبند تحصين شكلي هو ما ينتهي به الأمر إلى سجن (jail) لا يحجب شيئًا مفيدًا. يقرأ fail2ban سجلات الفشل التي تشير إليها ويطلب من خلفية إنفاذ أن تحجب المصادر المطابقة. وقيمته كلها تتوقف على أي واجهة مصادقة أنتجت السجل، وهل العنوان الوارد فيه هو العميل الحقيقي، وما يحدث لكل من سواه خلف ذلك العنوان.
ما هو fail2ban من الناحية الميكانيكية
يطابق المرشح أسطرًا في سجل، ويعد السجن التطابقات لكل مصدر، ويطبق الإجراء حجبًا عبر خلفية جدار حماية. ثلاثة أجزاء متحركة، وكل منها قد يكون خاطئًا بشكل مستقل.
لا يمس أي من الثلاثة مسار المصادقة: فـ fail2ban يتفاعل مع الأدلة بعد وقوعها ولا يتحقق أبدًا من بيانات اعتماد بنفسه. لذلك يمكن للسجن أن يعمل بسلاسة بينما يبقى السطح الذي يسميه مكشوفًا تمامًا كما كان.
مستمع النفق ليس نموذج تسجيل دخول
مستمع OpenVPN المحمي بـ tls-auth أو tls-crypt يُسقط الحزم التي تفتقر إلى حماية قناة التحكم قبل أن تبدأ معالجة TLS العادية. والآلة التي تفحص ولا تملك المفتاح أبدًا لا تولّد شيئًا يستطيع مرشحك عده. وتضيف مصادقة الشهادات بوابة أخرى، لأنه لا توجد كلمة مرور يمكن تخمينها. ويوثّق مشروع Fail2ban نموذجًا عامًا مدفوعًا بالسجلات، والمرشح العام لـ VPN لا يحوّل حزمة غير موثقة إلى حدث فشل ذي معنى.
إذا كانت البوابة تقبل الشهادات فقط، فربما لا توجد قصة القوة الغاشمة التي تدافع عنها على ذلك المنفذ على الإطلاق.
إذن أي سطح تحمي؟
غالبًا ما يعرض المضيف نفسه ثلاثة أشياء مختلفة: مستمع النفق، وبوابة ملفات تعريف العملاء أو الخدمة الذاتية، وصفحة إدارة. وللبوابة وصفحة الإدارة نماذج كلمات مرور وتنتج أسطر سجل يستطيع المرشح عدها. أما النفق فقد ينتج فقط أخطاء مصافحة تعني شيئًا آخر تمامًا. طابق السجن مع السطح لا مع اسم المنتج.
سجن واحد يراقب السجل الخطأ أسوأ من لا شيء، لأنه يخلق ثقة بلا تغطية. وجّه مرشح تسجيل دخول إلى أخطاء مصافحة النفق وسيعمل العداد على الماسحات التي لم تملك مفتاحًا قط، بينما تبقى هجمة كلمة المرور على البوابة غير محسوبة. اقرأ سطر السجل الذي يطابقه المرشح قبل أن تثق برقم السجن.
إسناد المصدر هو الحلقة الأضعف
الحجب ليس أفضل من العنوان الذي يستهدفه. فعندما تقف الخدمة خلف وكيل عكسي محلي، قد يكون عنوان العميل في السجل هو الوكيل، وحجبه يزيل الجميع. والوثوق برأس مُمرَّر من مصدر غير موثوق يمنح المهاجم القدرة على حجب عناوين عشوائية. وعلى UDP يمكن تزوير عناوين المصدر، لذا يستحق عدّها عناية أكبر من عدّ تسجيل دخول TCP مكتمل.
سجّل طريقة إسناد المصدر في ملف README الخاص بالسجن، لأن رأسًا مُمرَّرًا من قفزة غير موثوقة يحوّل الحجب إلى سلاح.
التكلفة الجانبية هم الآخرون
عدة موظفين خلف NAT واحد للمكتب يتشاركون عنوانًا، لذا يمكن لكلمة مرور قديمة محفوظة واحدة أن تقفل الموقع كله بمجرد تجاوز العتبة. يُظهر السجل مصدرًا واحدًا وحسابًا واحدًا فشلا، لا انقطاعًا على مستوى الموقع.
الحجب القصير والعتبات المتواضعة يقللان ذلك، ومسار رفع الحجب الموثق يقلل عبء الدعم عندما يحدث رغم ذلك. والعنوان إشارة خشنة لا هوية، والشخص الذي يفتح التذكرة سيصف الانقطاع لا العتبة.
متى تتبناه، ومتى تصلح شيئًا آخر
تبنّه عندما يكون هناك فشل حقيقي وقابل للإسناد ومتكرر في تسجيل الدخول عبر الإنترنت على سطح تتحكم فيه، وعندما تغطي خلفية الإنفاذ ذلك السطح فعليًا. وأصلح شيئًا آخر عندما تكون المشكلة سياسة بيانات اعتماد ضعيفة، أو صفحة إدارة مكشوفة للإنترنت، أو حسابًا يسجل الدخول بنجاح لأنه مخترق. والحجب لا يصلح أيًا من ذلك، ولا يستطيع امتصاص حركة أغرقت بالفعل رابطك الصاعد. وتلك المشكلة الأخيرة تعود إلى أعلى المنبع، إلى من يستطيع الترشيح قبل أن تصل الحزم إليك.
أبقِ كل سجن مربوطًا بسطح واحد، وراجع الإيجابيات الكاذبة، وقس عمل المصادقة الذي تم تجنبه بدلًا من عدد العناوين المحجوبة.