Servidor d’hora (de temps) en Active Directory

Publicat el Deixar un comentari Etiquetes: , , ,

Esta entrada también está disponible en: Castellà

En un entorn d’Active Directory és molt important tenir l’hora correcta en tots els equips. I ja no només en els equips que pertanyen a l’Active Directory sinó en tots els dispositius que formen el sistema informàtic: switchs, NAS, cabines, sistemes de gestió, tallafocs, etc…. per poder tenir una foto clara en cas d’una actuació forense.

Últimament m’heu fet i m’he trobat moltes consultes referent a problemes derivats d’una mala sincronització de l’hora. Recordeu que un domini Active Directory es regeix per tiquets Kerberos per validació de permisos. Aquests tiquets, per defecte, tenen una vida de 5 minuts. Això vol dir que si tinc un desfàs horari més gran de 5 minuts tinc l’equip fora del domini. Si és una estació de treball el problema potser no és tant greu (que ho és perquè l’usuari no pot treballar), però si això em passa en un servidor de fitxers on tots els usuaris hi van a buscar i guardar informació, tinc un problema molt greu.

Per tant, no es pot obviar i deixar de banda o per defecte aquesta configuració. Ha de ser la primera cosa a fer en totes les instal·lacions després de crear el controlador d’Active Directory.

A continuació us deixo el vídeo explicatiu sobre el què en penso i com solucionar-ho.

Servidor d’hora autoritari

Aquest acostuma a ser un únic servidor a l’empresa. Personalment utilitzo un controlador d’Active Directory, al que s’han de fer unes petites modificacions en el registre, perquè vagi a buscar l’hora a l’exterior i la reparteixi a la resta d’equips mitjançant la sincronització del propi Active Directory.

Per la modificació d’aquests paràmetres, mitjançant l’Editor de Registre (regedit), localitzem la clau de registre del servei d’hora: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time.

Carpeta Config:

Paràmetre Valor Descripció
AnnounceFlags 0x00000004 (4) Marca el servidor d’hora com a servidor fiable, pels servidors membres o clients el valor és 10.
MaxAllowedPhaseOffset 300 Temps de desplaçament màxim (en segons) per intentar ajustar el rellotge utilitzant la velocitat de rellotge. Si és superior, s’ajusta directament. Recordeu que 300 segons correspon al desfàs de kerberos (5 minuts)
MaxNegPhaseCorrection 3600 Correcció d’hora negativa (endarrere) més gran, en segons, que pot fer. Pels equips de domini serà 0xFFFFFFFF que vol dir que sempre ha de fer la correcció de temps. Pel servidor autoritari deixar el valor a 54.000 (15 hores) és suficientment gran per corregir si hi ha un desfàs.
MaxPosPhaseCorrection 3600 Correcció d’hora positiva (endavant) més gran, en segons, que pot fer. Pels equips de domini serà 0xFFFFFFFF que vol dir que sempre ha de fer la correcció de temps. Pel servidor autoritari deixar el valor a 54.000 (15 hores) és suficientment gran per corregir si hi ha un desfàs.

Carpeta Parameters:

Paràmetre Valor Descripció
NtpServer pool.ntp.org,0x8 Servei NTP extern on s’ha de sincronitzar aquesta màquina. Aquí cal indicar l’adreça del servei d’hora que es vol utilitzar, en el meu cas utilitzo l’internacional NTP associat al pool d’equips que ofereixen l’hora. En cas de disposar d’un servei d’hora intern s’assignaria la seva IP o bé qualsevol altre servei, com per exemple l’oficial Español: hora.roa.es.
Type NTP La sincronització és fa amb un recurs extern definit al paràmetre NtpServer

Carpeta TimeProviders\NtpClient:

Paràmetre Valor Descripció
Enabled 1 Activa’l com a client del servei d’hora

Carpeta TimeProviders\NtpServer:

Paràmetre Valor Descripció
Enabled 1 Activa’l com a servidor del servei d’hora

