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

140

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

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

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

  • Pegue os últimos 64 bits (o identificador de host) e adicionar zeros à esquerda: 0060:08ff:fe52:f9d8.
  • Tira a ff:feparte do meio. Se esses bytes não estão 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 1, faça-o 0 e, se for 0, faça-o 1). Então: 0x00(00000000) se torna 0x02(00000010).
  • Presto: 60:8ff:fe52:f9d8traduz de volta para o endereço MAC 02:60:08:52:f9:d8.

Nota: desde o macOS 10.12 Sierra, de acordo com a 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 , o que aparentemente o Windows já fazia há anos.


Esta pergunta foi uma pergunta da semana para superusuários .
Leia a entrada do blog para obter mais detalhes ou contribua com o blog você mesmo

Arjan
fonte
14
Uau, eu não sabia disso sobre IPV6, boa descoberta.
Supercereal
18
Bem, é claro que mostra um computador Apple. É um endereço MAC, afinal.
Graeme Perrow
@Kronos, uma imagem desapareceu na entrada do blog; blog.superuser.com/2011/02/11/… A adição de ".stack" à URL ajuda: i.stack.imgur.com/RNXoA.png
Arjan
... mas, @KronoS, adicionar ".stack" na verdade faz com que outra forma de imagem desapareça na mesma postagem do blog, como i.imgur.com/vjK73.png (ok) vs i.stack.imgur.com/vjK73.png ( não está bem). Em outras palavras: talvez todas as imagens no blog que não usam atualmente .stackdevam ser carregadas novamente ...?
Arjan
@Arjan Não tenho certeza. Eu vou ter que verificar isso. Gostaria de um recurso que todas as imagens carregadas no blog sejam automaticamente carregadas na conta imgur da pilha. Semelhante ao que os sites comuns fazem atualmente
James Mertz

Respostas:

134

Isso é resolvido por duas extensões ao IPv6:

  • A RFC 4941, também conhecida como "Endereço de Privacidade", permite que as conexões de saída usem endereços temporários gerados aleatoriamente (que são alternados a cada poucas horas).
  • O RFC 7217 permite que o endereço estático primário seja gerado a partir de um hash opaco que não revela 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.

  • Por padrão, o Windows usa um esquema personalizado a partir do 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 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 recentes do NM.

    Para ativar ou desativar esse 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 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 (com o formato de um endereço IPv6), que deve ser armazenada no net.ipv6.conf.default.stable_secretsysctl. Para torná-lo persistente, ele pode ser colocado /etc/sysctl.d/50-rfc7217.confou similar:

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

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

Endereços privados temporários

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

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

    Para ativar / desativar esse recurso:

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

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

  • Linux (NetworkManager) : as versões recentes do NetworkManager gerenciam RA por conta própria, embora os dois valores abaixo tenham significados idênticos aos do sysctl (2 = preferem o endereço de privacidade, 1 = preferem o endereço principal):

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

    Além disso, a partir da versão 1.2.0, tornou-se disponível um modo melhor, que altera o endereço principal 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 modo addr-gen; é possível usar os dois.)

    Nota lateral: A partir do 1.4.0, o NM também permite aleatoriamente o próprio endereço MAC. Defina wifi.cloned-mac-addresspara stableter um MAC diferente para cada rede (recomendado) ou randompara randomizá-lo para cada conexão (pode causar problemas).

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

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

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • O 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 habilitar 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 temporária de endereços, 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 peça allou defaultpode ser substituída por um nome de interface específico; por exemplo net.ipv6.conf.eth0.use_tempaddr.

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

  • 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 de autoconf parece ser o preferido. ifconfignão parece listar nenhuma propriedade de endereço.

  • OpenBSD - suporte adicionado no 5.2 ; ativado e preferido por padrão no 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig mostra "autoconficiência" ao lado de endereços temporários.

Notas sobre configuração:

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

  • No Windows, as alterações persistirão automaticamente. (Você pode anexar store=activeao netshcomando se quiser que ele dure apenas até a reinicialização.)


Parcialmente baseado em sistemas operacionais IPv6 em IPv6INT.net. Veja também Notas gerais sobre IPv6


