Outils pour utilisateurs

Outils du site


sysadmin:linux:serveur-ntp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:linux:serveur-ntp [2022/01/05 21:33] yoannsysadmin:linux:serveur-ntp [2022/01/08 18:48] (Version actuelle) yoann
Ligne 114: Ligne 114:
 Can't open KOD db file /var/lib/sntp/kod for writing: Permission denied Can't open KOD db file /var/lib/sntp/kod for writing: Permission denied
 sock_cb: 192.168.33.254 not in sync, skipping this server sock_cb: 192.168.33.254 not in sync, skipping this server
 +</file>
 +
 +Le client n'utilise pas le serveur car celui-ci n'est pas correctement synchronisé. Revoir les paramétrages du serveur.
 +
 +<file>
 +sntp ntp.phobos.lan
 +sntp 4.2.8p12@1.3728-o (1)
 +Can't open KOD db file /var/lib/sntp/kod for writing: Permission denied
 +2022-01-06 19:35:32.058110 (-0100) +0.906487 +/- 0.678315 ntp.phobos.lan 192.168.33.254 s4 no-leap
 </file> </file>
  
Ligne 119: Ligne 128:
  
 systemd intègre un client sntp, voir le wiki [[sysadmin:linux:systemd:synchronisation-du-temps| synchronisation du temps par systemd]]. systemd intègre un client sntp, voir le wiki [[sysadmin:linux:systemd:synchronisation-du-temps| synchronisation du temps par systemd]].
 +
 +===== 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'ensemble
 +ipset create set_ntp_servers hash:ip maxelem 64
 +
 +# peuplement de l'ensemble avec les adresses des serveurs
 +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
 +
 +</code>
 +
 +Création/test des règles netfilter
 +<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
 +</code>
 +
 +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'intégrer des règles iptables au framework UFW en les ajoutant dans le fichier **/etc/ufw/after.rules**. Ce fichier script, s'il est exécutable est utilisé par lors du démarrage/arrêt du pare-feu UFW.
 +
 +<code bash>
 +# Rendre le script exécutable pour qu'il soit automatiquement appelé par ufw-init
 +chmod ug+x /etc/ufw/after.rules
 +
 +# Sauvegarder les ensembles existants pour qu'ils puissent être rechargés
 +ipset save > /etc/ufw/sets.ipset
 +</code>
 +
 +Modifier le fichier **/etc/ufw/after.rules**, dans la section start, on reconstruit les ensembles ipset à partir du fichier de sauvegarde puis on crée les règles via les appels **iptable**. Dans la section stop, les ensembles sont détruits.
 +
 +<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.  See the
 +#    GNU General Public License for more details.
 +#
 +#    You should have received a copy of the GNU General Public License
 +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 +#
 +set -e
 +
 +case "$1" in
 +start)
 +    # typically required
 +    if [ -r /etc/ufw/sets.ipset ]
 +    then
 +      ipset -f /etc/ufw/sets.ipset restore
 +      # 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 "Autorise trafic NTP vers fr.pool.ntp.org"
 +      iptables -A ufw-after-output -o wan -m set --match-set set_ntp_servers dst -p udp --dport 123 -j ACCEPT -m comment --comment "Autorise trafic NTP vers fr.pool.ntp.org"
 +    fi
 +    ;;
 +stop)
 +    # typically required
 +    ipset destroy
 +    ;;
 +status)
 +    # optional
 +    ;;
 +flush-all)
 +    # optional
 +    ;;
 +*)
 +    echo "'$1' not supported"
 +    echo "Usage: after.init {start|stop|flush-all|status}"
 +    ;;
 +esac
 +
 +</file>
 +
 +
 +
 +===== 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 **/etc/ntp.conf**
 +
 +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:
 +<file>
 +janv. 06 21:47:56 nucleus systemd[1]: Starting Network Time Service...
 +janv. 06 21:47:56 nucleus ntpd[14576]: ntpd 4.2.8p15@1.3728-o Wed Sep 23 11:46:38 UTC 2020 (1): Starting
 +janv. 06 21:47:56 nucleus ntpd[14576]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -c /run/ntp.conf.dhcp -u 116:122
 +. . .
 +</file>
 +
 +systemd exécute le script ''/usr/lib/ntp/ntp-systemd-wrapper''. Dans ce script, si un fichier ''/run/ntp.conf.dhcp'' existe, il est utilisé comme fichier de configuration.
 +
 +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 ''/etc/ntp.conf''.
 +
 +<code bash>
 +# Arret du serveur NTP
 +systemctl stop ntp.service
 +
 +# suppression du fichier de configuration ntp généré par le client DHCP
 +rm /run/ntp.conf.dhcp
 +
 +# Redémarra du serveur NTP
 +systemctl start ntp.service
 +</code>
 +
 +Ci dessous les traces au redémarrage:
 +<file>
 +janv. 06 22:39:52 nucleus systemd[1]: Starting Network Time Service...
 +janv. 06 22:39:52 nucleus ntpd[20816]: ntpd 4.2.8p15@1.3728-o Wed Sep 23 11:46:38 UTC 2020 (1): Starting
 +janv. 06 22:39:52 nucleus ntpd[20816]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 116:122
 +. . .
 +</file>
 +
 +via la commande **ntpq** on s'assure que les pools définis dans la configuration sont à présent utilisés:
 +<file>
 +ntpq -p -n
 +     remote           refid      st t when poll reach   delay   offset  jitter
 +==============================================================================
 + 0.fr.pool.ntp.o .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 + 1.fr.pool.ntp.o .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 + 2.fr.pool.ntp.o .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 + 3.fr.pool.ntp.o .POOL.          16 p    -   64    0    0.000   +0.000   0.000
 + 162.159.200.1   10.19.12.255     3 u   31   64    1   13.507  -396.96   0.000
 + 37.187.5.167    131.188.3.222    2 u   31   64    1   17.812  -397.75   0.000
 + 151.80.211.8    212.83.158.83    3 u   32   64    1   16.706  -396.85   0.000
 +</file>
 +
 +Les pools définis dans le fichier de configuration /etc/ntp.conf sont bien utilisés après suppression du fichier /run/ntp.conf.dhcp cependant la modification n'est que temporaire car il sera recréé et reutilisé au prochain démarrage.
 +
 +
 +
 +  * 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://doc.ubuntu-fr.org/ntp   * https://doc.ubuntu-fr.org/ntp
   * https://www.pool.ntp.org/zone/fr   * https://www.pool.ntp.org/zone/fr
 +  * https://docs.ntpsec.org/latest/ntp_conf.html
sysadmin/linux/serveur-ntp.1641418437.txt.gz · Dernière modification : 2022/01/05 21:33 de yoann