¿Cómo evitar exponer mi dirección MAC cuando uso IPv6?

140

En mis Macs, cada dirección IPv6 incluye la dirección MAC de un ordenador determinado ( no de mi router). Sitios como ipv6-test.com no solo lo muestran, sino que incluso me dicen que pertenece a una computadora Apple.

Esto se siente como una súper cookie, y podría aplicarse también a otros sistemas operativos. ¿Cómo puedo evitar que mis direcciones MAC se vean expuestas?

Antecedentes: la dirección MAC no está a la vista . Me gusta para 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Tome los últimos 64 bits (el identificador de host) y añadir ceros a la izquierda: 0060:08ff:fe52:f9d8.
  • Pela la ff:feparte del medio. Si estos bytes no están allí, entonces no hay dirección MAC.
  • Para el primer byte: complemente el segundo bit de orden inferior (el bit universal / local; si el bit es un 1, hágalo 0, y si es un 0, hágalo 1). Entonces: 0x00(00000000) se convierte en 0x02(00000010).
  • Presto: 60:8ff:fe52:f9d8traduce de nuevo a la dirección MAC 02:60:08:52:f9:d8.

Nota: desde 10.12 macOS Sierra, según Ars Technica Apple ha adoptado una nueva forma de generar direcciones estables que no se basan en una dirección MAC , que de Windows al parecer ya había estado haciendo durante años.


Esta pregunta fue una pregunta de superusuario de la semana .
Lea la entrada del blog para más detalles o contribuya al blog usted mismo

Arjan
fuente
14
Wow, no sabía eso sobre IPV6, buen hallazgo.
Supercereal
18
Bueno, por supuesto, muestra una computadora Apple. Es una dirección MAC, después de todo.
Graeme Perrow
@Kronos, una imagen ha desaparecido en la entrada del blog; blog.superuser.com/2011/02/11/… Agregar ".stack" a la URL ayuda: i.stack.imgur.com/RNXoA.png
Arjan
... pero, @KronoS, agregar ".stack" en realidad hace que otra imagen desaparezca de la misma publicación de blog, como i.imgur.com/vjK73.png (está bien) vs i.stack.imgur.com/vjK73.png ( no esta bien). En otras palabras: ¿quizás todas las imágenes en el blog que actualmente no se usan .stackdeberían volver a cargarse ...?
Arjan
@Arjan No estoy seguro. Voy a tener que comprobar esto. Me gustaría tener una característica de que todas las imágenes cargadas en el blog se cargan automáticamente en la cuenta imgur de stack. Similar a lo que hacen los sitios regulares actualmente
James Mertz,

Respuestas:

134

Esto se resuelve con dos extensiones de IPv6:

  • RFC 4941, también conocido como "Direccionamiento de privacidad", permite que las conexiones salientes usen direcciones temporales generadas aleatoriamente (que se rotan cada pocas horas).
  • RFC 7217 permite que la dirección primaria estática se genere a partir de un hash opaco que no revela ninguna información.

Al menos uno, pero cada vez más, ambos métodos son compatibles con los sistemas operativos populares.

Tenga en cuenta que estas características son ortogonales. Puede usar ambos al mismo tiempo, si lo desea.

Direcciones privadas estables

En algunos sistemas operativos, la dirección MAC (EUI-48) simplemente ya no se usa para identificadores de interfaz. En cambio, se utiliza un identificador aleatorio o basado en hash, generalmente de acuerdo con RFC 7217.

  • Windows utiliza un esquema personalizado de manera predeterminada que comienza con Windows Vista.

    Para verificar si la función está activa, ejecute un comando de PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Para habilitar / deshabilitar la función:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • Linux (NetworkManager) admite RFC 7217 a partir de NetworkManager v1.2.0, utilizando el UUID del perfil de conexión como parte de la semilla. Esta característica está activa por defecto en las versiones recientes de NM.

    Para habilitar o deshabilitar esta función:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • Linux (kernel SLAAC) admite RFC 7217 a partir del kernel v4.1.0; sin embargo, debe activarse manualmente almacenando la semilla secreta a través de sysctl.

    La clave secreta es una cadena hexadecimal de 128 bits (con forma de dirección IPv6), que debe almacenarse en el net.ipv6.conf.default.stable_secretsysctl. Para hacerlo persistente, se podría poner /etc/sysctl.d/50-rfc7217.confo similar:

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

    Establecer el secreto activa automáticamente este modo para todas las interfaces de red. Para verificar si la función está activa, busque "addrgenmode stable_secret" en ip -d link, o el valor "2" en sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Direcciones privadas temporales

