Partilhar via


IPV6_PROTECTION_LEVEL

A opção de soquete IPV6_PROTECTION_LEVEL permite que os desenvolvedores coloquem restrições de acesso em soquetes IPv6. Tais restrições permitem que um aplicativo executado em uma LAN privada se proteja de forma simples e robusta contra ataques externos. A opção de soquete IPV6_PROTECTION_LEVEL amplia ou restringe o escopo de um soquete de escuta, permitindo o acesso irrestrito de usuários públicos e privados quando apropriado, ou restringindo o acesso apenas ao mesmo site, conforme necessário.

IPV6_PROTECTION_LEVEL tem atualmente três níveis de proteção definidos.

Nível de proteção Descrição
PROTECTION_LEVEL_UNRESTRICTED
Utilizado por aplicações concebidas para operar através da Internet, incluindo aplicações que tiram partido das capacidades de travessia NAT IPv6 incorporadas no Windows (Teredo, por exemplo). Esses aplicativos podem ignorar firewalls IPv4, portanto, os aplicativos devem ser protegidos contra ataques da Internet direcionados à porta aberta.
PROTECTION_LEVEL_EDGERESTRICTED
Usado por aplicativos projetados para operar em toda a Internet. Essa configuração não permite a travessia de NAT usando a implementação do Windows Teredo. Esses aplicativos podem ignorar firewalls IPv4, portanto, os aplicativos devem ser protegidos contra ataques da Internet direcionados à porta aberta.
PROTECTION_LEVEL_RESTRICTED
Usado por aplicativos de intranet que não implementam cenários da Internet. Esses aplicativos geralmente não são testados ou protegidos contra ataques no estilo da Internet.
Essa configuração limitará o tráfego recebido apenas ao link local.

 

O exemplo de código a seguir fornece os valores definidos para cada um:

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

Esses valores são mutuamente exclusivos e não podem ser combinados em uma única chamada de função setsockopt. Outros valores para esta opção de soquete são reservados. Esses níveis de proteção se aplicam apenas a conexões de entrada. Definir essa opção de soquete não tem efeito sobre pacotes ou conexões de saída.

No Windows 7 e no Windows Server 2008 R2, o valor padrão para IPV6_PROTECTION_LEVEL não é especificado e PROTECTION_LEVEL_DEFAULT é definido como -1, um valor ilegal para IPV6_PROTECTION_LEVEL.

No Windows Vista e no Windows Server 2008, o valor padrão para IPV6_PROTECTION_LEVEL é PROTECTION_LEVEL_UNRESTRICTED e PROTECTION_LEVEL_DEFAULT é definido como -1, um valor ilegal para IPV6_PROTECTION_LEVEL.

No Windows Server 2003 e no Windows XP, o valor padrão para IPV6_PROTECTION_LEVEL é PROTECTION_LEVEL_EDGERESTRICTED e PROTECTION_LEVEL_DEFAULT é definido como PROTECTION_LEVEL_EDGERESTRICTED.

Observação

A opção de soquete IPV6_PROTECTION_LEVEL deve ser definida antes que o soquete seja vinculado. Caso contrário, os pacotes recebidos entre bind e chamadas setsockopt estarão em conformidade com PROTECTION_LEVEL_EDGERESTRICTEDe poderão ser entregues ao aplicativo.

 

A tabela a seguir descreve o efeito da aplicação de cada nível de proteção a um soquete de escuta.

Nível de proteção

Tráfego de entrada permitido

Mesmo site

Externa

NAT transversal (Teredo)

PROTECTION_LEVEL_RESTRICTED

Sim

Não

Não

PROTECTION_LEVEL_EDGERESTRICTED

Sim

Sim

Não

PROTECTION_LEVEL_UNRESTRICTED

Sim

Sim

Sim

 

