В статьях, посвященных управлению брандмауэром Windows с помощью PowerShell, опубликованных в двух предыдущих номерах журнала, речь шла о некоторых способах настройки брандмауэра для максимального удобства его применения. Теперь давайте обсудим дополнительные возможности, позволяющие ограничить действие правила заданным диапазоном IP-адресов, а также создавать правила типа ICMP, например для разрешения запросов ping. В заключение рассмотрим полезные примеры.

Мы уже знаем, что создавать новые правила брандмауэра можно с помощью New-NetFirewallRule:

new-netfirewallrule -displayname Mtest -direction outbound -action block -remoteport 3389 -protocol TCP

Параметр -displayname – текстовый идентификатор правила. Например, для удаления правила с помощью Remove-NetFirewallRule придется указать это имя или громоздкий идентификатор GUID, используемый Windows для идентификации правила. Параметры -direction и -action позволяют указать вид правила, а -remoteport и -protocol – критерии фильтрации. По сути, эти фильтры обеспечивают результат применения правила (блокировку любой попытки отправки исходящих пакетов), только если данный пакет предназначен для TCP-порта 3389.

Заметим, что у -remoteport есть параметр-партнер, -localport, который можно использовать для создания правила, запускаемого пакетом, поступающим с данного порта. Напомню, что порт 3389 используется удаленным рабочим столом Remote Desktop. Имейте в виду, что приводимые здесь примеры относятся к созданию правил для клиентского компьютера, а не для сервера. Так как эти примеры отлично работают на клиентской машине, их легче и безопаснее тестировать, чем правила для сервера. Когда дело дойдет для применения какого-либо правила блокировки порта на сервере, можно просто заменить -direction outbound на -direction inbound, или, наоборот, -remoteport на -localport, и правило будет работать.

Ограничение действия правила заданным диапазоном IP-адресов

Если ваши требования по безопасности столь специфичны, что вы вынуждены создавать новое правило вместо того чтобы применить одно из сотен готовых, то вас должна заинтересовать возможность индивидуальной настройки диапазонов IP-адресов. Например, может возникнуть необходимость в применении фильтров к адресам за пределами вашей подсети только после согласования протокола и порта, либо потребуется заблокировать определенный диапазон IP-адресов, поскольку они используются злоумышленниками. Для этой цели существуют параметры -remoteaddress и -localaddress.

В следующем примере фильтр «заблокировать порт удаленного рабочего стола» заменен более конкретным вариантом «заблокировать порт удаленного рабочего стола везде, кроме моей подсети». Для этого добавлен параметр -remoteaddress Internet:

new-netfirewallrule -displayname Mtest -direction outbound -action block -remoteport 3389 -protocol TCP -remoteaddress Internet

Здесь Internet означает любой адрес за пределами текущей подсети. Действие этого правила брандмауэра можно протестировать с помощью Test-NetConnection (только для TCP-соединений) либо с помощью Portqry (также для UDP-соединений), как в приведенной ниже команде, цель которой – проверить, отвечает ли система s1.bigfirm.com на запросы подключения удаленного рабочего стола по TCP:

portqry -e 3389 -p TCP -n s1.bigfirm.co

Эта команда не достигает успеха, но системы Windows 8 и Windows Server 2012 позволяют подключать удаленный рабочий стол также по UDP, что позволяет выполнить следующее тестирование с помощью Portqry:

portqry -e 3389 -p UDP -n s1.bigfirm.com

Параметр -remoteport также распространяется на корпоративную сеть (локальную подсеть), -remoteaccess (подсеть, к которой я получаю доступ по VPN), DNS, DHCP, WINS или DefaultGateway (серверы, выполняющие эти роли). Чтобы не оставить на своем компьютере это потенциально опасное правило, не забудьте избавиться от него с помощью команды:

remove-netfirewallrule -displayname mtest

Для -remoteport можно также конкретный IP-адрес (например, -remoteport 4.3.5.1), блок адресов CIDR (например, -remoteport 10.4.4.1/24) или подсеть в формате четырех чисел, разделенных точками (e.g., -remoteport 20.4.4.1/255.255.255.0).

Разрешение запросов ping: правила ICMP

Ничто из рассмотренного ранее, однако, не позволяет создавать правила брандмауэра, которые могут понадобиться в первую очередь: включение запросов ping или другие относящиеся к ICMP функции. ICMP обеспечивает множество полезных данных мониторинга, а функции, которые формируют эти данные, описываются типом (type) и кодом (code). Теперь, если вы захотите ознакомиться с RFC 792, я не буду вас останавливать, но в статье Microsoft «Internet Control Message Protocol (ICMP) Basics» (support.microsoft.com/kb/170292/en-gb) не только перечислены все типы, но и конкретно указано, какие ICMP-сообщения использует Ping. Это сообщения с типом 8 и кодом 0.

Чтобы открыть все типы ICMP-трафика, укажите -Protocol ICMPv4 и -ICMPType type:code:

new-netfirewallrule -displayname Mtest2 -direction outbound -action allow -icmptype 8:0 -protocol icmpv4

Чтобы просто разрешить весь ICMP-трафик, воспользуйтесь ключевым словом Any:

new-netfirewallrule -displayname Mtest2 -direction outbound -action allow -icmptype Any -protocol icmpv4

Как говорилось в предыдущих статьях, брандмауэр Windows Advanced Firewall не получил широкого признания, а жаль, поскольку по существу это «IPSec простыми словами». Кроме того, при всех своих достоинствах графический интерфейс не предусматривает средств автоматизации, тогда как команды PowerShell обеспечивают гибкие возможности управления. Надеюсь, что New-NetFirewallRule найдет применение в вашем плане обеспечения безопасности!