ملف .ovpn لديك يمكنه تنفيذ شيفرة، لا مجرد توجيه حركة المرور
ملف تعريف يسمّي مساعدًا up أو down ينفّذ شيفرة بصلاحياتك. افحص المسار والملكية والتنظيف وضبط script-security.
يقرأ معظم الناس ملف .ovpn كما يقرأون صفحة إعدادات الموجّه: عناوين، ومسارات، وقائمة شيفرات. أما الجزء الذي ينفّذ شيفرة فيقع قرب الأسفل، إلى جانب توجيهات تبدو كأعمال سباكة، ويعمل بأي صلاحية يملكها العميل أصلًا. تلك هي الثغرة التي يستغلها ملف تعريف مهمل أو خبيث، وهي أيضًا الثغرة التي تحوّل مساعد DNS مفيدًا إلى مشكلة دعم بعد ثلاثة أسابيع. توجيه الحدث ومستوى الأمان وملكية الملف تحدد ما يمكن أن يحدث؛ ومحتوى النص البرمجي يحدد ما يحدث فعلًا. اقرأ الأربعة قبل أن تتصل.
ملف تعريف يشغّل مساعدًا هو برنامج، لا ملف إعدادات
توجيهات مثل route وdhcp-option تصف حالة ينبغي أن ينشئها العميل، والعميل يعاملها كبيانات. أما نص up البرمجي فمختلف: العميل يشغّله كعملية ويمنحه بيئة مليئة بتفاصيل الاتصال، فيعمل ما كتبه مؤلفه بحقوق حسابك. على حاسوب محمول يكون المستخدم فيه مسؤولًا، ذلك باب واسع لملف وصل كمرفق أو كلصق من خيط منتدى. الفرق ليس أسلوبيًا، إنه الفرق بين إعداد وشيفرة.
الأسطورة التي يجدر التخلي عنها هي أن ملف التعريف لا يمكنه إلا إعادة توجيه حركة المرور. فالمساعد الذي ينفّذ ip route add وذاك الذي ينفّذ curl ضد مضيف بعيد هما الآلية نفسها، ويبدو ملف التعريف متطابقًا من الخارج. لا شيء في مظهر الملف يخبرك أيهما لديك، ولهذا يجب أن يصل التدقيق إلى النص البرمجي نفسه.
ما يحدد التنفيذ فعليًا، وكيف تبدو الأسطر المُمكِّنة
ثلاثة أشياء تتحكم في المساعد: توجيه الحدث الذي يسمّيه، ومستوى script-security الذي يسمح به، وتنفيذ منصة العميل نفسها. يمكن لملف تعريف أن يطلب خطافًا ولا يرى شيئًا يحدث، لأن عميلًا للهاتف أو بناء سطح مكتب مختزلًا قد لا ينفّذ ذلك الحدث إطلاقًا. وبالمثل، فملف تعريف يطلب صلاحية أكثر مما تحتاجه وظيفته يخبرك بشيء عن أصله. مستوى الصلاحية قدرة، لا موافقة. تبدو الأسطر المُمكِّنة هكذا، مع مسار يقوم مقام مسارك.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shالمستوى 0 يرفض البرامج الخارجية، والمستوى 1، وهو الافتراضي، لا يسمح إلا بالملفات التنفيذية المدمجة في العميل، لذا يحتاج الخطاف إلى 2 أو أعلى؛ والمستوى 3 موجود أساسًا لتمرير كلمات المرور القديمة ويُستحسن تجنّبه. ملف تعريف يُشحن بخطاف يحتاج إلى التوجيه وإلى ذلك المستوى معًا، ولهذا يستحق سطر واحد قرب أسفل الملف التدقيق نفسه الذي تستحقه كتلة الشهادة. أما دليل OpenVPN فيسرد مستويات الصلاحية، ويستحق نصه أن يُقرأ إلى جانب ما يطلبه ملف التعريف فعلًا.
الملكية والمسار وما يُغذّى به المساعد
ملف تعريف تثق به ويشير إلى نص برمجي يمكن لحساب آخر إعادة كتابته ليس ترتيبًا موثوقًا، لأن التدقيق الذي أجرته أمس لم يعد يصف ما يعمل اليوم. تحقق من مالك المساعد ونمط أذوناته، وتأكد من أن المسار المُعدّ يُحلّ إلى الملف الذي فحصته لا إلى اسم يمكن لشيء آخر أن يحجبه. الوسائط والبيئة تستحقان النظر نفسه: العميل يمرر تفاصيل الاتصال إلى الخطاف، والمساعد الذي يسجّل بيئته كاملة قد يكتب بيانات اعتماد في تذكرة دعم. فضّل تكاملًا موثقًا من المشغّل أو المنصة على نص DNS منسوخ من مقال غير ذي صلة، لأن مديرَي محللات يتنازعان الملف نفسه ينتجان عطلًا يبدو كأنه VPN معطّل.
عندما تبلّغ عن خطاف فاشل، احجب البيئة قبل لصقها في أي مكان. فالمخزون الذي يساعدك في التصحيح قد يحمل أيضًا الرمز الذي يوثّقك.
أعطال التنظيف تظهر بعد ذهاب النفق
المساعد up يضيف مسارات وإعدادات محلل، والمفروض أن يزيلها المساعد down مرة أخرى. عندما يكون خطاف down غائبًا أو يفشل بصمت أو لا يعمل أبدًا لأن العميل قُتل، تعيش المخلفات بعد الجلسة. عندئذ تسلك حركة المرور مسارًا لم يخطط له أحد وتُحلّ الأسماء عبر محلل كان يجب إزالته، بينما يبدو النفق نفسه سليمًا. تلك الأعراض تصل بعد قطع الاتصال، ولهذا تُلام الشبكة بدلًا من ملف التعريف.
اختبر الإزالة كخطوة مستقلة: ارفع النفق، ودوّن المسارات والمحلل، وأسقطه، ثم تأكد من أن كليهما ذهب. ملف تعريف يتصل بنظافة يمكنه أن يترك حالة خلفه، ورمز خروج صفري من المساعد لا يثبت أن المحلل انتهى إلى حيث تظن.
مراجعة المساعد والاحتفاظ بمخرج
اقرأ النص البرمجي من أوله إلى آخره باحثًا عن ثلاثة أشياء: أوامر تحتاج صلاحية، ومسارات مثبتة قد لا توجد على نظامك، وأي نداء شبكي يقوم به. ثم تحقق من كيفية فشله، لأن مساعدًا يبتلع الأخطاء يحوّل خطأ إعداد إلى لغز. إن لم تستطع أن تقول في جملة واحدة ما يفعله النص البرمجي ومن يمكنه تغييره، فأنت لست جاهزًا لتمكينه. ملف تعريف يطلب صلاحية أكثر مما تتطلبه تلك الجملة هو إشارة التوقف.
احفظ آخر ملف تعريف عامل والمساعد الذي أشار إليه في تخزين محمي، مع تدوين النسختين، حتى يكون التراجع نسخًا لا إعادة بناء في أسوأ لحظة ممكنة. إن كان المساعد موجودًا فقط لتوزيعة أو نسخة عميل لم تعد تحتاجه، فأحِلْه إلى التقاعد في الإعداد الذي يملك الضبط بدلًا من رفع الصلاحيات حتى تتوقف الأخطاء. ذلك هو المخرج: أجزاء متحركة أقل، لا صلاحية أكثر.