Con IPv6 cada dispositivo tendrá una IP pública, estaremos seguros gracias al firewall del router

Escrito por Sergio De Luz
Redes

El martes, a raíz de la noticia de que el operador MásMóvil ha implementado CGN en sus redes, surgió un debate por diferentes foros bastante interesante sobre las implicaciones de tener IPv6. ¿Con IPv6 tendremos una IP pública enrutable por Internet en cada dispositivo? ¿Podrán hackearnos el frigorífico o la TV por no estar detrás de la NAT como en IPv4?

¿Qué direccionamiento IPv6 tendremos en nuestro hogar?

Los operadores de Internet en España están actualmente en fase de pruebas con IPv6, solo unos pocos elegidos disponen en sus hogares de este direccionamiento IP. El protocolo IPv6 se diseñó para dotar de conectividad punto a punto a los diferentes dispositivos conectados, sin tener ningún intermediario como ha ocurrido en IPv4 con NAT. Por este motivo, cuando nuestro operador nos proporcione direccionamiento IPv6, nos dará un rango /64 de direcciones, mucho más que suficiente para conectar todos y cada uno de nuestros dispositivos a Internet con IP pública.

¿Qué significa esto? Que por ejemplo nuestro operador nos asignará el rango “2001:db8:abcd:abcd::/64”, las IPv6 tienen 128 bits, por lo que podremos tener en nuestro hogar 2^64 direcciones IP (el espacio de direcciones de IPv4 es de 32 bits, por lo que todas las IPv4 del mundo son 2^32). En otras palabras, que el operador nos asignará unos cuantos miles de millones de IPv6, solo para nosotros. Estas direcciones que nos proporcionará el ISP son de tipo Global Unicast, es decir, enrutables en Internet. ¿Significa esto que mi TV tendrá una IPv6 pública para que la hackeen fácilmente? No, y os lo vamos a demostrar.

Mi frigorífico, lavadora, enchufe inteligente y cámara IP tendrán una IPv6 pública, ¿me van a hackear? Pues no

Aunque cada uno de los dispositivos que tengamos en nuestro hogar tendrá una IP pública accesible desde Internet, el router será quien deje pasar o no los datos, más concretamente el firewall IPv6 del router será quien pare cualquier tipo de comunicación desde el exterior, igual que hasta ahora hacíamos en IPv4.

Si nuestro móvil con IPv6 pública accede a un servicio de Internet, se podrá comunicar con él sin problemas como hasta ahora, ya que desde la red local hacia Internet sí se permiten las conexiones nuevas, y la información volverá a nosotros porque la conexión ya se habrá establecido con un determinado puerto. El funcionamiento es similar a lo que ocurría en NAT, pero sin traducir absolutamente nada ya que tenemos comunicación punto a punto.

Si pasado un determinado tiempo, alguien es capaz de descubrir nuestra dirección IPv6 de nuestro móvil, si ese alguien intenta comunicarse con nuestro móvil, el firewall del router lo parará por defecto, porque no hay ningún tipo de conexión saliente anteriormente realizada por el móvil hacia esa dirección IP, y el firewall lo sabe.

En la siguiente captura podéis ver el firewall IPv6 de un router ASUS. Tal y como podéis ver, por defecto permite todo el tráfico saliente procedente de los hosts IPv6 de la LAN y el tráfico entrante correspondiente a esas conexiones anteriormente establecidas (algo lógico y normal, ya que sino estaría bloqueando todas las conexiones). Sin embargo, cualquier tipo de tráfico entrante que no haya sido establecido anteriormente por nosotros, se debe permitir específicamente en el menú de configuración.

Esto significa que si por ejemplo montamos un servidor FTP en un determinado servidor, aunque tengamos la IPv6 pública que nos lleva directamente a él, el puerto 21 (por defecto) no estará abierto, por lo que no tendremos la posibilidad de conectarnos sino lo abrimos en el firewall específicamente.

Internamente el router ASUS utiliza iptables como firewall, a continuación podéis ver la configuración del router en la chain FORWARD, que es la que se usa para reenviar el tráfico a los dispositivos conectados. La configuración es la de por defecto a excepción de la penúltima regla que es una apertura de puertos TCP del 1 al 10000 que ha sido añadida a posteriori para pruebas.

Si alguien desde fuera de nuestra red intenta hacer a nuestro PC un simple ping, les funcionará de acuerdo a la regla ACCEPT del icmp que tenemos anteriormente.

En nuestra opinión, por defecto esta función debería estar deshabilitada, es decir, que nadie desde Internet pueda hacer ping a nuestro dispositivo por defecto. La política de FORWARD es de bloquear todo el tráfico que no está específicamente permitido, algo perfecto de cara a la seguridad.

Sin embargo, si alguien intenta hacer un escaneo de puertos sencillos, nos dirá que el host está caído, ya que hay reglas para evitar el escaneo de puertos y demasiados paquetes icmp en pocos segundos:

Si modificamos el firewall para bloquear cualquier tipo de ICMP (saliente y entrante), tal y como podéis ver en la primera regla de todas, “DROP icmp” desde cualquier origen a cualquier destino.

No podrán hacernos ping (ni nosotros tampoco hacerlo con esta regla):

