Брэндмаўэр Windows сам па сабе як пераключальнік адключэння VPN: ці стрымае?
Правілы тыпу інтэрфейса могуць блакаваць фізічныя адаптары, але тунель трэцяга боку часта выглядае як правадны. Праверце класіфікацыю, маршрут канчатковага пункта, затым DNS.
Спытайце, ці можа брэндмаўэр Windows сам служыць пераключальнікам адключэння, і атрымаеце два ўпэўненыя і несумяшчальныя адказы. Адзін кажа, што правіла тыпу інтэрфейса робіць усю працу; другі — што без скрыптоў яно не працуе. Абодва апісваюць палову аднаго механізму. Брэндмаўэр можа выразіць блакаванне, а вось ці сапраўды вынік закрываецца бяспечна, залежыць ад трох рэчаў: як Windows класіфікуе тунельны адаптар, ці захоўваецца выключэнне для канчатковага пункта і ці пакрытыя развязанне імёнаў і IPv6. Памыліцеся хоць у адным — і машына або працячэ, або страціць усялякую сувязь.
Тры ўмовы, у такім парадку
Першая ўмова — класіфікацыя, і яна вырашае, ці можна наогул выразіць патрэбнае правіла. Правілы брэндмаўэра Windows можна абмежаваць па тыпе інтэрфейса: правадны, бесправодны або аддалены доступ. Палітыка, якая блакуе зыходны трафік на фізічных тыпах і дазваляе тунель, працуе толькі тады, калі Windows прызнае тунель аддаленым доступам.
Другая ўмова — выключэнне для канчатковага пункта. Перш чым з'явіцца тунель, кліент павінен дабрацца да сервера VPN праз фізічны адаптар, таму суцэльнае блакаванне гэтага адаптара перашкаджае менавіта той сувязі, якая зрабіла б блакаванне непатрэбным. Выключэнне павінна называць сервер і яго порт, а пакет мусіць ісці праз фізічны шлюз, а не ў яшчэ не ўзняты тунель.
Трэцяе — пакрыццё. Набор правілаў, які блакуе IPv4 і забывае пра IPv6, або дазваляе лакальнаму рэзалютару развязанне канчатковага пункта і тым самым дазваляе любое іншае развязанне, адмаўляе адкрыта менавіта ў тым акне, для якога існуе пераключальнік. Гэта прабел у праекце, а не памылка брэндмаўэра. Гэта таксама прабел, які перажывае любы прагон тэстаў на стале.
Класіфікацыя — першая брама
Паглядзіце, што Windows думае пра адаптары, перш чым напісаць хоць адно правіла. Уласнае злучэнне VPN у Windows звычайна выглядае як аддалены доступ. Кліент трэцяга боку, які стварае свой віртуальны адаптар, часта выглядае як правадны, а значыць, блакаванне, абмежаванае праваднымі адаптарамі, блакуе і тунель.
Get-NetConnectionProfile | Select-Object Name,InterfaceAlias,NetworkCategory
Get-NetAdapter | Select-Object Name,InterfaceDescription,Status,ifIndex
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultOutboundAction
Трэцяя каманда паведамляе, ці ўжо дзейнічае стандартнае блакаванне зыходных злучэнняў, і гэта змяняе ўсю форму праекта. Калі стандартам ужо з'яўляецца блакаванне, вы пішаце дазвольныя правілы, а не выключэнні да дазваляльнай базы, і гэта значна прасцейшая пазіцыя для роздуму.
Калі ваш тунельны адаптар паведамляе пра сябе як правадны, адзін брэндмаўэр — не той інструмент для праекта з закрытым адмовай, і ніякая наладка правілаў гэтага не зменіць. Гэта той выпадак, калі другое меркаванне ў кожнай тэме форуму слушнае.
Выключэнню для канчатковага пункта патрэбны не толькі правіла, але і маршрут
Дапусцім, класіфікацыя працуе. Выключэнне складаецца з дзвюх частак, і яны жывуць у розных падсістэмах. Правіла брэндмаўэра дазваляе трафік; маршрут хоста прымушае яго выйсці праз патрэбны інтэрфейс, пакуль тунель апушчаны.
New-NetFirewallRule -DisplayName "VPN endpoint allow" -Direction Outbound -Action Allow \
-Protocol TCP -RemoteAddress 203.0.113.9 -RemotePort 443 -InterfaceType Wired,Wireless
New-NetRoute -DestinationPrefix 203.0.113.9/32 -InterfaceIndex 12 -NextHop 192.168.1.1
Get-NetRoute -DestinationPrefix 203.0.113.9/32
Без маршруту выключэнне дапамагае толькі тады, калі стандартны маршрут яшчэ паказвае на фізічны шлюз. Як толькі кліент усталюе ўласны стандартны маршрут і затым адключыцца, дазволеным пакетам няма куды разумна падзецца, і сувязь немагчыма аднавіць. Такі збой выглядае як зламаны кліент, а насамрэч гэта адсутны маршрут.
Трымайце выключэнне настолькі вузкім, наколькі дазваляе кліент. Адзін адрас і адзін порт падлягаюць праверцы; дыяпазон, які ахоплівае ўсю сетку пастаўшчыка, — не. Гэтае шырэйшае правіла дазваляе таксама ўсё іншае, што размяшчаецца ў таго ж пастаўшчыка, а гэта звычайна больш, чым вы мелі на ўвазе.
DNS і IPv6 — там, дзе яно адмаўляе адкрыта
Развязанне імёнаў — класічная пратэчка. Калі канчатковы пункт — імя хоста, кліент мусіць развязаць яго да стварэння тунеля, а значыць, фізічнаму адаптару трэба дазволіць дасягаць рэзалютара. Тое ж дазволенае выпускае любое іншае развязанне, пакуль тунель апушчаны, а аднаго запыту дастаткова, каб выкрыць, што вы збіраліся наведаць.
IPv6 — другое. Правілы, напісаныя для IPv4, не пакрываюць іншую сям'ю, а многія кліенты ўсталёўваюць толькі маршруты IPv4. Таму машына з уласнай злучнасцю IPv6 можа працягваць размаўляць з інтэрнэтам, пакуль бок IPv4 трывала заблакаваны, і пераключальнік увесь час паведамляе пра поспех.
| Gap | What leaks | Control |
|---|---|---|
| Resolver permitted for endpoint lookup | Every name queried while down | Pin the endpoint as an address, or block non-tunnel DNS |
| Rules only for IPv4 | Full IPv6 connectivity | Add the same rules for the other family |
| Application bound to physical interface | Its own traffic | Firewall cannot fix this; change the binding |
Трэці радок варта разумець, а не абыходзіць. Брэндмаўэр вырашае пра пакеты, а не пра тое, які інтэрфейс папрасіла выкарыстаць праграма, і праграму, якая явна прывязваецца, бывае цяжка ўтрымаць. Гэта аргумент на карысць пераключальніка на баку кліента, які працуе ніжэй за праграму, а не на карысць новых правілаў.
Тэстуйце, спыняючы кліент, а не вырываючы кабель
Адзіны значны тэст — той, што імітуе збой, ад якога вы абараняецеся. Спыніце службу, забіце працэс або адключыце адаптар, створаны кліентам, затым паспрабуйце дасягнуць інтэрнэту і імені:
Stop-Service -Name "YourVpnService" -Force
Test-NetConnection -ComputerName 1.1.1.1 -Port 443
Resolve-DnsName example.com
Test-NetConnection -ComputerName 2606:4700:4700::1111 -Port 443
Усе тры павінны праваліцца. Калі першы ўдаецца, блакаванне не дзейнічае; калі другі ўдаецца там, дзе першы праваліўся, у вас пратэчка DNS; калі ўдаецца трэці, IPv6 не пакрыты. Кожны вынік паказвае роўна на адзін з прабелаў вышэй.
Паўтарыце тэст пасля сну і адраджэння, бо профіль брэндмаўэра можа змяніцца, калі Windows вырашыць, што сетка публічная або прыватная, а правілы, прывязаныя да профілю, рушаць за ім. Праект, які трымаецца на стале і правальваецца ў цягніку, — гэта праект, правераны адзін раз.
Калі брама класіфікацыі або патрабаванне DNS робяць падыход з адным брэндмаўэрам непрацаздольным, пераключальнік на баку кліента — сумленны адказ. Калі ж тунель заканчваецца на маршрутызатары, палітыкай павінен валодаць маршрутызатар, бо адно правіла там пакрывае кожную прыладу за ім і не залежыць ад таго, як Windows называе адаптар.