Поделиться через


IPV6_PROTECTION_LEVEL

Параметр сокета IPV6_PROTECTION_LEVEL позволяет разработчикам накладывать ограничения на доступ к сокетам IPv6. Такие ограничения позволяют приложению, работающему в частной локальной сети, просто и надежно защититься от внешних атак. Параметр сокета IPV6_PROTECTION_LEVEL расширяет или сужает область прослушивающего сокета, обеспечивая неограниченный доступ для общедоступных и частных пользователей при необходимости или ограничивая доступ только к одному и тому же сайту, если это необходимо.

IPV6_PROTECTION_LEVEL в настоящее время имеет три определенных уровня защиты.

Уровень защиты Описание
PROTECTION_LEVEL_UNRESTRICTED
Используется приложениями, предназначенными для работы через Интернет, включая приложения, использующие возможности обхода NAT по протоколу IPv6, встроенные в Windows (например, Teredo). Эти приложения могут обходить брандмауэры протокола IPv4, поэтому они должны быть защищены от атак из Интернета, направленных на открытый порт.
PROTECTION_LEVEL_EDGERESTRICTED
Используется приложениями, предназначенными для работы через Интернет. Этот параметр не разрешает обход NAT с помощью реализации Windows Teredo. Эти приложения могут обходить брандмауэры протокола IPv4, поэтому они должны быть защищены от атак из Интернета, направленных на открытый порт.
PROTECTION_LEVEL_RESTRICTED
Используется приложениями интрасети, которые не реализуют сценарии Интернета. Эти приложения обычно не тестируются и не защищаются против атак из Интернета.
Этот параметр ограничивает получаемый трафик локальным.

 

В следующем примере кода предоставляются определенные значения для каждого из них:

#define PROTECTION_LEVEL_UNRESTRICTED   10  /* for peer-to-peer apps */
#define PROTECTION_LEVEL_EDGERESTRICTED 20  /* Same as unrestricted, except for Teredo  */
#define PROTECTION_LEVEL_RESTRICTED     30  /* for Intranet apps     */

Эти значения являются взаимоисключающими и не могут быть объединены в одном вызове функции setsockopt . Другие значения для этого параметра сокета зарезервированы. Эти уровни защиты применяются только к входящим подключениям. Установка этого параметра сокета не влияет на исходящие пакеты или подключения.

В Windows 7 и Windows Server 2008 R2 значение по умолчанию для IPV6_PROTECTION_LEVEL не указано, а PROTECTION_LEVEL_DEFAULT определяется как -1, что является недопустимым значением для IPV6_PROTECTION_LEVEL.

В Windows Vista и Windows Server 2008 значение по умолчанию для IPV6_PROTECTION_LEVEL равно PROTECTION_LEVEL_UNRESTRICTED , а PROTECTION_LEVEL_DEFAULT — -1, что является недопустимым значением для IPV6_PROTECTION_LEVEL.

В Windows Server 2003 и Windows XP значение по умолчанию для IPV6_PROTECTION_LEVEL равно PROTECTION_LEVEL_EDGERESTRICTED , а PROTECTION_LEVEL_DEFAULT определяется как PROTECTION_LEVEL_EDGERESTRICTED.

Примечание

Параметр сокета IPV6_PROTECTION_LEVEL должен быть задан до привязки сокета. В противном случае пакеты, полученные между вызовами bind и setsockopt , будут соответствовать PROTECTION_LEVEL_EDGERESTRICTED и могут быть доставлены в приложение.

 

В следующей таблице описывается влияние применения каждого уровня защиты к сокету прослушивания.

Уровень защиты

Разрешен входящий трафик

Атрибут SameSite

Внешняя

Обход NAT (Teredo)

PROTECTION_LEVEL_RESTRICTED

Да

Нет

Нет

PROTECTION_LEVEL_EDGERESTRICTED

Да

Да

Нет

PROTECTION_LEVEL_UNRESTRICTED

Да

Да

Да

 

