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

تسجيل دخول واحد، عدة نطاقات

المصادقة تجيب عنمن تم قبوله. والمسار يجيب عن أي الحزم يجوز لها المغادرة عبر النفق. والتفويض يجيب عن أي خدمة ستقبل الاتصال الناتج، ولا شيء من الثلاثة يستلزم الآخر.

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

كتابة الأسئلة الأربعة قبل الاختبار تمنع المراجعة من الانهيار في أحدها.

أين تقع الحدود فعليًا

أربعة ترتيبات تغطي معظم الأجهزة: نفق على مستوى المضيف، واتصال لكل مستخدم، وقائمة سماح لكل تطبيق، ومساحة أسماء شبكة منفصلة أو جهاز ظاهري.

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

ArrangementEnforced byWho can use the path
Host-wide tunnelThe routing tableAny local process using that table
Per-user connectionProfile permission listOnly the listed accounts
Per-app allowlistThe VPN client itselfOnly the selected applications
Namespace or VMThe interface boundaryOnly processes inside it

قراءة الجدول صفًا بصف تظهر أن السؤال الحقيقي ليس هل يوجد عزل، بل أين يُنفَّذ.

قارن نقاط إنفاذ أربع

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

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

ip route get 10.40.2.10
sudo -u bob ip route get 10.40.2.10
nmcli connection show vpn-work | grep -i permission
sudo nft list ruleset | grep -n skuid

إذا أظهر البحث الثاني مسار النفق، فالحدّ ليس حيث افترض التصميم أنه كان.

قواعد الجلسات المتزامنة تحكّم منفصل

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

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

الجهاز الظاهري لا يعفي أحدًا من تلك القاعدة، بل يضيف تصميمه الخاص للشبكة وبيانات الاعتماد.

اختبر السياق الذي يهمك

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

sudo -u bob curl -sS -m 5 https://intranet.internal/health
wg show
ss -tnp | grep -E ':443|:51820'

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

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