Guía para DNS Abiertas Recursión Problemas de amplificación

El sistema DNS (Domain Name System) se utiliza para traducir los nombres de dominio como "example.com" a las correspondientes direcciones IP numéricas. La recusividad abierta de DNS es una característica activada por defecto en varios software con DNS.

El servicio de recursividad abierta de DNS puede usarse para dirigir ataques malintencionados en una red. Esto puede ocurrir cuando la configuración predeterminada de los servicios de DNS no se ha ajustado en la instalación. Cuando el servicio se usa maliciosamente puede enviar ataques distribuidos de denegación de servicios (DDoS) por parte de terceros con intenciones maliciosas. Esto puede evitarse al ajustar la configuración de DNS.

Cómo verificar si su servidor/dispositivo es vulnerable

Puede probar sus direcciones IP con los siguientes métodos (xx.xx.xx.xx es la dirección IP de su servidor):

1 - Usar dig:
# dig +nocmd +nocomment +nostats ANY iweb.com @xx.xx.xx.xx

Ejemplo del resultado para servidores vulnerables:
;iweb.com.            IN    ANY
iweb.com.        13409    IN    A    xx.xx.xx.xx
iweb.com.        85409    IN    NS    nsy.iweb.com.
iweb.com.        85409    IN    NS    nsz.iweb.com.
iweb.com.        85409    IN    NS    sub.domain.tld.
iweb.com.        85409    IN    NS    sub.domain.tld.
iweb.com.        85409    IN    NS    sub.domain.tld.
iweb.com.        85409    IN    NS    sub.domain.tld.
[...]

Otro resultado de ejemplo (normalmente para servidores con Windows) cuando se ha desactivado la recursividad, pero todavía el DNS devuelve la lista de los servidores DNS raíz. Esta configuración puede ser utilizada para realizar ataques de amplificación:

;iweb.com.            IN    ANY
.            3600    IN    NS    l.root-servers.net.
.            3600    IN    NS    j.root-servers.net.
.            3600    IN    NS    g.root-servers.net.
.            3600    IN    NS    i.root-servers.net.
.            3600    IN    NS    f.root-servers.net.
.            3600    IN    NS    k.root-servers.net.
[...]

Ejemplo del resultado para servidores no vulnerables:
;iweb.com.            IN    ANY


2 - Usar Nmap:
# sudo nmap -Pn --script=dns-recursion -sU -p53 xx.xx.xx.xx

Ejemplo del resultado para servidores vulnerables:
PORT   STATE SERVICE
53/udp open  domain
 |_dns-recursion: Recursividad parece estar habilitado

Ejemplo del resultado para servidores no vulnerables:

 - El DNS está activo, pero la recusividad no está disponible
PORT   STATE SERVICE
53/udp open  domain
Nmap done: 1 IP address (1 host up)

 - El servicio DNS está cerrado
PORT   STATE  SERVICE
53/udp closed domain

 - El servicio DNS está filtrado
PORT   STATE         SERVICE
53/udp open|filtered domain


La IP también podrían aparecer en el siguiente sitio web, pero no es una comprobación en tiempo real:
http://openresolverproject.org/

Solución:

dependiendo de sus necesidades, puede desactivar o restringir la recursividad abierta. Elija la mejor opción para su servidor y sistema operativo (Windows o Linux) y siga las instrucciones que se indican a continuación:

OPCIÓN A: si la recursividad de DNS puede desactivarse:

*) para un DNS con Microsoft Windows:

  • Deshabilite la recursividad en el servidor DNS: http://technet.microsoft.com/en-us/library/cc787602%28v=ws.10%29.aspx
  • Cambie el nombre del archivo "root hints cache" para evitar que se use la referencia a zonas de la raíz para ataques de amplificación DNS: Abra la carpeta %systemroot%\system32\dns y cambie el nombre de cache.dns por cache.dns.orig
  • Una vez que estas modificaciones se hayan hecho, debe reiniciar el servicio DNS.

*) para Windows Server con DNS Plesk:

  • Inicie sesión en su Plesk Panel como administrador.
  • En el menú de la izquierda, seleccione Server Management > la sección Tools & Settings (antes llamada Server).
  • En el panel principal, seleccione DNS Template Settings (antes llamada DNS Settings).
  • Seleccione la pestaña DNS Recursion.
  • Seleccione la opción Deny y haga clic en el botón Permitir para completar la operación.

*) para servidores Linux con BIND:

  • Edite el archivo /etc/named.conf y cambie las siguientes variables en la sección de  "options{" para proteger su servicio DNS:

    version "unknown";
    allow-transfer {none;};
    allow-recursion {none;};
    allow-query-cache {none;}; // for BIND 9.4+
    recursion no;
    additional-from-cache no;

  • Una vez que estas modificaciones se hayan hecho, debe reiniciar el servicio DNS.


OPCIÓN B: si necesita usar la recursividad en DNS para ofrecer servicios a sus clientes, iWeb le requiere que restrinja el alcance de uso a localhost, localnets y/o rangos IP de sus clientes.

*) para servidores con Microsoft Windows:

  • Los servidores con Windows que ejecuten la recursividad abierta en DNS puede utilizar el firewall de Windows para limitar el acceso a su servidor DNS y
    evitar que sea controlado.

        Configuración/reglas de firewall DNS TCP/UDP entrantes:
        *Local IP*: any
        *Remote IP - /These IPs:/*  Agregue todas sus direcciones IP de confianza
(otros servidores de su red).

  • Si el servidor tiene un dominio Active Directory de Windows, tendrá que agregar las IP fuente que utilice este servicio.

*) para Windows Server con DNS Plesk: (permitiendo localhost y localnets) 

  • Conéctese a tu servidor dedicado.
  • En el Menú Inicio, haga clic en Ejecutar y escriba el siguiente comando:
         notepad "%plesk_dir%dns\etc\named.user.conf"
  • Modifique el archivo para permitir la recursividad ("allow-recursion") a localnets en lugar de ninguna ("any").
  • Guarde y cierre el archivo. Los ajustes de las opciones se verán así:
         options { allow-transfer {  localhost; localnets; }; allow-recursion { localhost; localnets; }; listen-on-v6 { none; }; version none; additional-from-cache no; };
  • Reinicie el servicio named. En el Menú Inicio, como administrador, haga clic en Ejecutar y ejecute "cmd", luego escriba el comando siguiente en el símbolo del sistema:
         net stop named && net start named

*) para servidores Linux con BIND: (permitiendo localhost, localnets e IP específicas)

  • Edite el archivo /etc/named.conf y cambie las siguientes variables en las secciones acl "trusted" y "options{":

    recursion yes;
    acl "trusted"{
    192.168.0.0/16; // change IPs as required
    64.15.128.0/19; // change IPs as required
    localhost;
    localnets;
    };

    options{
    ...
    allow-query { trusted; }; // trusted could be replaced by any only if necessary
    allow-transfer { trusted; };
    allow-recursion { trusted;} ;
    allow-query-cache { trusted; }; // for BIND 9.4+
    additional-from-cache no;
    ...
    };

Referencias:

  1. http://www.publicsafety.gc.ca/cnt/rsrcs/cybr-ctr/2013/tr13-002-eng.aspx
¿Tiene más preguntas? Enviar una solicitud

0 Comentarios

El artículo está cerrado para comentarios.
Tecnología de Zendesk