یک VPN غیرقابلاعتماد سه مرز جداگانه است، نه یک مرز
همتایان دور، اپراتور در مسیر و کلاینت روی میزبان شما سه تهدید متفاوت هستند. یک قاعدهٔ دیوار آتش تنها به اولی پاسخ میدهد.
«من به این VPN اعتماد ندارم» معمولاً سه گزاره است که لباس یک جمله پوشیدهاند. همتایان دور در آن شبکه ممکن است به سرویسهای روی میزبان شما برسند، اپراتوری که تونل را اداره میکند ممکن است ترافیکی را که از آن میگذرد ببیند، و نرمافزار کلاینتی که نصب کردهاید ممکن است بتواند خطمشی شبکهٔ ماشین شما را تغییر دهد. باوری که ارزش اصلاح دارد این است که یک قاعدهٔ دیوار آتش، یک ماشین مجازی یا انتخاب دقیق سیستمعامل به هر سه پاسخ میدهد. هر تدبیر دقیقاً به یکی از آنها پاسخ میدهد.
افسانه: یک کنترل تمام خطر را پوشش میدهد
فرض رایج این است که پیوستن به یک شبکهٔ غیرقابلاعتماد یک تصمیم واحد با یک اقدام کاهشی واحد است. مردم کنترلی را انتخاب میکنند که از قبل به آن اعتماد دارند، آن را اعمال میکنند و خطر را تمامشده میپندارند: دیوار آتش روشن است، فضای کاری یکبارمصرف است، کلاینت از فروشندهای معتبر آمده است.
این کنترلها آنگونه که فرض القا میکند همپوشانی ندارند. دیوار آتش روی میزبان محدود میکند که یک همتای دور به کجا برسد، و در برابر اپراتوری که TLS شما را خاتمه میدهد کاری نمیکند. ماشین مجازی فضای کاری را از فایلهای میزبان شما جدا میکند، و در برابر مؤلفهٔ کلاینتی که اجازه دارد پشتهٔ شبکه را زیر هر دو پیکربندی مجدد کند کاری نمیکند. نامگذاری مرزی که هر کنترل واقعاً میسازد، تمام تمرین است.
جدا کردن آنها همچنین به شما میگوید کدام خطر را برگزیدهاید بپذیرید. بیشتر تصمیمهای واقعی یک مرز را کاهش میدهند و مرز دیگری را تحمل میکنند، و این خوب است تا زمانی که سابقهٔ تغییر بگوید کدام کدام است.
همتای دور واقعاً به چه چیزی میرسد
با سرویسهای شنونده شروع کنید. رابط تونل که بهدلیل رسیدن رمزگذاریشدهٔ بستههایش بهطور گسترده قابلاعتماد پنداشته میشود، اشتباه معمول است، و هر شنوندهٔ محلی را به هدفی ممکن برای هر کس دیگری در آن شبکه تبدیل میکند. رمزگذاری سیم میان دو نقطهٔ پایانی را محافظت میکند؛ دربارهٔ نیت همتای آن سوی دیگر چیزی نمیگوید.
ss -tulpn sudo nft list ruleset ip -br addr
سرویسها را به نشانیای که لازم دارند ببندید نه به هر رابط، و تنها عملیاتی را مجاز کنید که وظیفهٔ تأییدشده میطلبد. ارسال، پلزدن و پروکسی برنامه را صریح نگه دارید، زیرا دو اتصال شبکه بهخودیخود مسیر عبوری نمیسازند، اما یک قاعدهٔ پروکسی قطعاً میتواند.
فضای کاری یکبارمصرف تأییدشده کاهش میدهد که شبکهٔ دور به کجا برسد، اما تنها وقتی پیکربندی اشتراکگذاری آن با ادعا همخوان باشد. پوشههای اشتراکی، یکپارچگی تختهشیشه، عاملهای اعتبارنامه و کانالهای مدیریت همه از مرزی میگذرند که فضای کاری قرار بود بسازد. برچسب فضای کاری دربارهٔ باز بودن هیچیک از اینها چیزی اثبات نمیکند.
معماری اعتماد صفر NIST اصلی را که پشت همهٔ اینهاست بیان میکند: موقعیت شبکه بهتنهایی اعتماد ضمنی نمیدهد. احراز هویت منبع پس از پذیرش تونل هنوز کاری دارد، و پرسش اینکه چه کس دیگری آن شبکه را شریک است نیز همینطور.
اپراتور در مسیر چه میبیند
VPN ترافیک شما را به جای دیگری در مسیر منتقل میکند؛ رمزگذاری برنامه را اضافه نمیکند. اگر ارائهدهنده TLS شما را خاتمه دهد، میتواند چیزی را بخواند که مرورگر شما در غیر این صورت محافظت میکرد، و هیچ قاعدهٔ دیوار آتش محلی آن را تغییر نمیدهد.
اعتبارسنجی معمول گواهی را برای مقصد واقعی نگه دارید و مسیر حلکننده و فراداده را درک کنید، زیرا یک پرسوجوی DNS میتواند بیش از بار دادهای که پیش از آن میرود آشکار کند. فراداده بهتنهایی، یعنی اینکه با کدام نشانیها و چه زمان تماس گرفتید، اغلب به پرسش اپراتور بدون هیچ نیازی به خواندن محتوا پاسخ میدهد. به همین دلیل «ترافیک رمزگذاریشده است» و «ترافیک خصوصی است» ادعاهای متفاوتی هستند.
اگر آن دیدپذیری برای وظیفه پذیرفتنی نیست، پاسخ معماری تأییدشدهٔ دیگری است نه پالایش محلی بیشتر. پالایش محلی نمیتواند ناظری را از مسیری که هنوز روی آن نشسته است بردارد.
کلاینت محلی اجازهٔ تغییر چه چیزی را دارد
این همان مرزی است که مردم از دست میدهند، و همان است که دو مرز دیگر را بیمعنا میکند. در لینوکس، CAP_NET_ADMIN پیکربندی رابط، مدیریت دیوار آتش و تغییر مسیرها را در بافت شبکهٔ خود پوشش میدهد. نرمافزاری که این توانایی را دارد میتواند خطمشیای را که همین حالا نوشتید بازنویسی کند.
getcap /usr/sbin/openvpn systemd-analyze security vpn-client.service ip netns list
فضای نام شبکه مرزی واقعی برای وضعیت شبکه و مرزی ضعیف برای هر چیز دیگر است: فایلسیستم یا انبار اعتبارنامه را جدا نمیکند. آن را یک لایه بدانید نه ظرفی برای کل مسئله.
کلاینت و پیکربندی آن را از منبعی نگهداریشده بگیرید، اختیاری را که درخواست میکند بررسی کنید، و مؤلفههای دارای امتیاز را زیر کنترل مدیر نگه دارید. ماشین مجازی میتواند بخشی از یک مرز ارزیابی واجد شرایط باشد بدون اینکه اجازهٔ اجرای نصبکنندهٔ توضیحنشده در کنار اعتبارنامههای ارزشمند شود. نصبکننده با هر اختیاری که به آن بدهید اجرا میشود، و همان اختیار مرز است.
بنویسید کدام مرز را پذیرفتید
با جملهای پایان دهید که چهار چیز را نام میبرد: کد محلی قابلاعتماد، دسترسی دور مجاز، دادهٔ برنامهٔ محافظتشده و رابطهٔ اپراتوری که میماند. آن جمله از ادعای کلی اینکه یک VM، یک سیستمعامل یا یک محصول ضدویروس شبکهای خصمانه را امن کرده است ارزشمندتر است.
سپس تأیید کنید که عملیات باریک کار میکند و رد لازم همچنان برقرار است، حتی پس از افتادن تونل. مرزی که فقط تا وقتی تونل بالاست وجود دارد، مرزی نیست که مستند کردهاید.
هیچ آزمونی ثابت نمیکند که هر آسیبپذیری غایب است، و بازبینیای که خلاف آن را ادعا کند زیادهگویی میکند. خروجی صادقانه خطر باقیمانده و کسی را که آن را پذیرفت نام میبرد.