Ir al contenido principal

dns-tools: herramienta para verificar zonas (ZONEMD) y firmar DNSSEC en forma distribuida

Actualmente existen diversas soluciones que permiten automatizar la firma DNSSEC de los dominios, integrados a los mismos servicios que normalmente proveen DNS. En el ámbito de código abierto, los más utilizados permiten activar DNSSEC con algunas instrucciones en la configuración, sin preocuparse de llaves ni firmas.

Sin embargo, siempre es bueno tener herramientas que permitan hacer verificaciones o incluso firmas de una forma más de bajo nivel. Suelen ocurrir casos de uso donde alguien prefiere tener más control, o integrarse con sistemas internos no estándar.

Les presentamos dns-tools, una herramienta de línea de comandos (CLI), escrita en lenguaje Go, que permite firmar con DNSSEC una zona, crear registros de integridad de zona llamados ZONEMD, y a su vez validar estas firmas y registros. Esta herramienta fue creada por NICLabs, el laboratorio de NIC Chile. Es mantenida con código abierto en github, con licencia MIT.

Una de las cosas más destacadas, y que lo hace una herramienta única, es su integración con otro proyecto de NICLabs llamado dtc: firma distribuida de umbral, que permite utilizar un grupo de "sub"-firmadores que entregan mayor seguridad frente al caso de tener las llaves "en disco", como es el caso normal de los firmadores integrados en software DNS. Actualmente existen básicamente dos escalas de seguridad respecto a las llaves DNSSEC: o se mantienen en disco en 1 sola máquina, o bien se mantienen en un HSM externo. La solución de dns-tools está en el medio de estas dos, ya que por un lado no existe el riesgo de tener una llave completa en un disco; y por otro lado es mucho más barato que comprar un HSM dedicado.


Integridad de zona (ZONEMD)

La herramienta dns-tools tiene compatibilidad con el nuevo registro ZONEMD, creado a comienzos de este año. Este registro permite tener un checksum del archivo de zona completa, que permite al que recibe una zona verificar que está correcta. Es similar a los archivos SHA*SUM que acompañan ciertos software, que permite asegurarse que una descarga no fue modificada maliciosamente, o que tuvo fallas de transmisión.

Su utilidad es principalmente para ciertos sistemas que transfieren zonas usando el protocolo AXFR interno al DNS, que permite que cada uno de los receptores de una zona puedan verificar que está correcta. También se piensa que puede ser útil para la distribución de ciertas zonas por fuera del DNS, como es el caso por ejemplo de la raíz del DNS, que es publicada en sitios web o FTP, y que gracias al registro ZONEMD puede ser verificado luego de descargar.

Entonces, la herramienta dns-tools permite generar registros ZONEMD, y verificar los existentes. Fue una de las primeras implementaciones de este nuevo estándar, y cumplió con las pruebas de compatibilidad que realizaron los autores del documento.

Una cosa importante es que para generar registros ZONEMD es requisito que también sea firmada la zona con DNSSEC, por la misma herramienta. Y por ende es necesario tener acceso a las llaves.

Al contrario y al igual que en el caso de validación de DNSSEC, para verificar un registro ZONEMD solo basta con tener el archivo de zona.

$ dns-tools verify -f ejemplo.cl.zone.signed
[dns-tools] 2021/04/07 11:53:08 Zone parsed is ejemplo.cl. 
Validating Scheme 1, HashAlg 1... ok
[dns-tools] 2021/04/07 11:53:08 Zone Digest: Verified Successfully.


Firma DNSSEC distribuida

dns-tools permite firmar una zona pasándole directamente las llaves en disco, al estilo de la mayor parte de los firmadores automáticos, pero también permite el uso de la interfaz PKCS11 para tener un depósito de llaves externo, sea este también en disco pero administrado por un proceso distinto (como SoftHSM), o un dispositivo de hardware externo especializado en criptografía, las HSM.

