Брандмауэр Windows 7 в режиме повышенной безопасности. Часть 3

Источник: apocalypse

В предыдущих частях статьи подробно рассматривались общее описания термина брандмауэр и команд контекста netsh advfirewall. В этой части статьи будут подробно описаны методы создания и изменения правил безопасности для брандмауэра Windows в режиме повышенной безопасности средствами контекста Netsh advfirewall consec. Команды Netsh advfirewall consec эквивалентны командам "Правилам безопасности подключений" оснастки "Брандмауэр Windows в режиме повышенной безопасности". Контекст Netsh advfirewall consec поддерживает пять команд, которые описаны в последующих разделах. Команда dump рассматриваться в рамках этой части статьи не будет, так как эта команда идентична команде dump контекста Netsh advfirewall.

Add

В контексте Netsh Advfirewall Consec, команда Add предназначена только для создания правил безопасности подключения при помощи Add rule. Правила безопасности подключения для защиты данных, передаваемых по сети, используют протокол IPsec. Правила безопасности подключения позволяют указать, что соединения между двумя компьютерами должны проходить проверку подлинности или шифроваться. Синтаксис команды следующий:

Netsh Advfirewall Consec Add rule name=ИмяПравила

где:

Name = Имя правила. При помощи этого параметра вы можете указать имя нового правила безопасности подключения. Имя правила должно быть уникальным и не может иметь значение "all".

endpoint1 = Адреса. При помощи этого параметра вы можете указать компьютеры, на которые распространяются условия текущего правила. Компьютеры, указанные в endpoint1 могут связываться с компьютерами, указанными в параметре endpoint2 только в том случае, когда выполняются требования текущего правила. При указании конкретных IP-адресов, они должны относиться к одной и той же версии протокола IP. Помимо этого, при настройке динамических туннелей, конечные точки туннелей могут задаваться как any. Локальную туннельную конечную точку задавать для клиентской политики необязательно. Также необязательно указывать удаленные конечные точки туннелей для политики шлюза. Для параметров endpoint1 и endpoint2 доступны следующие значения:

  • any - адреса компьютеров IPv4 или IPv6;
  • localsubnet - любые компьютеры, расположенные в той же подсети, что и локальный компьютер;
  • Dns / dhcp / wins / defaultgateway - любые компьютеры, которые настроены как сервера;
  • IPАдрес - только адреса IPv4 или IPv6 компьютеров, у которых статический адрес;
  • IPПодсеть - адреса IPv4 или IPv6 подсети, которые соответствуют любому компьютеру, расположенному в указанной подсети. Формат подсети - начальный адрес, после чего идет символ "/", а затем любое число бит маски подсети;
  • IPДиапазон - диапазон адресов IPv4 или IPv6, который соответствует любому компьютеру, находящемуся в указанном диапазоне. Формат диапазона - начальный адрес и конечный адреса диапазона, разделенные знаком "-".

endpoint2 = Адреса. Значения этого параметра идентичны параметру Endpoint1. Адреса или диапазоны endpoint1 и endpoint2 должны быть указаны через запятую.

action = { requireinrequestout / requestinrequestout / requireinrequireout / requireinclearout / noauthentication }. При помощи этого параметры вы можете указать проверку подлинности, которая будет применяться к созданному правилу. С подробной информацией об алгоритмах и методах проверки подлинности вы можете ознакомиться в следующем ресурсе: IPsec Algorithms and Methods Supported in Windows. У этого параметра есть пять возможных значений:

  • requireinrequestout - при помощи этого значения, указываются все входящие сетевые подключения на локальном компьютере, которые соответствуют текущему правилу и должны успешно пройти проверку подлинности. Соединение будет разрешено даже при неудачной проверке. В противном случае весь сетевой трафик отбрасывается. В средах с изоляцией серверов и доменов этот параметр, как правило, используется для компьютеров, которые находятся в пограничной зоне;
  • requestinrequestout - при помощи этого значения, указываются все входящие и исходящие сетевые подключения, которые соответствуют текущему правилу и должны успешно пройти проверку подлинности. Также соединение будет разрешено, даже если попытка проверки подлинности закончится неудачей;
  • requireinrequireout - при помощи этого значения, указываются среды с изоляцией серверов и доменов, которые используется для компьютеров, находящихся в пограничной зоне;
  • requireinclearout - при помощи данного значения, указываются подключения, которые применяются ко входящему сетевому трафику туннеля от клиентов при создании правила туннельного режима на компьютере, который обслуживает конечную точку туннеля для удаленных клиентов. Только новые исходящие подключения, которые поступают через туннель, отсылаются обратно;
  • noauthentication - при помощи этого значения, вы можете указать, что для создания правила исключения из проверки подлинности соединений не требуется защита с помощью протокола IPsec.

