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

Ahora es más fácil sacarle provecho a tu dominio en .CL

La pandemia ha renovado el impulso al desarrollo de los servicios digitales. No solo las grandes empresas han debido reforzar sus canales de atención y de venta online. También los pequeños emprendedores han encontrado en Internet el medio propicio para llegar a sus clientes. En el dominio .CL hemos sido testigos del aumento de la demanda por inscribir nombres de dominio. Un dominio es, después de todo, la mejor forma de identificarse en Internet y una pieza clave de la imagen digital de cualquier empresa, desde las más pequeñas hasta las más grandes. Una dificultad para usar un nombre de dominio era que hay que invertir en el diseño de un sitio web, así como cubrir el costo del hospedaje en línea. Por este motivo, muchos pequeños emprendedores a veces prefieren mostrar sus productos a través de plataformas web como blogs, por ejemplo, o desde sus canales en redes sociales. Justo a tiempo para ayudarlos, NIC Chile lanzó el 14 de mayo de este año un nuevo servicio gratuito de redir

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

Routing seguro: instalación de FORT y FRR con RPKI

Una de las principales ventajas de las herramientas de Código Abierto es que permiten bajo licencias de uso acceder a su fuente y modificarla de acuerdo al objetivo de cada plataforma. Asimismo, millones de personas colaboran de manera productiva en la innovación y desarrollo de estas herramientas, lo que se traduce en su rápido avance y genera una constante retroalimentación dentro de la comunidad. Sin embargo, surgen diferentes inquietudes respecto al mundo de Código Abierto, una de ellas es: ¿Puede un proyecto mantener su desarrollo en los próximos 5 o 10 años? Un elemento tranquilizador es que hoy en día se observa que las grandes compañías cada vez se involucran más en las piezas de software construidos en Código Abierto; esta vinculación les permite escalar sus desarrollos tecnológicos a costos más bajos, pudiendo diseñar soluciones a la medida y adaptarlas a sus requerimientos. Estas compañías contribuyen con la comunidad aportando ideas y compartiendo parte de sus experienc