MUIT-RdDC-UAH-University / Ejemplo-2023-2024

Ejemplo 2023-2024
0 stars 0 forks source link

Fallo al tratar de configurar el servicio DNS over TLS #3

Closed Abelardo-Hernandez-C closed 6 months ago

Abelardo-Hernandez-C commented 6 months ago

Buenos dias.

Este fin de semana se ha desprendido de implantar el servicio DNS sobre TLS, pero no ha conseguido que se haya hecho.

Información que puede util:

Implementa DNS con BIND disponiendo de una configuración con un fichero de zona, el fichero named.conf , que contiene el fichero de conversión de los dominios, y fichero un pdns.conf, con la configuración general de funcionamiento del servidor DNS

Los procedimientos que ha intentado son los siguientes:

Implementar TLS dentro del fichero named.conf

named.conf.txt

y configurado el servidor dns para que escuche por ambos puertos 53 y 853 en el fichero pdns.conf

pdns.conf.txt

Las políticas TLS que pueden ser que no se implementen en la versión de powerdns (4.2.1)
Alaver esta configuración, ha considerado que el servidor DNS solo escucha por uno de los puertos, el otro hecho puerto no se habilita.

Implementar TLS con el servicio DNSDIST, para distribuir las peticiones DNS al servidor principal en funcionamiento
La configuración del fichero llamado.conf es la misma. Al implementar este servicio, sigo mismo el problema que en la implementación anterior, el servidor solo escucha por un puerto, el otro no lo habilita.
Al implementar el servicio DNSDIST es necesario establecer un fichero dnsdist.conf en /ETC/DNSDIST del servidor DNS con la siguiente configuracion:

dnsdist.conf.txt

Este archivo permite redirigir las solicitudes DNS a los servidores primerio y secundario, este archivo se ha configurado para realizar pruebas asique no es la versión final, cada servidor DNS tendría su propio archivo con su propia ip para redirigir las solicitudes a powerdns.

Quedo a la espera de una posible solución

diegoLopezP commented 6 months ago

sube al repositorio el escenario completo con la configuración del dns para que pueda replicarlo yo en mi máquina.

Abelardo-Hernandez-C commented 6 months ago

Acabo de subir el sistema en la carpeta proyecto_final de mi rama, a excepción de DNSDIST que lo instalé en caliente y solo tengo el archivo de configuración

https://github.com/MUIT-RdDC-UAH-University/Lab_CDN-2023-24-Grupo-p3/tree/rama_abi

imyelmo commented 6 months ago

@diegoLopezP esta con ello y ahora os responderá. De todas manera un anticipo: estáis configurando el TLS con la sintáxis de BIND9 y tenéis que hacerlo con la de PowerDNS. El backend de BIN9 es solo para la gestión de zonas y registros, pero NO para la parte de TLS. Está en la documentación de PowerDNS y/o dnsdist

diegoLopezP commented 6 months ago

Hola Abelardo,

Para hacer funcionar DNS over TLS con powerDNS te hace falta dnsdist. Como configuración básica, para probar que funciona puedes hacer lo siguiente: En el contenedor del servidor DNS primario instalas dnsdist y lo configuras con estas dos directrices:

Aquí encontrarás más información:

De esta forma, las peticiones DNS over TLS que vayan al puerto 853 serán procesadas por DNSdist y redirigidas al puerto 53 del DNS primario, que devolverá la consulta a dnsdist y este, a su vez, al cliente.

Deja la configuración de PowerDNS en la que resuelve el dominio grupo3.com. Después, instala dnsdist y lo configuras.

Prueba y nos cuentas.

PD: Yo lo tengo funcionando con los datos que has proporcionado de vuestro repositorio.

Abelardo-Hernandez-C commented 6 months ago

Te adjunto la configuración del fichero dnsdist que he implementado, el resultado por el lado del cliente y el contenido de la carpeta dnsdist carpeta dnsdist dnsdisr conf respuesta en el cliente

Las líneas que puedes ver comentadas en dnsdist.conf son por pruebas que he realizado

diegoLopezP commented 6 months ago

Con las dos líneas que tienes en el fichero de configuración de dnsdist debería funcionar, pero hay que afinarlas.