description = Описание правила. При помощи этого параметра вы можете указать подробное описание для созданного правила.

mode = { transport / tunnel }. При помощи этого параметра указывается режим подключения для правила безопасности подключений IPSec. Значениями этого параметра могут быть transport, или tunnel. Если параметр mode не указан, то режимом, установленным по умолчанию, является transport. Значение requireinclearout параметра action недопустимо в режиме mode=Transport.

enable = { yes / no }. При помощи этого параметра можно указать, должно ли быть включено правило после его создания. Значение по умолчанию - yes.

profile = { public / private / domain / any } [ , ...]. При помощи этого параметра вы можете указать профили, на которые будет распространяться текущее правило. Правило будет применяться только в том случае, если указанный в правиле профиль будет активным.

type = { dynamic / static }. При помощи этого параметра вы можете указать, как будет применяться правило для текущей сессии, и где оно будет храниться. Для этого параметра есть два значения:

  • dynamic - при указании этого значения, правило брандмауэра Windows в режиме повышенной безопасности сразу применяется к текущей сессии и не привязывается к адресу компьютера. При этом ни одна политика не сохраняется и правило не будет активно после перезагрузки компьютера;
  • static - правило будет сохраняться в текущем хранилище политики, указанном при помощи команды advfirewall set store. Правило не будет применяться до тех пор, пока политики не будут активными.

По умолчанию установлен параметр static.

localtunnelendpoint = { IPAddress / any }. Для использования этого параметра необходимо, чтобы значением параметра mode было tunnel. Локальная конечная точка туннеля - это шлюз, в который компьютер в конечной точке 1 передает сетевые пакеты, адресованные компьютеру в конечной точке 2. Локальная конечная точка получает сетевой пакет от компьютера в конечной точке 1, инкапсулирует его в новый сетевой пакет и пересылает в удаленную конечную точку туннеля. Трафик передается с IP-адреса, указанного в этом параметре на адрес, определенный в параметре remotetunnelendpoint.

remotetunnelendpoint = { IPAddress / any }. Для использования этого параметра необходимо, чтобы значением параметра mode было tunnel. Удаленная конечная точка туннеля извлекает инкапсулированный исходный пакет, помещает его в сеть, соединенную с компьютерами в конечной точке 2, и пересылает пакет в место назначения.

Если указать значение any, то компьютер в конечной точке 1 также будет являться локальной конечной точкой туннеля для данного подключения. Компьютер в конечной точке 1 инкапсулирует его собственные сетевые пакеты и пересылает их в удаленную конечную точку туннеля, которая извлекает и пересылает данные компьютеру назначения в конечной точке 2. Версия протокола IP для адресов конечных точек туннеля должна быть одной и той же. Например, если задан адрес IPv4 для одного конца, для другого конца также должен быть задан адрес IPv4. Можно указать оба протокола - и IPv4, и IPv6.

port1 = { any / Integer or Range } [ ,… ]. Этот параметр доступен в том случае, если выбран протокол TCP или UDP. Используйте этот параметр для того, чтобы указать номер порта компьютера, который является частью конечной точки 1. Вы можете указать как определенный порт, например 80, диапазон портов, например 5000 - 5200, так и несколько определенных портов и диапазонов, разделенных запятыми. Если выбрать параметр any, то весь сетевой трафик для выбранного протокола будет удовлетворять данному правилу безопасности подключения. Диапазон портов можно указывать от 0 до 65535.

port2 = { any / Integer or Range } [ ,… ]. Значения этого параметра идентичны параметру port1.

protocol = { any / tcp / udp / icmpv4 / icmpv6 / Integer }. При помощи этого параметра вы можете выбрать протокол, сетевой трафик которого необходимо защищать с помощью данного правила брандмауэра. Для того чтобы можно было указывать порты, выберите протокол TCP или UDP, сетевой трафик которого необходимо защищать с помощью данного правила брандмауэра. Также для создания правил доступны значения ICMPv4 и ICMPv6. По умолчанию установлено значение any.

interfacetype = { any / wireless / lan / ras }. При помощи этого параметра вы можете указать, что с учетом требований текущего правила, сетевые подключения устанавливаются только средствами выбранных интерфейсов. Для этого параметра существует четыре значения:

  • any - установив это значение, к правилу применяются любые типы интерфейсов;
  • wireless - установив это значение, правило применяется только в том случае, если подключение осуществляется через беспроводную сеть.
  • lan - установив это значение, правило применяется только в том случае, если подключение к сети осуществляется при помощи сетевого адаптера.
  • ras - установив это значение, правило применяется только в том случае, если подключение к сети осуществляется при помощи RAS интерфейса, VPN или Dial-Up.

auth1 = { computerkerb / computercert / computercertecdsap256 / computercertecdsap384 / computerpsk / computerntlm / anonymous / [ , ...] }. Этот параметр отвечает за использование проверки подлинности компьютера IPSec для основного режима на основе сертификата компьютера. Можно указывать несколько значений, разделенных запятыми без пробелов. Для того чтобы при помощи созданного правила компьютеры могли между собой общаться, проверка подлинности должна пройти успешно. Обязательно должен быть указан как минимум один метод проверки подлинности. Методы computerpsk и computerntlm нельзя указывать совместно с auth1. Для этого параметра доступны следующие значения:

  • computerkerb - при выборе этого значения для проверки подлинности компьютера будет использоваться протокол Kerberos V5;
  • computercert - при выборе этого значения для проверки подлинности, компьютер использует сертификат, выданный центром сертификации (CA), который подписывается с помощью алгоритма шифрования с открытым ключом RSA;
  • computercertecdsap256 - при выборе этого значения для проверки подлинности, компьютер использует сертификат, выданный центром сертификации (CA), который подписывается с помощью алгоритма цифровой подписи на эллиптических кривых с 256-битным уровнем криптостойкости ключа;
  • computercertecdsap384 - при выборе этого значения для проверки подлинности, компьютер использует сертификат, выданный центром сертификации (CA), который подписывается с помощью алгоритма цифровой подписи на эллиптических кривых с 384-битным уровнем криптостойкости ключа;
  • computerpsk - при выборе этого значения для проверки подлинности, компьютер использует данные, введенного вручную общего ключа на двух компьютерах для передачи данных. Этот ключ хранится в незашифрованном виде и в связи с этим, рекомендуется не использовать это значение;
  • computerntlm - при выборе этого значения для проверки подлинности учетной записи компьютера используется метод NTLMv2. Это значение нельзя использовать совместно со значением computerpsk;
  • anonymous - этот параметр не рекомендуется выбирать без других значений, а также со значением computerpsk. При применении этого значения с вышеперечисленными значениями, его рекомендуется добавлять в последнюю очередь.

auth1psk = PreSharedKey. Данный параметр можно использовать только в том случае, если в значениях параметра auth1 присутствует computerpsk. При помощи этого параметра можно задать дополнительные значения ключа, который используется для проверки подлинности. Это значение хранится в незашифрованном виде.

