SecurityEsta semana he recibido varias consultas por este tema y generalmente es algo que siempre hay que chequear cuando uno tiene varias oficinas y por algun motivo no todas tienen una domain controller, ya que cuando tenemos algun problema de red, ya sea de un router, un firewall o incluso nuestro proveedor ISP, podemos tener problemas para validar nuestros usuarios y sus equipos en nuestra red.

Como sabemos la comunicación de Active Directory se lleva a cabo utilizando varios puertos. Estos puertos son requeridos tanto por las computadoras cliente como por los controladores de dominio. Como ejemplo, cuando una computadora cliente intenta encontrar un controlador de dominio, siempre envía una consulta DNS a través del puerto 53 para encontrar el nombre del controlador de dominio en el dominio.

La siguiente es la lista de servicios y sus puertos utilizados para la comunicación de Active Directory:

  • Puerto UDP 88 para autenticación Kerberos
  • Puerto UDP y TCP 135 para controladores de dominio a controlador de dominio y operaciones de controlador de dominio a cliente
  • Puerto TCP 139 y UDP 138 para el servicio de replicación de archivos entre los controladores de dominio
  • Puerto UDP 389 para que LDAP maneje las consultas normales desde las computadoras cliente a los controladores de dominio
  • Puerto TCP y UDP 445 para el servicio de replicación de archivos
  • Puerto TCP y UDP 464 para cambio de contraseña de Kerberos
  • Puerto TCP 3268 y 3269 para el Catálogo global del cliente al controlador de dominio.
    Puerto TCP y UDP Puerto 53 para DNS del cliente al controlador de dominio y controlador de dominio a controlador de dominio.

Si se abren los puertos en Firewall entre las computadoras cliente y los controladores de dominio, o entre los controladores de dominio, Active Directory funcionará correctamente.

Tambien los podemos chequear por medio de un script. Para esto vamos a utilizar el PortQry Command Line Port Scanner Version 2.0 que podemos bajar del sitio de Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=17148 

Espero les sea de interes y utilidad. Saludos, Roberto Di Lello

:::::::::::::::::::::::::::: BEGIN SCRIPT :::::::::::::::::::::::::
@ECHO OFF
:: NAME: DCPortTest.CMD v1.0
:: PURPOSE:  Test connectivity from one DC to one or more remote DCs
:: using PORTQRY utility.
:: The SERVERS.TXT contains a list of servers (one server per line)
:: to check connectivity to.

ECHO DATE: %DATE% > DC_PORTQRY.TXT
ECHO TIME: %TIME% >> DC_PORTQRY.TXT
ECHO USER: %USERNAME% >> DC_PORTQRY.TXT
ECHO COMPUTER: %COMPUTERNAME% >> DC_PORTQRY.TXT
ECHO. >> DC_PORTQRY.TXT
ECHO. >> DC_PORTQRY.TXT
ECHO. >> DC_PORTQRY.TXT
FOR /F "tokens=1" %%i in (servers.txt) DO (
  ECHO ::::::::::::::::::::::  %%i  :::::::::::::::::::::::::: >> DC_PORTQRY.TXT
  ECHO Testing %%i
  ECHO. >> DC_PORTQRY.TXT
  PORTQRY -n %%i -e 88 -p TCP | findstr /i "88"  >> DC_PORTQRY.TXT
  PORTQRY -n %%i -e 445 -p TCP | findstr /i "445" >> DC_PORTQRY.TXT
  PORTQRY -n %%i -e 389 -p TCP | findstr /i "389" >> DC_PORTQRY.TXT
  PORTQRY -n %%i -e 3268 -p TCP | findstr /i "3268"  >> DC_PORTQRY.TXT
  PORTQRY -n %%i -e 135 -p TCP | findstr /i "135" >> DC_PORTQRY.TXT
  ECHO. >> DC_PORTQRY.TXT 
  ECHO. >> DC_PORTQRY.TXT 
)
:::::::::::::::::::::::: END SCRIPT :::::::::::::::::::::::::

Y la salida o el resultado seria un txt con esta informacion:

DATE: Mon 04/20/2018
TIME: 12:15:28.37
USER: a_robertoDL01
COMPUTER: RADWKS001
 
::::::::::::::::::::::  RADSRVDS001  :::::::::::::::::::::::::: 
TCP port 88 (kerberos service): LISTENING
TCP port 445 (microsoft-ds service): LISTENING
TCP port 389 (ldap service): LISTENING
Sending LDAP query to TCP port 389…
TCP port 3268 (msft-gc service): LISTENING
Sending LDAP query to TCP port 3268…
TCP port 135 (epmap service): LISTENING

www.radians.com.ar

Avatar photo

By Roberto Di Lello

Hola, soy Roberto Di Lello trabajo como Consultor Senior en Infraestructura, especializado en Tecnologias Microsoft con mas de 25 años en la industria. He sido galardonado como MS-MVP en Active Directory-Enterprise Mobility por 10 años, y actualmente soy MVP Windows Insider, ademas de poseer otras certificaciones de Microsoft. He trabajado en distintos projectos que involucran Migraciones, Implementaciones, y soporte de Active Directory y Microsoft Exchange, y en los ultimos años me he desempeñado armando equipos de trabajo para diferentes paises y areas de sistemas, he planificado a distintas migraciones a datacenters (ambiente cloud y mixtos). He tenido la oportunidad de participar como miembro del staff de Microsoft en eventos internacionales como ser TechEd NorteAmerica y MS Ignite (NA) al ser Trainer Certificado por Microsoft (MCT).

6 thoughts on “Active Directory Domain Services (ADDS) como verificar los puertos de comunicacion del Domain Controller {HowTo}”
  1. Hola Robert, al correr el script, esto es lo que obtengo:
    DATE: 04/feb./2022
    TIME: 11:03:41.79
    USER: aposada
    COMPUTER: INFRAESTRUCTURA

    :::::::::::::::::::::: VMSRV13.crisa.local ::::::::::::::::::::::::::
    Que problema hay?, Aun que esta mal dicho, solo tengo un PDC basado en Windows Server 2008 R2

  2. Muchas gracias Luis por tu comentario. Mandame un mail si queres y vemos que problema tenes y como seguimos.
    Te pido que me ayudes a difundir el blog! Y si tienes alguna consulta, no dudes en escribirme. Saludos.

  3. Muchas gracias alfredo por tu comentario. No te da ningun error? tener el archivo servers.txt no? si ejecutar el portqry en un CMD te da algun error?
    Te pido que me ayudes a difundir el blog! Si tienes alguna consulta, no dudes en escribirme. Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.