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 [2020/05/27 16:39] yoannsysadmin:linux:serveur-ntp [2022/01/08 18:48] (Version actuelle) yoann
Ligne 97: Ligne 97:
 Démarrage de ntpd :                                        [  OK  ] Démarrage de ntpd :                                        [  OK  ]
 </code> </code>
 +
 +===== Le client sntp =====
 +
 +Pour tester la communication avec le serveur depuis le bash, on peut installer le client **sntp**:
 +<code bash>
 +# installation du client
 +sudo apt-install sntp
 +
 +# test de connexion au serveur
 +sntp server.fqdn
 +</code>
 +
 +Toute requête vers le serveur retourne le message:
 +<file>
 +sntp 4.2.8p12@1.3728-o (1)
 +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
 +</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>
  
 ===== Le client sntp de systemd ===== ===== Le client sntp de systemd =====
  
-systemd intègre un client sntp, voir le wiki [[sysadmin:linux:systemd:synchronisation-du-temps]]+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 106: 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.1590597576.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)