IPV6_PROTECTION_LEVEL

A opção de soquete IPV6_PROTECTION_LEVEL permite que os desenvolvedores coloquem restrições de acesso em soquetes IPv6. Essas restrições permitem que um aplicativo em execução em uma LAN privada proteja-se de modo simples e robusto 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 somente ao mesmo site, conforme necessário.

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

Nível de proteção Descrição
PROTECTION_LEVEL_UNRESTRICTED
Usado por aplicativos projetados para operar na Internet, incluindo aplicativos que aproveitam os recursos de passagem nat IPv6 integrados ao Windows (Teredo, por exemplo). Esses aplicativos podem ignorar firewalls IPv4, de modo que os aplicativos devem ser protegidos contra ataques de Internet direcionados à porta aberta.
PROTECTION_LEVEL_EDGERESTRICTED
Usado por aplicativos projetados para operar na Internet. Essa configuração não permite a passagem nat usando a implementação do Windows Teredo. Esses aplicativos podem ignorar firewalls IPv4, de modo que os aplicativos devem ser protegidos contra ataques de Internet direcionados à porta aberta.
PROTECTION_LEVEL_RESTRICTED
Usado por aplicativos de intranet que não implementam cenários de Internet. Esses aplicativos geralmente não são testados nem protegidos contra ataques do estilo usado na Internet.
Essa configuração limitará o tráfego recebido para apenas 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 essa 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 em 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 inválido 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 inválido 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 associado. Caso contrário, os pacotes recebidos entre as chamadas bind e setsockopt estarão em conformidade com PROTECTION_LEVEL_EDGERESTRICTED e 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

Externo

Passagem NAT (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 (correspondendo à tabela de prefixo 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 borda instalado no computador local (o firewall do Windows está desabilitado ou algum outro firewall instalado que ignore o tráfego do Teredo), você receberá o 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 política de firewall com reconhecimento de borda pode ignorar essa opção com base nas configurações de política 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 percorrido de borda pelo firewall do host instalado no computador local. Portanto, se houver um firewall de host com reconhecimento de borda instalado, ele terá a decisão final de 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, o que ele aplicar será observado. O firewall típico do host com reconhecimento de borda 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 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 tem reconhecimento de borda (ciente do Teredo), independentemente do valor definido para o IPV6_PROTECTION_LEVEL e ignora se IPV6_PROTECTION_LEVEL é PROTECTION_LEVEL_UNRESTRICTED. Portanto, o valor efetivo depende da política de firewall. Quando o firewall do Windows está desabilitado e nenhum outro firewall com reconhecimento de borda é 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 do Windows Teredo. Para obter mais detalhes sobre a interação com o Teredo, consulte Recebendo tráfego solicitado pelo 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 coloca necessariamente restrições de acesso em soquetes IPv6 ou restringe a passagem nat usando algum método diferente do Windows Teredo ou mesmo usando outra implementação do Teredo por outro fornecedor.

 

Getsockopt

Recebendo tráfego solicitado pelo Teredo

Setsockopt