Замислите правило firewall-а које укључује ICMP echo за јавну адресу сервера кад год је повезан именовани VPN профил. То се чита као „ping само кроз тунел“, а такво читање је погрешно на начин који је важан. Правило не ограничава ко може доћи до хоста; мења на шта јавни интерфејс одговара док је нека друга веза случајно активна. То су две различите политике, а једна од њих тихо шири изложеност.

Правило које мислите да сте написали

Намерни захтев је обично узак: систем надзора, или једини администратор на VPN-у, треба да може да потврди да је сервер жив. Написано као реченица, звучи као контрола приступа тунелу. Написано као објекат firewall-а, претвара се у услов на јавном профилу, јер ту захтев echo и стиже.

Кад услов постане стање везе, а не изворна адреса, скуп дозвољених пошиљалаца више није скуп VPN партнера. Свако ко може доћи до јавне адресе може послати захтев echo док су врата отворена. Тунел није постао пут; тунел је постао прекидач.

Људи који промовишу ту идеју обично не лажу о ефекту који су желели. Требала им је провера која одговара само кад је веза здрава, а здравље везе је било најлакше посматрати кроз VPN. Грешка је третирати сигнал доступности као одлуку о приступу и затим то аутоматизовати.

Шта врата заправо контролишу

Овај дизајн спаја две независне ствари, а њихово раздвајање је већи део исправке. Прво је обухват: која локална адреса, које удаљене адресе, који протокол и који тип ICMP-а. Друго је услов: да ли је објекат правила тренутно укључен. Обухват је оно што firewall процењује по пакету; услов је оно што скрипта уписује у складиште политике, а њих двоје се усклађују по потпуно различитим сатовима.

Ако је захтев заиста само VPN партнери, обухват га решава без икакве логике стања везе: вежите правило за интерфејс тунела или за распон адреса тунела, ограничите удаљене адресе на скуп клијената и наведите тип echo уместо „ICMP“. То правило остаје исправно кад нема активног VPN-а и не може га отворити неповезани профил.

Ако је захтев заиста јавна врата, реците то у тексту политике, јер се критеријуми прихватања мењају. Јавна врата морају именовати тачан профил, дефинисати шта значи „повезан“ и навести да су јавни пошиљаоци у обухвату по дизајну. Већина забуне нестаје у тренутку кад је неко присиљен да запише ту реченицу.

Изградите објекат једном, па га укључујте

Унапред обезбедите једно правило са стабилним идентитетом, искључено, и пустите контролер да мења само његово стање укључености. Стварање правила по приказном имену при сваком покретању је начин на који складиште политике заврши са пет скоро идентичних објеката и без поузданог начина да их уклони.

New-NetFirewallRule -Name "VpnGateEchoV4" -DisplayName "Public echo gated on VPN state" -Direction Inbound -Action Allow -Protocol ICMPv4 -IcmpType 8 -LocalAddress 203.0.113.10 -RemoteAddress Any -Enabled False
Set-NetFirewallRule -Name "VpnGateEchoV4" -Enabled True

Име је трајни идентификатор; приказно име је документација коју човек може уређивати. Ускладите по -Name и скрипта престаје да ствара дупликате. Исти облик команде покрива случај IPv6 са -Protocol ICMPv6 -IcmpType 128, али то је засебно правило јер се бројеви типа echo разликују између две фамилије.

Држите фамилију адреса и тип ICMP-а експлицитним и из другог разлога: -Protocol ICMPv4 без типа дозвољава сваку ICMPv4 поруку коју профил допушта, укључујући оне које никада нисте намеравали прихватити. Именовање типа 8 сужава правило на захтев echo, а то је једино што провера доступности шаље.

Где аутоматизација противречи намери

Анкетирање клијентског профила сваких неколико минута не може дати тренутну границу. Између пада везе и следеће анкете правило још одговара на јавној адреси; између подизања везе и следеће анкете не одговара. Признати то кашњење је искрено, а тврдити да дизајн намеће строги инваријант није.

У самој провери стања постоји замка обухвата. Get-VpnConnection пријављује клијентске профиле конфигурисане на рачунару, по default-у за тренутног корисника и за све кориснике са -AllUserConnection. Не пријављује удаљене кориснике који су тренутно повезани на RRAS сервер; то је друго посматрање са другом командом. Врата изграђена на погрешном нису повезана ни са чим.

Затим покријте стања која нико не скриптује: покретање са правилом које је већ укључено из претходног циклуса, пад контролера док су врата отворена и профил избрисан док његово правило остаје активно. Свако треба дефинисан default, а сигуран default за јавну дозволу је искључено. Ако захтев заиста не трпи прозор анкете, правило везано за стање је погрешан инструмент и спровођење припада тунелу, не јавном интерфејсу.

На крају, тестирајте јавни захтев двапут: једном са подигнутом изабраном везом и једном са обореном, са хоста који није на VPN-у. Успешан ping из унутрашњости тунела не доказује ништа о овој политици, а то је мерење које већина поставки прескочи.

Повезани чланци