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 21:33] – yoann | sysadmin:linux:serveur-ntp [2022/01/08 18:48] (Version actuelle) – yoann | ||
---|---|---|---|
Ligne 114: | Ligne 114: | ||
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 119: | Ligne 128: | ||
systemd intègre un client sntp, voir le wiki [[sysadmin: | systemd intègre un client sntp, voir le wiki [[sysadmin: | ||
+ | |||
+ | ===== Paramétrage du pare-feu ===== | ||
+ | |||
+ | 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). | ||
+ | |||
+ | création d'un ensemble ipset | ||
+ | |||
+ | <code bash> | ||
+ | # création de l' | ||
+ | ipset create set_ntp_servers hash:ip maxelem 64 | ||
+ | |||
+ | # peuplement de l' | ||
+ | dig +short 0.fr.pool.ntp.org | xargs --max-args=1 ipset add set_ntp_servers | ||
+ | dig +short 1.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 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Création/ | ||
+ | <code bash> | ||
+ | # Journalise le trafic NTP sortant | ||
+ | iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ufw-logging-allow | ||
+ | |||
+ | # Autorise le trafic NTP sortant | ||
+ | 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 ===== | ||
Ligne 124: | Ligne 277: | ||
* https:// | * https:// | ||
* https:// | * https:// | ||
+ | * https:// |