В этой части статьи будет подробно рассказано о работе с контекстом Netsh Advfirewall Firewall. Этот контекст предназначен для создания правил входящих и исходящих подключений и эквивалентен узлам «Правила для входящих подключений» и «Правила для исходящих подключений» оснастки «Брандмауэр Windows в режиме повышенной безопасности». Несмотря на внешнюю схожесть, этот контекст сильно отличается от Netsh firewall. Контекст Netsh firewall предназначен для обратной совместимости с Windows XP и Windows Server 2003, но не поддерживает функционала брандмауэра Windows в режиме повышенной безопасности. Созданные правила можно экспортировать и применять на других компьютерах. Контекст Netsh advfirewall Firewall поддерживает четыре команды, которые описаны в последующих разделах.
Add
Подобно контексту Netsh Advfirewall Consec, команда Add также предназначена только для создания правил входящих и исходящих подключений, используя команду Add rule. При помощи этих правил можно создавать исключения для входящего или исходящего трафика, чтобы явно разрешить или запретить подключение через брандмауэр Windows. Синтаксис команды следующий:
Netsh Advfirewall Firewall Add rule name=ИмяПравила
где:
name = ИмяПравила. При помощи этого параметра вы можете указать имя нового правила для входящего или исходящего подключения. Имя правила должно быть уникальным и не может иметь значение "all".
dir = { in | out }. При помощи этого параметра вы можете указать, будет ли правило создаваться для входящего или исходящего трафика. У этого параметра может быть только два значения:
- in – правило создается только для входящего трафика и в оснастке «Брандмауэр Windows в режиме повышенной безопасности» его можно будет найти в узле «Правила для входящих подключений».
- out – правило создается только для исходящего трафика и в оснастке «Брандмауэр Windows в режиме повышенной безопасности» его можно будет найти в узле «Правила для исходящих подключений».
action = { allow | block | bypass }. При помощи этого параметра можно указать действие, которое будет выполнять сетевой фильтр с пакетами, которые указаны в текущем правиле. Этот параметр эквивалентен странице «Действия» мастера создания правила нового входящего (исходящего) подключения оснастки «Брандмауэр Windows в режиме повышенной безопасности». Для этого параметра существуют три параметра:
- allow – разрешает сетевые пакеты, которые отвечают всем условиям в правиле брандмауэра;
- block – позволяет явно заблокировать любой сетевой пакет, который отвечает условиям правила брандмауэра. Действие блокирования имеет преимущество перед действием разрешения;
- bypass – разрешает только подключения, защищенные с помощью протокола IPsec. Параметры IPsec определяются в отдельных правилах безопасности подключения. Если для параметра dir указано значение in, то данный параметр является активным для правил, которые распространяются на одну и более учетных записей, которые указаны в параметре rmtcomputergrp или группе удаленных компьютеров в параметре rmtusrgrp. При указании пользователей или компьютеров необходимо использовать метод проверки подлинности, включающий сведения о пользователях или компьютерах, потому что Брандмауэр Windows в режиме повышенной безопасности будет использовать метод проверки подлинности, указанный в правиле безопасности подключения, чтобы убедиться, что пользователи и компьютеры ему удовлетворяют. При выборе dir=out – настройки будут применяться для исходящего трафика. В этом случае не обязательно указывать учетные записи и компьютеры, но если они будут указаны, то условия правила будут соблюдаться только для указанных данных.
program = ПутьКПрограмме\ИмяПроцесса. При выборе этого параметра будут проверяться сетевые пакеты, посылаемые и принимаемые любой программой, выполняющейся на локальном компьютере. При выборе программы нужно вести себя осторожно. Например, применение правила к такому процессу как Svchost.exe, действие брандмауэра Windows в режиме повышенной безопасности может привести к непредсказуемым действиям.
service = { КороткоеИмяСлужбы | any }. При помощи этого параметра можно указать службу, к которой будет применяться правило. Короткие имена правил можно увидеть в свойствах указанной службы оснастки «Службы». Если service=any, правило действует только для служб.
description = Описание правила. При помощи этого параметра вы можете указать подробное описание для созданного правила.
enable = { yes |no }. При помощи этого параметра можно указать, должно ли быть включено правило после его создания. Значение по умолчанию – yes.
profile = { public | private | domain | any | [ ,... ] }. При помощи этого параметра вы можете указать профили, на которые будет распространяться текущее правило. Правило будет применяться только в том случае, если указанный в правиле профиль будет активным. Профиль домена применяется к сети, если для домена, в который входит локальный компьютер, обнаружен контроллер домена. Частный профиль применяется к сети, если она помечена администратором компьютера как частная и не является доменной сетью. Общий профиль применяется к сети в том случае, если компьютер непосредственно подключен к публичной сети, например в аэропорту или кафе.
localip = { Адреса }. Этот параметр используется для указания локальных и удаленных IP-адресов, сетевой трафик которых удовлетворяет данному правилу. Если ваш компьютер указан в списке локальных IP-адресов, то весь сетевой трафик, входящий или исходящий от любого из удаленных IP-адресов, удовлетворяет данному правилу. Этот параметр эквивалентен странице «Область» мастера создания правила нового входящего (исходящего) подключения оснастки «Брандмауэр Windows в режиме повышенной безопасности». Доступные параметры:
- any – адреса компьютеров IPv4 или IPv6;
- IPАдрес – указывается только тот сетевой трафик, который используется одним из адресов IPv4 или IPv6, указанных в поле локального IP-адреса. Если у локального компьютера нет сетевого адаптера, настроенного на один из указанных IP-адресов, то правило не применяется;
- IPПодсеть – Адреса IPv4 или IPv6 подсети, которые соответствуют любому компьютеру, расположенному в указанной подсети. Формат подсети – начальный адрес, после чего идет символ «/», а затем любое число бит маски подсети;
- IPДиапазон – диапазон адресов IPv4 или IPv6, который соответствует любому компьютеру, находящемуся в указанном диапазоне. Формат диапазона – начальный адрес и конечный адреса диапазона, разделенные знаком «-».
remoteip = { Адреса }. При помощи этого параметра вы можете указать удаленные IPv4- или IPv6-адреса, к которым применяется данное правило. Сетевой трафик удовлетворяет правилу, если IP-адрес назначения является одним из адресов в списке. Для этого параметра доступны следующие значения:
- any – адреса компьютеров IPv4 или IPv6;
- localsubnet – любые компьютеры, расположенные в той же подсети, что и локальный компьютер;
- Dns | dhcp | wins | defaultgateway – любые компьютеры, которые настроены как сервера;
- IPАдрес – только адреса IPv4 или IPv6 компьютеров, у которых статический адрес;
- IPПодсеть – адреса IPv4 или IPv6 подсети, которые соответствуют любому компьютеру, расположенному в указанной подсети. Формат подсети – начальный адрес, после чего идет символ «/», а затем любое число бит маски подсети;
- IPДиапазон – диапазон адресов IPv4 или IPv6, который соответствует любому компьютеру, находящемуся в указанном диапазоне. Формат диапазона – начальный адрес и конечный адреса диапазона, разделенные знаком «-».
localport = { any | Целое число | rpc | rpc-epmap | iphttps | teredo | [ ,... ] }. При помощи этого параметра указывается, какие порты в сетевом пакете соответствуют данному правилу брандмауэра. Соответствовать правилу будет только тот сетевой трафик, который отвечает условиям, заданным на этой странице, и к нему будет применено действие. Доступны следующие значения:
- any – при указании этого значения весь сетевой трафик для выбранного протокола будет удовлетворять данному правилу безопасности подключения;
- Целое число – при помощи этого значения вы можете указать как определенный порт, например 80, диапазон портов, например 5000 – 5200, так и несколько определенных портов и диапазонов, разделенных запятыми.
- Rpc – при помощи этого значения локальный компьютер будет получать входящие запросы RPC через порт TCP 135 для сопоставления конечных точек RPC (RPC-EM). В запросе к RPC-EM указывается сетевая служба и запрашивается номер порта, по которому прослушивается указанная сетевая служба. RPC-EM сообщает номер порта, на который удаленный компьютер должен будет передавать сетевой трафик для данной службы. Этот параметр также позволяет RPC-EM принимать RPC-запросы по HTTP. Это значение доступно только для правил входящих подключений по протоколу TCP.
- rpc-epmap – при помощи этого значения локальный компьютер будет получать входящие сетевые пакеты RPC через порты, назначенные средой выполнения RPC. Порты из временного диапазона RPC блокируются брандмауэром Windows, если они не были назначены исполняемым модулем RPC определенной сетевой службе RPC. Только программа, для которой исполняемым модулем RPC назначен порт, может принимать входящий через этот порт трафик. Это значение доступно только для правил входящих подключений по протоколу TCP;
- iphttps – при помощи этого значения локальному компьютеру разрешается принимать входящие пакеты IPTHTTPS от удаленного компьютера. IPHTTPS является протоколом туннелирования, который поддерживает внедрение пакетов IPv6 в сетевые пакеты IPv4 HTTPS. Это позволяет трафику IPv6 проходить через IP-прокси, которые не поддерживают IPv6 или некоторые другие технологии туннелирования IPv6, например Teredo или 6to4. Это значение доступно только для TCP портов;
- teredo – при помощи этого значения локальному компьютеру разрешается получать входящие сетевые пакеты Teredo. Это значение доступно только для правил входящих подключений по протоколу UDP портов.
remoteport = { any | Integer | [ ,... ] }. При помощи этого параметра указывается, какие удаленные порты в сетевом пакете, удовлетворяют данному правилу брандмауэра. Для этого параметра из значений доступны только целые числа и any.
protocol = { any | Integer | icmpv4 | icmpv6 | icmpv4:тип,код | icmpv6:тип,код | tcp | udp }. При помощи этого параметра задаются сведения о том, какие протоколы, указываемые в сетевом пакете, удовлетворяют данному правилу брандмауэра. Этот параметр эквивалентен странице «Протокол и порты» мастера создания правила нового входящего (исходящего) подключения оснастки «Брандмауэр Windows в режиме повышенной безопасности». Для этого параметра доступны следующие значения:
- any – при указании этого значения, все сетевые протоколы будут удовлетворять данному правилу безопасности подключения;
- Integer – при помощи этого значения вы сможете вручную указать номера протоколов, которые будут использоваться в этом правиле. Со списком доступных протоколов можно ознакомиться в этом руководстве: Firewall Rule Properties Page: Protocols and Ports Tab;
- Icmpv4 – при помощи этого значения для правила будут применяться все ICMPv4 пакеты;
- Icmpv6 – при помощи этого значения для правила будут применяться все ICMPv6 пакеты;
- Icmpv4:Тип,Код – при помощи этого значения для правила вы сможете указать ICMPv4 пакеты с заданным типом и кодом. Протоколы можно указывать в диапазоне от 0 до 255;
- Icmpv6:Тип,Код – при помощи этого значения для правила вы сможете указать ICMPv6 пакеты с заданным типом и кодом. Протоколы можно указывать в диапазоне от 0 до 255.
- TCP – при помощи этого значения вы можете указать, что для данного правила будет использоваться TCP трафик с указанными портами с помощью параметров localport и remoteport;
- UDP – при помощи этого значения вы можете указать, что для данного правила будет использоваться UDP трафик с указанными портами с помощью параметров localport и remoteport.
interfacetype = { any | wireless | lan | ras }. При помощи этого параметра вы можете указать, что с учетом требований текущего правила, сетевые подключения устанавливаются только средствами выбранных интерфейсов. Для этого параметра существует четыре значения:
- any – установив это значение, к правилу применяются любые типы интерфейсов;
- wireless – установив это значение, правило применяется только в том случае, если подключение осуществляется через беспроводную сеть;
- lan – установив это значение, правило применяется только в том случае, если подключение к сети осуществляется при помощи сетевого адаптера;
- ras – установив это значение, правило применяется только в том случае, если подключение к сети осуществляется при помощи RAS интерфейса, VPN или Dial-Up.
rmtcomputergrp = SDDLСтрока. При помощи этого параметра вы можете задать компьютеры или группы компьютеров, которые могут соединяться с локальным компьютером. Для правил исходящих подключений эти параметры позволяют задать компьютеры или группы компьютеров, с которыми может соединяться локальный компьютер. В том случае, если этот параметр указан в строке команды, значением параметра security должно быть или authenticate, или authenc. Если в параметре action указано значение bypass, то список компьютеров или групп компьютеров должен быть указан в текущем параметре.
rmtusrgrp = SDDLСтрока. При помощи этого параметра вы можете определить, какие пользователи или группы пользователей могут соединяться с локальным компьютером. В том случае, если этот параметр указан в строке команды, значением параметра security должно быть или authenticate, или authenc. Если в параметре action указано значение bypass, то список учётных записей или групп учётных записей должен быть указан в текущем параметре
edge = { yes | deferapp | deferuser | no }. При помощи этого параметра вы можете указать, что трафик, который проходит через edge устройство, как Network Address Translation (NAT) и разрешается маршрутизатору, между локальным и удаленным компьютерами. Параметр edge можно указывать только для правил входящего трафика. Если значением данного параметра установлено deferapp или deferuser, то Windows позволяет приложению или пользователю получать входящий нежелательный трафик приложений от edge устройства.
security = { authenticate | authenc | authdynenc | authnoencap | notrequired }. При помощи этого параметра вы можете указать настройки безопасности для IPSec подключения. Для этого параметра доступно пять значений:
- authenticate – при указании authenticate в качестве значения параметра security, для данного правила разрешаются только те сетевые пакеты, которые прошли проверку IPSec. В этом случае, для аутентификации сетевого трафика вам понадобится создать отдельное правило безопасности подключения;
- authenc – при указании authenc в качестве значения параметра security, для данного правила разрешаются только те сетевые пакеты, которые прошли проверку IPSec и шифруются. В этом случае, для аутентификации сетевого трафика вам понадобится создать отдельное правило безопасности подключения;
- authdynenc – при указании authdynenc в качестве значения параметра security, системы динамически согласовывают использование шифрования трафика, соответствующего данному правилу брандмауэра Windows. Шифрование согласуется в соответствии со свойствами существующего правила безопасности соединения. Этот параметр позволяет компьютеру принять первый пакет TCP или UDP входящего соединения IPsec, при условии, что он защищен, но не зашифрован, с помощью IPsec. Как только первый пакет будет обработан, сервер повторно согласует соединение и обновит его;
- authnoencap – при указании authnoencap в качестве значения параметра security, компьютеры будут использовать только проверку подлинности и не будут использовать какие-либо алгоритмы пакетной инкапсуляции или шифрования для защиты последующих сетевых пакетов, передаваемых в рамках этого подключения. Параметр AuthNoEncap должен сопровождаться хотя бы одним комплектом обеспечения целостности AH или ESP. После завершения проверки подлинности, остальные сетевые пакеты, связанные с подключением передаются в незашифрованном виде. В этом случае, для аутентификации сетевого трафика вам понадобится создать отдельное правило безопасности подключения. AuthEnc и authnoencap нельзя использовать вместе. Если задан параметр authnoencap, то параметр security=authenticate становится необязательным;
- Notrequired – при указании notrequired в качестве значения параметра security, любой сетевой пакет соответствует этому правилу. В этом случае отдельное правило безопасности создавать не обязательно.
В этом примере, разрешим весь входящий трафик для программы Windows Live Mail с требованиями безопасности:
add rule name="Windows Live Mail" dir=in program="%ProgramFiles%\Windows Live\Mail\wlmail.exe" security=authenticate action=allow
В этом примере разрешаются все входящие подключения для службы BranchCashe:
add rule name="BranchCashe" service=PeerDistSvc dir=in protocol=tcp localport=80 action=allow
В этом примере блокируется исходящий трафик для порта 443 по TCP протоколу:
add rule name="Запретить исходящий трафик по 443 порту" dir=out localport=443 protocol=TCP action=block
Увеличить рисунок
Заблокировать весь входящий сетевой трафик, который поступает по беспроводному интерфейсу можно следующим образом:
add rule name="Запретить исходящий трафик по беспроводному интерфейсу" dir=out interface=wireless action=block
Delete
При помощи команды Delete контекста Netsh Advfirewall Firewall вы можете удалить все правила или отдельные их параметры. При указании команды без параметров, команда delete удалит все созданные ранее правила входящих и исходящих подключений. При обнаружении нескольких совпадений удаляются все правила, удовлетворяющие условию. Синтаксис команды следующий:
Netsh Advfirewall Firewall Rule Параметр Значение
Все параметры, которые доступны для этой команды, идентичны некоторым параметрам команды Add. Для этой команды доступны следующие параметры:
name = { all | RuleName }, dir = { in | out }, profile = { public | private | domain | any | [ ,... ] }, program = ProgramPath\FileName, service = { ServiceShortName | any }, localip = { Addresses }, remoteip = { Addresses }, localport = { any | Integer | rpc | rpc-epmap | teredo | [ ,... ] }, remoteport = { any | Integer | [ ,... ] }, protocol = { any | Integer | icmpv4 | icmpv6 | icmpv4:type,code | icmpv6:type,code | tcp | udp }.
В следующем примере проиллюстрирован метод удаления всех правил для исходящего трафика с локальным портом 443:
delete rule name=all protocol=tcp localport=443
Увеличить рисунок
Set
При помощи команды Set контекста Netsh Advfirewall Firewall вы можете изменять и добавлять любые параметры и значения в заранее созданные правила. Для того чтобы в существующее правило входящих и исходящих подключений можно было добавить новый параметр, перед указанием параметров, введите set rule new. Если таких значений нет или же параметр new отсутствует, изменения не вносятся. Если правила не существует, команда завершается ошибкой. Для создания правил используется команда add, которая подробно описывалась в разделе AddAdd. Синтаксис команды следующий:
set rule name=ИмяПравила Параметр Значение
В том случае, если критерию соответствуют несколько правил, все соответствующие правила будут обновлены. В следующем списке отображены все параметры, которые вы можете задавать без параметра new:
- group = GroupName | name = { all | RuleName }
- dir = { in | out }
- profile = { public | private | domain | any } [ ,... ]
- program = ProgramPath\FileName
- service = { ServiceShortName | any }
- localip = Addresses
- remoteip = Addresses
- localport = { any | rpc | rpc-epmap | teredo | iphttps | Integer | [ ,... ] }
- remoteport = { any | Integer | [ ,... ] }
- protocol = { any | Integer | icmpv4 | icmpv6 | icmpv4:type,code | icmpv6:type,code | tcp | udp }
Вместе с параметром new можно использовать все параметры, которые рассматривались в разделе Add.
В этом примере, изменяются требования безопасности для программы Windows Live Mail:
set rule name="Windows Live Mail" new security= authnoencap
Для изменения удаленного IP-адреса для правила с именем BranchCashe, выполните следующие действия:
set rule name="BranchCashe" new remoteip=192.168.0.1
Увеличить рисунок
Show
При помощи команды Show контекста Netsh Advfirewall Firewall вы можете отобразить все экземпляры правил входящих и исходящих подключений, соответствующих указанному имени и, при необходимости, профилям и типу. При желании вы можете сделать выборку правил по имени, используя параметр name = { all | ИмяПравила }, по профилям, используя параметр profile = { public | private | domain | any } [ ,... ], по типу: type = { dynamic | static }, а также отобразить подробную информацию, используя параметр verbose.
Например, для того чтобы отобразить все правила входящих и исходящих подключений в названии которых присутствует текст «Windows Live Mail», выполните следующие действия:
show rule name=”Windows Live Mail”
Увеличить рисунок