guest@6admin.io:~$

NTP : synchronisation du temps sur le réseau

Le NTP (Network Time Protocol) synchronise les horloges des machines sur le réseau. Ça paraît trivial jusqu’au jour où un script qui dépend de la date dérive de 3 secondes et rate sa fenêtre de connexion ou où deux serveurs qui doivent s’accorder sur “maintenant” ont 4 minutes d’écart.

L’installation

apt-get install ntp

Le daemon ntpd démarre et synchronise automatiquement avec les serveurs du pool Debian (0.debian.pool.ntp.org à 3.debian.pool.ntp.org).

La config minimale

# /etc/ntp.conf
server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

# Restreindre l'accès
restrict default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

L’option iburst accélère la synchronisation initiale (4 paquets au lieu de 1 au démarrage). Les restrict bloquent l’accès depuis le réseau: le serveur NTP ne sert que lui-même, pas les autres (sauf si on veut faire un serveur NTP local).

La vérification

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*0.debian.pool.n 193.52.28.1      2 u   45   64  377   12.345    0.123   0.456
+1.debian.pool.n 193.52.28.1      2 u   32   64  377   15.678   -0.234   0.789
 2.debian.pool.n 193.52.28.1      2 u   28   64  377   14.567    0.345   1.234

L’astérisque (*) indique le serveur de référence actuel. L’offset est l’écart entre l’horloge locale et le serveur NTP: un offset de 0.123 ms est excellent, un offset de 500 ms est un problème.

Ce que ça sert

Trois cas concrets de cette année:

  1. Le portknocking : les fonctions kssh/kscp calculent la combinaison depuis la date système. Si le client et le serveur ont 3 secondes d’écart à minuit, la combinaison du jour ne matche pas et la porte ne s’ouvre pas.
  2. Les logs : quand deux serveurs loggent le même événement avec 4 minutes d’écart, le tri chronologique devient une devinette. Les SIEM et les analyses de logs nécessitent des horloges synchrones.
  3. Les certificats TLS : un serveur dont l’horloge dérive de plusieurs minutes peut rejeter des certificats valides ou accepter des certificats expirés.

Le drift

Chaque horloge dérive: le cristal quartz de la carte mère n’est pas exact. Le drift est mesuré en ppm (parties par million): 10 ppm = 0.86 secondes par jour. Le fichier /var/lib/ntp/ntp.drift stocke la dérive mesurée et ntpd la compense en continu.

[edit: 2026] ntpd a été remplacé par chrony sur les distributions modernes (plus rapide à synchroniser, meilleur sur les réseaux instables et compatible avec les containers). Le protocole NTP n’a pas changé (RFC 5905), les serveurs du pool Debian n’ont pas changé et la leçon reste la même: un serveur sans NTP est un serveur dont les logs mentent. Le portknocking est mort, mais le NTP a survécu à tout.

[edit: 2026] L’implémentation Ansible de tout ceci: le rôle ntp .