Na tabela acima, a coluna mesmo site é uma combinação do seguinte:

  • Vincular endereços locais
  • Endereços locais do site
  • Endereços globais conhecidos por pertencerem ao mesmo site (correspondentes à tabela de prefixos do site)

No Windows 7 e no Windows Server 2008 R2, o valor padrão para IPV6_PROTECTION_LEVEL não é especificado. Se não houver nenhum software de firewall com reconhecimento de passagem de borda instalado no computador local (o firewall do Windows está desativado ou algum outro firewall está instalado que ignora o tráfego Teredo), você receberá tráfego Teredo somente se definir a opção de soquete IPV6_PROTECTION_LEVEL como PROTECTION_LEVEL_UNRESTRICTED. No entanto, o firewall do Windows ou qualquer diretiva de firewall com reconhecimento de travessia de borda pode ignorar essa opção com base nas configurações de diretiva para o firewall. Ao definir essa opção de soquete como PROTECTION_LEVEL_UNRESTRICTED, o aplicativo está comunicando sua intenção explícita de receber tráfego de borda atravessado pelo firewall do host instalado na máquina local. Portanto, se houver um firewall de host com reconhecimento de passagem de borda instalado, ele terá a decisão final sobre aceitar um pacote. Por padrão, sem nenhuma opção de soquete definida:

  • o Se o firewall do Windows estiver habilitado (ou outro firewall de host com reconhecimento de borda estiver instalado) no computador local, tudo o que ele aplicar será observado. O firewall de host com reconhecimento de travessia de borda típico bloqueará o tráfego Teredo por padrão. Portanto, os aplicativos observarão o padrão como se fosse PROTECTION_LEVEL_EDGERESTRICTED.
  • o Se o firewall do Windows não estiver habilitado e nenhum outro firewall de host com reconhecimento de passagem de borda estiver instalado no sistema local, o padrão será PROTECTION_LEVEL_EDGERESTRICTED.

No Windows Vista e no Windows Server 2008, o valor padrão para IPV6_PROTECTION_LEVEL é PROTECTION_LEVEL_UNRESTRICTED. Mas o valor efetivo depende se o firewall do Windows está habilitado. O firewall do Windows reconhece a travessia de borda (reconhece Teredo), independentemente do valor definido para o IPV6_PROTECTION_LEVEL e ignora se IPV6_PROTECTION_LEVEL estiver PROTECTION_LEVEL_UNRESTRICTED. Portanto, o valor efetivo depende da política de firewall. Quando o firewall do Windows está desativado e nenhum outro firewall com reconhecimento de passagem de borda está instalado no computador local, o valor padrão para IPV6_PROTECTION_LEVEL é PROTECTION_LEVEL_UNRESTRICTED.

No Windows Server 2003 e no Windows XP, o valor padrão para IPV6_PROTECTION_LEVEL é PROTECTION_LEVEL_EDGERESTRICTED. A menos que você tenha definido a opção de soquete IPV6_PROTECTION_LEVEL como PROTECTION_LEVEL_UNRESTRICTED, você não receberá nenhum tráfego Teredo.

Dependendo do IPV6_PROTECTION_LEVEL, um aplicativo que requer tráfego não solicitado da Internet pode não ser capaz de receber tráfego não solicitado. No entanto, esses requisitos não são necessários para receber tráfego solicitado pela interface Teredo do Windows. Para obter mais detalhes sobre a interação com Teredo, consulte Recebendo tráfego solicitado sobre Teredo.

Quando pacotes ou conexões de entrada são recusados devido ao nível de proteção definido, a rejeição é tratada como se nenhum aplicativo estivesse escutando nesse soquete.

Observação

A opção de soquete IPV6_PROTECTION_LEVEL não necessariamente coloca restrições de acesso em soquetes IPv6 ou restringe a travessia de NAT usando algum método diferente do Windows Teredo ou até mesmo usando outra implementação de Teredo por outro fornecedor.

 

getsockopt

Receber tráfego solicitado através do Teredo

Setsockopt