kutombawewe.net

Como evitar a exposição do meu endereço MAC ao usar o IPv6?

Nos meus Macs, cada endereço IPv6 inclui o endereço MAC de um computador específico ( não do meu roteador). Sites como ipv6-test.com não só mostram, mas até me dizem que pertence a um computador da Apple.

Isso parece um super cookie e pode se aplicar a outros sistemas operacionais também. Como posso evitar que meus endereços MAC sejam expostos?

Antecedentes: o endereço MAC é não à vista . Como para 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Pegue os últimos 64 bits (o identificador de host) e adicione zeros à esquerda: 0060:08ff:fe52:f9d8.
  • Retire a parte ff:fe do meio. Se esses bytes não estiverem lá, então não há endereço MAC.
  • Para o primeiro byte: complemente o segundo bit de baixa ordem (o bit universal/local; se o bit for um 1, torne-o 0, e se for um 0, faça-o 1). Então: 0x00 (00000000) se torna 0x02 (00000010).
  • Presto: 60:8ff:fe52:f9d8 traduz de volta para o endereço MAC 02:60:08:52:f9:d8.

Nota: desde o macOS 10.12 Sierra, de acordo com o Ars Technica a Apple adotou uma nova maneira de gerar endereços estáveis ​​que não são baseados em um endereço MAC , que o Windows aparentemente já vinha fazendo há anos.


Esta pergunta foi uma Super Pergunta de Usuário da Semana.
Leia o entrada do blog para mais detalhes ou contribua para o blog você mesmo

139
Arjan

Isso é resolvido por duas extensões para o IPv6:

  • RFC 4941 também conhecido como "Privacy Addressing" permite que as conexões de saída usem endereços temporários gerados aleatoriamente (que são rotacionados a cada poucas horas).
  • RFC 7217 permite que o endereço primário, estático, seja gerado a partir de um hash opaco que não revele nenhuma informação.

Pelo menos um, mas cada vez mais, ambos os métodos são suportados por sistemas operacionais populares.

Observe que esses recursos são ortogonais. Você pode usar os dois ao mesmo tempo, se quiser.

Endereços privados estáveis

Em alguns sistemas operacionais, o endereço MAC (EUI-48) simplesmente não é mais usado para identificadores de interface. Em vez disso, é utilizado um identificador aleatório ou baseado em hash, geralmente de acordo com a RFC 7217.

  • O Windows usa um esquema personalizado por padrão, começando com o Windows Vista.

    Para verificar se o recurso está ativo, execute um comando do PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Para ativar/desativar o recurso:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • O Linux (NetworkManager) suporta o RFC 7217 a partir do NetworkManager v1.2.0, usando o UUID do perfil de conexão como parte da semente. Esse recurso está ativo por padrão nas versões _ NMrecentes.

    Para ativar ou desativar este recurso:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • O Linux (kernel SLAAC) suporta o RFC 7217 a partir do kernel v4.1.0; no entanto, ele deve ser ativado manualmente armazenando a semente secreta via sysctl.

    A chave secreta é uma cadeia hexadecimal de 128 bits (em forma de endereço IPv6), que deve ser armazenada no sysctl net.ipv6.conf.default.stable_secret. Para torná-lo persistente, ele poderia ser colocado em /etc/sysctl.d/50-rfc7217.conf ou similar:

    net.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
    

    Definir o segredo ativa automaticamente este modo para todas as interfaces de rede. Para verificar se o recurso está ativo, procure "addrgenmode stable_secret" em ip -d link ou o valor "2" em sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Endereços privados temporários

