Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| sysadmin:linux:serveur-ntp [2022/01/05 22:53] – Ajout section pare-feu yoann | sysadmin:linux:serveur-ntp [2025/11/10 14:57] (Version actuelle) – yoann | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| {{tag> | {{tag> | ||
| - | ====== Installer serveur ntp ====== | + | ====== Installer |
| **NTP**((**N**etwork **T**ime **P**rotocol)) permet de distribuer l' | **NTP**((**N**etwork **T**ime **P**rotocol)) permet de distribuer l' | ||
| Ligne 9: | Ligne 9: | ||
| Le système est pyramidal pour éviter la surcharge des serveurs. Les sources sont de niveau 0 (strate), Chaque serveur est configuré sur un serveur parent | Le système est pyramidal pour éviter la surcharge des serveurs. Les sources sont de niveau 0 (strate), Chaque serveur est configuré sur un serveur parent | ||
| - | ==== Installation ===== | + | ===== Installation ===== |
| + | |||
| + | Sur les systèmes de type Debian : | ||
| <code bash> | <code bash> | ||
| $ sudo apt-get install ntp | $ sudo apt-get install ntp | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Sur les versions récentes de Debian (bullseye, bookworm) la version historique du serveur ntp est remplacée par le projet NTPsec : une implémentation sécurisée, | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | apt install -y ntpsec{, | ||
| </ | </ | ||
| Ligne 19: | Ligne 29: | ||
| Le protocole NTP communique en **UDP** sur le **port 123** pour se synchroniser avec les serveurs distants. | Le protocole NTP communique en **UDP** sur le **port 123** pour se synchroniser avec les serveurs distants. | ||
| - | La configuration du serveur se fait via **/ | + | La configuration du serveur se fait via '' |
| < | < | ||
| Ligne 33: | Ligne 43: | ||
| </ | </ | ||
| - | Une machine | + | La machine |
| La configuration du client ntp se fait via / | La configuration du client ntp se fait via / | ||
| Ligne 114: | Ligne 124: | ||
| Can't open KOD db file / | Can't open KOD db file / | ||
| sock_cb: 192.168.33.254 not in sync, skipping this server | sock_cb: 192.168.33.254 not in sync, skipping this server | ||
| + | </ | ||
| + | |||
| + | Le client n' | ||
| + | |||
| + | < | ||
| + | sntp ntp.phobos.lan | ||
| + | sntp 4.2.8p12@1.3728-o (1) | ||
| + | Can't open KOD db file / | ||
| + | 2022-01-06 19: | ||
| </ | </ | ||
| Ligne 122: | Ligne 141: | ||
| ===== Paramétrage du pare-feu ===== | ===== Paramétrage du pare-feu ===== | ||
| - | Si l'on souhaite contrôler précisément le trafic NTP au tarvers | + | Si l'on souhaite contrôler précisément le trafic NTP au travers d'un pare-feu restrictif, il est possible de créer des règles exploitant les ensembles (ipsets). |
| - | creation | + | création |
| <code bash> | <code bash> | ||
| Ligne 135: | Ligne 154: | ||
| dig +short 2.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers | dig +short 2.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers | ||
| dig +short 3.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers | dig +short 3.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers | ||
| + | |||
| </ | </ | ||
| - | Création/ | + | Création/ |
| <code bash> | <code bash> | ||
| # Journalise le trafic NTP sortant | # Journalise le trafic NTP sortant | ||
| Ligne 145: | Ligne 165: | ||
| iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ACCEPT | iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ACCEPT | ||
| </ | </ | ||
| + | |||
| + | Si le système utilise **UFW**, on ne peut pas créer directement de règle exploitant les ipset via la commande **ufw**. Néanmoins il est possible d' | ||
| + | |||
| + | <code bash> | ||
| + | # Rendre le script exécutable pour qu'il soit automatiquement appelé par ufw-init | ||
| + | chmod ug+x / | ||
| + | |||
| + | # Sauvegarder les ensembles existants pour qu'ils puissent être rechargés | ||
| + | ipset save > / | ||
| + | </ | ||
| + | |||
| + | Modifier le fichier **/ | ||
| + | |||
| + | <file bash after.rules> | ||
| + | # | ||
| + | # Copyright 2013 Canonical Ltd. | ||
| + | # | ||
| + | # This program is free software: you can redistribute it and/or modify | ||
| + | # it under the terms of the GNU General Public License version 3, | ||
| + | # as published by the Free Software Foundation. | ||
| + | # | ||
| + | # This program is distributed in the hope that it will be useful, | ||
| + | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| + | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| + | # GNU General Public License for more details. | ||
| + | # | ||
| + | # You should have received a copy of the GNU General Public License | ||
| + | # along with this program. | ||
| + | # | ||
| + | set -e | ||
| + | |||
| + | case " | ||
| + | start) | ||
| + | # typically required | ||
| + | if [ -r / | ||
| + | then | ||
| + | ipset -f / | ||
| + | # Journalise et autorise le trafic NTP a destination des serveurs des pools *.fr.pool.ntp.org | ||
| + | iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ufw-logging-allow -m comment --comment " | ||
| + | iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ACCEPT -m comment --comment " | ||
| + | fi | ||
| + | ;; | ||
| + | stop) | ||
| + | # typically required | ||
| + | ipset destroy | ||
| + | ;; | ||
| + | status) | ||
| + | # optional | ||
| + | ;; | ||
| + | flush-all) | ||
| + | # optional | ||
| + | ;; | ||
| + | *) | ||
| + | echo "' | ||
| + | echo " | ||
| + | ;; | ||
| + | esac | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Troubleshooting ===== | ||
| + | |||
| + | Même après redémarrage du service, le serveur ne semble pas prendre en compte les modifications apportées dans le fichier de configuration **/ | ||
| + | |||
| + | En consultant les traces dans les journaux système, dans ce cas, la ligne de commande indique que le fichier de configuration effectivement utilisé est celui généré par le client DHCP: | ||
| + | < | ||
| + | janv. 06 21:47:56 nucleus systemd[1]: Starting Network Time Service... | ||
| + | janv. 06 21:47:56 nucleus ntpd[14576]: | ||
| + | janv. 06 21:47:56 nucleus ntpd[14576]: | ||
| + | . . . | ||
| + | </ | ||
| + | |||
| + | systemd exécute le script ''/ | ||
| + | |||
| + | Si on stoppe le service, qu'on supprime le fichier et qu'on relance le service, le serveur se comporte comme souhaité et charge le fichier de configuration ''/ | ||
| + | |||
| + | <code bash> | ||
| + | # Arret du serveur NTP | ||
| + | systemctl stop ntp.service | ||
| + | |||
| + | # suppression du fichier de configuration ntp généré par le client DHCP | ||
| + | rm / | ||
| + | |||
| + | # Redémarra du serveur NTP | ||
| + | systemctl start ntp.service | ||
| + | </ | ||
| + | |||
| + | Ci dessous les traces au redémarrage: | ||
| + | < | ||
| + | janv. 06 22:39:52 nucleus systemd[1]: Starting Network Time Service... | ||
| + | janv. 06 22:39:52 nucleus ntpd[20816]: | ||
| + | janv. 06 22:39:52 nucleus ntpd[20816]: | ||
| + | . . . | ||
| + | </ | ||
| + | |||
| + | via la commande **ntpq** on s' | ||
| + | < | ||
| + | ntpq -p -n | ||
| + | | ||
| + | ============================================================================== | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Les pools définis dans le fichier de configuration / | ||
| + | |||
| + | |||
| + | |||
| + | * redéfinir le comportement du client DHCP pour empêcher qu'il modifie le serveur NTP | ||
| + | * redéfinir le service via systemd | ||
| ===== Références ===== | ===== Références ===== | ||
| * https:// | * https:// | ||
| - | * https:// | + | * https:// |
| + | * https:// | ||
| + | * [[https:// | ||