Se o endereço de hardware for usado no endereço IPv6, 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 continuará estático (diferente do Endereço de Privacidade, que altera os endereços de vez em quando). Além disso, endereços estáticos podem ser um problema em uma rede maior que 2-3 dispositivos.

gravidade
fonte
2
Bom efeito colateral no meu Mac e no roteador FRITZ! Box 7340: recebo dois endereços ifconfig. As conexões de saída usam o autoconf temporaryendereço aleatório , que muda de vez em quando. Boa! Mas para conexões de entrada (quando abertas no meu roteador), ainda posso usar o autoconfendereço. Não me importo de expor isso nos registros DNS (embora talvez eu possa de alguma forma escolher outro endereço para isso também).
Arjan
Ahh, após whois-spam que agora começa IPv6 spam: cavar -t AAAA www.v6.facebook.com ;-)
Arjan
6
@Arjan: os endereços IPv6 ao longo das linhas de4d:b33fnão são tão ruins para memorizar; além disso, eles são criados pelo proprietário, enquanto o whoisspam é a) irritante eb) causado por pessoas de fora que não têm controle do seu domínio.
grawity
1
Como um aparte: parece (algumas) as opções acima podem dizer ao sistema operacional para preferir o endereço temporário, mas os aplicativos ainda podem substituir essa preferência .
Arjan #
O AFAICS usando endereços temporários (privacidade IPv6) é efetivamente inutilizável em alguns ISPs devido a anúncios de roteador com uma vida útil curta curta absurda de 40 anos, que substitui as configurações do kernel. Linux ver ip apara preferred_lft. Portanto, as sshconexões serão interrompidas a cada 40s se você ativar esse recurso. Nem sequer é utilizável para internautas normais, pois cada download também deve ser concluído dentro de 40s.
Tino
1

Para sua informação, isso se aplica apenas a certos esquemas de endereçamento IP. É mais provável que você (ou seu ISP) esteja usando a configuração automática do IPv6, o que exige um bloco bastante grande de IPs para ser realizado em primeiro lugar. A solução poderia ser desativar esse recurso. Seu ISP também pode usar o DHCP para atribuir endereços, o que ainda é possível com o IPv6.

Ernie Dunbar
fonte
3
Quanto aos blocos grandes: de acordo com a Wikipedia em "Alocação geral": os RIRs atribuem blocos menores aos ISPs, que depois os distribuem em partes / 48 para seus clientes. De fato, meu ISP também atribui / 48 prefixos a assinantes de nível consumidor. Não é tão estranho então?
Arjan
3
Em seguida, culpe a Wikipedia e os planos preliminares de endereçamento IPv6 de Arin : todos os clientes recebem um / 48, a menos que possam mostrar que precisam de mais de 65 mil sub-redes. Mas também: Se você tem um monte de clientes de consumo você pode querer atribuir / 56s aos locais de residência privada - o que ainda é mais do que eu alguma vez precisar. ;-) Mas, as coisas podem mudar: meu ISP nunca prometeu isso, embora obviamente seus clientes tenham configurado modem / roteadores com base nisso.
Arjan
3
Eu acho que quando Arin diz "cliente", eles querem dizer "ISP". Qualquer provedor de serviços de Internet (inclusive os muito, muito grandes) pode alocar um único / 64 para toda a sua rede e acabar com ele. Não é necessário roteamento adicional. Mas alocar blocos de endereços IP numerados em trilhões para clientes residenciais médios é absolutamente imprudente.
Ernie Dunbar
3
Aparentemente, um motivo para atribuir pelo menos um/56 : "Os ISPs que distribuem apenas um /64impedem qualquer sub-rede. Se isso /64estiver na interface WAN, você nunca obterá IPv6 decente em suas LANs. Isso é os ISPs falham e eles devem corrigir isso, fornecendo uma quantidade decente ( /48ou /56) de endereços ".
Arjan 27/07
7
A / 64 não é "um bloco bastante grande"; é o menor bloco de alocação razoável para uma sub-rede. Várias características do IPv6 exige que uma sub-rede ser / 64, e você esqueceu (ou não realizado) que o IPv6 foi projetado em grande parte, para evitar que alguém alguma vez ficar sem endereços nunca mais. Você deve libertar sua mente do antigo pensamento de precisar conservar endereços preciosos; não tem lugar no IPv6.
Michael Hampton