Protocole NTP et implémentation : questions.

Fermé
DoctorAngry Messages postés 159 Date d'inscription samedi 16 mars 2019 Statut Membre Dernière intervention 9 mars 2022 - 17 févr. 2022 à 18:34
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 10 mars 2022 à 14:59
Bonsoir,

J'ai écumé tout le web à la recherche d'information, je n'ai pas trouvé, et j'en suis très surpris.
Il s'agit pourtant d'un protocole d'un certain âge, et qui est massivement utilisé !

Bref, j'ai quelques question concernant l'implémentation de NTP dans un contexte d'entreprise.
- Déjà, est-il nécessaire pour une entreprise (admettons 100 serveurs) d'avoir des serveurs NTP ?
- Est-ce viable de conteneuriser ce service ?

Un peu plus technique maintenenant.
- Doit un déclarer comme "peer" l'ensemble des serveurs de la même strate (tout le monde est peer de tout le monde sur sa strate), ou juste un seul (de voisin à voisin) ?
- Est-il une bonne pratique de configurer les clients en broadcast ?
- Sinon, comment donner à nos client, l'adresse de tous nos NTP ?
- Comment faire de l'authentification asymétrique pour palier aux problèmes de sécurité ? Je ne trouve pas dutout les directives à mettre dans le fichier de configuration ! Et est-ce viable en environnement de production ?

Je vous remercie grandement pour ceux qui prendront le temps de me lire et/ou d'éclaircir ma lanterne !

Cordialement,
DrA

3 réponses

DoctorAngry Messages postés 159 Date d'inscription samedi 16 mars 2019 Statut Membre Dernière intervention 9 mars 2022 128
19 févr. 2022 à 20:53
Personne ? C'est don pour ça qu'il n'y a aucune ressource sur le net.
J'ai fais 3 forum et personne n'a de réponse.
Je ne comprends pas, pourtant ce protocole est largement utilisé...
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
21 févr. 2022 à 19:27
Bonjour,

Personne ? C'est don pour ça qu'il n'y a aucune ressource sur le net.

Mon conseil est de ne pas reposter afin que ta question apparaisse comme sans réponse, sans quoi la question peut passer inaperçue.

Ensuite je pense que tu as mal cherché, tu peux lire par exemple cette page et cette page.

Déjà, est-il nécessaire pour une entreprise (admettons 100 serveurs) d'avoir des serveurs NTP ?

Ça dépend. Pour commencer NTP n'est pas spécifique à un contexte entreprise ou non, il sert plus généralement à synchroniser les horloges de plusieurs systèmes d'exploitation.

Tu peux par exemple utiliser un serveur ntp publique pour régler l'heure de ta machine personnelle si tu le souhaites (voir par exemple ce lien).

C'est utile :
  • si tu utilises de systèmes de fichiers distribués (samba=
    cifs
    ou
    nfs
    ) pour éviter d'avoir des fichiers "créés dans le futur" ;

si tu centralises des logs (e.g. via
rsyslog
) recensant les alarmes de plusieurs machines et que tu centralises sur une même machine, ainsi les messages sont correctement horodatés.

Dans ces contextes, utiliser un service NTP fait sens : cela peut arriver (ou pas) en entreprise ou dans n'importe quelle infrastructure impliquant plusieurs machine.

Est-ce viable de conteneuriser ce service ?

Pourquoi pas, mais je ne vois pas l'intérêt et personnellement, je ne m'embêterais pas à le faire. Généralement les clients NTP sont localisés sur d'autres machines physiques.