В приведенной выше таблице столбец Тот же сайт представляет собой сочетание следующих элементов:

  • Связывание локальных адресов
  • Локальные адреса сайта
  • Глобальные адреса, которые, как известно, принадлежат к одному и тому же сайту (в соответствии с таблицей префиксов сайта)

В Windows 7 и Windows Server 2008 R2 значение по умолчанию для IPV6_PROTECTION_LEVEL не указано. Если на локальном компьютере не установлено программное обеспечение брандмауэра с поддержкой обхода границ (брандмауэр Windows отключен или установлен какой-либо другой брандмауэр, игнорирующий трафик Teredo), трафик Teredo будет получен только в том случае, если для параметра сокета IPV6_PROTECTION_LEVEL задано значение PROTECTION_LEVEL_UNRESTRICTED. Однако брандмауэр Windows или любая политика брандмауэра, поддерживающего обход границы, может игнорировать этот параметр на основе параметров политики для брандмауэра. Задав для этого параметра сокет PROTECTION_LEVEL_UNRESTRICTED, приложение передает явное намерение получать трафик, проходящий через границу, брандмауэром узла, установленным на локальном компьютере. Таким образом, если установлен брандмауэр узла с поддержкой обхода по периметру, он будет иметь окончательное решение о принятии пакета. По умолчанию без набора параметров сокета:

  • o Если на локальном компьютере включен брандмауэр Windows (или установлен другой брандмауэр узла с поддержкой обхода по краям) на локальном компьютере, все, что он применяет, будет наблюдаться. Типичный брандмауэр узла с поддержкой обхода границы по умолчанию блокирует трафик Teredo. Поэтому приложения будут соблюдать значение по умолчанию, как если бы оно было PROTECTION_LEVEL_EDGERESTRICTED.
  • o Если брандмауэр Windows не включен и в локальной системе не установлен другой брандмауэр узла, поддерживающий обход границы, по умолчанию будет PROTECTION_LEVEL_EDGERESTRICTED.

В Windows Vista и Windows Server 2008 значение по умолчанию для IPV6_PROTECTION_LEVEL — PROTECTION_LEVEL_UNRESTRICTED. Но действующее значение зависит от того, включен ли брандмауэр Windows. Брандмауэр Windows учитывает обход границы (Teredo), независимо от того, какое значение задано для IPV6_PROTECTION_LEVEL, и игнорирует, если IPV6_PROTECTION_LEVEL PROTECTION_LEVEL_UNRESTRICTED. Таким образом, эффективное значение зависит от политики брандмауэра. Если брандмауэр Windows отключен и на локальном компьютере не установлен другой брандмауэр с поддержкой обхода границы, значение по умолчанию для IPV6_PROTECTION_LEVEL PROTECTION_LEVEL_UNRESTRICTED.

В Windows Server 2003 и Windows XP значение по умолчанию для IPV6_PROTECTION_LEVEL — PROTECTION_LEVEL_EDGERESTRICTED. Если для параметра сокета IPV6_PROTECTION_LEVEL не задано значение PROTECTION_LEVEL_UNRESTRICTED, трафик Teredo не будет отображаться.

В зависимости от IPV6_PROTECTION_LEVEL приложение, требующее незапрошенного трафика из Интернета, может не получать незапрошенный трафик. Однако эти требования не являются обязательными для получения запрашиваемого трафика через интерфейс Windows Teredo. Дополнительные сведения о взаимодействии с Teredo см. в разделе Получение запрашиваемого трафика через Teredo.

Если входящие пакеты или подключения отклоняются из-за заданного уровня защиты, отклонение обрабатывается так, как если бы ни было приложение не прослушивало этот сокет.

Примечание

Параметр IPV6_PROTECTION_LEVEL сокета не обязательно устанавливает ограничения доступа к сокетам IPv6 или ограничивает обход NAT с помощью какого-либо метода, отличного от Windows Teredo, или даже с помощью другой реализации Teredo другим поставщиком.

 

getsockopt

Получение запрошенного трафика через Teredo

setsockopt