SECLEVEL=0 يعالج العَرَض لا الشهادة
خفض مستوى الأمان في OpenSSL يوسّع ما تقبله المكتبة. اكتشف أي مُدخل رُفض قبل أن تغيّر هذا الحد لمضيف كامل.
تفشل اتصالات OpenVPN، فيجد أحدهم إصلاحًا من سطر واحد يضيف SECLEVEL=0، فتعود النفق للعمل. لم تتغيّر الشهادة ولا حزمة التشفير؛ بل تحرّك حدّ قبول على مستوى المكتبة، وكل ما تفعله العملية بعد ذلك يرث الحد الجديد. يستحق ذلك الفهم قبل أن يُنسخ السطر نفسه في كل ملف تعريف على البيئة.
حدّد أي مكتبة وأي سياسة سارية
SECLEVEL مفهوم في OpenSSL، لذا السؤال الأول هو ما إذا كان بناؤك يستخدم OpenSSL أصلًا. يمكن ربط OpenVPN بأكثر من مكتبة تشفير، وإعداد ينطبق على إحداها لا معنى له بالنسبة للأخرى. اسأل الملف التنفيذي عمّا بُني به، ثم اسأل المكتبة عن الإصدار والإعداد الذي حمّلته:
openvpn --version | head -3
openssl version -aاقرأ مخرجات الإصدار بعناية، لأن التوزيعات تعدّل القيم الافتراضية. بعضها يشحن إعدادًا نظاميًا يرفع الحد الأدنى فوق الافتراضي الأصلي، ولهذا يتصرف الملف التعريفي نفسه بشكل مختلف على جهازين بحزم OpenVPN متطابقة. السياسة الفعلية هي التي حمّلها العملية الجارية، لا التي في دليل المنبع.
ثم افصل الطبقتين اللتين يخلط الناس بينهما. لـ OpenVPN ضوابط TLS خاصة به، منها إعداد ملف تعريف الشهادة وقوائم تشفير صريحة، وهي تعلو فوق ما تفرضه المكتبة. خفض مستوى المكتبة لا يغيّر حزم التشفير التي تسردها تهيئة OpenVPN، وتضييق قائمة OpenVPN لا يرفع عتبة المكتبة. معرفة الطبقة التي رفضتك هي ما يمنع أن يبقى الإصلاح تخمينًا.
افصل الأشياء الثلاثة التي يمكن رفضها
المرشح الأول هو مادة الهوية: شهادة مفتاحها صغير جدًا أو خوارزمية توقيعها لم تعد مقبولة لدى السياسة. الثاني هو معامل تبادل مفاتيح، مثل مجموعة تعتبرها السياسة ضعيفة جدًا. الثالث هو حزمة تشفير تستبعدها السياسة. الثلاثة كلها قد تنتج فشل مصافحة، ولا يميّزها إلا نص الخطأ ومرحلة التفاوض.
لا شيء من هؤلاء الثلاثة هو تشفير قناة البيانات. يتفاوض OpenVPN على تشفير النفق بشكل منفصل عن مصافحة TLS، لذا فالاتصال الذي ينجح بعد تغيير مستوى الأمان لا يقول شيئًا عن التشفير الذي يحمي حمولتك. إذا كان السؤال الذي تطرحه فعلًا يتعلق بسرية البيانات، فأنت تنظر إلى مِقبض خاطئ تمامًا.
خفض المستوى يوسّع القبول للمدخلات الثلاثة دفعة واحدة. هذا هو الجزء الذي يفوته الناس: الإصلاح الذي يقبل شهادة قديمة يقبل أيضًا مجموعة ضعيفة وحزمة ربما لم تكن تنوي السماح بها. خطأ واحد دفع إلى التغيير، والتغيير أوسع من الخطأ. هذا التفاوت هو سبب أن الاستثناء المحدود أفضل من قيمة افتراضية على مستوى البيئة.
غيّر المُدخل، لا العتبة
احفظ الخطأ الدقيق قبل لمس التهيئة، بما في ذلك المرحلة التي أبلغت عنه والكائن الذي سمّاه. تُحلّ مشكلة الشهادة باستبدالها بشيء تقبله السياسة الحالية، وهو ما يعني عادةً إعادة إصدارها من الجهة بدلًا من إعادة تثبيت الملف نفسه.
إذا كان المدخل المرفوض يخص نظيرًا لا تتحكم به، فالحوار مع مالك ذلك النظير حول مواد بديلة مدعومة. خفض عتبتك لاستيعاب نظام لا يصونه أحد ينقل الكلفة منهم إلى كل من يتصل بعدهم.
حيث يفرض الخادم السياسة، تحقق مما إذا كان إعداد على مستوى OpenVPN هو السبب الفعلي قبل لوم المكتبة. ملف تعريف شهادة يطلب فئة أشد مما تستطيع الشهادة المنشورة تلبيته سيفشل مهما كان مستوى الأمان، وإزالة ذلك الملف تغيير أضيق من تعطيل فحوص المكتبة.
إذا اضطررت إلى خفضها، فحدّد نطاقها وسجّلها
أحيانًا يكون استثناء توافق معتمد هو الجواب الصحيح، خصوصًا لنظير قديم له خطة تقاعد مؤرخة. حدّده للخدمة التي تحتاجه لا للمضيف كله: ملف تهيئة خاص بالخدمة أو تهيئة OpenSSL مخصصة أخف أثرًا من تصدير في الملف العام.
اكتب أربعة أشياء مع الاستثناء: الإعداد الدقيق، والمالك الذي وافق عليه، والعملاء الذين يتأثرون، والشرط الذي تُزال تحته. استثناء بلا شرط تقاعد هو إضعاف دائم ملحق بمسوّغ مؤقت.
ينبغي أن يكون التراجع خطوة واحدة اختبرتها مسبقًا. احتفظ بالتهيئة السابقة، وطبّق التغيير، وتأكد من أن الخدمة تبدأ، واعرف بالضبط أي ملف تستعيد إذا تصرف الاتصال التالي خلافًا للمتوقع.
تحقق من الهوية والحماية بعد ذلك
الاتصال الناجح يثبت فقط أن الشروط المعدّلة قبلته. تأكد من أن التحقق من اسم المضيف والنظير لا يزال يقوم بعمله، وأن الشهادة المستخدمة هي التي كنت تنوي نشرها، وأن قناة البيانات المتفاوض عليها تطابق السياسة التي تظن أن لديك.
openssl x509 -in /etc/openvpn/client.crt -noout -subject -dates -text | grep -E 'Signature Algorithm|Public-Key'
openvpn --show-tls | head -20إن مرجع مستويات الأمان في OpenSSL صريح في أن الإطار يطبّق حدودًا على المفاتيح والتواقيع والمجموعات والحزم معًا، وأن المستوى صفر يسمح بكل ما يفحصه النداء الراجع. هذا هو نطاق ما غيّرته، وهذه هي الجملة التي تُقتبس حين يسأل أحدهم هل كان الإصلاح ضيقًا.
التسليم الذي يصمد أمام تدقيق يقول أي سياسة رفضت أي مُدخل، وما الذي تغيّر، وما بقي مقبولًا نتيجة لذلك. عبارة «إنه يعمل مع SECLEVEL=0» ملاحظة عن اتصال واحد، لا تقييم أمني للنشر.