IPV6_PROTECTION_LEVEL

La opción de socket IPV6_PROTECTION_LEVEL permite a los desarrolladores colocar restricciones de acceso en sockets IPv6. Estas restricciones permiten que una aplicación que se ejecuta en una LAN privada se fortalezca de forma sencilla frente a ataques externos. La opción de socket IPV6_PROTECTION_LEVEL amplía o restringe el ámbito de un socket de escucha, lo que permite el acceso sin restricciones de los usuarios públicos y privados cuando sea necesario o restringe el acceso solo al mismo sitio, según sea necesario.

IPV6_PROTECTION_LEVEL actualmente tiene tres niveles de protección definidos.

Nivel de protección Descripción
PROTECTION_LEVEL_UNRESTRICTED
Las aplicaciones diseñadas para funcionar a través de Internet, incluidas las aplicaciones que aprovechan las funcionalidades de recorrido NAT de IPv6 integradas en Windows (Teredo, por ejemplo). Estas aplicaciones pueden eludir los firewalls de IPv4, lo que hace necesario protegerlas frente a los ataques por Internet dirigidos al puerto abierto.
PROTECTION_LEVEL_EDGERESTRICTED
Usada por aplicaciones diseñadas para funcionar a través de Internet. Esta configuración no permite el recorrido NAT mediante la implementación de Windows Teredo. Estas aplicaciones pueden eludir los firewalls de IPv4, lo que hace necesario protegerlas frente a los ataques por Internet dirigidos al puerto abierto.
PROTECTION_LEVEL_RESTRICTED
Se usa en aplicaciones de intranet que no implementan escenarios de Internet. Estas aplicaciones no se suelen probar ni proteger frente a los ataques por Internet.
Este valor limitará el tráfico recibido a las direcciones locales de vínculo.

 

En el ejemplo de código siguiente se proporcionan los valores definidos para cada uno:

#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     */

Estos valores son mutuamente excluyentes y no se pueden combinar en una sola llamada de función setsockopt . Otros valores de esta opción de socket están reservados. Estos niveles de protección solo se aplican a las conexiones entrantes. Establecer esta opción de socket no tiene ningún efecto en los paquetes o conexiones salientes.

En Windows 7 y Windows Server 2008 R2, el valor predeterminado de IPV6_PROTECTION_LEVEL no se especifica y PROTECTION_LEVEL_DEFAULT se define en -1, un valor no válido para IPV6_PROTECTION_LEVEL.

En Windows Vista y Windows Server 2008, el valor predeterminado de IPV6_PROTECTION_LEVEL es PROTECTION_LEVEL_UNRESTRICTED y PROTECTION_LEVEL_DEFAULT se define en -1, un valor no válido para IPV6_PROTECTION_LEVEL.

En Windows Server 2003 y Windows XP, el valor predeterminado de IPV6_PROTECTION_LEVEL es PROTECTION_LEVEL_EDGERESTRICTED y PROTECTION_LEVEL_DEFAULT se define como PROTECTION_LEVEL_EDGERESTRICTED.

Nota

La opción de socket IPV6_PROTECTION_LEVEL debe establecerse antes de enlazar el socket. De lo contrario, los paquetes recibidos entre las llamadas bind y setsockopt se ajustan a PROTECTION_LEVEL_EDGERESTRICTED y se pueden entregar a la aplicación.

 

En la tabla siguiente se describe el efecto de aplicar cada nivel de protección a un socket de escucha.

Nivel de protección

Tráfico entrante permitido

Mismo sitio

Externo

Recorrido NAT (Teredo)

PROTECTION_LEVEL_RESTRICTED

No

No

PROTECTION_LEVEL_EDGERESTRICTED

No

PROTECTION_LEVEL_UNRESTRICTED

 

En la tabla anterior, la columna Del mismo sitio es una combinación de lo siguiente:

  • Vincular direcciones locales
  • Direcciones locales del sitio
  • Direcciones globales conocidas por pertenecer al mismo sitio (que coinciden con la tabla de prefijos del sitio)

En Windows 7 y Windows Server 2008 R2, no se especifica el valor predeterminado de IPV6_PROTECTION_LEVEL. Si no hay ningún software de firewall compatible con edge-traversal instalado en el equipo local (el firewall de Windows está deshabilitado o algún otro firewall está instalado que omite el tráfico teredo), recibirá tráfico teredo solo si establece la opción de socket de IPV6_PROTECTION_LEVEL en PROTECTION_LEVEL_UNRESTRICTED. Sin embargo, el firewall de Windows o cualquier directiva de firewall compatible con borde puede omitir esta opción en función de la configuración de directiva para el firewall. Al establecer esta opción de socket en PROTECTION_LEVEL_UNRESTRICTED, la aplicación comunica su intención explícita de recibir tráfico perimetral recorrido por el firewall del host instalado en el equipo local. Por lo tanto, si hay un firewall de host compatible con edge-traversal instalado, tendrá la decisión final sobre la aceptación de un paquete. De forma predeterminada, sin ningún conjunto de opciones de socket:

  • o Si el firewall de Windows está habilitado (u otro firewall de host compatible con edge-traversal está instalado) en el equipo local, se observará lo que exija. El firewall de host compatible con edge-traversal típico bloqueará el tráfico teredo de forma predeterminada. Por lo tanto, las aplicaciones observarán el valor predeterminado como si fuera PROTECTION_LEVEL_EDGERESTRICTED.
  • o Si el firewall de Windows no está habilitado y ningún otro firewall de host compatible con borde está instalado en el sistema local, el valor predeterminado será PROTECTION_LEVEL_EDGERESTRICTED.

En Windows Vista y Windows Server 2008, el valor predeterminado de IPV6_PROTECTION_LEVEL es PROTECTION_LEVEL_UNRESTRICTED. Pero el valor efectivo depende de si el firewall de Windows está habilitado. El firewall de Windows es compatible con edge-traversal (compatible con Teredo), independientemente del valor establecido para el IPV6_PROTECTION_LEVEL y omita si IPV6_PROTECTION_LEVEL es PROTECTION_LEVEL_UNRESTRICTED. Por lo tanto, el valor efectivo depende de la directiva de firewall. Cuando el firewall de Windows está deshabilitado y no se instala ningún otro firewall compatible con borde en el equipo local, el valor predeterminado de IPV6_PROTECTION_LEVEL es PROTECTION_LEVEL_UNRESTRICTED.

En Windows Server 2003 y Windows XP, el valor predeterminado de IPV6_PROTECTION_LEVEL es PROTECTION_LEVEL_EDGERESTRICTED. A menos que haya establecido la opción de socket IPV6_PROTECTION_LEVEL en PROTECTION_LEVEL_UNRESTRICTED, no recibirá ningún tráfico teredo.

En función de la IPV6_PROTECTION_LEVEL, es posible que una aplicación que requiera tráfico no solicitado desde Internet no pueda recibir tráfico no solicitado. Sin embargo, estos requisitos no son necesarios para recibir tráfico solicitado a través de la interfaz teredo de Windows. Para obtener más información sobre la interacción con Teredo, consulte Recepción de tráfico solicitado a través de Teredo.

Cuando se rechazan los paquetes o conexiones entrantes debido al nivel de protección establecido, el rechazo se controla como si ninguna aplicación estuviera escuchando en ese socket.

Nota

La opción de socket IPV6_PROTECTION_LEVEL no establece necesariamente restricciones de acceso en sockets IPv6 ni restringe el recorrido NAT mediante algún método distinto de Windows Teredo o incluso usando otra implementación de Teredo por otro proveedor.

 

getsockopt

Recepción de tráfico solicitado a través de Teredo

setsockopt