Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 714 minIntermédiaire

NTP : synchroniser l'heure des serveurs et du domaine

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • expliquer pourquoi l'heure est critique pour Kerberos, TLS et les journaux ;
  • décrire les strates et les grandeurs mesurées par NTP ;
  • configurer la hiérarchie de temps d'un domaine avec w32tm ;
  • configurer chrony, un switch Cisco et pfSense.

4 exercices corrigés1 schéma

NTP (Network Time Protocol) synchronise l'horloge des machines d'un réseau sur une source de référence, à quelques millisecondes près, en UDP sur le port 123. Les serveurs de temps sont organisés en strates : plus on s'éloigne de l'horloge de référence, plus le numéro de strate augmente. Ce chapitre explique pourquoi l'heure est un service critique, comment NTP la corrige, et comment construire la hiérarchie de temps d'un réseau Active Directory avec Windows Server, chrony sous Debian, les switchs Cisco et pfSense.

Pourquoi l'heure est un service critique

Une horloge qui dérive de quelques minutes ne se voit pas sur l'écran d'un poste. Elle casse pourtant beaucoup de choses.

ServiceCe qui se passe si l'horloge est fausse
Kerberos (ouverture de session Active Directory)Au-delà de 5 minutes d'écart avec le contrôleur (valeur par défaut), les tickets sont refusés : impossible d'ouvrir une session ou d'accéder aux partages
Certificats et HTTPSUn certificat est valable entre deux dates : une machine en retard le croit « pas encore valide », une machine en avance « expiré »
DNSSEC et TSIGSignatures rejetées (SERVFAIL, BADTIME) (chapitres 4 et 5)
Codes à usage unique (TOTP) de l'authentification forteLes codes générés par l'application du téléphone ne correspondent plus
JournauxImpossible de reconstituer la chronologie d'un incident si chaque machine a sa propre heure : la corrélation dans un SIEM devient fausse
Sauvegardes, tâches planifiées, réplicationTâches lancées au mauvais moment, réplication de l'annuaire en erreur

Strates, décalage, délai

Une horloge de référence (récepteur GPS, horloge atomique) est de strate 0 ; elle n'est pas sur le réseau. Un serveur directement relié à elle est de strate 1. Un serveur qui se synchronise sur un serveur de strate 1 est de strate 2, et ainsi de suite jusqu'à 15. La valeur 16 signifie « non synchronisé ».

GrandeurDéfinitionOrdre de grandeur sur un réseau local
Décalage (offset)Écart entre l'horloge locale et celle du serveurQuelques millisecondes une fois synchronisé
Délai (delay)Temps d'aller-retour du message vers le serveurMoins d'une milliseconde en LAN, 10 à 50 ms sur Internet
Gigue (jitter)Variation du décalage d'une mesure à l'autreFaible en LAN
Intervalle d'interrogation (poll)Délai entre deux questions au serveurDe 64 s à 1 024 s, adapté automatiquement

NTP mesure le délai d'aller-retour et en déduit l'heure exacte, en supposant que l'aller et le retour durent autant. Pour corriger, il préfère ralentir ou accélérer progressivement l'horloge (slew) plutôt que de la faire sauter (step) : un saut en arrière ferait croire aux programmes qu'un événement s'est produit avant le précédent. Il ne fait un saut qu'au démarrage, quand l'écart est grand.

La hiérarchie de temps d'un domaine Active Directory

Dans un domaine, Windows organise le temps tout seul, à condition de configurer un seul serveur à la main.

  1. Le contrôleur qui détient le rôle émulateur PDC (PDC emulator) du domaine racine de la forêt est la source de temps de toute la forêt. C'est lui, et lui seul, qu'on configure pour se synchroniser sur une source externe fiable.
  2. Les autres contrôleurs se synchronisent sur l'émulateur PDC.
  3. Les serveurs membres et les postes se synchronisent sur un contrôleur de leur domaine, automatiquement (mode NT5DS, la « hiérarchie du domaine »).