Conforme definido no RFC 4941, os endereços de privacidade temporários são gerados aleatoriamente e rotacionados a cada poucas horas.

  • O Windows suporta endereços temporários do Windows XP SP2.

    Para ativar/desativar este recurso:

    netsh interface ipv6 set privacy state=enabled
    netsh interface ipv6 set privacy state=disabled
    

    Observe que o Windows não usa mais os endereços principais baseados em endereço MAC, começando com o Windows Vista.

  • Linux (NetworkManager) : Versões recentes do NetworkManager lidam com RA por conta própria, embora os dois valores abaixo tenham significados idênticos ao sysctl (2 = prefira endereço de privacidade, 1 = preferir endereço principal):

     nmcli con modify <name> ipv6.ip6-privacy 2
    

    Além disso, a partir de 1.2.0, um modo melhor tornou-se disponível, o que muda o endereço main para não ser mais baseado em MAC, mas exclusivo para todas as redes (RFC 7217):

    (Observe que o endereçamento de privacidade é ortogonal ao add-gen-mode; é possível usar os dois.)

    Nota lateral: A partir de 1.4.0, NM permite randomizar o próprio endereço MAC também. Configure wifi.cloned-mac-address para stable para ter um MAC diferente para cada rede (recomendado) ou random para randomizá-lo para cada conexão (pode causar problemas).

    Em todos os casos, <name> deve ser o nome da conexão, por exemplo, SSID de WiFi ou "Wired Connection 1". Use nmcli con para listar todos.

    Para tornar este o padrão para novas conexões, a partir de 1.2.0 você pode alterar /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (kernel SLAAC) suporta endereços temporários, mas não os usa por padrão. Eles podem ser ativados através de sysctls.

    Para ativar endereços temporários e torná-los preferidos para conexões de saída:

     sysctl net.ipv6.conf.all.use_tempaddr=2
     sysctl net.ipv6.conf.default.use_tempaddr=2
    

    Para habilitar a geração de endereços temporários, mas mantenha o endereço SLAAC estático como preferencial:

     sysctl net.ipv6.conf.all.use_tempaddr=1
     sysctl net.ipv6.conf.default.use_tempaddr=1
    

    A parte all ou default pode ser substituída por um nome de interface específico; por exemplo. net.ipv6.conf.eth0.use_tempaddr.

    (Eu usei ip link set eth0 down && ip link set eth0 up para forçar uma atribuição de endereço, mas você também pode executar rdisc6 eth0 ou apenas esperar alguns minutos para o próximo anúncio roteador periódico.)

  • Mac OS X - ativado por padrão desde o OS X 10.7 Lion:

     sysctl -w net.inet6.ip6.use_tempaddr=1
    

    Endereços temporários, se ativados, serão preferidos.

  • FreeBSD :

     sysctl net.inet6.ip6.use_tempaddr=1
    
     sysctl net.inet6.ip6.prefer_tempaddr=1
    
  • NetBSD :

     sysctl -w net.inet6.ip6.use_tempaddr=1
    

    Preferência de endereços temporários? Eu não faço ideia. O endereço do autoconf parece ser o preferido. ifconfig não parece listar nenhuma propriedade de endereço.

  • OpenBSD - suporte adicionado em 5.2 ; ativado e preferido por padrão em 5. .

     ifconfig em0 autoconfprivacy
    

    ifconfig mostra "autoconfprivacy" ao lado de endereços temporários.

Notas sobre configuração:

  • No Linux, OS X e todos os BSDs, edite /etc/sysctl.conf para tornar a configuração permanente

  • No Windows, as alterações persistirão automaticamente. (Você pode acrescentar store=active ao comando netsh se você quiser que ele só dure até a reinicialização.)


Parcialmente baseado em IPv6 Operating Systems em IPv6INT.net. Veja também Notas Gerais do IPv6


Se o endereço de hardware for usado no endereço IPv6, isso geralmente significa que sua rede usa a configuração automática sem estado IPv6. Nesse caso, você pode simplesmente escolher seu próprio sufixo de endereço e configurar o IPv6 manualmente.

No entanto, mesmo que o endereço adicionado manualmente não tenha suas informações de hardware, ele ainda será estático (diferentemente do Privacy Addressing, que altera os endereços de vez em quando). Além disso, endereços estáticos podem causar problemas em uma rede maior que 2-3 dispositivos.

132
grawity

FYI, isso só se aplica a certos esquemas de endereçamento IP. É mais do que provável que você (ou o seu ISP) esteja usando a autoconfiguração do IPv6, o que requer um grande bloco de IPs para realizar, em primeiro lugar. A solução poderia ser desativar esse recurso. Seu ISP pode usar o DHCP para atribuir endereços também, o que ainda é possível com o IPv6.

1
Ernie Dunbar