auth1ca = "CAName [ certmapping: { yes / no } ] [ excludecaname: { yes / no } ] [ catype: { root / intermediate } ] [ / ... ]". При помощи этого параметра вы можете указать сертификат, подписанный с помощью алгоритма шифрования с открытым ключом RSA. Этот параметр может быть активным только в том случае, если у параметра auth1 было установлено значение computercert. Вы можете указать несколько сертификатов, разделив их символом /. Все значения параметра должны быть заключены в кавычки. Для этого параметра есть несколько значений:

  • CAName - при помощи этого значения укажите имя издателя сертификата, который используется для проверки подлинности. Формат выражения должен соответствовать стандартам сертификатов (CN, OU…). Имя центра сертификации обязательно должно иметь префикс "CN=";
  • Certmapping - при помощи этого значения укажите, следует ли включить отображение certificate-to-account;
  • Excludecaname - при помощи этого значения указывается, следует ли исключить имя доверенного корневого центра сертификации, от имени которого принимается сертификат.
  • Catype - Параметр catype можно использовать для указания типа центра сертификации - catype=root/intermediate.

auth1healthcert = { yes / no }. Этот параметр ограничивает используемые сертификаты компьютеров, которые помечены как сертификаты работоспособности. Сертификаты работоспособности публикуются центром сертификации для поддержки развертывания защиты доступа к сети (NAP). Служба защиты доступа к сети (NAP) помогает определять и применять политики работоспособности, чтобы обеспечить минимальную вероятность доступа в сеть компьютерам, не отвечающим сетевым требованиям (например, компьютерам без антивирусных программ или на которых не установлены последние обновления программного обеспечения). Этот параметр может быть активным только в том случае, если у параметра auth1 было установлено значение computercert.

auth1ecdsap256ca = "CAName [ certmapping: { yes / no } ] [ excludecaname: { yes / no } ] [ catype: { root / intermediate } [ / ... ]". При помощи этого параметра вы можете указать сертификат, подписанный с помощью алгоритма цифровой подписи на эллиптических кривых с 256-битным уровнем криптостойкости ключа. Этот параметр может быть активным только в том случае, если у параметра auth1 было установлено значение computercertecdsap256.

auth1ecdsap256healthcert = { yes / no }. Этот параметр по своему назначению и значениям идентичен параметру auth1healthcert.

auth1ecdsap384ca = "CAName [ certmapping: { yes / no } ] [ excludecaname: { yes / no } ] [ catype: { root / intermediate } [ / ... ]". При помощи этого параметра вы можете указать сертификат, подписанный с помощью алгоритма цифровой подписи на эллиптических кривых с 384-битным уровнем криптостойкости ключа. Этот параметр может быть активным только в том случае, если у параметра auth1 было установлено значение computercertecdsap384.

auth1ecdsap384healthcert = { yes / no }. Этот параметр по своему назначению и значениям идентичен параметру auth1healthcert.

auth2 = { userkerb / userntlm / usercert / usercertecdsap256 / usercertecdsap384 / computercert / computercertecdsap256 / computercertecdsap384 / anonymous / [ ,... ] }. По существу, значение этой команды незначительно отличается от команды auth1, но у текущей команды есть несколько дополнительных параметров:

  • userkerb - при выборе этого значения для проверки подлинности пользователя будет использоваться протокол Kerberos V5;
  • userntlm - при выборе этого значения для проверки подлинности учетной записи пользователя используется метод NTLMv2;
  • usercert - при выборе этого значения для проверки подлинности, используется сертификат пользователя, выданный центром сертификации (CA), если сертификат подписывается с помощью алгоритма шифрования с открытым ключом RSA;
  • usercertecdsap256 - при выборе этого значения для проверки подлинности, используется сертификат пользователя, выданный центром сертификации (CA), если сертификат подписывается с помощью алгоритма цифровой подписи на эллиптических кривых с 256-битным уровнем криптостойкости ключа;
  • usercertecdsap384 - при выборе этого значения для проверки подлинности, используется сертификат пользователя, выданный центром сертификации (CA), если сертификат подписывается с помощью алгоритма цифровой подписи на эллиптических кривых с 384-битным уровнем криптостойкости ключа.

