Comment installer et configurer OpenNTPd sur FreeBSD 10.2

introduction

NTP, le Network Time Protocol, est un protocole normalisé permettant de synchroniser l’heure sur différents systèmes d’exploitation. http://openntpd.org [OpenNTPd] est une implémentation gratuite et facile à utiliser du protocole NTP (Network Time Protocol), initialement développée dans le cadre du projet http://openbsd.org [OpenBSD]. Il offre la possibilité de synchroniser l’horloge locale à partir de serveurs NTP distants et peut également agir comme serveur lui-même.

Ce tutoriel va vous montrer comment installer OpenNTPd sur FreeBSD.

Conditions préalables

Pour suivre ce tutoriel, vous devez avoir:

  • Un droplet FreeBSD 10.2 avec un utilisateur * racine *; l’utilisateur par défaut * freebsd * sur DigitalOcean va bien.

Un Droplet FreeBSD nécessite une clé SSH pour l’accès à distance. Pour obtenir de l’aide sur la configuration d’une clé SSH, consultez Comment configurer SSH Authentification par clé sur un serveur FreeBSD. Pour en savoir plus sur la connexion à votre droplet FreeBSD et sur la gestion de base, consultez la série de tutoriels Mettre avec FreeBSD.

Étape 1 - Installation d’OpenNTPd

Avant d’installer OpenNTPd, mettez à jour les informations de référentiel utilisées par + pkg +:

sudo pkg update

Ensuite, installez le package OpenNTPd:

sudo pkg install openntpd

La configuration OpenNTPd par défaut utilise + pool.ntp.org + comme serveurs de temps par défaut et est configurée pour fonctionner uniquement en tant qu’ordinateur client. La suite de ce tutoriel montrera comment changer le serveur de temps utilisé et comment configurer OpenNTPd en tant que serveur de temps.

