Cómo habilitar Trace Logging para distintos componentes en Windows Vista/Windows Server 2008

Hola, soy Tolu Igbon, del equipo de Directorio Activo. Hoy vamos a hablar sobre cómo habilitar trace logging para diferentes componentes relacionados con Directorio Activo tanto en Windows Vista como en Windows Server 2008.

La herramienta Tracelog: https://msdn.microsoft.com/en-us/library/ms797927.aspx   se introdujo con el kit de recursos de Windows 2000.

Esta utilidad permite habilitar “event trace logging”, (un especie de logging detallado) de distintos componentes de Windows a la hora de intentar resolver problemas (por ejemplo autenticación Kerberos, acceso LDAP, etc).

Para interpretar los “event trace logs” (.etl) generados se necesitan otras herramientas como:

La novedad real para Vista/2008 es que ha aumentado de manera significativa el numero de proveedores con los cuales podemos realizar este tipo de “logging”.

Aquí os proporcionamos unos ejemplos de cómo generar logging para componentes relacionados con Directorio Activo.


Cliente LDAP

En primer lugar, creamos una nueva clave de registro:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ ldap\Tracing\ProcessName

ProcessName es el nombre del proceso que queremos “tracear” (por ejemplo MMC.exe).

Dentro de esta clave, podemos crear un valor opcional de tipo DWORD llamado PID. (Si establecemos este valor a un PID concreto, solo se traceará la instancia de la aplicación con este PID).

Para habilitar el tracing, ejecutamos el siguiente comando:

tracelog.exe -start <sessionname> - guid #<guid for ldap tracing provider> -f <filename> -flag <traceFlags>

sessionname es un nombre arbitrario que utilizamos para identificar la session de tracing (tendremos que hacer referencia al mismo identificador cuando terminemos la sesión).

El GUID para el proveedor de tracing LDAP es "099614a5-5dd7-4788-8bc9-e29f43db28fc".

filename especifica el archive de registro donde se generarán los logs.

traceFlags puede ser una combinación de los siguientes valores:

DEBUG_TRACE1

0x00000001

DEBUG_TRACE2

0x00000002

DEBUG_REFCNT

0x00000004

DEBUG_HEAP

0x00000008

DEBUG_CACHE

0x00000010

DEBUG_SSL

0x00000020

DEBUG_SPEWSEARCH

0x00000040

DEBUG_SERVERDOWN

0x00000080

DEBUG_CONNECT

0x00000100

DEBUG_RECONNECT

0x00000200

DEBUG_RECEIVEDATA

0x00000400

DEBUG_BYTES_SENT

0x00000800

DEBUG_EOM

0x00001000

DEBUG_BER

0x00002000

DEBUG_OUTMEMORY

0x00004000

DEBUG_CONTROLS

0x00008000

DEBUG_BYTES_RECEIVED

0x00010000

DEBUG_CLDAP

0x00020000

DEBUG_FILTER

0x00040000

DEBUG_BIND

0x00080000

DEBUG_NETWORK_ERRORS

0x00100000

DEBUG_SCRATCH

0x00200000

DEBUG_PARSE

0x00400000

DEBUG_REFERRALS

0x00800000

DEBUG_REQUEST

0x01000000

DEBUG_CONNECTION

0x02000000

DEBUG_INIT_TERM

0x04000000

DEBUG_API_ERRORS

0x08000000

DEBUG_ERRORS

0x10000000

Para detener el tracing, ejecutamos el siguiente comando:

tracelog.exe -stop <sessionname>

Ejemplo práctico

Un administrador recibe un error inesperado en una aplicación que establece contraseñas para cuentas de Usuario.

Decide habilitar tracing para APP1.exe mediante los siguientes pasos:

1. Crear la clave de registro

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ ldap\Tracing\App1.exe

y habilitar una session de tracing mediante el siguiente comando:

C:\>tracelog.exe -start ldaptrace -guid #099614a5-5dd7-4788-8bc9-e29f43db28fc -f .\ldap.etl -flag 0x80000

2. Una vez ejecutado este comando, se escribirán mensajes de tipo DEBUG_BIND en el log .\ldap.etl.

3. Ejecutamos App1.exe para reproducir el comportamiento inesperado.

4. Detenemos la session de tracing:

C:\>tracelog.exe -stop ldaptrace

5. Eliminamos la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ ldap\Tracing\App1.exe para que ningún otro usuario pueda obtener información de tracing de App1.exe.

6. Utilizamos otra herramienta como Tracerpt.exe para interpreter la información del log de tracing generado:

C:\>tracerpt.exe .\ldap.etl -o -report

Autenticación Kerberos

Habilitar el “tracing detallado” de kerberos mediante el siguiente comando

tracelog.exe -kd -rt -start kerb - guid #6B510852-3583-4e2d-AFFE-A67F9F223438 -f .\kerb.etl -flags 0x43 -ft 1

Para detener el logging, una vez reproducido el problema, ejecutar el siguiente comando:

tracelog.exe -stop kerb

Autenticación NTLM

Para habilitar el logging:

tracelog.exe -kd -rt -start ntlm - guid #5BBB6C18-AA45-49b1-A15F-085F7ED0AA90 -f .\ntlm.etl -flags 0x15003 -ft 1

Para detener el logging:

tracelog -stop ntlm

KDC

Para habilitar logging en el KDC (el servicio de validación y distribución de tickets kerberos en un DC):

tracelog.exe -kd -rt -start kdc - guid #1BBA8B19-7F31-43c0-9643-6E911F79A06B -f .\kdc.etl -flags 0x803 -ft 1

Para detener el logging:

tracelog.exe -stop kdc

Usando el editor del registro

Tambien podemos habilitar el logging a través del registro de Windows:

Method

Registry key setting

NTLM

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0

· Value name: NtLmInfoLevel

· Value type: DWORD

· Value data: c0015003

Kerberos

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

· Value name: KerbDebugLevel

· Value type: DWORD

· Value data: c0000043

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos

· Value name: LogToFile

· Value type: DWORD

· Value data: 00000001

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

· Value name: LogToFile

· Value type: DWORD

· Value data: 00000001

KDC

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc

· Value name: KdcDebugLevel

· Value type: DWORD

· Value data: c0000803

Ubicación de los ficheros de salida

Si habilitamos el logging mediante tracelog.exe se generarán los archivos correspondientes de registro, kerb.etl/kdc.etl/ntlm.etl en el directorio desde donde hemos ejecutado el comando

Si lo hemos habilitado en el registro, los archivos se generarán en las siguientes ubicaciones:

  • NTLM: %systemroot%\tracing\msv1_0
  • Kerberos: %systemroot%\tracing\kerberos
  • KDC: %systemroot%\tracing\kdcsvc

Esperamos que esta información os pueda resultar de utilidad a la hora de buscar las posibles causas de problemas relacionados con Directorio Activo.

Tolu Igbon