O bé, en comptes d’utilitzar directament l’Editor de Registre, com que són varis els paràmetres a modificar i sempre són els mateixos, es pot fer amb la PowerShell. Així s’evita haver de pensar cada cop i possibles errors.

$rootPath = "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time"
# Configuració
$workPath = $rootPath + "\Config"
Set-ItemProperty -Path $workPath -Name "AnnounceFlags" -Value 10
Set-ItemProperty -Path $workPath -Name "MaxAllowedPhaseOffset" -Value 300
Set-ItemProperty -Path $workPath -Name "MaxNegPhaseCorrection" -Value 3600
Set-ItemProperty -Path $workPath -Name "MaxPosPhaseCorrection" -Value 3600
# Paràmetres autoritatiu
$workPath = $rootPath + "\Parameters"
Set-ItemProperty -Path $workPath -Name "NtpServer" -Value "pool.ntp.org,0x8"
Set-ItemProperty -Path $workPath -Name "Type" -Value "NTP"
# Client
$workPath = $rootPath + "\TimeProviders\NtpClient"
Set-ItemProperty -Path $workPath -Name "Enabled" -Value 1
# Servidor
$workPath = $rootPath + "\TimeProviders\NtpServer"
Set-ItemProperty -Path $workPath -Name "Enabled" -Value 1
# Reiniciar servei
get-service W32time |restart-service
# Comprovar la sincronització externa
w32tm /query /status

Anar comprovant amb el w32tm /query /status a què faci la sincronització correcte amb el servidor NTP. Si no ho fa, només mostra pel rellotge intern (LOCL – Local CMOS clock). Doneu-li un cert temps que pugui fer la sincronització externa.

 

Configurar el servidor d’hora en la resta de clients de l’Active Directory

Poden ser molts equips, i no anirem un per un a comprovar o modificar la seva configuració oi? Per això tenim les GPOs i res millor que configurar una única GPO que s’assigna a la unitat organitzativa on resideixen els equips. L’únic a tenir en compte és que aquesta GPO no s’apliqui al servidor que s’ha seleccionat com autoritari.

Obrim l’Administrador de Directives de Grup. Des de l’administrador del Servidor, el menú superior de la dreta, clicar a Eines i a Administració de Directives de Grup.

Localitzar la carpeta Objectes de Directives de Grup. Botó dret damunt la carpeta i clicar a Nou.

Introduir un nom descriptiu, per exemple, Sincronització horària i clicar el botó OK.

Botó dret damunt la nova directiva que s’acaba de crear i clicar a Editar.

El servei d’hora és un servei associat a la màquina, per tant, despleguem les opcions de Configuració d’Equip i localitzem la carpeta:

Directives > Plantilles Administratives > Sistema > Servei d’hora de Windows

Desplegar la carpeta per localitzar Proveïdors de Temps. A la banda dreta, clicar a l’opció Configurar client NTP de Windows.

Seleccionar Activar. I assegurar a Tipus el valor NT5DS. La resta es pot deixar per defecte. Clicar OK per tancar la configuració.

Per assegurar que el client d’hora funciona, clicar a l’opció Activar el client NTP de Windows.

Seleccionar Activar. Clicar OK per tancar la configuració. També es pot tancar la finestra de l’editor de Directives.

Només queda aplicar aquesta directiva a la unitat organitzativa on hi hagi els equips als que es vulgui aplicar la directiva. Botó dret damunt la Unitat Organitzativa on es vol aplicar, amb herència, clicar a Enllaçar GPO existent i seleccionar la GPO que s’acaba de crear.

O bé crear un filtre perquè s’apliqui a tots els equips menys al servidor autoritari d’hora. En aquest cas, a la carpeta WMI filters, botó dret, clicar a Nou.

Indicar un nom descriptiu, una descripció i clicar el botó Afegir per crear una nova consulta.

Seleccionar el Namespace, en aquest cas, root\CIMv2. Escriure la consulta, per exemple, seleccionar tots els equips que no tinguin el nom srvDC16, que correspondria al servidor autoritari d’hora:

SELECT * FROM Win32_ComputerSystem where Name <> "srvDC16"

Clicar el botó OK i Guardar per emmagatzemar el filtre.

Clicar damunt la directiva de sincronització d’hora. Assegurar que estem a la pestanya Àmbit. A la part inferior, a l’apartat Filtres WMI, seleccionar el filtre que s’acaba de crear.

Se’ns pregunta per confirmar que apliquem un filtre a la Directiva. Clicar el botó Si.

Si en els equips clients executem un GPUPDATE /FORCE i després un GPRESULT /R, es pot comprovar que s’aplica correctament la directiva als equips MENYS al servidor amb el nom srvDC16.

 

Configurar el heartbeat del servidor d’hora en nodes de virtualització

És un dels punts més importants, ja què ens fa ballar molt l’estructura. La majoria d’incidències que he tingut han vingut perquè el servidor físic s’avançava o retardava i, provocava un error d’hora a tota la xarxa. Si bé el més important és la màquina que conté el servidor autoritari d’hora, en aquest punt ja recomano fer-ho a totes les màquines. Així m’evito molts problemes.

Microsoft Hyper-V

Pels nodes de Microsoft Hyper-V, des de la consola d’administració de Hyper-V, a cada màquina virtual, botó dret damunt d’ella i clicar a Configuració.

Al menú de l’esquerra, a l’apartat administració. Seleccionar Serveis d’Integració.

Desmarcar el piscu a Sincronització d’Hora i clicar el botó OK per aplicar els canvis.

Això pot ser una mica pesat per a totes les màquines virtuals, i seguint la metodologia DevOps, obrim una consola de PowerShell amb privilegis d’administrador. Recuperem la llista de totes les màquines virtuals creades en el node i apliquem la configuració del servidor d’hora:

Get-VM | Disable-VMIntegrationService -Name "Time Synchronization"

Per comprovar en quin estat està en totes les màquines virtuals podeu executar la comanda:

Get-VM | Get-VMIntegrationService -Name "Time Synchronization" |ft VMName, Enabled

 

VMware

Sí, també toca en VMware gestionar el servei d’hora. En aquest cas, amb l’entorn FLASH (a data de creació d’aquest article la versió HTML no ho permet fer), seleccionar la màquina virtual en concret, botó dret del ratolí damunt d’ella i clicar a Editar configuració.

Al menú superior, clicar a opcions VM.

Clicar a VMware Tools per desplegar les seves opcions.

Desmarcar el piscu de sincronització d’hora amb l’amfitrió i clicar el botó Acceptar per aplicar els canvis.

 

Configurar el servidor d’hora en la resta de dispositius

Aquí ja només hi pot intervenir la configuració de cada dispositiu utilitzant el protocol NTP. Indicant com a servidor de NTP el servidor que hem definit com autoritari o bé el controlador d’Active Directory que tinguem més a mà.

Us deixo algun exemple:

Commutadors Cisco

Configuració per consola, com no, i on 192.168.0.11 correspondria a l’adreça IP del servidor d’hora autoritari.

sntp server 192.168.0.11 
sntp broadcast client

 

Commutadors Hewlett Packard Enterprise / Aruba

Configuració per consola,

timesync sntp
sntp unicast
sntp server priority 1 192.168.0.11

 

Cabines d’emmagatzematge NetApp

Com no, configuració per la consola.

En 7-mode, repetir-ho en tots els nodes, no és correcte que uns ho tinguin i altres no:

options timed.sched 1h
options timed.window 15s
options timed.servers 192.168.0.11
options timed.proto ntp
options timed.enable on

En Cluster DataOnTAP:

cluster time-service ntp server show
cluster time-service ntp server create -server 192.168.0.11 -version auto -preferred true

 

T’ha agradat l’article? El pots compartir a les xarxes socials. També pots deixar la teva opinió, comentari o suggeriment. Gràcies!

 

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *