Compartir a través de


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 ejecute en una LAN privada se proteja de forma sencilla y sólida frente a ataques externos. La opción de socket IPV6_PROTECTION_LEVEL amplía o limita el ámbito de un socket de escucha, lo que permite el acceso sin restricciones de los usuarios públicos y privados cuando proceda, 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 operar 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 omitir firewalls IPv4, por lo que las aplicaciones deben protegerse frente a ataques de Internet dirigidos al puerto abierto.
PROTECTION_LEVEL_EDGERESTRICTED
Se usa en aplicaciones diseñadas para operar a través de Internet. Esta configuración no permite el recorrido NAT mediante la implementación de Windows Teredo. Estas aplicaciones pueden omitir firewalls IPv4, por lo que las aplicaciones deben protegerse frente a ataques de Internet dirigidos al puerto abierto.
PROTECTION_LEVEL_RESTRICTED
Se usa en aplicaciones de intranet que no implementan escenarios de Internet. Por lo general, estas aplicaciones no se prueban ni protegen contra ataques de estilo internet.
Esta configuración limitará el tráfico recibido solo a un vínculo local.

 

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. Se reservan otros valores para esta opción de socket. 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 enlazar y setockopt llamadas se ajustarán a PROTECTION_LEVEL_EDGERESTRICTEDy 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 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 coincide 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 borde 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 con reconocimiento perimetral 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 atravesado por el firewall del host instalado en el equipo local. Por lo tanto, si hay instalado un firewall de host compatible con el perímetro, 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 el recorrido perimetral está instalado) en el equipo local, se observará lo que aplique. El firewall de host compatible con el perímetro 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 el borde (compatible con Teredo), independientemente del valor establecido para la 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 con reconocimiento perimetral 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 de IPV6_PROTECTION_LEVEL en PROTECTION_LEVEL_UNRESTRICTED, no recibirá ningún tráfico teredo.

Según el 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 de Windows Teredo. 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 no hubiera ninguna aplicación escuchando en ese socket.

Nota

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

 

getockopt

tráfico solicitado a través de Teredo

setsockopt