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 другим поставщиком.
Связанные темы