Es acá donde es posible integrar dns-tools con otro sistema desarrollado por NICLabs llamado "dtc" (Distributed Threshold Cryptography Library Signer / firma distribuida de umbral), que a través de esta misma interfaz PKCS11 permite utilizar "nodos firmadores" que comparten trozos de una llave y deben cumplir con ciertas reglas de consenso para generar una firma definitiva. Los detalles de esto dan para otro artículo.

Lo importante es tener claro que el comando:

$ dns-tools sign file -f ejemplo.cl.zone -K ksk.pem -Z zsk.pem

toma un archivo de zona normal, unas llaves DNSSEC en archivo en disco, y genera una zona correctamente firmada con DNSSEC. En caso que no existan las llaves, dns-tools también puede crearlas. Igualmente es posible usar la sintaxis:

$ dns-tools sign pkcs11 -f ejemplo.cl.zone -p /usr/lib/dtc.so

que permite utilizar la interfaz PKCS11 de comunicación con un depósito de llaves externo. Debe ser indicada la librería correspondiente con la opción -p.

La operación inversa, de comprobación o validación de firmas, es muy útil para utilizarse también como "segunda opinión" en el caso de utilizar otro software de firmado. Es muy buena práctica que al tener un firmado cualquiera, se utilice otro software completamente independiente que verifique las firmas, y así tener la seguridad que el proceso es correcto. En este caso su utilización es mucho más simple, ya que no es necesario acceder a las llaves:

$ dns-tools verify -f ejemplo.cl.zone.signed
[dns-tools] 2021/04/21 12:35:43 Zone parsed is ejemplo.cl.
Validating Scheme 1, HashAlg 1... ok
[dns-tools] 2021/04/21 12:35:43 Zone Digest: Verified Successfully.


Los invitamos a probar la herramienta y utilizarla. Como todo proyecto de código abierto estamos atentos a necesidades de la comunidad, así que si siente que le falta algo o quiere colaborar con alguna corrección, por favor ingresa sus "issues" al github y la mejoramos entre todos!

Comentarios

Entradas más populares de este blog

Uso correcto del servicio DNS secundario gratuito

NIC Chile desde hace más de 20 años ha ofrecido el servicio de " Secundario DNS gratuito " para sus clientes. El objetivo siempre fue mejorar la robustez de .CL, ya que disponer de solo 1 NS es demasiado frágil, y este servicio siempre se ha mantenido con los niveles de infraestructura y tiempos de respuesta adecuados a su tiempo. El uso del servicio ha sido sostenido en el tiempo. Actualmente, más de 30 mil de nuestros clientes lo utilizan! Y con la adición de tecnologías como IPv6, se ha permitido que estos miles de dominios CL tengan presencia en la nueva red . Sin embargo, no todo es miel sobre hojuelas. Desde los inicios se ha detectado un problema técnico recurrente. El uso de este servicio, si bien es gratuito para clientes de NIC Chile, requiere una configuración técnica especial para que funcione correctamente. Y esta configuración debe ser realizada por quien administre el servicio DNS del dominio (por ejemplo la empresa de hospedaje (" host

Servicio AS112: atendiendo los reversos de direcciones IP privadas

El uso más común que se le da al servicio DNS es el de "transformar los nombres de dominio en direcciones IP", que permite por ejemplo a los humanos recordar fácilmente una dirección de un sitio web como "www.nic.cl", y dejar que sean las máquinas -mediante el DNS- que lo transformen a una dirección IPv6 como 2001:1398:5::6003, ó 200.7.7.3 en IPv4. Pero no es el único uso del DNS. También existe el llamado "servicio reverso", que como su nombre lo indica, hace lo contrario: transformar una IP en un nombre de máquina. Esto no es usado por los usuarios corrientes, sino por servicios por ejemplo de control de acceso, o registro de logs, etcétera; quienes parten de una dirección IPv6 como 2800:3f0:4003:c00::69 y obtienen como resultado www.google.com. Por otro lado, también existen direcciones IP especiales que se les llama "privadas", o "locales"; que tienen la particularidad que pueden ser usadas libremente por organizaciones en sus