Objectifs de certification

ICND1 100-105

  • 4.5. Configurer et vérifier NTP fonctionnant dans un mode client/serveur

CCNA R&S 200-125

  • 5.7 Configurer et vérifier NTP fonctionnant dans un mode client/serveur

Synchronisation temporelle NTP

1. Network Time Protocol (NTP)

Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose une solution globale et universelle de synchronisation qui est utilisable dans le monde entier. On ne manquera pas de citer le projet NTP Pool de serveurs NTP gratuits à travers le monde : http://www.pool.ntp.org/fr/.

NTP a été conçu pour synchroniser des ordinateurs participants endéans quelques millisecondes du Temps universel coordonné (Coordinated Universal Time (UTC)).

La version actuelle de NTP est la version 4 publiée dans la RFC 5905 en juin 2010 et qui est compatible avec NTP version 3 formalisé dans le RFC 1305.

Aussitôt après la parution de la version 3 de NTP, une version simplifiée appelée “Simple Network Time Protocol” (SNTP) (RFC4330) a fait l’objet de plusieurs RFCs. Par rapport à NTP, cette version est simplifiée dans le sens qu’elle ne spécifie pas les algorithmes à mettre en place dans les ordinateurs.1

2. Fonctionnement de NTP

NTP utilise un algorithme d’intersection (une version modifiée de l’algorithme de Marzullo) pour choisir les meilleures sources de temps et pour la prise en charge de délais supplémentaires sur le réseau. NTP peut maintenir le temps endéans quelques dizaines de millisecondes à travers un réseau Internet public. Dans des conditions optimales au sein des réseaux locaux, ses performances peuvent descendre en dessous de la milliseconde.

Le protocole fonctionne selon un modèle “client-serveur”, mais il peut fonctionner en mode “peer-to-peer”. Les données de synchronisation sont envoyées et reçues sur le port UDP 123. Bien que NTP soit le plus souvent utilisé avec UDP, il peut aussi l’être avec TCP. Les serveurs NTP peuvent utiliser le Broadcast ou le Multicast alors que les clients attendent passivement les mises-à-jour. Ils peuvent être actifs aussi. NTP ne transporte pas d’informations sur la zone horaire ou l’heure d’été.

La synchronisation temporelle est indispensable pour l’usage des protocoles sécurisés, pour les authentifications à travers le réseau (TLS, Radius, Active Directory), la légalité des logs, les protocoles de transmission en temps réel et la synchronisation de bases de données. Enfin, il est recommandé pour tous réseaux bien gérés.

Ce service est à protéger des tentatives de connexions vers le serveur et de tentatives de configuration non autorisées. Le protocole déployé avec négligence est vulnérable aux attaques de d’énumération ou de déni de service distribué (DDoS).

3. Architecture NTP

Le réseau NTP est composé de trois éléments :

  • de récepteurs récupérant l’heure de référence par radios, câbles, satellites ou directement depuis une horloge atomique ;
  • de serveurs de temps récupérant l’heure de référence auprès des récepteurs ou bien auprès d’autres serveurs de temps ;
  • de clients récupérant l’heure de référence auprès des serveurs de temps.

Tous ces systèmes sont organisés de façon hiérarchique, dont chaque couche ou niveau est appelé une strate. Chaque client NTP est également un serveur et se synchronise avec d’autres serveurs, le plus souvent de la strate supérieure. La strate indique la distance entre le client et l’heure de référence.

Architecture des serveurs et clients NTP (Source Wikimedia)

La strate 0 comprend des horloges de référence (récepteurs GPS ou grandes ondes, horloges au césium ou au rubidium, oscillateur à quartz thermostaté…) qui ne sont pas connectées aux serveurs de strate 1 via un réseau mais via une interface comme un port série. La norme prévoit jusqu’à 16 strates, mais la plupart des clients se situent dans les strates 3 ou 4. La strate 16 est aussi utilisée par les serveurs qui ne sont synchronisés à aucune source externe. La redondance des serveurs et leur organisation permet une répartition de la charge et ainsi la fiabilité du réseau.2

La plupart des systèmes d’exploitation comme Microsoft Windows, Apple Mac OS X ou encore Linux Ubuntu ou Linux Red Hat implémentent une configuration minimale d’un client NTP.

4. Configuration NTP en Cisco IOS

4.1. Ajuster l’heure du périphérique Cisco

Si l’utilisateur désire une heure localisée au lieu du temps universel (UTC), il sera nécessaire de paramétrer la zone horaire et l’heure d’été.

(config)#clock timezone GMT +1
(config)#clock summer-time FR recurring last SUN MAR 02:00 last SUN OCT 02:00

4.2. Configuration Cisco NTP

Par défaut, NTP est désactivé sur le matériel Cisco.

gateway#show ntp status
%NTP is not enabled.

Pour renseigner une référence de synchronisation en Cisco IOS, on encode en configuration globale la commande ntp server suivie de l’adresse IP ou du nom de serveur de temps.

(config)#ntp server <ip_address ou hostname>
(config)#ntp update-calendar

Par exemple, à partir de la France, un routeur Cisco client NTP en bordure de l’Internet peut se synchroniser sur les serveurs publics fr.pool.ntp.org.

gateway(config)#ntp server 3.fr.pool.ntp.org
Translating "3.fr.pool.ntp.org"...domain server (8.8.8.8) [OK]

La commande ntp update-calendar en configuration globale fera en sorte que le routeur mettra à jour ses horloges avec NTP.

gateway(config)#ntp update-calendar

Dès ce moment, le périphérique Cisco peut agir comme client et serveur NTP.

5. Vérifications NTP client en Cisco IOS

Voici les commandes NTP client à retenir :

show clock
show calendar
show ntp config
show ntp information
show ntp status
show ntp associations
show ntp packets

5.1. Heure système et heure matérielle

Les commandes show clock et show calendar permettent d’afficher respectivement les heures système et matérielle.

gateway#show clock
*08:44:30.046 UTC Sun Jun 24 2018
gateway#show calendar
08:44:35 UTC Sun Jun 24 2018

5.2. Vérification de la configuration NTP

Les commandes show ntp config indique la configuration du client NTP alors que la commande show ntp information indique la version NTP utilisée par le routeur.

gateway#show ntp config
 ntp server pool.ntp.org
gateway#show ntp information
Ntp Software Name   	:  Cisco-ntpv4
Ntp Software Version	:  Cisco-ntpv4-1.0
Ntp Software Vendor 	:  CISCO
Ntp System Type     	:  Cisco IOS

5.3. Vérification de la synchronisation

Tant que la synchronisation n’est pas réalisée, le client est vu en strate 16.

gateway#sh ntp status
Clock is unsynchronized, stratum 16, no reference clock
nominal freq is 1000.0003 Hz, actual freq is 1000.0003 Hz, precision is 2**17
ntp uptime is 5400 (1/100 of seconds), resolution is 1000
reference time is 00000000.00000000 (00:00:00.000 UTC Mon Jan 1 1900)
clock offset is 0.0000 msec, root delay is 0.00 msec
root dispersion is 0.80 msec, peer dispersion is 0.00 msec
loopfilter state is 'NSET' (Never set), drift is 0.000000000 s/s
system poll interval is 8, never updated.

Après un certain temps, et si le client est correctement configuré, on apprend que l’horloge est synchronisée et que le périphérique est situé dans la strate 3. On y apprend différentes informations sur l’horloge de référence et ses délais. Dans cette sortie, l’horloge locale a été synchronisée il y a 433 secondes auprès de la référence 188.165.236.162

gateway#show ntp status
Clock is synchronized, stratum 3, reference is 188.165.236.162
nominal freq is 1000.0003 Hz, actual freq is 1000.1220 Hz, precision is 2**17
ntp uptime is 273000 (1/100 of seconds), resolution is 1000
reference time is DED9EAB2.B85BDEFB (10:02:26.720 UTC Sun Jun 24 2018)
clock offset is -45.3210 msec, root delay is 17.35 msec
root dispersion is 82.70 msec, peer dispersion is 5.13 msec
loopfilter state is 'CTRL' (Normal Controlled Loop), drift is -0.000121708 s/s
system poll interval is 128, last update was 433 sec ago.
gateway#show ntp associations

  address         ref clock       st   when   poll reach  delay  offset   disp
*~188.165.236.162 131.188.3.220    2    116    128   377  5.591 -45.321  5.139
 * sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured

Le périphérique est synchronisé avec le “peer” adressé en 188.165.236.162 lui-même synchronisé auprès de 131.188.3.220 de strate 2.

5.4. Messages NTP échangés

La commande show ntp packets nous offre les statistiques sur les échanges de paquets NTP.

gateway#show ntp packets
Ntp In packets	   		:  49
Ntp Out packets           	:  49
Ntp bad version packets   	:  0
Ntp protocol error packets	:  0

5.5. Implémentation d’un autre périphérique NTP

Dans notre réseau local, un commutateur SW0 se synchronise avec le routeur “gateway” adressé en 192.168.1.254 que l’on vient de fraîchement configurer et vérifier.

SW0(config)#ntp server 192.168.1.254
SW0(config)#ntp update-calendar
SW0(config)#^Z

Notre commutateur Cisco s’est synchronisé en tant que serveur de strate 4 auprès du routeur R1.

