پروفایلهای فایروال در برابر خروج VPN: چرا عمومی یک مسیر نیست
پروفایل فایروال انتخاب میکند کدام مجموعه قواعد اعمال شود. هیچ نمیگوید کدام رابط بسته را حمل کرده، و بلوک صریح بر اجازه تنگتر پیروز میشود.
قاعده دقیق به نظر میرسد: ترافیک محلی را در پروفایل خصوصی مجاز کن و در پروفایل عمومی فقط ترافیک VPN را. اما چنین نیست، چون پروفایل شبکه انتخاب میکند کدام مجموعه قواعد فایروال اعمال شود و هیچ نمیگوید کدام آداپتور بسته را حمل کرده است. برخورد با نام پروفایل بهعنوان الزام مسیر همان اشتباهی است که طرح خروج محدود را تمامشده نشان میدهد در حالی که تمام نشده است.
اول جریانها را بنویسید، بعد تصمیم بگیرید کدام سازوکار میتواند واقعاً هر یک را اعمال کند. آن فهرست جریان تنها دستاوردی است که از تغییر بعدی قواعد جان سالم به در میبرد.
دسته قواعد را انتخاب میکند، نه مسیرها را
وقتی Windows شبکهای را عمومی یا خصوصی طبقهبندی میکند، فایروال مجموعه قواعد پیکربندیشده برای آن پروفایل را اعمال میکند. طبقهبندی از شبکهای پیروی میکند که آداپتور به آن پیوسته است، و مجموعه قواعد تعیین میکند چه چیزی روی آن مجاز است. هیچیک از این واقعیتها به اینکه ترافیک یک برنامه از تونل استفاده کرده باشد بستگی ندارد. همین استقلال تمام دشواری است.
انتخاب مسیر را مسیریابی انجام میدهد، از طریق متریک رابط و پیشوندی که تونل نصب میکند. بنابراین یک پروفایل میتواند عمومی برچسب بخورد در حالی که اتصال یک برنامه مسیر فیزیکی را میگیرد، و فایروال باز هم گزارش میدهد که مجموعه قواعد عمومی اعمال شده است.
به همین دلیل قاعدهای که به پروفایل محدود شده نمیتواند فقط تونل معنا بدهد. این دو ویژگی را اجزای مختلف تعیین میکنند و یکی نمیتواند جای دیگری را بگیرد.
| Flow | What decides it | What a rule can enforce |
|---|---|---|
| VPN client to its endpoint | Routing plus the outer transport | Allow the client process before the tunnel exists |
| Application to an internet host | Interface metric and prefix length | Block the process unless the tunnel interface is up |
| Application to a LAN host | Local subnet route | Allow one destination, not the whole category |
بلوک صریح بر اجازه تنگتر اولویت دارد
راهنمای قواعد فایروال مایکروسافت بین اجازه بهعنوان استثنا بر اقدام مسدودسازی پیشفرض و بلوک صریحی که با یک اجازه تعارض دارد تفاوت میگذارد. بلوکهای صریح در آن تعارض پیروز میشوند و قواعد خروجی از همان تقدم پیروی میکنند.
پس دستور محبوب افزودن قاعدهای که همه چیز را میبندد و تکیه بر اجازه تنگتری که بالای آن گذاشته شده، آن کاری را که نویسندهاش انتظار دارد انجام نمیدهد. فایروال Windows تعارض را با ترتیب قواعد تعیینشده توسط مدیر حل نمیکند. بلوک بهسادگی اعمال میشود و برنامه اتصالگیرنده پایان مهلت را گزارش میکند. قاعدهای که شبیه استثنا بود هرگز در بازی نبود.
شکل پشتیبانیشده یک سیاست انکار پیشفرض با قواعد اجازه تأییدشده است، جایی که هر اجازه یک برنامه، یک سرویس یا یک مقصد را بهاندازه کافی دقیق نام میبرد تا قابل بازبینی باشد. آن طرح از یک حسابرسی جان سالم به در میبرد، چون هر استثنا دیده میشود و هیچیک به ترتیب ایجادشان بستگی ندارد.
دو قاعده که با هم تناقض دارند از یک قاعده بدترند، چون رفتار حاصل همزمان درست و غیرقابلتوضیح است.
به سیاست خروجی یک مالک واحد بدهید
یک کلاینت VPN پشتیبانیشده از قبل رفتار مسدودسازی خود و استثناهای نقطه پایانی خود را نگه میدارد. افزودن قواعد دستی هماهنگنشده میتواند آن کلاینت را بیرون از تونلی که برای راهاندازی لازم دارد رها کند، یا مسیر دومی را باز بگذارد که کسی متوجهش نشد.
پیش از نوشتن قواعد تصمیم بگیرید سیاست خروجی مال کیست: پیکربندی خود کلاینت، یک سیاست فایروال مدیریتشده، یا فهرست استثناهای محلی مستند با یک مالک. سپس لایهها را آشتی دهید، نه اینکه آزمایشها را روی هم بچینید تا چیزی متصل شود. مالک نامدار همان کسی است که وقتی دو لایه اختلاف دارند از او میپرسید.
پیش از تغییر هر چیزی یک کانال بازیابی نگه دارید. ماشین راه دوری که از مسیر مدیریت خودش بیرون قفل شده باشد نتیجهای بدتر از شکاف سیاستی است که آن را میبستید. قاعده بازیابی وقتی از پیش نوشته شده باشد آسانتر توجیه میشود، و وقتی تغییری در ساعتی که کسی دوست ندارد خراب شود آسانتر پیدا میشود.
بهجای خواندن برچسب، چهار نتیجه را آزمایش کنید
یک سیاست بهاندازه مواردی که از هم جدا میکند خوب است، پس برچسب پروفایل را نقطه شروع بدانید نه نتیجه. چهار نتیجه میگوید کار میکند یا نه: درخواست موردنظر LAN موفق میشود، درخواست اینترنتی پوششدادهشده موفق میشود، درخواست مستقیم ممنوع شکست میخورد، و مورد شکست تونل بهجای عقبنشینی بیصدا همانطور که طراحی شده رفتار میکند. چهار نتیجه را کنار تغییر قواعد بنویسید. طرح آزمایشی با چهار مورد نامدار بهقدری کوتاه است که هر بار اجرا شود و بهقدری مشخص که بلند شکست بخورد.
Get-NetConnectionProfile | Select-Object Name,NetworkCategory,InterfaceAlias Get-NetFirewallProfile | Select-Object Name,DefaultOutboundAction Get-NetFirewallRule -Direction Outbound -Enabled True | Where-Object Action -eq Block | Select-Object DisplayName,Profile
دستور اول نشان میدهد هر شبکه متصل چگونه طبقهبندی شده، که غالباً آن چیزی نیست که نویسنده قاعده فرض کرده بود. دومی اقدام پیشفرض هر پروفایل را نشان میدهد و سومی بلوکهای خروجی فعال را فهرست میکند، از جمله آنهایی که بیصدا یک اجازه تنگتر را باطل میکنند.
پس از تغییر شبکه چهار مورد را دوباره اجرا کنید، چون پروفایل ممکن است وقتی ماشین به شبکه دیگری میپیوندد دوباره طبقهبندی شود. برچسب پروفایل منطبق مدرکی نیست بر اینکه مسیر همانی بود که قصد داشتید.