Como se define en RFC 4941, las direcciones de privacidad temporales se generan aleatoriamente y se rotan cada pocas horas.

  • Windows admite direcciones temporales a partir de Windows XP SP2.

    Para habilitar / deshabilitar esta función:

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

    Tenga en cuenta que Windows ya no utiliza direcciones primarias basadas en direcciones MAC que comienzan con Windows Vista.

  • Linux (NetworkManager) : las versiones recientes de NetworkManager manejan RA por sí mismas, aunque los dos valores siguientes tienen significados idénticos a sysctl (2 = prefieren la dirección de privacidad, 1 = prefieren la dirección principal):

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

    Además, a partir de 1.2.0, se hizo disponible un modo mejor, que cambia la dirección principal para que ya no esté basada en MAC, sino que sea única para cada red (RFC 7217):

    (Tenga en cuenta que el direccionamiento de privacidad es ortogonal al modo addr-gen; es posible usar ambos).

    Nota al margen: a partir de 1.4.0, NM también permite aleatorizar la dirección MAC. Configure wifi.cloned-mac-addresspara stabletener un MAC diferente para cada red (recomendado), o randompara aleatorizarlo para cada conexión (puede causar problemas).

    En todos los casos, <name>debe ser el nombre de la conexión, por ejemplo, WiFi SSID o "Wired Connection 1". Use nmcli conpara enumerar todo.

    Para que esto sea el valor predeterminado para nuevas conexiones, a partir de 1.2.0 puede cambiar /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (kernel SLAAC) admite direcciones temporales, pero no las usa de manera predeterminada. Se pueden activar a través de sysctls.

    Para habilitar direcciones temporales y hacerlas preferidas para conexiones salientes:

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

    Para habilitar la generación de direcciones temporales, pero mantenga la dirección SLAAC estática como prefiera:

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

    La parte allo defaultse puede reemplazar con un nombre de interfaz específico; por ej net.ipv6.conf.eth0.use_tempaddr.

    (Solía ip link set eth0 down && ip link set eth0 upforzar una asignación de dirección, pero también puede ejecutar rdisc6 eth0o simplemente esperar unos minutos para el próximo anuncio periódico del enrutador).

  • Mac OS X : habilitado de forma predeterminada desde OS X 10.7 Lion:

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

    Se preferirán las direcciones temporales, si están habilitadas.

  • FreeBSD :

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

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

    Preferencias de direcciones temporales? No tengo idea. La dirección de autoconf parece ser la preferida. ifconfigno parece enumerar ninguna propiedad de dirección.

  • OpenBSD - soporte agregado en 5.2 ; habilitado y preferido por defecto en 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig muestra "autoconfprivacy" junto a las direcciones temporales.

Notas sobre la configuración:

  • En Linux, OS X y todos los BSD, edite /etc/sysctl.confpara que la configuración sea permanente.

  • En Windows, los cambios persistirán automáticamente. (Puede agregar store=activeel netshcomando si desea que dure solo hasta que se reinicie).


Parcialmente basado en los sistemas operativos IPv6 en IPv6INT.net. Consulte también Notas generales sobre IPv6


Si la dirección de hardware se usa en la dirección IPv6, generalmente significa que su red usa la configuración automática sin estado IPv6. En tal caso, simplemente puede elegir su propio sufijo de dirección y configurar IPv6 manualmente.

Sin embargo, a pesar de que la dirección agregada manualmente no tendrá su información de hardware, seguirá siendo estática (a diferencia de Privacy Addressing, que cambia las direcciones de vez en cuando). Además, las direcciones estáticas pueden ser un problema en una red de más de 2-3 dispositivos.