Lo normal es que el firewall sí permita el ping hacia cualquier host de fuera, pero lo impida desde la WAN hacia la LAN, algo que podemos configurar perfectamente en iptables o en cualquier otro firewall. Los routers que darán los operadores permitirán todos estos cambios, de tal forma que aunque cada uno de los dispositivos conectados tengan una (e incluso varias) IPv6 públicas, no podrán comunicarse con ellos si anteriormente nosotros no hemos establecido una comunicación.

Conclusiones: No te van a hackear por usar IPv6, siempre que el firewall del router esté bien configurado

Tal y como habéis podido ver, la respuesta es clara: no. La NAT siempre ha dado una falsa sensación de seguridad, al estar “detrás” del router y cuyas direcciones IP de la LAN no salen a Internet. De hecho, con IPv6 tenemos algo que IPv4 nunca ha tenido, la seguridad por oscuridad, porque hacer un escaneo de hosts a un espacio de direcciones de 64 bits actualmente es impensable ya que llevaría muchísimo tiempo. Además, cada dispositivo se autoasignará una IPv6 pública de manera aleatoria cada cierto tiempo, por lo que la probabilidad de que “te encuentren” es más difícil.

Agradecemos a Marcos Vidal su ayuda para las pruebas de conectividad (ping y escaneo de puertos) desde su servidor OVH con IPv6.


Continúa leyendo
  • jordi

    Varias puntualizaciones. Es incorrecto 2000:abcd:abcd:abcd/64, si queremos expresar un prefijo de 64 bits, en IPv6 seria 2000:abcd:abcd:abcd::/64. Ademas, el estandar para documentos (como un articulo) es el prefijo de documentación, es decir 2001:db8::/64 para este ejemplo. El /64 es la red mas pequeña que admite IPv6, eso quiere decir que en IPv6 el operador tiene que asignar un numero “n” de /64, lo normal seria un /48, que contiene 65.536 subredes de /64 (2^16 bits). De otro modo no podríamos tener subredes en nuestra casa/oficina, ni un WiFi/SSID para invitados, etc. Es decir para nuestro ejemplo, el operador debería asignar a cada usuario 2001:db8::/48. En IPv6 no existen direcciones públicas, al igual que no existen las privadas. Lo correcto “equivalente” a una IPv4 pública es una dirección global. Finalmente, y lo mas importante, en IPv6 NUNCA se debe filtrar ICMP (que en este caso se llama ICMPv6), pues en ese caso rompemos totalmente el protocolo. Si se desea evitar “ping” se filtra solo la parte de echo/reply de ICMPv6.

    • Hola Jordi,

      Efectivamente, tienes razón en los :: del final 🙂 Ya lo he añadido. Sobre el ejemplo, es cierto que db8 es para los ejemplos, pero es para que se entendiera mejor lo he puesto así.

      Sobre la parte de subredes, es verdad que desde el /48 al /64 es la parte de subnet, sin embargo, no hay problema porque el ISP nos proporcione un /64 porque internamente los routers normalmente bloquean con ebtables la comunicación con los Wi-Fi de invitados a nivel L2, en IPv4 por ejemplo no se suele utilizar otra subred para hacer esto, y no creo que en IPv6 se haga.

      Y sobre filtrar ICMP…sí, pero en el ejemplo yo lo he descartado entero para que se viera bien y no añadir más complejidad con los tipos de mensajes de ICMPv6.

      Saludos y gracias por tus comentarios!

      • jordi

        Entiendo lo de hacer fáciles los ejemplos, pero no a costa de incumplir los estándares … porque entonces en lugar de enseñar, confundimos … De hecho se podría haber hecho con algo como 2001:db8:abcd:abcd::/64 y no creo que nadie note la diferencia o lo entienda peor. Si un fabricante de un router hace subredes con IPv6 en un /64, ese producto no es estándar, simplemente, y perdería el logo IPv6 Ready, y no debería comercializarse, por simple defensa del consumidor. Lo de ICMP, de nuevo lo entiendo, pero si no lo aclaras, confundimos mejor hubiera sido hacer el ejemplo con otro protocolo … y uno de los graves problemas que hay con IPv6 es que pensamos con mentalidad IPv4 y lo hacemos mal. NO es más difícil, pero hay que cambiar el chip.
        Un libro bueno y sencillo, sin necesidad de grandes conocimientos, y ademas grátis de IPv6: “IPv6 para todos” http://www.consulintel.es/ipv6/divulgacion
        (hay varios e incluso en varios idiomas de ahí que ponga el enlace a la página completa).

        • Gracias por el link 🙂 Seguro que será de mucha utilidad a nuestros lectores!

          Saludos!

  • Electrico

    Los operadores no tendrían que dar un /64, si no un /56.

    • Jordipaletm

      Los operadores tienen que dar un /48 y estático.

      • Electrico

        Eso sería lo ideal, pero sé de buena gana que algunos operadores solo darán /56 a las conexiones domésticas (y sí, estático).

        • Xoan Cosmed

          Por curiosidad, para qué necesitáis tantas IP en una red doméstica? Yo creo que con un /56 llega de sobra para un uso normal, y dar más IPs sería contraproducente (teniendo en cuenta que se asigna un /64 a cada dispositivo). Pero quizás me equivoque, por eso pregunto …

Últimos análisis

Valoración RZ
8
Valoración RZ
9
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10