نشر موقع عبر نفق ومنح المستخدمين وصولًا إلى شبكة VPN ترتيبان مختلفان يتشاركان الكابل نفسه. في الأول، يستقبل وكيل عكسي عام طلب الزائر ويمرّره عبر النفق إلى أصل لا يستطيع أحد الوصول إليه مباشرة. في الثاني، يجب أن ينضم المستخدم إلى شبكة VPN قبل أن يصبح التطبيق قابلًا للوصول أصلًا. خلط الوصفين هو ما ينتهي به الأمر إلى كشف خلفية خاصة للعموم.

نموذجان يبدوان متشابهين في الرسم

ارسم الأسهم قبل أن تختار أي شيء. نموذج النشر العام ينتقل من المتصفح إلى الوكيل عبر HTTPS، ثم من الوكيل إلى الأصل عبر النفق، ولا يقبل الأصل أبدًا اتصالًا من الإنترنت. نموذج VPN فقط ينتقل من العميل إلى البوابة، ولا يكون التطبيق قابلًا للوصول إلا من داخل ذلك المسار. حاسوب المستخدم المحمول يجلس على الشبكة نفسها التي يجلس عليها التطبيق، وهذا هو جوهر ذلك النموذج.

يختلف النموذجان في مَن يتحقق من الهوية وأين. في الأول، الوكيل هو المدخل العام وهو يمرّر أي طلب يصل، بما في ذلك طلب عدائي، وفقًا للسياسة المضبوطة عليه. في الثاني، إمكانية الوصول نفسها هي البوابة، وهي قبول خشن لكنه حقيقي.

أين تتوقف TLS، وماذا تثبت فعلًا

TLS بين المتصفح والوكيل تحمي تلك القفزة وتتيح للمتصفح التحقق من الموقع الذي قصد زيارته. إذا أنهى الوكيل TLS، فإن الطلب يوجد في صورة مقروءة داخل تلك العملية قبل تمريره. جلسة TLS ثانية إلى الأصل يمكنها حماية القفزة التالية والتحقق من نقطة نهاية التطبيق بشكل منفصل. لا تحدد أي من الجلستين أي إنسان يجوز له استخدام التطبيق. كما أن شهادة شاملة النطاقات على الوكيل لا تمتد إلى تلك القفزة الثانية.

هذا هو الجزء الذي يختزله الناس في كلمة مشفّر. السرية والسلامة وهوية الخادم خصائص نقل؛ أما التخويل فهو قرار تطبيق. عنوان خاص خلف نفق يغيّر مَن يستطيع الوصول إلى المقبس، لا مَن يجوز له تسجيل الدخول بعد ذلك.

لا تثق بالترويسات الممرَّرة إلا من الوكيل

التطبيقات التي تسجّل أو تخوّل بحسب عنوان العميل تقرأ عادة ترويسة يضيفها الوكيل. تلك الترويسة مجرد نص، لذا أي شيء يستطيع الوصول إلى الأصل مباشرة يمكنه ادّعاء أي عنوان يريده. قيّد الأصل بحيث لا يتصل به إلا عنوان النفق الخاص بالوكيل، واضبط التطبيق ليقبل الترويسة من ذلك العنوان فقط.

curl -s -o /dev/null -w '%{http_code}
' -H 'X-Forwarded-For: 203.0.113.9' http://172.20.5.40/

إذا نجح ذلك الطلب من مضيف ليس هو الوكيل، فإن الأصل يثق بترويسة كان ينبغي أن يتجاهلها. أصلح المستمع قبل أن تمسّ التطبيق. الرفض نتيجة أفضل بكثير من سطر سجل يحمل عنوانًا مزورًا.

أبقِ الأصل قابلًا للوصول من مكان واحد فقط

اربط مستمع الأصل بعنوان النفق أو احجبه بجدار ناري أمام الوكيل، ثم تأكد مما يستمع فعلًا. الخدمة التي تبدأ بربط شامل تقبل الاتصالات على كل واجهة يملكها المضيف، بما في ذلك واجهة نسيت أنها قابلة للتوجيه. جدول الاستماع هو الحقيقة الأرضية، لا ملف الإعداد الذي كنت تنوي تطبيقه. وإذا كان الربط الشامل مقصودًا، فلا يزال على الجدار الناري أن يكون المكوّن الذي يضيقه.

ss -ltnp | grep -E ':(80|443)'

راجع واجهات الإدارة بالطريقة نفسها، فهي نقطة الانكشاف العرضي المعتادة. ثم اكتب النموذجين بشكل منفصل: الموقع العام عبر الوكيل، وواجهة الإدارة التي لا يمكن الوصول إليها إلا عبر النفق. جملة أن الخادم خلف شبكة VPN لا تقول شيئًا من ذلك.

مقالات ذات صلة