Este artículo está dirigido solo a agentes de soporte técnico y profesionales de TI. Si busca ayuda para un problema, haga una pregunta en Microsoft Community.

Introducción

El propósito de este artículo de ayuda es proporcionar asistencia sobre cómo reducir la superficie expuesta a ataques de amplificación del protocolo de datagrama de usuario (UDP). En el artículo se incluye la siguiente información:

  • Información general sobre UDP y los ataques de amplificación de UDP.

  • Cómo configurar un grupo de seguridad de red (NSG) de Azure para acceso a Internet de menor privilegios para puertos y protocolos.

  • Cómo configurar los servicios para quitar la superficie expuesta a ataques de amplificación de UDP si el puerto se necesita para el Servicio de nombre de dominio (DNS) recursivo o los servidores de protocolo de tiempo de red (NTP).

  • Cómo ejecutar un análisis de Nmap para comprobar la configuración del grupo de seguridad de red.

Los usuarios deben seguir las instrucciones que se indican en este artículo para cerrar las conexiones UDP entrantes y reducir la superficie expuesta a ataques.

Resumen

El protocolo de datagrama de usuario (UDP) es un protocolo sin conexión. Cuando se permite que UDP tenga acceso entrante a Azure Cloud Services, crea una superficie expuesta a ataques que se puede usar para un ataque de denegación de servicio de reflexión distribuido (DRDoS) en máquinas virtuales (VM). El ataque de amplificación basado en UDP es una forma de ataque de denegación de servicio distribuido (DDoS) que depende en servicios UDP accesibles públicamente y factores de amplificación de ancho de banda (BAF) para inundar el sistema de una víctima con tráfico UDP.

Nota De manera predeterminada, si ha creado un NSG, la configuración cierra todos los puertos, incluido UDP. Además, Azure cuenta con protección contra DDOS en el nivel de plataforma. Por lo tanto, los usuarios también pueden agregar DDOS en su capa de servicio.

Para más información sobre este tipo de ataque, consulte https://www.us-cert.gov/ncas/alerts/TA14-017A.

El ataque de amplificación basado en UDP es una forma de un ataque de denegación de servicio (DDoS) distribuido.

Los siguientes puertos comunes se suelen usar como parte de estos ataques de reflexión de UDP: 17 (QOTD), 19 (CharGEN), 53 (DNS), 69 (TFTP), 123(NTP), 161 (SNMP), 389 (CLDAP), 1900 (SSDP), 9987 (interfaz de destino DSM/SCM), 11211 (almacenado en la memoria caché). Los usuarios deben evaluar si tienen que exponer públicamente estos puertos a Internet y luego cerrar todos los puertos UDP que no sean absolutamente necesarios. En particular, los usuarios que tengan UDP entrante para el puerto 53 (DNS) o el puerto 123 (NTP) deberían quitar las configuraciones vulnerables (según se indican en este artículo). Esto se debe a que estos dos puertos se usan con mucha frecuencia para este tipo de ataque.

Protocolo

Puerto UDP

Configuración vulnerable

DNS

53

DNS recursivo abierto a Internet público

NTP

123

Consulta abierta y comandos monlist abiertos

Acción recomendada

Los siguientes pasos ayudan a mitigar el efecto del ataque a UDP:

  1. Evalúe la necesidad de qué servicios se deben exponer a Internet, determine qué puertos UDP entrantes son absolutamente necesarios para el funcionamiento correcto del servicio y cierre todos los puertos UDP no esenciales.

  2. Los usuarios que necesiten que estos puertos UDP permanezcan abiertos pueden consultar las secciones específicas de este artículo para obtener recomendaciones relacionadas con la escucha NTP y DNS en los puertos UDP. Para todos los demás puertos, consulte la sección Puertos UDP que se deben cerrar.

