Esta es una pregunta canónica sobre la seguridad de los servidores de resolución de DNS públicos
Los servidores DNS abiertos parecen bastante limpios y convenientes, ya que proporcionan direcciones IP que podemos usar de manera consistente en toda nuestra empresa, independientemente de dónde se encuentren. Google y OpenDNS proporcionan esta funcionalidad, pero no estoy seguro de querer que estas compañías tengan acceso a nuestras consultas DNS.
Quiero configurar algo como esto para que lo use nuestra empresa, pero escucho mucho acerca de que esto es una práctica peligrosa (particularmente en lo que respecta a los ataques de amplificación ) y quiero asegurarme de que lo hagamos bien. ¿Qué cosas debo tener en cuenta al construir este tipo de entorno?
fuente
Respuestas:
Hay algunas cosas que debes entender al respecto:
Este es un problema de ingeniería de red.
La mayoría de las personas que buscan configurar este tipo de entorno son administradores del sistema. ¡Eso es genial, yo también soy administrador del sistema! Parte del trabajo es comprender dónde terminan sus responsabilidades y comienza la de otra persona, y créanme, este no es un problema que los administradores del sistema puedan resolver por sí mismos. Este es el por qué:
Esta no es una mejor práctica. La mejor práctica es no hacer esto.
Es muy fácil configurar una resolución de DNS con conexión a Internet. Se necesita mucha menos investigación para configurar uno que para comprender los riesgos involucrados al hacerlo. Este es uno de esos casos donde las buenas intenciones sin darse cuenta permiten las fechorías (y el sufrimiento) de los demás.
Google y OpenDNS hacen esto, entonces ¿por qué no puedo?
A veces es necesario comparar el entusiasmo con la realidad. Aquí hay algunas preguntas difíciles de hacerse:
¿Es esto algo que desea configurar por capricho, o es algo que tiene unos pocos millones de dólares para invertir en hacerlo bien?
¿Tienes un equipo de seguridad dedicado? Equipo de abuso dedicado? ¿Ambos tienen los ciclos para lidiar con el abuso de su nueva infraestructura y las quejas que recibirán de terceros?
¿Tienes un equipo legal ?
Cuando todo esto esté dicho y hecho, ¿todo este esfuerzo comenzará a pagarse de forma remota, generará ganancias para la compañía o excederá el valor monetario de lidiar con los inconvenientes que lo llevaron en esta dirección?
Para terminar, sé que este hilo es Q&A es una especie de decepción para la mayoría de ustedes que están vinculados a él. Serverfault está aquí para proporcionar respuestas, y una respuesta de "esta es una mala idea, no lo hagas" generalmente no se percibe como muy útil. Algunos problemas son mucho más complicados de lo que parecen ser al principio, y este es uno de ellos.
Si desea intentar que esto funcione, aún puede pedirnos ayuda mientras intenta implementar este tipo de solución. Lo principal a tener en cuenta es que el problema es demasiado grande por sí solo para que la respuesta se proporcione en un conveniente formato de preguntas y respuestas. Es necesario que haya invertido una cantidad significativa de tiempo investigando el tema y abordarnos con problemas lógicos específicos que haya encontrado durante su implementación. El propósito de estas preguntas y respuestas es brindarle una mejor comprensión del panorama general y ayudarlo a comprender por qué no podemos responder una pregunta tan amplia como esta.
¡Ayúdanos a mantener Internet seguro! :)
fuente
Ya sea que esté ejecutando un recursor DNS abierto o un servidor DNS autorizado, el problema es el mismo y la mayoría de las soluciones posibles también son las mismas.
La mejor solucion
Las cookies DNS son un estándar propuesto que brinda a los servidores DNS una manera de exigir a los clientes que envíen una cookie para demostrar que la dirección IP del cliente no ha sido falsificada. Esto costará un viaje de ida y vuelta adicional para la primera búsqueda, que es la sobrecarga más baja que cualquier solución podría ofrecer.
Reserva para clientes mayores
Debido a que las cookies de DNS aún no están estandarizadas, por supuesto será necesario admitir clientes más antiguos ahora y en los años venideros.
Puede calificar las solicitudes de límite de clientes sin soporte de cookies DNS. Pero los límites de velocidad hacen que sea más fácil para un atacante hacer DoS su servidor DNS. Tenga en cuenta que algunos servidores DNS tienen una función de límite de velocidad diseñada solo para servidores DNS autorizados. Como está preguntando acerca de un solucionador recursivo, tales implementaciones de limitación de velocidad pueden no ser aplicables en su caso. El límite de velocidad por diseño se convertirá en el cuello de botella para su servidor y, por lo tanto, un atacante deberá enviarle menos tráfico para que se eliminen las solicitudes legítimas de lo que lo haría si no hubiera un límite de velocidad.
Una ventaja de los límites de velocidad es que en caso de que un atacante inunde su servidor DNS con solicitudes DNS, es más probable que le quede capacidad que le permitirá enviar mensajes al servidor e investigar la situación. Además, los límites de velocidad pueden diseñarse para eliminar principalmente las solicitudes de IP de clientes que envían muchas solicitudes, lo que puede ser suficiente para protegerlo contra DoS de los atacantes que no tienen acceso a IP de clientes falsos.
Por esas razones, un límite de velocidad un poco por debajo de su capacidad real puede ser una buena idea, incluso si en realidad no protege contra la amplificación.
Usando TCP
Es posible forzar a un cliente a utilizar TCP enviando un código de error que indica que la respuesta es demasiado grande para UDP. Esto tiene un par de inconvenientes. Cuesta dos viajes de ida y vuelta adicionales. Y algunos clientes defectuosos no lo admiten.
El costo de dos viajes de ida y vuelta adicionales se puede limitar solo a la primera solicitud con este enfoque:
Cuando la IP del cliente no ha sido confirmada, el servidor DNS puede enviar una respuesta truncada para obligar al cliente a cambiar a TCP. La respuesta truncada puede ser tan corta como la solicitud (o más corta si el cliente usa EDNS0 y la respuesta no), lo que elimina la amplificación.
Cualquier IP de cliente que complete un protocolo de enlace TCP y envíe una solicitud de DNS en la conexión se puede incluir temporalmente en la lista blanca. Una vez en la lista blanca, esa IP puede enviar consultas UDP y recibir respuestas UDP de hasta 512 bytes (4096 bytes si se usa EDNS0). Si una respuesta UDP desencadena un mensaje de error ICMP, la IP se elimina de la lista blanca nuevamente.
El método también se puede revertir usando una lista negra, lo que significa que las direcciones IP de los clientes pueden realizar consultas a través de UDP de forma predeterminada, pero cualquier mensaje de error ICMP hace que la IP se ponga en una lista negra que necesita una consulta TCP para salir de la lista negra.
Un mapa de bits que cubra todas las direcciones IPv4 relevantes podría almacenarse en 444 MB de memoria. Las direcciones IPv6 tendrían que almacenarse de alguna otra manera.
No sé si algún servidor DNS ha implementado este enfoque.
También se ha informado que algunas pilas TCP pueden explotarse en ataques de amplificación. Sin embargo, eso se aplica a cualquier servicio basado en TCP y no solo a DNS. Dichas vulnerabilidades deben mitigarse actualizando a una versión del kernel donde la pila TCP ha sido reparada para no enviar más de un paquete en respuesta a un paquete SYN.
fuente
Deliberately open recursive DNS servers are outside the scope of this document.
Por ahora he agregado una advertencia al respecto. Debería probar si es posible habilitar la limitación de velocidad en Bind configurado como solucionador recursivo, y si se comportará correctamente.