Значение команд auth2ca, auth2ecdsap256ca и auth2ecdsap384ca не отличаются от идентичных команд для auth1, auth1 и auth2, они могут задаваться в виде списков параметров, разделенных запятыми. Метод computercert нельзя указывать с учетными данными пользователя.

qmpfs = { dhgroup1 / dhgroup2 / dhgroup14 / ecdhp256 / ecdhp384 / mainmode / none }. Этот параметр используется для создания быстрой пересылки. Режим qmpfs=mainmode использует параметр обмена ключами основного режима для PFS. Не рекомендуется использовать DES, MD5 и DHGroup1. Эти криптографические алгоритмы предоставляются исключительно для обратной совместимости.

qmsecmethods = [ authnoencap:integrity [ +Lifemin ] [ +datakb ] ; ] ah:Integrity+esp:Integrity-Encryption+[Lifemin]+[Datakb] / default. При помощи этого параметра можно указать один или несколько быстрых режимов безопасности, разделенных запятыми без указания пробелов. Доступны следующие параметры:

  • authnoencap - использование authnoencap означает, что компьютеры будут использовать только проверку подлинности, и не будут использовать какие-либо алгоритмы пакетной инкапсуляции или шифрования для защиты последующих сетевых пакетов, передаваемых в рамках этого подключения. Параметр AuthNoEncap должен сопровождаться хотя бы одним комплектом обеспечения целостности AH или ESP. После завершения проверки подлинности, остальные сетевые пакеты, связанные с подключением передаются в незашифрованном виде;
  • Integrity - этот параметр отвечает за целостность алгоритма. Для параметра qmsecmethods целостность=md5/sha1/sha256/aesgmac128/aesgmac192/aesgmac256/aesgcm128/aesgcm192/aesgcm256. В том случае, если вам не нужно указывать AH, просто не включайте ah:Integrity в команду;
  • Encryption - этот параметр отвечает за шифрование алгоритма. Для параметра qmsecmethods шифрование=3des/des/aes128/aes192/aes256/aesgcm128/aesgcm192/aesgcm256. Если указаны параметры aesgcm128, aesgcm192 или aesgcm256, то их необходимо использовать как для ESP-целостности, так и для шифрования;
  • Life - этот параметр отвечает за цикл жизни сессии в минутах. Значение по умолчанию - 60 минут. Значение должно находиться в интервале от 5 до 2880 минут;
  • Data - этот параметр отвечает за объем цикла жизни сессии в килобайтах. По истечению указанного объема, создается новая сессия. Значение по умолчанию - 100000КВ. Значение должно находиться в интервале от 20480 до 2147483647КВ.

exemptipsecprotectedconnections = { yes / no }. Этот параметр можно указывать только для правил туннельного режима. Присвоив этому параметру значение "Yes", можно исключить ESP-трафик из туннеля. Трафик, относящийся только к AH, не будет исключаться из туннеля.

applyauthz = { yes / no }. Этот параметр можно указывать только для правил туннельного режима. Параметр указывает на то, что только пользователи и компьютеры, которым разрешено использовать туннель могут установить соединение с использованием этого правила.

В этом примере создается правило с пользовательскими предположениями быстрого режима:

add rule name="Правило быстрого режима" endpoint1=195.38.1.1 endpoint2=195.68.255.255 qmsecmethods=authnoencap:sha1,ah:aesgmac256+esp:aesgmac256-none action=requireinrequestout

Причем, если перейти в настройки этого правила в оснастке брандмауэра Windows в режиме повышенной безопасности, можно увидеть, что оно содержит свойства, которые не поддерживаются графическим интерфейсом:

В этом примере создается правило для изоляции домена, где не требуется защита с помощью протокола IPsec:

add rule name="Изоляция домена" endpoint1=any endpoint2=any action=noauthentication

В этом примере создается правило, где для входящих подключений требуется проверка подлинности на основе одного из двух сертификатов. Также проверка подлинности запрашивается для исходящих подключений, но подключение будет разрешено, даже если проверка подлинности не будет пройдена. Если указывается несколько сертификатов, то они должны разделяться вертикальной чертой (/):

add rule name="Проверка подлинности с использованием сертификата" endpoint1=any endpoint2=any action=requireinrequestout auth1=computercert auth1ca="C=US,O=MSFT,CN=\'Microsoft Root Authority\'/C=US,O=MYORG,CN=\'TestCompany Trusted Certificate\'"

Создать правило туннельного режима из подсети A (10.1.1.0, внешний IP-адрес=192.157.15.1) в подсеть B (22.1.1.0, внешний IP-адрес=192.168.0.1) можно следующим образом:

add rule name="Туннельное подключение" mode=tunnel endpoint1=10.1.1.0/16 endpoint2=22.1.1.0/16 remotetunnelendpoint=192.168.0.1 localtunnelendpoint=195.57.15.1 action=requireinrequireout

Delete

При помощи команды Delete контекста Netsh Advfirewall Consec вы можете удалить все правила или отдельные их параметры. При указании команды без параметров, команда delete удалит все созданные ранее правила безопасности подключения. При обнаружении нескольких совпадений удаляются все правила, удовлетворяющие условию. Синтаксис команды следующий:

Netsh Advfirewall Consec Delete Rule Параметр Значение

Все параметры, которые доступны для этой команды, идентичны некоторым параметрам команды Add. Для этой команды доступны следующие параметры:

name = { all / RuleName }, type = { dynamic / static }, profile = { public / private / domain / any / [ ,... ] }, endpoint1 = Адрес, endpoint2 = Адрес, port1 = { any / Integer or Range } [ ,… ], port2 = { any / Integer or Range } [ ,… ], protocol = { any / tcp / udp / icmpv4 / icmpv6 / Integer }.

В следующем примере попробуем удалить все правила, типом которых указано значение dynamic:

delete rule name=all type=dynamic

Set

При помощи команды Set контекста Netsh Advfirewall Consec вы можете изменять и добавлять любые параметры и значения в заранее созданных правилах. Для того чтобы добавить в существующее правило безопасности подключения новый параметр, перед указанием параметров введите set rule new. Если таких значений нет, или же параметр new отсутствует, изменения не вносятся. Если правила не существует, команда завершается ошибкой. Для создания правил используется команда add, которая подробно описывалась в разделе Add. Синтаксис команды следующий:

set rule name=ИмяПравила Параметр Значение

В том случае, если критерии соответствуют нескольким правилам, все соответствующие правила будут обновлены. В следующем списке отображены все параметры, которые вы можете задавать без параметра new:

  • name = { all / RuleName }
  • type = { dynamic / static }
  • profile = { public / private / domain / any / [ ,... ] }
  • endpoint1 = Addresses
  • endpoint2 = Addresses
  • port1 = { any / Integer } [ ,… ]
  • port2 = { any / Integer } [ ,… ]
  • protocol = { any / tcp / udp / icmpv4 / icmpv6 / Integer }

Вместе с параметром new можно использовать все параметры, которые рассматривались в разделе Add.

В первом примере попробуем переименовать одно из правил:

set rule name="Правило быстрого режима" new name="Откорректированное правило быстрого режима"

В этом примере изменяется проверка подлинности правила быстрого режима:

netsh advfirewall consec>set rule name="Откорректированное правило быстрого режима" new endpoint1=any endpoint2=any qmsecmethods=authnoencap:aesgmac256,ah:aesgmac256+esp:aesgmac256-none

Show

При помощи команды Show контекста Netsh Advfirewall Consec вы можете отобразить все экземпляры правил безопасности подключений, соответствующих указанному имени и, при необходимости, профилям и типу. При желании вы можете сделать выборку правил по имени, используя параметр name = { all / ИмяПравила }; по профилям, используя параметр profile = { public / private / domain / any } [ ,... ]; по типу: type = { dynamic / static }, а также отобразить подробную информацию, используя параметр verbose.

Например, для того чтобы отобразить все правила безопасности подключений, которые были созданы выполните следующее:

show rule name=all


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23225