Брандмауэр 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 доступны следующие значения:
endpoint2 = Адреса. Значения этого параметра идентичны параметру Endpoint1. Адреса или диапазоны endpoint1 и endpoint2 должны быть указаны через запятую. action = { requireinrequestout / requestinrequestout / requireinrequireout / requireinclearout / noauthentication }. При помощи этого параметры вы можете указать проверку подлинности, которая будет применяться к созданному правилу. С подробной информацией об алгоритмах и методах проверки подлинности вы можете ознакомиться в следующем ресурсе: IPsec Algorithms and Methods Supported in Windows. У этого параметра есть пять возможных значений:
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 }. При помощи этого параметра вы можете указать, как будет применяться правило для текущей сессии, и где оно будет храниться. Для этого параметра есть два значения:
По умолчанию установлен параметр 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 }. При помощи этого параметра вы можете указать, что с учетом требований текущего правила, сетевые подключения устанавливаются только средствами выбранных интерфейсов. Для этого параметра существует четыре значения:
auth1 = { computerkerb / computercert / computercertecdsap256 / computercertecdsap384 / computerpsk / computerntlm / anonymous / [ , ...] }. Этот параметр отвечает за использование проверки подлинности компьютера IPSec для основного режима на основе сертификата компьютера. Можно указывать несколько значений, разделенных запятыми без пробелов. Для того чтобы при помощи созданного правила компьютеры могли между собой общаться, проверка подлинности должна пройти успешно. Обязательно должен быть указан как минимум один метод проверки подлинности. Методы computerpsk и computerntlm нельзя указывать совместно с auth1. Для этого параметра доступны следующие значения:
auth1psk = PreSharedKey. Данный параметр можно использовать только в том случае, если в значениях параметра auth1 присутствует computerpsk. При помощи этого параметра можно задать дополнительные значения ключа, который используется для проверки подлинности. Это значение хранится в незашифрованном виде. auth1ca = "CAName [ certmapping: { yes / no } ] [ excludecaname: { yes / no } ] [ catype: { root / intermediate } ] [ / ... ]". При помощи этого параметра вы можете указать сертификат, подписанный с помощью алгоритма шифрования с открытым ключом RSA. Этот параметр может быть активным только в том случае, если у параметра auth1 было установлено значение computercert. Вы можете указать несколько сертификатов, разделив их символом /. Все значения параметра должны быть заключены в кавычки. Для этого параметра есть несколько значений:
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, но у текущей команды есть несколько дополнительных параметров:
Значение команд 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. При помощи этого параметра можно указать один или несколько быстрых режимов безопасности, разделенных запятыми без указания пробелов. Доступны следующие параметры:
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:
Вместе с параметром 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 |