Por si acaso, al inicio del fichero de configuración añade la siguiente directiva: setSecurityPollSuffix(""). Esto no debería afectar al funcionamiento de dnsdist, pero con esta directiva evitamos que dndist realice sondeos de seguridad de versiones de código.

Por supuesto, cuando arranques el DNS comprueba que tanto los servicios pdns como dnsdist están ejecutándose.

Cuando funcione, avisa en el hilo para poder cerrarlo.

Abelardo-Hernandez-C commented 6 months ago

Acabo de subir las modificaciones realizadas, pero sigo obteniendo el mismo problema al hacer kdig +tls grupo3.com, que es el siguiente: kdig +tls grupo3.com ;; WARNING: TLS, peer has closed the connection ;; WARNING: can't receive reply from 192.168.3.10@853(TCP) ;; ERROR: failed to query server 192.168.3.10@853(TCP) ;; WARNING: can't connect to 192.168.3.11@853(TCP) ;; ERROR: failed to query server 192.168.3.11@853(TCP) los certificados a los que hace mención el archivos dnsdist.conf están correctamente copiados a la carpeta correspondiente, sin embargo, el sistema no se levanta correctamente, no hay ningun error en los logs de systemctl (instalado en caliente)

imyelmo commented 6 months ago

Que no responda, no significa que no levante. Dentro del contenedor de powerdns, que ocurre si ejecutas netstat -an, los puertos 53 y 853 están abiertos en escucha (listen)?. Entiendo que el 53 si, pero que pasa con el 853. No es lo mismo que levante y no conteste a que ni siquiera levante.

Abelardo-Hernandez-C commented 6 months ago

Netstat -an me dice que el sistema está escuchando por 192.168.10.3:53 y por 0.0.0.0:853

Enviado desde Outlook para Androidhttps://aka.ms/AAb9ysg