Étape 2 - Changer le serveur de temps ((facultatif)

Les prochaines étapes éditeront + / usr / local / etc / ntpd.conf +, le fichier de configuration par défaut. Utilisez + ee +, + vi + ou votre éditeur de texte favori pour éditer le fichier de configuration.

sudo ee /usr/local/etc/ntpd.conf

Propulsé par le site Ask Bjørn Hansen GeoDNS, + pool.ntp.org + renvoie généralement les adresses IP des serveurs situés dans votre pays ou à proximité. Pour la plupart des utilisateurs, cela donnera les meilleurs résultats.

Vous pouvez également utiliser une zone de pays telle que + br.pool.ntp.org id.pool.ntp.org ou` + ru.pool.ntp.org + `pour forcer / limiter les résultats en fonction de vos besoins personnels. . Pour en savoir plus sur le projet de pool NTP, visitez le site http://www.pool.ntp.org [pool.ntp.org].

Pour l’exemple de ce tutoriel, nous utiliserons http://ntp.br [NTP.br], un projet au Brésil qui préserve et distribue l’heure légale sur le territoire brésilien. Si vous n’êtes pas au Brésil, utilisez un projet similaire dans votre pays ou votre région.

Définissez votre serveur de temps souhaité comme ceci, en substituant + pool.ntp.br + avec votre serveur de temps choisi.

/usr/local/etc/ntpd.conf

# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk 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


# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"

Étape 3 - Modification des contraintes

Une configuration client personnalisée peut également prendre en charge les contraintes afin que + ntpd + puisse interroger les en-têtes + Date: + à partir de serveurs HTTPS de confiance via TLS.

La page de manuel + ntpd.conf (5) + dit: "Les paquets NTP reçus dont les informations temporelles sont en dehors d’une plage proche de la contrainte seront ignorés et ces serveurs NTP seront marqués comme non valides". Cela évite certaines attaques MITM tout en préservant la précision de l’horloge.

Ajoutez les contraintes à + ​​/ usr / local / etc / ntpd.conf +. Veillez à utiliser un ou plusieurs sites HTTPS fiables et bien connus. Vous pouvez supprimer le commentaire de la ligne d’exemple fournie dans le fichier en supprimant le premier caractère + # + souligné ci-dessous:

/usr/local/etc/ntpd.conf

# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk 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


# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
constraints from "https://www.google.com/search?q=openntpd"

Étape 4 - Configuration d’OpenNTPd en tant que serveur de temps

Cette section vous montre comment changer le comportement par défaut d’OpenNTPd et transformer FreeBSD en un serveur NTP capable de gérer la durée sur IPv4 et IPv6.

Le résultat final pour une configuration de serveur doit ressembler à ceci, avec «++» remplacé par l’adresse IPv4 ou IPv6 de votre serveur.

/usr/local/etc/ntpd.conf

# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)


# 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.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"

Étape 5 - Démarrer OpenNTPd au démarrage

La configuration de service par défaut pour OpenNTPd ne démarrera pas le démon pendant le processus de démarrage de FreeBSD. Pour ajouter le service NTP fourni par + ntpd + sur FreeBSD, exécutez ce qui suit:

sudo sysrc openntpd_enable="YES"

Le résultat devrait être:

Outputopenntpd_enable:  -> YES

Si vous voulez définir l’heure immédiatement au démarrage, ajoutez + -s + à + ​​openntpd_flags +. + -v + peut également être utilisé pour que tous les appels vers + adjtime + soient enregistrés. En passant + -s + à + ​​ntpd +, le démon répondra pour l’un des serveurs NTP configurés. Ceci est, et une configuration personnalisée comme celle-ci devrait être configurée comme suit:

sudo sysrc openntpd_flags="-s -v"

Le résultat devrait être:

Outputopenntpd_flags:  -> -s -v

Étape 6 - Gestion du service OpenNTPd

Maintenant que le fichier de configuration est modifié et personnalisé pour répondre à tous vos besoins, vous pouvez démarrer le service fourni par OpenNTPd.

Pour démarrer le service:

sudo service openntpd start

Si cela commence avec succès, vous verrez:

OutputStarting openntpd.

Si les indicateurs du démon OpenNTPd sont configurés pour enregistrer les informations de débogage, le démarrage de la sortie devrait ressembler à ceci:

OutputStarting openntpd.
constraint certificate verification turned off
ntp_adjtime returns frequency of 8.643158ppm

Vous pouvez gérer le service OpenNTPd avec les commandes habituelles: + status +, + restart +, etc.

Étape 7 - Dépannage (facultatif)

OpenNTPd utilise deux fichiers binaires: + ntpd + et + ntpctl +. Le premier est le démon lui-même et est responsable du service NTP fourni à la machine cliente ou serveur. Le second est utilisé pour afficher des informations sur le démon en cours d’exécution.

Cette section vous montrera comment utiliser + ntpctl +, + nc + et + sockstat + pour dépanner le service NTP fourni par OpenNTPd et son démon. Si vous avez un service en cours d’exécution ou si vous souhaitez simplement vérifier de manière différente si votre service est en cours d’exécution, utilisez cette section.

Obtenir le statut et les pairs

+ Ntpctl + d’OpenNTPd utilise un socket local pour communiquer avec le démon OpenNTPd. La valeur par défaut est + / var / run / ntpd.sock +. Ce tutoriel couvrira deux types de requêtes que vous pouvez exécuter avec + ntpctl:` + status` et + peers.

+ status + indique l’état des pairs et des capteurs, ainsi que la synchronisation de l’horloge système. Lorsque l’horloge système est synchronisée, la strate est affichée. Lorsque l’horloge système n’est pas synchronisée, le décalage de l’horloge système, tel que rapporté par l’appel système + adjtime +, est affiché. Lorsque la contrainte médiane est définie, le décalage par rapport à l’heure locale est affiché.

Pour afficher le statut à l’aide de ntpctl:

sudo ntpctl -s status

La sortie devrait ressembler à ceci:

Sortie

8/8 peers valid, clock synced, stratum 2

+ pairs + affiche les informations suivantes sur chaque pair: poids (wt), niveau de confiance (tl), strate (st), et le nombre de secondes jusqu’à la prochaine mise à jour de l’homologue (sondage suivant). Les valeurs de décalage, de retard du réseau et de gigue du réseau sont exprimées en millisecondes. Lorsque l’horloge système est synchronisée avec un homologue, un astérisque (*) est affiché à gauche de la colonne de pondération de cet homologue.

Pour afficher des informations sur les pairs à l’aide de + ntpctl +:

sudo ntpctl -s peers

La sortie suivante indique les informations exécutées par OpenNTPd et synchronisées avec le serveur de la strate 1 répondant comme «200.160.7.193» (résolu depuis pool.ntp.br). Votre démon OpenNTPd mettra à jour l’heure via NTP en 31 secondes:

Output        peer
          wt tl st  next  poll          offset       delay      jitter
       200.160.0.8 from pool pool.ntp.br
           1 10  2    8s   30s        -0.005ms    44.814ms     0.023ms


       200.20.186.76 from pool pool.ntp.br
           1 10  1   18s   31s         0.023ms    37.481ms     0.031ms

. . .

Prises d’écoute

Vous pouvez utiliser + sockstat + pour lister les sockets de domaine IPv4, IPv6 et UNIX ouverts. Pour répertorier les sockets d’écoute liés à NTP sur IPv4 et IPv6:

sudo  sockstat -4 -6 -p 123

Sortie

USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
_ntp     ntpd       44208 7  udp4   203.0.113.123:16987  200.160.0.8:123
_ntp     ntpd       44208 8  udp4   203.0.113.123:38739  200.160.7.193:123

. . .

Si vous exécutez OpenNTPd pour diffuser l’heure sur le réseau, la colonne + LOCAL ADDRESS + vous montrera une ligne avec vos adresses IP; +: 123 +, représentant le socket IPv4, et +: 123 +, affichant un socket IPv6 en écoute.

Connexion à Internet

Utilisez + nc + pour dépanner non seulement NTP mais également de nombreux démons réseau et leurs sockets (UNIX, TCP ou UDP). La page de manuel dit: «Contrairement à` + telnet + , les scripts netcat séparent les messages d’erreur en erreurs standard au lieu de les envoyer à la sortie standard comme + telnet + `le fait avec certains».

Pour vérifier si vous pouvez atteindre un serveur NTP ou un hôte de pool via IPv4:

sudo nc pool.ntp.br 123 -z  -u -v
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!

Pour vérifier si vous pouvez atteindre un serveur NTP ou un hôte de pool via IPv6:

sudo nc pool.ntp.br 123 -z  -u -v
OutputConnection to pool.ntp.br 123 port [udp/ntp] succeeded!

Utiliser ntpdate

Utilisez + ntpdate + pour dépanner certains des serveurs que vous souhaitez utiliser. Vous pouvez obtenir des informations sur la machine exécutant le service NTP: + strate +, + offset + et + delay +.

sudo ntpdate -q  ntp.cais.rnp.br

La sortie ressemblera à:

Outputserver 200.144.121.33, stratum 3, offset -0.000049, delay 0.09001
1 Sep 17:28:54 ntpdate[66740]: adjust time server 200.144.121.33 offset -0.000049 sec

Notez que les fonctionnalités de + ntpdate + sont maintenant disponibles dans le programme + ntpd + de FreeBSD. Voir l’option de ligne de commande + -q + dans la page de manuel + ntpd + de FreeBSD, ou utilisez + ntpq +.

Lecture de pages de manuel

Les fichiers + ntpd +, '+ ntpd.conf + et + ntpctl + de OpenNTPd ne font pas partie du système de base de FreeBSD, donc ses pages de manuel ne font pas non plus partie des commandes par défaut + MANPATH + du système d’exploitation. Pour être sûr de lire les pages de manuel d’OpenNTPd, vous devez exécuter `+ man + avec + -M / usr / local / man +. Ne vous trompez pas avec les pages de manuel par défaut + ntpd (8) + de FreeBSD.

man -M /usr/local/man ntpd

Répétez la même procédure pour lire les commandes + ntpctl (8) + ou + ntpd.conf (5) + d’OpenNTPd.

Conclusion

Le temps est intrinsèquement important pour la fonction des postes de travail, des serveurs, des routeurs et des réseaux. Sans temps synchronisé, la corrélation précise des informations entre les périphériques devient difficile, voire impossible. En ce qui concerne la sécurité, si vous ne parvenez pas à comparer les journaux entre chacun de vos routeurs et tous vos serveurs de réseau, il vous sera très difficile de développer une image fiable de l’incident.