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


IPV6_PROTECTION_LEVEL

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

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

Уровень защиты Описание
PROTECTION_LEVEL_UNRESTRICTED
Используется приложениями, предназначенными для работы в Интернете, включая приложения, использующие возможности обхода IPv6 NAT, встроенные в 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 сокета. В противном случае пакеты, полученные между привязкой и вызовы setsockopt будут соответствовать PROTECTION_LEVEL_EDGERESTRICTEDи могут быть доставлены в приложение.

 

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

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

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

Тот же сайт

Внешний

Обход NAT (Teredo)

PROTECTION_LEVEL_RESTRICTED

Да

Нет

Нет

PROTECTION_LEVEL_EDGERESTRICTED

Да

Да

Нет

PROTECTION_LEVEL_UNRESTRICTED

Да

Да

Да

 

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

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

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

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

В Windows Vista и Windows Server 2008 значение по умолчанию для IPV6_PROTECTION_LEVEL PROTECTION_LEVEL_UNRESTRICTED. Но эффективное значение зависит от того, включен ли брандмауэр Windows. Брандмауэр Windows — это брандмауэр edge-traversal (Teredo aware), независимо от того, какое значение задано для 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