Chez Sorbier, l'émulateur PDC est srv-ad. Il se synchronise sur le pool NTP public par le pare-feu ; tout le reste suit.

fr.pool.ntp.orgserveurs publics, strate 1 ou 2srv-ad, émulateur PDCsource du domaine, strate 3Pare-feu pfSensestrate 3sortie du domainesrv-ad2strate 4Membresdu domaineServeurs LinuxchronySwitchs CiscoVLAN 99DMZ, visiteursvia le pare-feuChaque flèche : des requêtes NTP en UDP 123, du client vers sa source
Une seule machine regarde l'extérieur ; toutes les autres suivent la hiérarchie
powershell
# Sur srv-ad : trouver l'émulateur PDC du domaine
Get-ADDomain | Select-Object PDCEmulator

# Sur l'émulateur PDC : sources externes, déclarées fiables
w32tm /config /manualpeerlist:"0.fr.pool.ntp.org,0x8 1.fr.pool.ntp.org,0x8 2.fr.pool.ntp.org,0x8" `
      /syncfromflags:manual /reliable:yes /update
Restart-Service w32time
w32tm /resync /rediscover

# Vérifier
w32tm /query /status      # strate, source, dernière synchronisation
w32tm /query /source      # la source utilisée
w32tm /query /peers       # l'état de chaque source

Le drapeau 0x8 demande au service d'interroger le serveur en mode client NTP standard. /reliable:yes annonce srv-ad comme source de temps fiable aux autres machines du domaine.

Sur les autres contrôleurs et les membres, il n'y a rien à faire. Si une machine a été configurée à la main par erreur, ramène-la à la hiérarchie :

powershell
w32tm /config /syncfromflags:domhier /update
Restart-Service w32time
w32tm /query /source      # doit afficher un contrôleur du domaine, par exemple srv-ad.ad.sorbier.example

Pour comparer les horloges de plusieurs machines, w32tm /stripchart /computer:srv-ad2 /samples:5 /dataonly affiche le décalage mesuré entre la machine locale et srv-ad2, cinq fois de suite. w32tm /monitor fait le tour des contrôleurs du domaine.

chrony sous Debian 13

Sous Debian 13, le client NTP recommandé est chrony (version 4.6). À l'installation, il remplace le service minimal systemd-timesyncd s'il était présent. Sur un parc de serveurs, on déploie cette configuration avec Ansible plutôt qu'à la main (templates Jinja2 et fichiers de configuration).

bash
sudo apt install chrony

Sa configuration par défaut, /etc/chrony/chrony.conf, interroge le pool de Debian (pool 2.debian.pool.ntp.org iburst) et lit aussi les fichiers du dossier /etc/chrony/sources.d/. Pour les serveurs de Sorbier, mets la ligne pool en commentaire et crée un fichier de sources :

text
# /etc/chrony/sources.d/sorbier.sources
server srv-ad.ad.sorbier.example iburst
server srv-ad2.ad.sorbier.example iburst
bash
sudo systemctl restart chrony
chronyc sources -v        # les sources, leur strate et leur état
chronyc tracking          # strate locale, décalage, dernière correction
text
$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* srv-ad.ad.sorbier.example     4   6   377    34   +215us[ +240us] +/-   21ms
^+ srv-ad2.ad.sorbier.example    5   6   377    35   -102us[  -77us] +/-   23ms

^ indique un serveur, * la source retenue, + une source acceptable en réserve ; ? ou x signalent une source injoignable ou jugée fausse. Reach 377 (en octal) veut dire que les huit dernières interrogations ont toutes reçu une réponse.

Directive de chrony.confRôle
server <nom> iburstUne source ; iburst envoie quatre requêtes rapides au démarrage pour se synchroniser vite
pool <nom> iburstUn groupe de serveurs derrière un même nom (le pool public)
makestep 1 3Faire un saut si l'écart dépasse 1 seconde, mais seulement lors des 3 premières mises à jour
allow 192.168.10.208/28Faire de cette machine un serveur NTP pour ce réseau (par défaut, chrony ne sert personne)
server time.example iburst ntsUtiliser NTS (Network Time Security, RFC 8915), qui authentifie les réponses du serveur par TLS

Les switchs Cisco et pfSense

Sur les switchs de Sorbier (VLAN 99), l'heure vient des contrôleurs. La configuration détaillée, avec l'authentification NTP, est dans le cours Routage et commutation ; le principe tient en quelques lignes :

text
SW-COEUR(config)# clock timezone CET 1 0
SW-COEUR(config)# clock summer-time CEST recurring last Sun Mar 2:00 last Sun Oct 3:00
SW-COEUR(config)# ntp server 192.168.10.177 prefer
SW-COEUR(config)# ntp server 192.168.10.181
SW-COEUR(config)# end
SW-COEUR# show ntp status
SW-COEUR# show ntp associations

show ntp status doit afficher Clock is synchronized. Les journaux des switchs (syslog, chapitre 13) n'ont de valeur qu'avec une horloge juste : ajoute service timestamps log datetime msec localtime pour qu'ils soient horodatés précisément.

pfSense a son propre client et serveur NTP. Dans System > General Setup, le champ Timeservers liste les sources (par défaut, le pool 2.pfsense.pool.ntp.org) et Timezone le fuseau (Europe/Paris). Dans Services > NTP, tu choisis les interfaces sur lesquelles il sert l'heure : chez Sorbier, la DMZ et les visiteurs, qui n'ont pas accès aux contrôleurs.

Les flux NTP à autoriser

SourceDestinationPortPourquoi
srv-ad .177Internet (pool NTP)UDP 123Seule source externe du domaine
pfSenseInternet (pool NTP)UDP 123Heure du pare-feu
Serveurs, switchs, postessrv-ad, srv-ad2UDP 123Hiérarchie interne
DMZ, visiteursPare-feuUDP 123Heure des réseaux isolés
Tout le resteInternetUDP 123Refusé : personne d'autre ne doit choisir sa source de temps

Exercices

Exercice 1 sur 4 Le serveur de fichiers inaccessible Réussi À revoir

Depuis ce matin, les salariés n'ouvrent plus les partages de srv-fichiers. Les autres serveurs fonctionnent. Sur srv-fichiers, l'horloge indique 10 h 42 ; il est 10 h 30. Le journal Système contient des erreurs Kerberos qui mentionnent un décalage d'horloge. Un technicien avait réglé ce serveur, il y a six mois, avec :

powershell
w32tm /config /manualpeerlist:"time.windows.com,0x8" /syncfromflags:manual /update

Le pare-feu de Sorbier n'autorise le NTP sortant que depuis srv-ad.

  1. Pourquoi les partages sont-ils refusés ?
  2. Pourquoi l'horloge a-t-elle dérivé ?
  3. Comment corriges-tu, et avec quelles commandes vérifies-tu ?
Voir la réponseMasquer la réponse de l'exercice 1
  1. L'écart de 12 minutes entre srv-fichiers et les postes dépasse la tolérance de 5 minutes de Kerberos : les tickets présentés par les postes sont jugés trop anciens ou trop récents, et l'accès est refusé.

  2. Le serveur a été sorti de la hiérarchie du domaine pour interroger time.windows.com, que le pare-feu bloque : il ne s'est jamais synchronisé et a suivi sa propre horloge pendant six mois.

  3. Le ramener à la hiérarchie du domaine, puis forcer une synchronisation :

    powershell
    w32tm /config /syncfromflags:domhier /update
    Restart-Service w32time
    w32tm /resync /rediscover
    w32tm /query /source      # un contrôleur : srv-ad.ad.sorbier.example ou srv-ad2
    w32tm /query /status      # dernière synchronisation réussie, quelques secondes plus tôt
    

    Une seule machine du domaine, l'émulateur PDC, doit avoir des sources manuelles.

Tu avais trouvé ?

Exercice 2 sur 4 Compter les strates Réussi À revoir

Le pool fr.pool.ntp.org renvoie à srv-ad un serveur de strate 2.

  1. Quelle est la strate de srv-ad ? Celle de srv-ad2, qui se synchronise sur lui ?
  2. Un serveur Debian interroge srv-ad2 en premier choix. Quelle est sa strate ?
  3. Le lien Internet est coupé depuis trois jours. Que se passe-t-il pour l'heure du réseau ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. srv-ad : strate 3 ; srv-ad2 : strate 4.
  2. Strate 5 s'il retient srv-ad2 ; s'il retient srv-ad (meilleure strate), il est de strate 4. chrony choisit la source qu'il juge la meilleure, pas forcément la première de la liste.
  3. srv-ad continue de servir son horloge, qui dérive doucement (quelques dizaines de millisecondes à quelques secondes par jour). Tout le réseau dérive ensemble : Kerberos et la corrélation des journaux continuent de fonctionner, puisque l'écart entre machines reste faible. L'écart avec l'heure réelle se corrige au retour d'Internet.

Tu avais trouvé ?

Exercice 3 sur 4 Lire la sortie de w32tm Réussi À revoir

Sur srv-ad, w32tm /query /status affiche :

text
Indicateur de dérive : 0(aucun avertissement)
Strate : 1 (référence principale - synchronisée par radio)
Précision : -23 (119.209ns par battement de l'horloge)
Source : Local CMOS Clock
Intervalle d'interrogation : 6 (64s)
  1. Que signifie Source : Local CMOS Clock ?
  2. Pourquoi la strate 1 est-elle trompeuse ici ?
  3. Quelle configuration manque ?
Voir la réponseMasquer la réponse de l'exercice 3
  1. srv-ad ne se synchronise sur aucune source : il suit sa propre horloge matérielle.
  2. Il s'annonce comme une référence de strate 1, alors qu'il n'est relié à aucune horloge de référence : tout le domaine se cale sur une horloge qui dérive, sans le savoir.
  3. La configuration de l'émulateur PDC vers des sources externes : w32tm /config /manualpeerlist:"0.fr.pool.ntp.org,0x8 1.fr.pool.ntp.org,0x8" /syncfromflags:manual /reliable:yes /update, puis redémarrage du service et w32tm /resync. Vérifier aussi que le pare-feu laisse sortir UDP 123 depuis srv-ad.

Tu avais trouvé ?

Exercice 4 sur 4 Configurer chrony Réussi À revoir

Le serveur srv-journaux (192.168.10.180, Debian 13) doit se synchroniser sur les deux contrôleurs et servir l'heure aux équipements du VLAN d'administration (192.168.10.208/28).

  1. Écris le contenu des fichiers à créer ou modifier.
  2. Quelle règle de pare-feu ou d'ACL faut-il prévoir pour les équipements ?
  3. Quelle commande vérifie que les équipements interrogent bien srv-journaux ?
Voir la réponseMasquer la réponse de l'exercice 4
  1. Dans /etc/chrony/chrony.conf, commenter pool 2.debian.pool.ntp.org iburst. Créer /etc/chrony/sources.d/sorbier.sources :

    text
    server srv-ad.ad.sorbier.example iburst
    server srv-ad2.ad.sorbier.example iburst
    

    Et créer /etc/chrony/conf.d/serveur.conf avec allow 192.168.10.208/28. Puis sudo systemctl restart chrony.

  2. Autoriser UDP 123 de 192.168.10.208/28 vers 192.168.10.180, et srv-journaux vers srv-ad et srv-ad2 en UDP 123.

  3. sudo chronyc clients liste les machines qui ont interrogé le serveur, avec le nombre de requêtes NTP.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : HTTP et HTTPS : requêtes, codes d'état et certificatsRevoir le sommaire du cours