--- categories: ['OpenBSD','Réseau','Serveur'] date: 2020-01-19T16:30:48+02:00 description: "Apprendre à gérer un serveur de temps sous OpenBSD" draft: false include_toc: true show_comments: false tags: ['OpenBSD','ntp','OpenNTPD'] title: "NTPD : Serveur de temps" translationKey: 'openbsd-ntpd' --- ## Description [OpenNTPD](http://www.openntpd.org/) est intégré nativement dans OpenBSD. ## Serveurs NTP Les adresses de serveurs NTP sont visibles depuis la [page pour trouver un serveur](http://support.ntp.org/bin/view/Servers/WebHome#Finding_A_Time_Server). Les [serveurs de pool NTP](http://support.ntp.org/bin/view/Servers/NTPPoolServers) sont par zones mondiales comportant plusieurs pays. * La zone Europe se gère à partir des serveurs [[http://www.pool.ntp.org/zone/europe|europe.pool.ntp.org]]. * La zone relative à la France est : [[http://www.pool.ntp.org/zone/fr|fr.pool.ntp.org]] ## Configuration Le fichier de configuration est `/etc/ntpd.conf`. Il est apparu dans OpenBSD 3.6. Des différentes options : * **listen on** *address* [**rtable** *table-id*] : spécifie l'adresse ip locale ou le nom d'hôte que doit écouter le service ntpd(8). Si l'option est spécifiée plusieurs fois, le service écoutera chacune des adresses données. Si le symbole `*` est donné, ntpd écoutera toutes les adresses locales où est spécifiée la table de routage.
Le mot-clé `rtable` indique quelle table de routage écouter.
Par défault, ntpd écoute la table de routage en cours. * **query from** *address* : spécifie l'adresse IP locale que le démon ntpd(8) doit utiliser pour les requêtes sortantes vers des serveurs spécifiés ultérieurement. * **sensor** *device* : spécifie un périphérique d'écoute de temps que ntpd(8) doit écouter. S'ils sont spécifiés plusieurs fois, ntpd utilisera chaque capteur donné en référence qui existe vraiment ; ceux qui sont inexistants sont ignorés.
Si le symbole `*` est donné, ntpd essaiera d'écouter tous les capteurs qu'il trouvera.
Par défaut, ntpd n'utilise aucun capteur. * **server** *address* [**weight** *weight-value*] : spécifie l'adresse IP ou le nom d'hôte d'un serveur NTP à synchroniser. ntpd essaiera de se synchroniser sur tous les serveurs spécifiés, si cette option est utilisée plusieurs fois. Si un nom d'hôte fonctionne sur la double couche réseau IPv4|6, ntpd utilisera la première adresse réseau.
Si ntpd n'a pas de réponse d'une adresse, il utilisera la suivante jusqu'à ce qu'une réponde.
Il est recommandé de configurer plusieurs serveurs, de préférence des serveurs à faible latence, afin d'obtenir une meilleure précision. * **servers** *address* [**weight** *weight-value*] : identique à l'option `server`, à la différence que si les serveurs ont plusieurs adresses IP, ntpd essaiera de se synchroniser sur toutes ces adresses. * **constraint from** *url* : spécifie une URL, l'adresse IP ou le nom d'hôte d'un serveur HTTPS pour fournir une contrainte.
Si la contrainte donnée est utilisée plus d'une fois, ntpd(8) calculera une contrainte médiane à partir de tous les serveurs spécifiés. * **constraints from** *url* : identique à l'option `constraint from`, à la différence que si le nom d'hôte est résolu sur plusieurs adresses IP, ntpd(8) calculera une contrainte médiane à partir de toutes ces adresses. {{}} **À-propos des options de contraintes** :
ntpd(8) peut être configuré pour interroger la 'Date' des serveurs HTTPS de confiance via TLS. Cette information de temps n'est pas utilisée pour la précision mais agit comme une contrainte authentifiée, réduisant ainsi l'impact des attaques NTP non authentifiées de l'homme au milieu. Les paquets NTP reçus dont les informations temporelles se situent en dehors d'une plage proche de la contrainte seront rejetés et ces serveurs NTP seront marqués comme invalides. --- Dans ce [mail](https://marc.info/?l=openbsd-misc&m=158888999317454&w=2), Theo de Raadt explique pourquoi il n'est pas désirable de personnaliser les paramètres de contraintes autrement que ceux que l'équipe fixe.
Où l'on apprend aussi que le domaine **www.openbsd.org** ne doit pas être invoqué, non plus… {{
}} ### Exemple Voici un exemple du fichier `/etc/examples/ntpd.conf`: ```ini # $OpenBSD: ntpd.conf,v 1.5 2019/11/11 16:44:37 deraadt Exp $ # sample ntpd configuration file, see ntpd.conf(5) # Addresses to listen on (ntpd does not listen by default) #listen on * # sync to a single server #server ntp.example.org # use a random selection of NTP Pool Time Servers # see http://support.ntp.org/bin/view/Servers/NTPPoolServers servers pool.ntp.org # time server with excellent global adjacency server time.cloudflare.com # use a specific local timedelta sensor (radio clock, etc) sensor nmea0 trusted # use all detected timedelta sensors #sensor * # get the time constraint from a well-known HTTPS site constraint from "9.9.9.9" # quad9 v4 without DNS constraint from "2620:fe::fe" # quad9 v6 without DNS constraints from "www.google.com" # intentionally not 8.8.8.8 ``` ## Service NTPD Le démon `ntpd` synchronise l'horloge locale sur un ou plusieurs serveurs NTP distants ou capteurs timedelta locaux. ntpd peut également agir comme un serveur NTP lui-même, redistribuant l'heure locale. Il implémente la version 4 de Simple Network Time Protocol, telle que décrite dans la RFC 5905, et la version 3 de Network Time Protocol, telle que décrite dans la RFC 1305. Le temps peut également être récupéré depuis les serveurs HTTPS pour réduire l'impact des attaques NTP dites "man-in-the-middle" (*l'homme au milieu*) non authentifiées. Le service `ntpd` est apparu la première fois dans OpenBSD 3.6. Les options possibles au service sont : * `-d` : ne pas mettre en service. ntpd fonctionnera alors en arrière plan, et journalisera vers la sortie `stderr`. * `-f *fichier*` : utilisera le fichier de configuration spécifié au lieu du fichier de configuration par défaut. * `-n` : test la validité du fichier de configuration. À n'utiliser que pour cela. * `-S` : annule les effets de l'option `-s`. * `-s` : essaye toujours de régler l'heure au démarrage de la machine. Par défaut, ntpd essaye de régler l'heure au démarrage, uniquement si les contraintes sont configurées et satisfaites. ntpd restera au premier plan jusqu'à 15 secondes en attendant la réponse d'un des serveurs NTP configurés. ## Le Contrôleur ntpctl Le contrôleur `ntpctl` est un programme qui affiche les informations liées au service ntpd(8). Les options possibles sont : * `-s all | peers | Sensors | status` : * `all` : affiche toutes les informations possibles * `peers` : affiche les informations relatives à chaque pair * `Sensors` : affiche les informations relatives à chaque capteur. * `status` : indique l'état des pairs et des capteurs, et si l'horloge du système est synchronisée. Le contrôleur est apparu la première fois dans OpenBSD 5.5. --- ## Documentation ⇒ les différents manpage : * le service [ntpd(8)](http://man.openbsd.org/ntpd.8). * le contrôleur [ntpdctl(8)](http://man.openbsd.org/ntpctl.8). * le fichier de configuration [ntpd.conf](http://man.openbsd.org/ntpd.conf.5). * un exemple local : `/etc/examples/ntpd.conf` * RFC 1305 : https://tools.ietf.org/html/rfc1305 ; - *explications par Stéphane Bortzmeyer* : https://www.bortzmeyer.org/1305.html * RFC 5905 : https://tools.ietf.org/html/rfc5905 ; - *explications par Stéphane Bortzmeyer* : https://www.bortzmeyer.org/5905.html --- ## Historique J'ai écrit historiquement cette documentation sur le wiki de la communauté "OpenBSD Pour Tous". ---