SW0#sh ntp status
Clock is synchronized, stratum 4, reference is 192.168.1.254  
nominal freq is 1000.0003 Hz, actual freq is 1000.0003 Hz, precision is 2**17
ntp uptime is 8100 (1/100 of seconds), resolution is 1000
reference time is DEF30E2F.1D49D097 (11:40:31.114 UTC Fri Jul 13 2018)
clock offset is 1.9007 msec, root delay is 21.17 msec
root dispersion is 4180.63 msec, peer dispersion is 937.88 msec
loopfilter state is 'CTRL' (Normal Controlled Loop), drift is 0.000000000 s/s
system poll interval is 64, last update was 66 sec ago.

La hiérarchie NTP se constate sur ce périphérique de strate 3.

SW0#show ntp associations

  address         ref clock       st   when   poll reach  delay  offset   disp
*~192.168.1.254   188.165.236.162  3     11     64    77  2.963 -22.412  0.983
 * sys.peer, # selected, + candidate, - outlyer, x falseticker, ~ configured

5.6. Debug NTP

La commande debug ntp permet d’afficher en temps réel les logs NTP.

#debug ntp ?
  adjust    NTP clock adjustments
  all       NTP all debugging on
  core      NTP core messages
  events    NTP events
  packet    NTP packet debugging
  refclock  NTP refclock messages

6. Sécuriser NTP en Cisco IOS

6.1. Limite des accès par ACL

Pour s’assurer que seuls certains hôtes pourront se synchroniser avec un serveur, on définira une liste d’accès (ACL) et on activera le filtrage NTP avec la commande ntp access-group serve-only.

Afin d’éviter que quiconque sur les périphériques, il sera utile de limiter l’accès au service NTP.

ip access-list standard LAN_R1
 permit 192.168.1.0 0.0.0.255
ntp access-group serve-only LAN_R1

6.2. Authentification NTP en MD5

L’authentification MD5 n’empêche pas un serveur de servir une heure. Tout au plus elle permet de faire en sorte qu’un client ou un peers se synchronise auprès d’un peer ou d’un serveur de confiance.

La procédure de configuration d’une authentification MD5 se déroule en trois étapes aussi bien sur les “peers”, clients et serveurs.

Sur le routeur “gateway” :


gateway(config)#ntp authentication-key 1 md5 testtest
gateway(config)#ntp trusted-key 1
gateway(config)#ntp authenticate

La commande ntp authentication-key définit les clés d’authentification. La commande ntp trusted-key définit une ou ou plusieurs clés selon leur numéro à utiliser pour une synchronisation. Enfin la commande ntp authenticate active la fonctionnalité d’authentification qui est désactivée par défaut.

Sur le client ici “SW0” à synchroniser on répétera la configuration de l’authentification et en ajoutant la commande ntp server <server> key <key>.

SW0(config)#ntp authentication-key 1 md5 testtest
SW0(config)#ntp trusted-key 1
SW0(config)#ntp authenticate
SW0(config)#no ntp server 192.168.1.254
SW0(config)#ntp server 192.168.1.254 key 1

Attention le numéro de la clé et la version claire de la clé doivent être identiques chez les partenaires qui authentifient leurs messages.

On trouvera dans cette capture un échange client / serveur avec une authentification MD5 : https://www.cloudshark.org/captures/5f3ed616496b.

7. Compléments sur NTP

7.1. Serveur NTP authoritative

Un serveur “authoritative” est celui qui ne se synchronise avec aucun autre. On définit sa strate avec la commande ntp master suivie du numéro de strate. Ici par exemple un serveur de strate 3.

ntp master 3

7.2. Options DHCP - DHCPv6

On peut pousser l’option en DHCP pour IPv4 :

ip dhcp pool <name>
 option 42 ip <server>

Option DHCP IPv6 (56) :

ipv6 dhcp pool <name>
 ! ...

7.3. Configuration Broadcast et/ou Multicast

À tester

gateway(config-if)#ntp broadcast version 4
gateway(config-if)#ntp multicast version 4

7.4. Configuration d’un peer NTP

Commande ntp peer <peer_host>.

7.5. Diagnostic client hôte terminal

  • ntpdate, ntpd, chrony
  • Powershell

7.6. Installation d’un serveur NTP (Debian/Ubuntu)

# apt install openntpd

Fichier de configuration

# mv /etc/openntpd/ntpd.conf /etc/openntpd/ntpd.conf.old
# vi /etc/openntpd/ntpd.conf
listen on *
server pool.ntp.org
Redémarrage du service
# /etc/init.d/openntpd restart

Vérification

# grep ntpd /var/log/syslog
# netstat -an | grep :123

7.7. Architecture NTP

Network Time Protocol: Best Practices White Paper

Laisser un commentaire