Gravedad
fuente
2
Bonito efecto secundario en mi Mac y un enrutador FRITZ! Box 7340: recibo dos direcciones ifconfig. Las conexiones salientes usan la autoconf temporarydirección aleatoria , que cambia de vez en cuando. ¡Bueno! Pero para las conexiones entrantes (cuando se abren en mi enrutador), todavía puedo usar la autoconfdirección. No me importa exponer eso en los registros DNS (aunque tal vez podría incluso elegir otra dirección para eso también).
Arjan
Ahh, después del envío de correo no deseado ahora recibimos correo no deseado IPv6: dig -t AAAA www.v6.facebook.com ;-)
Arjan
66
@Arjan: las direcciones IPv6 en la línea de de4d:b33fno son tan malas para memorizar; Además, su propietario los implementa, mientras que el whoisspam es a) molesto yb) causado por personas externas que no tienen el control de su dominio.
Grawity
1
Como comentario: parece que (algunos de) los anteriores pueden indicarle al sistema operativo que prefiera la dirección temporal, pero las aplicaciones aún podrían anular esta preferencia .
Arjan
AFAICS que usa direcciones temporales (privacidad IPv6) es efectivamente inutilizable con algunos ISP debido a los anuncios de enrutadores con una absurda corta vida útil máxima de 40 segundos, que anula la configuración del kernel. Linux ver ip apor preferred_lft. Por lo tanto, las sshconexiones se romperán cada 40 s si habilita esta función. Ni siquiera es utilizable para los internautas normales, ya que cada descarga también debe completarse dentro de los 40 segundos.
Tino
1

Para su información, esto solo se aplica a ciertos esquemas de direccionamiento IP. Es más que probable que usted (o su ISP) esté usando la configuración automática de IPv6, lo que requiere un bloque bastante grande de IP para lograr en primer lugar. La solución podría ser desactivar esta función. Su ISP también puede usar DHCP para asignar direcciones, lo que todavía es posible con IPv6.

Ernie Dunbar
fuente
3
En cuanto a los bloques grandes: según Wikipedia en "Asignación general": los RIR asignan bloques más pequeños a los ISP, que luego distribuyen esto en partes de / 48 tamaños a sus clientes. De hecho, mi ISP también asigna prefijos / 48 a suscriptores de grado de consumidor. ¿No es muy extraño entonces?
Arjan
3
Luego culpe a Wikipedia y al borrador de los Planes de direccionamiento IPv6 de Arin : todos los clientes obtienen uno / 48 a menos que puedan demostrar que necesitan más de 65k subredes. Pero también: si tiene muchos clientes consumidores, es posible que desee asignar / 56s a sitios de residencia privada , que aún es más de lo que necesito. ;-) Pero las cosas pueden cambiar: mi ISP nunca prometió esto, aunque obviamente sus clientes han configurado módems / enrutadores basados ​​en esto.
Arjan
3
Creo que cuando Arin dice "cliente" se refieren a "ISP". Cualquier ISP (incluidos los muy, muy grandes) puede asignar un único / 64 para toda su red y terminar con él. No se requieren más rutas. Sin embargo, la asignación de bloques de direcciones IP que se numeran en billones a clientes residenciales promedio es absolutamente descabellada.
Ernie Dunbar
3
Aparentemente, una razón para asignar al menos un/56 : "Los ISP que solo entregan una sola /64evitan que se haga una subred. Si eso /64está en la interfaz WAN, nunca obtendrá un IPv6 decente en su LAN (s). Esto es la falla del ISP y deberían arreglar esto dando una cantidad decente ( /48o /56) de direcciones ".
Arjan
77
A / 64 no es "un bloque bastante grande"; Es el bloque de asignación razonable más pequeño para una subred. Varias características de IPv6 requieren que sea una subred / 64, y se han olvidado (o no realizada) que IPv6 fue diseñado en gran parte para evitar que alguien alguna vez de quedarse sin direcciones nunca más. Debes liberar tu mente del viejo pensamiento de la necesidad de conservar direcciones preciosas; No tiene lugar en IPv6.
Michael Hampton