El servicio monlist en NTP proporciona la capacidad de ejecutar consultas para obtener información de depuración y solo se debería habilitar temporalmente para realizar la depuración de un problema en el servicio. También se puede usar para llevar a cabo ataques de reflexión de UDP. En los paquetes de NTP Daemon (NTPD) anteriores a 4.2.8, este servicio está habilitado de manera predeterminada.  Los usuarios debería seguir estas instrucciones:

  • Los usuarios que necesitan monlist deberían configurar un NSG para permitir acceso solo a las direcciones IP necesarias.

  • Los usuarios que no necesitan monlist y que ejecutan paquetes NTPD de Linux anteriores a la versión 4.2.8 deberían actualizar el paquete a una versión actual y asegurarse de que monlist no esté habilitado. Los usuarios que no pueden actualizar el paquete a una versión más reciente tendrán que configurar el servicio según los siguientes pasos de corrección:

  1. Comprobar la versión del paquete NTPD:

#sudo -i ntpq -c rv

  1. Si la versión del paquete NTPD es anterior a 4.7p26, siga estos pasos:

#vi /etc/ntp.conf

  1. Si aún no existen, agregue estas líneas:

restrict -4 default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

  1. Reinicie el servicio NTP:

# service ntp restart [Debian/ Ubuntu]

# service ntpd restart [Redhat/ Centos]

Nota 1: Si instaló el paquete NTPD en Windows y tiene puertos abiertos, tendrá que llevar a cabo los pasos para la acción de corrección.

Nota 2: Para más detalles, consulte https://www.us-cert.gov/ncas/alerts/TA14-013A.

Nota 3: Los paquetes NTP normales que se usan para la sincronización de la hora (modo 3 y modo 4) no se ven afectados. Esto significa que es seguro sincronizar la hora y que el servidor solo proporcione la hora.

La ejecución de una resolución recursiva de DNS abierta a Internet puede provocar un ataque UDP contra el servicio propio del usuario y los servicios de otros usuarios. Los usuarios deberían evaluar la necesidad real de tener en ejecución un servicio DNS. Si no es necesario,  deberían denegar todo el acceso al puerto 53 o desinstalar el servicio DNS según las instrucciones específicas de su sistema operativo e implementación de DNS.

Los usuarios que sí requieran la ejecución de un servicio DNS para proporcionar una resolución de nombres autoritativa, pero no requieren recursividad DNS, deberían deshabilitar esta característica según las instrucciones específicas de su sistema operativo e implementación de DNS (según se proporcionan más adelante en este artículo). Asimismo, recomendamos encarecidamente que en todos los casos se restrinja el acceso al puerto 53 en el NSG a un conjunto específico de direcciones IP necesarias para el funcionamiento del servicio. Para ello, configure el nivel mínimo de privilegios.

Windows: Deshabilite la configuración de la resolución recursiva de DNS en el servidor DNS para Windows Server 2012, 2016

  1. Abra Administrador de DNS (seleccione Inicio, elija Herramientas administrativas y luego seleccione DNS).

  2. En el árbol de la consola, haga clic con el botón derecho en el servidor DNS aplicable y luego seleccione Propiedades.

  3. Seleccione la pestaña Opciones avanzadas.

  4. En Opciones de servidor, asegúrese de activar la casilla Deshabilitar recursividad.

  5. Reinicie el servicio DNS (desde el panel de control Servicios).

Linux: Deshabilite la recursividad DNS en el servidor Bind

  1. Conéctese al servidor a través de SSH (shell seguro) con las credenciales raíz.

  2. Después de conectarse al servidor, compruebe el archivo named.conf para ver si existe recursividad DNS y examine la configuración:

    cat /etc/named.conf | grep "recursion"

  3. Abra el archivo named.conf con cualquier editor de texto y compruebe la configuración para ver si existe recursividad. Para ello, use el siguiente comando:

    #vi /etc/named.conf

  4. Cambie la configuración solo de la recursividad DNS externa y busque la sección con el nombre “external”. Si la sección no está disponible, puede agregar las siguientes líneas al archivo named.conf para deshabilitar la recursividad DNS externa. Coloque las siguientes líneas en la sección “options”:

    allow-transfer {"none";};

    allow-recursion {"none";};

    recursion no;

    Si ya cuenta con una sección externa, puede cambiar la configuración al modificar el valor recursion en yes o no, en función de sus necesidades.

  5. Después de configurar los cambios, guarde el archivo.

  6. Reinicie el servidor DNS para que los cambios surtan efecto. Ejecute el siguiente comando para reiniciar el servicio DNS:

    service named restart

    Nota: Si usa otro servidor DNS patentado, consulte la documentación de producto correspondiente para obtener información sobre cómo deshabilitar la configuración de recursividad de DNS.