Que tu décides d'utiliser un container ou non, l'important est que les clients NTP doivent simplement pouvoir accéder au serveur NTP (sinon ça n'a pas ton serveur NTP sera inutilisable et donc inutile).

Doit un déclarer comme "peer" l'ensemble des serveurs de la même strate (tout le monde est peer de tout le monde sur sa strate), ou juste un seul (de voisin à voisin) ?

Je ne pense pas, les strates n+1 dépendent des strates n, mais se fichent à priori de savoir qui est dans leur strate. À vérifier.

Est-il une bonne pratique de configurer les clients en broadcast ?

Ça dépend.
  • Tout message de broadcast signifie que tu "pollues" ton réseau. Après ça n'est pas un trafic volumineux donc on peut dire que ça n'est pas grave. C'est uniquement utile si tes clients espèrent recevoir des messages NTP mais ne connaissent pas l'adresse du serveur NTP et que le broadcaste permet d'atteindre tous les clients.
  • Si un serveur NTP malveillant broadcaste une mauvaise heure et que ton client NTP accepte ce qu'il dit, il peut se retrouver avec une mauvaise heure.


Pour toutes ces raisons, j'aurais plutôt tendance à configurer au niveau de chaque client son serveur NTP, a priori ça n'est pas utile, le client fera simplement une requête NTP quand il aura besoin de vérifier l'heure qu'il est.

- Sinon, comment donner à nos client, l'adresse de tous nos NTP ?

En corrigeant leur fichier
/etc/ntp.conf
comme expliqué dans ce lien. Utiliser
parallel-ssh
(aka
pssh
) peut faciliter le déploiement. Tu as aussi des outils comme
ansible
ou
puppet
.

- Comment faire de l'authentification asymétrique pour palier aux problèmes de sécurité ? Je ne trouve pas du tout les directives à mettre dans le fichier de configuration ! Et est-ce viable en environnement de production ?

Avant tout, lis ce lien sur NTS et ce lien.

Ensuite, pour répondre à ta question, voir ce lien.

Bonne chance
0
DoctorAngry Messages postés 159 Date d'inscription samedi 16 mars 2019 Statut Membre Dernière intervention 9 mars 2022 128
Modifié le 9 mars 2022 à 20:49
Bonsoir,

Merci pour ta réponse et désolé de la mienne qui est tardive.

Ensuite je pense que tu as mal cherché, tu peux lire par exemple cette page et cette page.
Effectivement j'avais déjà lu ces pages, comme bien d'autres, mais elles ne sont pas très documentés.

C'est utile :
si tu utilises de systèmes de fichiers distribués
si tu centralises des logs

Autant dire quasiment pour toutes les entreprises d'une certaine taille, je pense que les grandes entreprises qui n'analysent pas leurs logs se font rares. Syslog en effet, j'ajouterai aussi ELK.

Que tu décides d'utiliser un container ou non, l'important est que les clients NTP doivent simplement pouvoir accéder au serveur NTP
C'est vrai, quand j'y réfléchi, plus l'information horaire circule vite, plus elle sera précise (on parle là d'une différence infinitésimale), et docker ne ferait que rajouter des couches inutiles.

En corrigeant leur fichier /etc/ntp.conf
Tu as aussi des outils comme ansible ou puppet.

J'avais pensé à ces outils de gestion des configuration pour faire cela, en plus je commence à bien maîtriser ansible. Mais je me disais que c'était pas forcément la bonne pratique, et que peut être que le broadcast (couche basse) était plus adapté. Mais effectivement, vu de votre oeil, l'idée du broadcast semble moins bonne.

Je ne pense pas, les strates n+1 dépendent des strates n, mais se fichent à priori de savoir qui est dans leur strate. À vérifier.
D'après ce que j'avais lu, si on a 3 serveurs NTP, et qu'un a été compromis ou a tout simplement dérivé, le fait d'avoir 2 autres serveurs NTP en peer, qui lui donne de fait une heure différente, lui ferai se remettre en question sur la véracité de son horodatage.
Même chose si un client a 3 serveurs NTP, deux qui lui donnent 18h et un qui lui donne 17h, il se fiera aux deux qui lui donnent 18h.
C'est ce que j'avais crû comprendre, et que je voulais vérifier, d'où ma question.

Avant tout, lis ce lien sur NTS et ce lien.
Ensuite, pour répondre à ta question, voir ce lien.

Très intéressant, et ça confirme un peu ce que j'avais pu lire ailleurs : la sécurité sur le NTP, dans le cas ou elle est mise en place (ce qui est excessivement rare) est faible, lourde (renouvellement régulier du secret). Et il n'y a pour l'heure absolument aucune alternative viable ayant fait ses preuves. Par conséquent, en cas de compromission d'une machine d'un réseau, il est aisé de faire chanter les courbes de visualisation de données de logs (Kibana, Grafana, ...).
D'où mon incompréhension quand je lis ça "ça me parait vraiment inutile de se prendre autant la tête sur un serveur de temps.", quand on sait que la donnée a une importance décisionnelle, et parfois monétaire (répartitions de revenus publicitaires par exemple).

