نظير واحد قديم يفرض TLS 1.0: حدّد نطاق الاستثناء، لا المضيف
جهاز واحد عالق على TLS 1.0، أو شهادة مزوّد قديمة، قد يفرض حدًّا أدنى أضعف. حدّد نطاق الاستثناء، ثم قِس ما تفاوض عليه فعلًا.
يظهر جهاز قديم واحد، ويفشل في الاتصال، فيبدو أسرع إصلاح هو إضعاف المضيف كله حتى ينجح الاتصال. هذه المقايضة غير مرئية في اللحظة ودائمة في الممارسة، لأن لا أحد يزيل حدًّا أدنى يعمل أخيرًا. عطلان مختلفان جدًّا يصنعان الضغط، وواحد فقط منهما يتعلق بالشيفرات على الإطلاق. رتّب العطل أولًا، ثم ضع الاستثناء حيث لا يستطيع الانتشار.
افصل العطل إلى قسمين قبل تعديل أي توجيه
سطر في سجل الخادم عن عدم وجود شيفرة مشتركة، أو عن إصدار بروتوكول غير مدعوم، يأتي من قناة التحكم: لم يتمكن الطرفان من الاتفاق على كيفية حماية التفاوض نفسه. أما سطر العميل الذي يقول إنه لا توجد طريقة مفعّلة للتحقق من شهادة الخادم فيأتي من مكان آخر تمامًا، لأن ذلك العميل لا يتحقق ممن أجاب أصلًا. تغيير شيفرة بيانات لا يفعل شيئًا في الحالة الثانية، وإضافة فحص دور لا يفعل شيئًا في الحالة الأولى.
خُذ أول سطر فاشل من كل طرف بدلًا من آخر سطر قبل الانقطاع، لأن الأخير عادةً نتيجة. ثم حدّد الملف الذي فتحه العميل فعليًا: كثيرًا ما يوجد الملف الشخصي المستورد مرتين تحت اسمين مختلفين للعرض، وتحرير النسخة التي لا يقرأها أحد ينتج تغييرًا غير حقيقي مقنعًا. تحتفظ العملية قيد التشغيل بالإعدادات التي بدأت بها، فالملف المحفوظ ليس ملفًا محمّلًا. تُظهر الأوامر أدناه تفاوض العميل إلى جانب رؤية الخادم للمحاولة نفسها.
openvpn --config <profile>.ovpn --verb 4 2>&1 | head -n 40
journalctl -u [email protected] --since '-10 min' | grep -iE 'cipher|tls|verify'
مستمع ثانٍ هو المكان الصادق لحدٍّ أدنى أضعف
عندما يتوقف الجهاز عند TLS 1.0 مع قناة بيانات ما قبل 2.5، على الخادم أن يقدّم حدًّا أدنى أقل لقناة التحكم وشيفرة بيانات يتعرّف عليها العميل القديم. توجد توجيهات الاحتياط لهذا النظير تحديدًا، بينما تُبقي قائمة الشيفرات العملاء الحديثين على الحزم الحديثة. كلا التوجيهين يخصّان المستمع لا مستخدمًا أو اتصالًا، ولا يضيّقهما أي خيار لكل عميل بعد ذلك. لهذا فإن جهازًا قديمًا واحدًا على المنفذ الرئيسي قرار يخص كل نظير يشاركه.
حيث تسمح المنصة، شغّل المستمع القديم كنسخة مستقلة له على منفذ منفصل، واسمح بذلك المنفذ من عنوان الجهاز فقط، واترك الخدمة الرئيسية وحدها. اكتب سبب وجود المستمع الثاني في الملف الذي يحمل إعداداته، وإلا فسيقرأه تنظيف مستقبلي كحطام متبقٍّ. لا يستحق الفصل أن يوجد إلا إذا انتهى الحد الأدنى الأضعف حيث ينتهي الجهاز.
tls-version-min 1.0
data-ciphers AES-128-GCM:AES-256-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC
ما الذي تكسره شهادة مزوّد قديمة فعليًا
خطأ التحقق هو ربط دور مفقود: بدونه سيقبل العميل أي شهادة ترتبط بسلسلة إلى جهة إصدار موثوقة، سواء صدرت تلك الشهادة لخادم أم لا. اربط الشهادة بدور الخادم أولًا، واعتبر الربط شرطًا لا مِقبض ضبط. لا يعاني من مشكلة شهادة حقيقية إلا الملف الشخصي الذي يفشل بعد تلك الخطوة.
شهادة مزوّد قديمة لم يعد حجم مفتاحها أو خوارزمية توقيعها يفي بسياسة OpenSSL الافتراضية هي الحالة التي تستدعي تغييرًا محدود النطاق لمستوى الأمان على قناة التحكم. خفض المستوى هناك لا يوقف التحقق، ويجب ألا يُجمع أبدًا مع مرجع فارغ أو إعداد تحقق معطّل أو اسم مضيف غير مفحوص. أبقِ السطر داخل الملف الشخصي الوحيد الذي يحتاجه؛ فتصدير إعداد OpenSSL مرخي على مستوى النظام سيمنح نفس التراخي لكل برنامج على الجهاز.
remote-cert-tls server
tls-cipher "DEFAULT:@SECLEVEL=0"
اقرأ القيم المتفاوض عليها، لا اللافتة
عند مستوى الإسهاب 4 يطبع الطرفان إصدار TLS وشيفرة قناة التحكم اللذين استقرا عليهما، وشيفرة البيانات للجلسة. اقرأ تلك الأسطر لا لافتة التهيئة، التي تبلّغ بالنجاح لا بشروطه. ثم أعد توصيل عميل حديث بالمستمع الرئيسي وتأكد من أنه ما زال يهبط على حزمة حديثة، لأن أي استثناء تسرّب إلى الإعداد المشترك يظهر هنا أولًا. تصبح القيم التي تنسخها خط الأساس للمراجعة التالية.
اختبر الجهاز القديم بمفرده: ينبغي أن يتصل، وينبغي أن يكون الجلسة الوحيدة في السجلات التي تُظهر المعلمات الأضعف. فإن تفاوض نظير ثانٍ أيضًا على الحزمة القديمة، كان الاستثناء أوسع من المقصود ولم يحدث فصل المستمع فعليًا. سجّل الملاحظتين معًا لا الاستنتاج وحده.
كل استثناء يحتاج إلى مالك وتاريخ
الاستثناء الذي لا شرط لإزالته يصبح بهدوء هو الافتراضي، لذا ضع الجهاز والمالك والسبب والتاريخ الذي يزول فيه إلى جانب الإعداد الذي يبرره. بدون ذلك السطر، يعيش الحد الأدنى الأضعف أطول من العتاد الذي احتاجه.
استبدال العميل، أو طلب ملف شخصي حديث من المزوّد، هو النتيجة التي ينبغي استهدافها؛ والاستثناء تأخير وليس تصميمًا. عندما يتقاعد الجهاز، أزل المستمع والملف الشخصي في التغيير نفسه كي لا يبقى أي نصف منهما يعمل. لا شيء من هذا يجعل المعلمات القديمة آمنة، إنه فقط يمنع حدّ جهاز واحد من أن يصبح خط الأساس للجميع.