Los usuarios deberían cerrar los puertos UDP entrantes de alto riesgo. Para ello, siga las instrucciones que se indican en esta sección. Recomendamos que los usuarios cierren las conexiones entrantes desde Internet en todos los puertos UDP.

Los usuarios que tengan que abrir un puerto UDP específico a Internet deberían abrir solo ese puerto y restringir el acceso a los rangos de IP que sean estrictamente necesarios (es decir, no exponer los puertos UDP a todo Internet).

Para cerrar los puertos UDP, los usuarios puede tomar cualquiera de las siguientes medidas (o ambas):

  • Actualizar la plantilla ARM para deshabilitar puertos UDP entrantes. Esto requiere la reimplementación de la plantilla NSG. No obstante, garantiza que las implementaciones futuras que usen esta plantilla tendrán la configuración de seguridad correcta.

  • Actualizar las reglas NSG para restringir el acceso a la red. Consulte Azure Portal, Azure Powershell, Azure CLI.

Recursos: Información sobre NSG, Administrar un grupo de seguridad de red (NSG)

Buscar puertos UDP abiertos a Internet

Los usuarios deberían comprobar que los servicios están configurados para no permitir conexiones UDP entrantes. Para ello, deben revisar sus reglas de NSG según las instrucciones que se proporcionan en Administración de grupos de seguridad de red. Los usuarios también pueden ejecutar un análisis Nmap externo para comprobar que todos los puertos UDP están cerrados correctamente.

Pasos para completar un análisis Nmap

Importante

Los usuarios solo deberían analizar dentro de sus propios rangos de direcciones IP para asegurarse de que otros usuarios no se vean afectados. Para ello, consulte Penetration Testing Rule of Engagement y también asegúrese de que el análisis cumple los términos de servicio de Microsoft Online.

  1. Instale Nmap.

  2. Compruebe la configuración del firewall para asegurarse de que permite tráfico UDP saliente para ejecutar el análisis.

  3. Siga las instrucciones de Nmap de esta sección sobre cómo realizar una análisis. Los usuarios también pueden usar la GUI de Zenmap (el icono se instala en el escritorio cuando se instala Windows Nmap).

    1. Cree un archivo .csv con una lista de direcciones IP que se debe analizar para un puerto específico (por ejemplo, puerto 69).

    2. Ejecute el  comando Nmap. Puede incluir estas opciones: -sUV (puertos UDP) -T4 -p {puerto que se debe analizar} -Pn {tratar todos los hosts como online} -iL {lista de entrada} -oL {lista de salida} & (marca opcional que se ejecutará en segundo plano):

      nmap -sUV -T4 -Pn -p 69 -iL filename.csv -oX filename.xml &

    3. Compruebe los puertos que se usan con más frecuencia en los ataques de reflexión:

      nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 -iL filename.csv -oX filename.xml &

    4. Revise los resultados para identificar los puertos abiertos.

  1. Instale Nmap a través del administrador de paquetes o desde https://nmap.org/download.html.

Ubuntu / Debian :

sudo apt-get update
sudo apt-get install nmap

Redhat / CentOS:

