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:
- Tracerpt: https://technet.microsoft.com/en-us/library/cc732700.aspx
- Tracefmt: https://msdn.microsoft.com/en-us/library/ms797564.aspx ,
- Traceview: https://msdn.microsoft.com/en-us/library/ms797981.aspx o
- Tracedmp: https://www.microsoft.com/downloads/details.aspx?familyid=8B7EE632-FB8C-4770-BF37-EED586469B2F&displaylang=en
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