Restringir el tráfico RPC de los Controladores de Dominio a un puerto o puertos determinados.


Como sabreis, gran parte de la comunicación entre Controladores de Dominio (DC), se realiza a través de RPC (técnica para la comunicación entre procesos en una o más computadoras conectadas a una red). Este tráfico RPC puede ser motivado por distintos servicios que se ejecuten en nuestros DC, como pueden ser:

  • DHCP.
  • Replicación de Directorio Activo.
  • Replicación FRS.
  • WINS.
  • Promoción de un Controlador de Dominio,
  • etc.

¿Cómo funciona RPC?

Para empezar una comunicación RPC,  el cliente se conecta al puerto TCP 135 del servidor y solicita un puerto al End Point Mapper (EPM). El EPM del servidor reserva un puerto, denominado puerto dinámico, para este cliente y se lo envía. A partir de este punto, el cliente abre una nueva conexión TCP a dicho puerto del servidor y comienza la comunicación. Aqui os dejo un gráfico sobre un proceso Cliente/Servidor de RPC:

Estos puertos dinámicos RPC, también conocidos como puertos efímeros se distribuyen de la siguiente manera, dependiendo del sistema operativo:

  • Hasta Windows 2003/XP (del 1025 al 5000) = 3976 puertos en total.
  • Desde Windows 2008/Vista (del 49152 al 65535) = 16.384 puertos en total.

Hasta aqui todo correcto, pero ¿qué ocurre en zonas desmilitarizadas o DMZ dónde tenemos restringidos determinado tráfico y puertos?

Los puertos que generalmente utilizan los Controladores de Dominio en los servicios básicos son los siguientes:

Service Port/protocol
RPC endpoint mapper 135/tcp, 135/udp
Network basic input/output system (NetBIOS) name service 137/tcp, 137/udp
NetBIOS datagram service 138/udp
NetBIOS session service 139/tcp
RPC dynamic assignment Win 2k/2003:1024-65535/tcp
Win 2008+:49152-65535/tcp
Server message block (SMB) over IP (Microsoft-DS) 445/tcp, 445/udp
Lightweight Directory Access Protocol (LDAP) 389/tcp
LDAP ping 389/udp
LDAP over SSL 636/tcp
Global catalog LDAP 3268/tcp
Global catalog LDAP over SSL 3269/tcp
Kerberos 88/tcp, 88/udp
Domain Name Service (DNS) 53/tcp1, 53/udp

Asi que nuestros Firewalls tendrán que tener abierto estos puertos para la comunicación entre DCs y clientes pero ¿qué ocurre con el tráfico RPC si hemos dicho que es dinámico? El hecho de tener que abrir un rango tan grande de puertos en el Firewall implica aumentar el riesgo de ataque ya que son 16384 puertos los que se exponen. Posible solución: restringir dicho tráfico a un número fijo de puerto o puertos.

Nosotros, por ejemplo, lo que queremos es forzar el tráfico RPC entre los puertos 5000-5100. Recordar, que es necesario y como mínimo, dejar un rango de 100 puertos consecutivos para un mejor funcionamiento y evitar cuellos de botella.

RPCPORTS00001

Tenemos tres métodos de realizarlo, dependerá de los servicios que queramos restringir:

Método 1 – Entradas en el registro sobre la configuración de los servicios de replicación de Directorio Activo.

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters y añadimos la clave DWORD TCP/IP Port con el valor del puerto que queremos utilizar (incluyendo los espacios en blanco).
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters y añadimos la clave DWORD DCTcpipPort con el valor del puerto que queremos utilizar (incluyendo los espacios en blanco).

Método 2 – Para configurar en el Servicio Firewall de Windows el rango de puertos (para Windows 2008/Vista en adelante):

  • netsh int ipv4 set dynamicport tcp start=5000 num=1000
  • netsh int ipv4 set dynamicport udp start=5000 num=1000
  • netsh int ipv6 set dynamicport tcp start=5000 num=1000
  • netsh int ipv6 set dynamicport udp start=5000 num=1000

RPCPORTS00002

Y para verificar que está configurado:

  • netsh int ipv4 show dynamicport tcp
  • netsh int ipv4 show dynamicport udp
  • netsh int ipv6 show dynamicport tcp
  • netsh int ipv6 show dynamicport udp

RPCPORTS00003

Método 3 – Para los servicios de comunicaciones de Windows. También afecta a las comunicaciones de Directorio Activo. Volvemos a trabajar en el Registro:

 HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc

  1. REG_MULTI_SZ: 5000-5100
    PortsInternetAvailable: REG_SZ: Y
    UseInternetPorts: REG_SZ: Y

Espero que os sea util. En un próximo post utilizaremos la herramienta “PortQuery” para verificar el tráfico RPC entre controladores de dominio.

Bibliografia:

Anuncios

Publicado el 11/02/2014 en Directorio Activo, Seguridad, Servicios Windows, Windows 2008, Windows 2008 R2, Windows 2012, Windows 2012 R2, Windows 7, Windows 8, Windows 8.1 y etiquetado en . Guarda el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

masrobeznoquenunca

Comparto lo que hago y lo que veo.

El camino de un ITPro

El camino de un ITPro

adumont

Just another WordPress.com weblog

Marco Antonio's space

Una mirada dentro de mis ratos libres...

Marcelo Ruiz

Network and SocialMedia

A Digital Frontier...

Blog personal de Robert Garrandés Simancas ("Versión Beta")

enero11

Literatura para romper el tiempo.

A %d blogueros les gusta esto: