DNSSEC, securizando las comunicaciones en la web (II)

(Tomado de segu-info.com.ar)

¿Por qué implementar DNSSEC?

En la primera parte se vió que el protocolo DNS adolece de algunas debilidades estructurales que lo hacen vulnerable a ciertos tipos de ataques y por eso se debió definir las extensiones de DNSSEC que permiten solventar estas debilidades sin forzar a un reemplazo inmediato de todos los servidores DNS existentes. El despliegue de DNSSEC es gradual a medida que los diferentes operadores van firmando zonas.

¿En qué consiste la firma de zonas?

Se genera un par de claves (pública y su correspondiente privada) para cada zona:

  • El par de claves es propio de cada zona y no del servidor autoritativo.
  • La parte privada se debe mantener bajo custodia:
    • La privada firma los RRSets de la zona.
  • La pública se debe publicar en DNS mediante un registro DNSKEY:
    • La privada permite verificar las firmas de los RRSets.
  • Un RRSet puede tener múltiples firmas generadas con diferentes claves.

La firma digital de un RRSet se devuelve en forma de un registro RRSIG que es parte de la respuesta. Por ejemplo:

¿Como puede un cliente verificar un RRSet de una cierta zona?

La manera de realizarlo es haciendo una consulta por el DNSKEY correspondiente o realizando los cálculos correspondientes y comparar con el RRSIG. Si coinciden la firma verifica, de lo contrario, no

Pero para confiar en la DNSKEY que sale de la misma zona que queremos verificar necesitamos verificar la cadena de confianza. Para ello con el registro DS “Delegation Signature”:

  • Los registros DS “firman” claves de zonas hijas
  • De esta forma uno puede verificar el DNSKEY de una zona buscando un registro DS en la zona padre

El registro DS contiene un hash de una clave pública, del contenido de un registro DNSKEY. Los registros DS en la zona padre están firmados con la(s) claves de esa zona y para completar la cadena de confianza tiene que estar firmada la raíz del DNS.

Por otra parte, la zona raíz no tiene “padre” a quien ir a pedirle un registro DS.

¿Cómo se verifica la autenticidad del root Trust-Anchor (TA)?

El TA de la zona raíz se publica fuera de banda, por ello la validación debe ser diferente:

  • Se puede bajar por HTTP/HTTPS
  • Se puede verificar por otros mecanismos (certificados, firmas PGP)
  • Similar a lo que pasa con la zona raíz misma, se debe cargar manualmente

¿Qué necesito para firmar mis zonas?

Se necesita trabajar en dos niveles:

  • Instalar y operar software que soporte el firmado de zonas.
  • Definir los procedimientos y políticas de gestión y, manejo de claves y firmas.

A nivel de software podemos nombrar los siguientes productos:

Cadena de confianza

Los datos de una zona serán confiables si:

  • Se encuentran firmados por la llave de la zona zone-signing-key (zsk), mediante los respectivos RRs RRSIG.
  • La zone-signing-key de la zona será confiable si está firmada por la llave key-signing-key (ksk), ambos RRs DNSKEY.
  • La key-signing-key será confiable si está siendo apuntado por su respectivo RR DS del padre.

El RR DS será confiable si:

  • Está firmado por la zone-signing-key del padre, o;
  • Los records DS o DNSKEY fueron intercambiados fuera de banda y almacenados localmente (“Secure entry point”).

¿Qué necesito para validar respuestas DNS?

A nivel de servidores DNS recursivos es posible validar respuestas de DNS de inmediato. Para lograrlo, se deben seguir los pasos especificados por el fabricante del software.

Por ejemplo:

BIND 9.7 y superior:

DNSSEC vs. PKI

DNSSEC no implementa una PKI sobre DNS aunque se parecen.

Los procedimientos de gestión de claves están basados en políticas locales y no hay “certificate authority”. Además, si todo un dominio y subdominios están bajo una administración única, entonces se puede aplicar más estrictamente un conjunto de políticas. Además, no hay CRL (“Certificate Revocation List”).

Procedimiento básico de firma de zona

Generación de un par de claves

  • Incluir el DNSKEY creado en la zona
  • Si lo hacemos con BIND esto dispara:
    • El ordenamiento de la zona
    • Inserción de los registros RRSIG
    • Generación de registros DS:
    • Recordar que van en el padre

El Rol de Google en la implementación de DNSSEC

Google ha lanzado hace tres años Google Public DNS al igual que OpenDNS, para ayudar a hacer Internet más rápido y seguro. Actualmente, están avanzando con el proyecto para hacer la validación de los DNS resolvers totalmente compatible con DNSSEC . Anteriormente, se han aceptado y se ha enviado mensajes con DNSSEC, pero no validaba. Con esta nueva característica de seguridad, se puede proteger a las personas de los ataques, identificando y rechazando las respuestas no válidas de DNSSEC.

Para contrarrestar los ataques de envenenamiento de caché, resolvers debe ser capaz de verificar la autenticidad de la respuesta. DNSSEC resuelve el problema mediante la autenticación de las respuestas DNS que utilizan las firmas digitales y la criptografía de clave pública. Cada zona DNS mantiene un conjunto de pares de claves públicas / privadas, y para cada registro de DNS, una firma digital única se genera y se cifra con la clave privada. La clave pública correspondiente se verifica a través de una cadena de confianza con las teclas de las zonas de nivel superior. DNSSEC previene eficazmente la respuesta de manipulación porque en la práctica, las firmas son casi imposible de falsificar sin acceso a las claves privadas. Además, los dispositivos de resolución rechazará las respuestas correctas sin firmas.

Actualmente Google Public DNS está atendiendo, en promedio, más de 130 mil millones de consultas DNS de más de 70 millones de direcciones IP cada día. Sin embargo, sólo el 7% de las consultas client-side se realizan con DNSSEC habilitado y el 1% de las respuestas DNS del server-side están firmadas. En general, DNSSEC se encuentra todavía en una fase inicial y se espera que con este apoyo se acelere la implementación.

Para obtener más información acerca de Google Public DNS, siga el siguiente enlace: https://developers.google.com/speed/public-dns.

¿Dónde obtengo información sobre DNSSEC?

Existe gran cantidad de información disponible sobre DNSSEC. Algunos de ellos son:

Además, hay disponible públicamente material del entrenamiento sobre DNSSEC brindado en Febrero de 2012 por Olaf Kolkman de los laboratorios de NLnet.

Video: Cómo funciona DNSSEC

Fuentes:

Mauro D. Gioino de la Redacción de Segu-Info

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s