From: Isaías Martínez Yelmo @.> Sent: Tuesday, May 21, 2024 3:36:05 PM To: MUIT-RdDC-UAH-University/Ejemplo-2023-2024 @.> Cc: Hernández Cortizo Abelardo @.>; Author @.> Subject: Re: [MUIT-RdDC-UAH-University/Ejemplo-2023-2024] Fallo al tratar de configurar el servicio DNS over TLS (Issue #3)

ATENCIÓN: Este correo electrónico se envió desde fuera de la UAH. No haga clic en enlaces ni abra archivos adjuntos a menos que reconozca al remitente y sepa que el contenido es seguro.

Que no responda, no significa que no levante. Dentro del contenedor de powerdns, que ocurre si ejecutas netstat -an, los puertos 53 y 853 están abiertos en escucha (listen)?. Entiendo que el 53 si, pero que pasa con el 853. No es lo mismo que levante y no conteste a que ni siquiera levante.

— Reply to this email directly, view it on GitHubhttps://github.com/MUIT-RdDC-UAH-University/Ejemplo-2023-2024/issues/3#issuecomment-2122655814, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A3FFG6GX74QTEJJ4KHZOJWLZDNEULAVCNFSM6AAAAABH7OGKV2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMRSGY2TKOBRGQ. You are receiving this because you authored the thread.Message ID: @.***>

diegoLopezP commented 6 months ago

Primero prueba que está funcionando el servicio DNS por el puerto habitual, haciendo una petición DNS normal (kdig grupo3.com). Eso debería funcionar y responder con la resolución del dominio. Si no funciona, es que hay algún problema en la configuración de la zona. Una vez que el servicio funciona en el puerto 53, levantas dnsdist y haces la petición con tls. Si todo va bien, debería responder correctamente con la configuración que tienes.

De todas formas, en el fichero pdns.conf, comenta la línea en la que expones el puerto 53, y cambia la directriz allow-axfr-ips por: allow-axfr-ips=0.0.0.0/0. Añade también la directriz query-local-address=0.0.0.0

Abelardo-Hernandez-C commented 6 months ago

Estos son los resultados que obtengo y las configuraciones realizadas:

Pdns.conf

launch=bind bind-config=/etc/powerdns/named.conf local-address=192.168.3.10

local-port=53

master=yes allow-axfr-ips=0.0.0.0/0 query-local-address=0.0.0.0

Named.conf

zone "grupo3.com" { type master; file "/etc/powerdns/zones/grupo3.com.zone"; allow-transfer { 192.168.3.11; }; };

Dnsdist.conf

setSecurityPollSuffix("")

-- DIRECCION IP Y PUERTO TLS addTLSLocal('0.0.0.0:853', "/etc/dnsdist/server.crt", "/etc/dnsdist/server.key")

-- ACLs PARA SOLICITUDES DE ACCESO addACL("192.168.3.0/24")

-- SERVIDOR DE BACKEND PARA RESPONDER LAS SOLICITUDES DNSoTLS newServer({address="192.168.3.10", name="DNS_primario", validateCertificates=false})

-- REGLAS DE BALANCEO DE CARGA addAction(AllRule(), PoolAction("DNS_primario"))

Respuesta del cliente:

kdig grupo3.com ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 30483 ;; Flags: qr aa rd; QUERY: 1; ANSWER: 2; AUTHORITY: 0; ADDITIONAL: 0

;; QUESTION SECTION: ;; grupo3.com. IN A

;; ANSWER SECTION: grupo3.com. 3600 IN A 192.168.3.12 grupo3.com. 3600 IN A 192.168.3.13

;; Received 60 B ;; Time 2024-05-21 18:05:04 CEST ;; From @.***(UDP) in 0.8 ms

kdig +tls grupo3.com ;; WARNING: TLS, peer has closed the connection ;; WARNING: can't receive reply from @.(TCP) ;; ERROR: failed to query server @.(TCP) ;; WARNING: can't connect to @.(TCP) ;; ERROR: failed to query server @.(TCP)

Enviado desde Outlook para Androidhttps://aka.ms/AAb9ysg


From: Diego @.> Sent: Tuesday, May 21, 2024 3:46:04 PM To: MUIT-RdDC-UAH-University/Ejemplo-2023-2024 @.> Cc: Hernández Cortizo Abelardo @.>; Author @.> Subject: Re: [MUIT-RdDC-UAH-University/Ejemplo-2023-2024] Fallo al tratar de configurar el servicio DNS over TLS (Issue #3)

ATENCIÓN: Este correo electrónico se envió desde fuera de la UAH. No haga clic en enlaces ni abra archivos adjuntos a menos que reconozca al remitente y sepa que el contenido es seguro.

Primero prueba que está funcionando el servicio DNS por el puerto habitual, haciendo una petición DNS normal (kdig grupo3.com). Eso debería funcionar y responder con la resolución del dominio. Si no funciona, es que hay algún problema en la configuración de la zona. Una vez que el servicio funciona en el puerto 53, levantas dnsdist y haces la petición con tls. Si todo va bien, debería responder correctamente con la configuración que tienes.

De todas formas, en el fichero pdns.conf, comenta la línea en la que expones el puerto 53, y cambia la directriz allow-axfr-ips por: allow-axfr-ips=0.0.0.0/0. Añade también la directriz query-local-address=0.0.0.0

— Reply to this email directly, view it on GitHubhttps://github.com/MUIT-RdDC-UAH-University/Ejemplo-2023-2024/issues/3#issuecomment-2122676285, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A3FFG6FIIWABFZWPKH747P3ZDNFZZAVCNFSM6AAAAABH7OGKV2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMRSGY3TMMRYGU. You are receiving this because you authored the thread.Message ID: @.***>

diegoLopezP commented 6 months ago

En la configuración de dnsdist, quita la regla de ACL y de la de balanceo de carga. Además, utiliza los certificados cuyo fichero tiene extensión .pem, en lugar de las extensiones .crt y .key. Ambos certificados los tienes ya generados en la carpeta certificados. autocert.pem es el equivalente al .crt, y autokey.pem es el equivalente al .key

Lo más seguro es que sean los certificados, porque en la página de la configuración de dnsdist, aparecen los certificados con extensión .pem (https://dnsdist.org/guides/dns-over-tls.html)

imyelmo commented 6 months ago

Si el problema persiste, abrid la issue en vuestro propio repositorio