yum update
yum install nmap [Redhat/ Centos]

  1. Use los siguientes comandos Nmap para comprobar los puertos UDP conocidos:

    1. Cree un archivo .csv con una lista de direcciones IP que se debe analizar para un puerto específico (por ejemplo, puerto 69).

    2. Cargue el archivo .csv en la VM de Linux mediante el comando pscp:

      pscp filename.csv admin@remotehost:filename.csv

    3. Ejecute el comando sudo nmap con las opciones: -sUV (puertos UDP) -T4 -p {puerto que se debe analizar} -Pn {tratar todos los hosts como online} -iL {lista de entrada} -oL {lista de salida} & (marca opcional que se ejecutará en segundo plano)::

      sudo nmap -sUV -T4 -Pn -p 69 -iL filename.csv -oX filename.xml &

    4. Compruebe los puertos que se usan con más frecuencia en los ataques de reflexión:

      sudo nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 -iL filename.csv -oX filename.xml &

    5. Cuando haya terminado el proceso, descargue el archivo mediante el comando pscp.

    6. Revise los resultados para identificar los puertos abiertos.

Ejemplos de análisis Nmap

Nota

Si tiene previsto automatizar el proceso de análisis mediante los comandos de estos ejemplos, tenga en cuenta que los análisis de UDP pueden tardar bastante tiempo porque el analizador a veces tiene que esperar para detectar si el tráfico se devuelve (esto no se garantiza). Para lograr un rendimiento óptimo, cree un análisis para cada puerto.

Ejecute un análisis de Windows desde la línea de comandos con todos los puertos cerrados.

Nota Dado que se trata de un análisis UDP de Nmap, "open|filtered" se puede interpretar como "closed".

El siguiente comando ejecuta un análisis de Windows:

C:\Users\user\DeskTop>nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 23.36.53.224

Examen de Windows nmap

Ejecute un análisis Linux para 1.1.1.1 con DNS abierto. Observe que el puerto DNS 53 no dice "open|filtered" porque esto indicaría que el puerto está cerrado. Sin embargo, los demás puertos se muestran como "open|filtered." Esto indica que están cerrados.

El siguiente comando ejecuta un análisis de Linux:

testuser@testUbuntu:~$ sudo nmap -sUV -T4 -Pn -p17,19,53,69,111,123,137,161,389,1900,5353,11211 1.1.1.1

Examen nmap Linux

Además, ejecute los siguientes scripts para comprobar si los servicios en los puertos 53, 123 y 389 están configurados de manera incorrecta.

Para los usuarios de Linux, cada comando debe tener el prefijo sudo.

Para analizar en busca de resoluciones recursivas de DNS:

nmap -sUV -Pn -T4 -p 53 --script=dns-recursion -iL <input_file> -oX <output_file>

Para una sola dirección IP:

nmap –sU –p53 –script=dns-recursion <Public IP address>

Las versiones de paquetes NTPD anteriores a 4.2.8 son vulnerables a los ataques de reflexión UDP a través de un comando monlist. Si se configura “restrict noquery”, un ataque de reflexión de monlist no funcionaría.

Script de Nmap para identificar la vulnerabilidad:

nmap -sUV -Pn -T4 -p 123 --script= ntp-monlist -iL <input_file> -oX <output_file>

Para una sola dirección IP:

nmap -sU -pU:123 -Pn -n --script=ntp-monlist <Public IP address>

nmap -sU -p389 -v -n -Pn <Public IP address>

Mostrar la información LDAP expuesta públicamente:

nmap -p 389 --script ldap-rootdse <Public IP address>

Preguntas más frecuentes

Esta configuración no se recomienda. Sin embargo, si el usuario tiene un servicio dependiente, debería agregar seguridad adicional mediante firmas según las siguientes instrucciones:

Los usuarios deberían usar los siguientes documentos sobre cómo configurar la sincronización de hora para sus VM de Azure. Si el usuario utiliza un paquete vulnerable para NTPD de Linux o Windows, debería actualizar a la versión actual.

Obtenga información sobre la solución de problemas mediante Azure Network Watcher: https://docs.microsoft.com/es-es/azure/network-watcher/network-watcher-connectivity-overview

No. Estos son los puertos estándares para los servicios UDP. Sin embargo, los servicios pueden escuchar en otro número de puerto o el servidor puede existir detrás de un equilibrador de carga que reenvía puertos desde otro puerto de origen.

Consulte UDP Amplification: https://www.us-cert.gov/ncas/alerts/TA14-017A

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a tu experiencia?

¡Gracias por sus comentarios!

×