"Je répond peut-être à côté mais il me semble qu'il suffit d'avoir un seul serveur de temps pour toute l'infra, et renseigner ce serveur sur les autres machines."
En fait, dans ce cas, si l'unique NTP est compromis, on pourra mettre l'heure que l'on veut à tout le monde car il n'y aura pas d'autres NTP pour infirmer l'horodatage du NTP compromis.
En plus, un seul NTP crée immédiatement (et évidement j'ai envie de dire) un SPOF.
Et pour finir, si ton serveur NTP dérive quelque peu, ce qui peut arriver pour diverses raisons, il est encore une fois le seul à qui tes clients feront confiance, donc s'il dit une connerie, tout le monde le croira.


En tout cas cette discussion est très intéressante et je vous remercie pour vos idées et votre aide. N'hésitez pas à me corriger si je suis à côté de la plaque sur certains points, et à alimenter la discution.


PS :
Mon conseil est de ne pas reposter afin que ta question apparaisse comme sans réponse, sans quoi la question peut passer inaperçue.
Merci du conseil ! :-)
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749 > DoctorAngry Messages postés 159 Date d'inscription samedi 16 mars 2019 Statut Membre Dernière intervention 9 mars 2022
10 mars 2022 à 14:59
D'après ce que j'avais lu, si on a 3 serveurs NTP, et qu'un a été compromis ou a tout simplement dérivé, le fait d'avoir 2 autres serveurs NTP en peer, qui lui donne de fait une heure différente, lui ferai se remettre en question sur la véracité de son horodatage.Même chose si un client a 3 serveurs NTP, deux qui lui donnent 18h et un qui lui donne 17h, il se fiera aux deux qui lui donnent 18h. C'est ce que j'avais crû comprendre, et que je voulais vérifier, d'où ma question.

Alors là, je n'en ai aucune idée, je n'ai qu'une utilisation très limitée de NTP :-)

D'où mon incompréhension quand je lis ça "ça me parait vraiment inutile de se prendre autant la tête sur un serveur de temps.", quand on sait que la donnée a une importance décisionnelle, et parfois monétaire (répartitions de revenus publicitaires par exemple).

Un bon horodotage est évidemment important :-)

En fait, dans ce cas, si l'unique NTP est compromis, on pourra mettre l'heure que l'on veut à tout le monde car il n'y aura pas d'autres NTP pour infirmer l'horodatage du NTP compromis.

Changer l'heure du système nécessite des droits root. Ensuite, selon ce lien, tu es sensé avoir plusieurs serveurs NTP sous le coude pour que ton architecture soit plus résiliente.

Bonne chance
0
dabigben Messages postés 1890 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 13 octobre 2023 179
25 févr. 2022 à 11:55
Je suis pas grand connaisseur, mais ça me parait vraiment inutile de se prendre autant la tête sur un serveur de temps. Tu veux juste que toutes les machines, serveurs et clients, soient sur la même heure voila tout (partant du principe qu'ils sont sur le même fuseau). Je répond peut-être à côté mais il me semble qu'il suffit d'avoir un seul serveur de temps pour toute l'infra, et renseigner ce serveur sur les autres machines. Si les machines n'ont pas le même ntp et que leurs serveurs ntp respectifs sont décalés tu auras de erreurs de sécurité lors de connexions. La virtualisation aussi nécessite une bonne synchro de l'heure. Conteneuriser ça je vois pas l'intérêt. Ca reste un service peu gourmand qui peut tourner sur un contrôleur de domaine.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 10 mars 2022 à 14:50
Bonjour Dabigben,

Je suis pas grand connaisseur, mais ça me parait vraiment inutile de se prendre autant la tête sur un serveur de temps. Tu veux juste que toutes les machines, serveurs et clients, soient sur la même heure voila tout (partant du principe qu'ils sont sur le même fuseau).

C'est un peu optimiste, car malheureusement, les horloges des différents PC ne sont pas parfaitement exactes et dérivent.
adjtime
permet de nuancer ce phénomène mais risque de ne pas suffire si tu as beaucoup de machines. Tout l'intérêt d'un serveur de temps est de garantir que les horloges restent bien synchronisées (et correctes).

Je réponds peut-être à côté mais il me semble qu'il suffit d'avoir un seul serveur de temps pour toute l'infra, et renseigner ce serveur sur les autres machines. Si les machines n'ont pas le même ntp et que leurs serveurs ntp respectifs sont décalés tu auras de erreurs de sécurité lors de connexions.

Oui.

La virtualisation aussi nécessite une bonne synchro de l'heure. Conteneuriser ça je vois pas l'intérêt. Ca reste un service peu gourmand qui peut tourner sur un contrôleur de domaine.

Même avis, d'autant que tu peux utiliser un serveur NTP public et si tu veux ton propre serveur NTP, il faudra alors s'assurer qu'il doit bien joignable par l'ensemble des clients NTP.
1