Description
OpenNTPD est intégré nativement dans OpenBSD.
Serveurs NTP
Les adresses de serveurs NTP sont visibles depuis la page pour trouver un serveur.
Les serveurs de pool NTP 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, 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
:
# $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 sortiestderr
.-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 possiblespeers
: affiche les informations relatives à chaque pairSensors
: 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).
- le contrôleur ntpdctl(8).
- le fichier de configuration ntpd.conf.
- 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”.