Inhaltsverzeichnis
ntp CentOS 7
Das NTP (Network Time Protocol) ist ein Protokoll, entwickelt um die einzelnen Uhren jedes an ein Netzwerk angeschlossenen Computers, synchron zu halten. Alle in diesem Netzwerk befindlichen Computer, haben dann eine einheitliche Zeit, wenn diese an der Verteilung der Zeitinformationen eines sogenannten „Zeitservers“, teilnehmen.
Es kann unter Umständen sehr wichtig sein, das alle Computer in einem Netzwerk die selbe Zeit zur Verfügung haben, da sonst z.B. der Austausch von DNS Informationen, bei einer zu hoher Zeitabweichung der einzelnen am DNS beteiligten Computer, nicht durchgeführt werden kann.
HINWEIS - Nachfolgend soll die Installation eines „Zeitservers“ für eine privates Netzwerk beschrieben werden!
HINWEIS - IPv6 soll NICHT genutzt werden!!!
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Installation
Zur Installation eines „Zeitservers“ werden nachfolgende Pakete benötigt:
ntpdate
- ist ebenfalls imbase
-Repository von CentOS enthalten und würde als Abhängigkeit zum Paket ntp sowieso installiert werden.
Es sind noch weitere Pakete zu ntp verfügbar, welche nicht zum Betrieb eines „Zeitservers“ zwingend erforderlich sind.
Mit nachfolgendem Befehl, werden die benötigten Pakete installiert:
# yum install ntp Loaded plugins: changelog, priorities 39 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package ntp.x86_64 0:4.2.6p5-18.el7.centos will be installed --> Processing Dependency: ntpdate = 4.2.6p5-18.el7.centos for package: ntp-4.2.6p5-18.el7.centos.x86_64 --> Processing Dependency: libopts.so.25()(64bit) for package: ntp-4.2.6p5-18.el7.centos.x86_64 --> Running transaction check ---> Package autogen-libopts.x86_64 0:5.18-5.el7 will be installed ---> Package ntpdate.x86_64 0:4.2.6p5-18.el7.centos will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: ntp x86_64 4.2.6p5-18.el7.centos base 539 k Installing for dependencies: autogen-libopts x86_64 5.18-5.el7 base 66 k ntpdate x86_64 4.2.6p5-18.el7.centos base 82 k Transaction Summary ================================================================================ Install 1 Package (+2 Dependent packages) Total download size: 687 k Installed size: 1.6 M Is this ok [y/d/N]: y Downloading packages: (1/3): autogen-libopts-5.18-5.el7.x86_64.rpm | 66 kB 00:05 (2/3): ntpdate-4.2.6p5-18.el7.centos.x86_64.rpm | 82 kB 00:00 (3/3): ntp-4.2.6p5-18.el7.centos.x86_64.rpm | 539 kB 00:05 -------------------------------------------------------------------------------- Total 130 kB/s | 687 kB 00:05 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : autogen-libopts-5.18-5.el7.x86_64 1/3 Installing : ntpdate-4.2.6p5-18.el7.centos.x86_64 2/3 Installing : ntp-4.2.6p5-18.el7.centos.x86_64 3/3 Verifying : ntpdate-4.2.6p5-18.el7.centos.x86_64 1/3 Verifying : ntp-4.2.6p5-18.el7.centos.x86_64 2/3 Verifying : autogen-libopts-5.18-5.el7.x86_64 3/3 Installed: ntp.x86_64 0:4.2.6p5-18.el7.centos Dependency Installed: autogen-libopts.x86_64 0:5.18-5.el7 ntpdate.x86_64 0:4.2.6p5-18.el7.centos Complete!
Mit nachfolgenden Befehlen kann überprüft werden, welche Inhalte mit den Paketen installiert wurden.
Paket ntp:
# rpm -qil ntp Name : ntp Version : 4.2.6p5 Release : 18.el7.centos Architecture: x86_64 Install Date: Sun 05 Oct 2014 02:19:43 PM CEST Group : System Environment/Daemons Size : 1425660 License : (MIT and BSD and BSD with advertising) and GPLv2 Signature : RSA/SHA256, Fri 04 Jul 2014 05:58:50 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : ntp-4.2.6p5-18.el7.centos.src.rpm Build Date : Wed 18 Jun 2014 11:20:44 PM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.ntp.org Summary : The NTP daemon and utilities Description : The Network Time Protocol (NTP) is used to synchronize a computer's time with another reference time source. This package includes ntpd (a daemon which continuously adjusts system time) and utilities used to query and configure the ntpd daemon. Perl scripts ntp-wait and ntptrace are in the ntp-perl package, ntpdate is in the ntpdate package and sntp is in the sntp package. The documentation is in the ntp-doc package. /etc/dhcp/dhclient.d /etc/dhcp/dhclient.d/ntp.sh /etc/ntp.conf /etc/ntp/crypto /etc/ntp/crypto/pw /etc/sysconfig/ntpd /usr/bin/ntpstat /usr/lib/systemd/ntp-units.d/60-ntpd.list /usr/lib/systemd/system/ntpd.service /usr/sbin/ntp-keygen /usr/sbin/ntpd /usr/sbin/ntpdc /usr/sbin/ntpq /usr/sbin/ntptime /usr/sbin/tickadj /usr/share/doc/ntp-4.2.6p5 /usr/share/doc/ntp-4.2.6p5/COPYRIGHT /usr/share/doc/ntp-4.2.6p5/ChangeLog /usr/share/doc/ntp-4.2.6p5/NEWS /usr/share/man/man5/ntp.conf.5.gz /usr/share/man/man5/ntp_acc.5.gz /usr/share/man/man5/ntp_auth.5.gz /usr/share/man/man5/ntp_clock.5.gz /usr/share/man/man5/ntp_decode.5.gz /usr/share/man/man5/ntp_misc.5.gz /usr/share/man/man5/ntp_mon.5.gz /usr/share/man/man8/ntp-keygen.8.gz /usr/share/man/man8/ntpd.8.gz /usr/share/man/man8/ntpdc.8.gz /usr/share/man/man8/ntpq.8.gz /usr/share/man/man8/ntpstat.8.gz /usr/share/man/man8/ntptime.8.gz /usr/share/man/man8/tickadj.8.gz /var/lib/ntp /var/lib/ntp/drift /var/log/ntpstats
Paket ntpdate:
# rpm -qil ntpdate Name : ntpdate Version : 4.2.6p5 Release : 18.el7.centos Architecture: x86_64 Install Date: Sun 05 Oct 2014 02:19:43 PM CEST Group : Applications/System Size : 123894 License : (MIT and BSD and BSD with advertising) and GPLv2 Signature : RSA/SHA256, Fri 04 Jul 2014 05:58:53 AM CEST, Key ID 24c6a8a7f4a80eb5 Source RPM : ntp-4.2.6p5-18.el7.centos.src.rpm Build Date : Wed 18 Jun 2014 11:20:44 PM CEST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.ntp.org Summary : Utility to set the date and time via NTP Description : ntpdate is a program for retrieving the date and time from NTP servers. /etc/ntp /etc/ntp/keys /etc/ntp/step-tickers /etc/sysconfig/ntpdate /usr/lib/systemd/system/ntpdate.service /usr/libexec/ntpdate-wrapper /usr/sbin/ntpdate /usr/share/doc/ntpdate-4.2.6p5 /usr/share/doc/ntpdate-4.2.6p5/COPYRIGHT /usr/share/man/man8/ntpdate.8.gz
Konfiguration
Um einen „Zeitserver“, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl enable ntpd.service ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'
Eine Überprüfung, ob beim Neustart des Server der ntpd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# systemctl list-unit-files --type=service | grep ntpd.service ntpd.service enabled
/etc/ntp.conf
In der Konfigurationsdatei
/etc/ntp.conf
wird der ntpd
-Dienst/Daemon konfiguriert.
Änderungen und persönliche Anpassungen sind mit einem voranstehenden Kommentar, welche wie nachfolgend dargestellt aussieht
# Tachtler
gekennzeichnet.
Hier die komplette Konfigurationsdatei /etc/ntp.conf
:
# For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). driftfile /var/lib/ntp/drift # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default nomodify notrap nopeer noquery # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 # Tachtler # default: restrict ::1 # restrict ::1 # Hosts on local network are less restricted. # Tachtler # default: #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). # Tachtler # default: server 0.centos.pool.ntp.org iburst # default: server 1.centos.pool.ntp.org iburst # default: server 2.centos.pool.ntp.org iburst # default: server 3.centos.pool.ntp.org iburst server time.idmz.tachtler.net server 192.168.0.20 #broadcast 192.168.1.255 autokey # broadcast server #broadcastclient # broadcast client #broadcast 224.0.1.1 autokey # multicast server #multicastclient 224.0.1.1 # multicast client #manycastserver 239.255.254.254 # manycast server #manycastclient 239.255.254.254 autokey # manycast client # Enable public key cryptography. #crypto includefile /etc/ntp/crypto/pw # Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys # Specify the key identifiers which are trusted. #trustedkey 4 8 42 # Specify the key identifier to use with the ntpdc utility. #requestkey 8 # Specify the key identifier to use with the ntpq utility. #controlkey 8 # Enable writing of statistics records. #statistics clockstats cryptostats loopstats peerstats # Disable the monitoring facility to prevent amplification attacks using ntpdc # monlist command when default restrict does not include the noquery flag. See # CVE-2013-5211 for more details. # Note: Monitoring will not be disabled with the limited restriction flag. disable monitor # Tachtler - new - interface ignore wildcard interface ignore all interface listen 192.168.0.10 # Tachtler - new - logconfig=allsync +allclock
/etc/sysconfig/ntpd
Nachfolgende Konfigurationsdatei /etc/sysconfig/ntpd
enthält die Einstellungen mit denen der Daemin/Dienst ntpd
gestartet wird und sieht standardmäßig wie nachfolgende geszeit aus:
# Command line options for ntpd OPTIONS="-g"
Folgende Ergänzugen sollten hier ggf. durchgeführt werden:
- Deaktivieren der Nutzung von IPv6, sondern nur - IPv4.
# Command line options for ntpd # Tachtler # default: OPTIONS="-g" OPTIONS="-4 -g"
WICHTIG - Diese Änderung ist NICHT ausreichend um IPv6 generell zu deaktivieren!!!
Nachfolgende Beschreibung zur Deaktivierung von IPv6 unter CentOS muss durchgeführt werden:
iptables Regel
Damit der „Zeitserver“ auch erreichbar ist und nicht die Weitergab der Zeitinformationen via NTP vom Paketfilter iptables
blockiert wird, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 141 10524 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 1 32 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 79 packets, 9140 bytes) num pkts bytes target prot opt in out source destination
Nachfolgender Befehl, fügt folgende iptables
-Regel dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p udp --dport 123 -j ACCEPT
und hier der Befehl:
# iptables -I INPUT 5 -p udp --dport 123 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 435 32812 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 6 4 128 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 12 packets, 1320 bytes) num pkts bytes target prot opt in out source destination
Die neue Zeile ist an Position 5 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Zeitserver starten
Um einen „Zeitserver“ zu starten muss der ntpd
-Dienst/Deamon mit nachfolgendem Befehl gestartete werden:
# systemctl start ntpd.service
Ob der „Zeitserver“, sprich der ntpd
-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):
# ps auxwwwf | grep ntpd root 15166 0.0 0.0 112640 924 pts/0 S+ 14:46 0:00 \_ grep --color=auto ntpd ntp 15164 0.0 0.1 25136 1732 ? Ss 14:46 0:00 /usr/sbin/ntpd -u ntp:ntp -4 -g
Zeitserver Status
Um zu überprüfen in wie weit der offset bzw. die Abweichung zur aktuell gültigen Zeit ist, kann nachfolgende Abfrage genutzt werden:
# ntpq -np4 remote refid st t when poll reach delay offset jitter ============================================================================== *192.168.0.20 78.47.148.174 3 u 46 64 1 2.081 -39.134 0.000
bzw. nachfolgendem Befehl:
# systemctl status ntpd.service ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled) Active: active (running) since Sun 2014-10-05 14:49:07 CEST; 1min 36s ago Process: 15176 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 15177 (ntpd) CGroup: /system.slice/ntpd.service 15177 /usr/sbin/ntpd -u ntp:ntp -4 -g Oct 05 14:49:07 rechner10.idmz.tachtler.net systemd[1]: Started Network Time Service. Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: proto: precision = 0.347 usec Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: 0.0.0.0 c01d 0d kern kernel time sync enabled Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16 Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123 Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listen normally on 1 lo 127.0.0.1 UDP 123 Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listen normally on 2 eth0 192.168.0.10 UDP 123 Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listening on routing socket on fd #21 for interface updates
Zeitserver optimieren
Falls der offset, wie in obigen Beispiel sehr hoch ist, würde eine Synchronisierung rein durch den ntpd
-Dienst/Deamon relativ lange dauern, die kann durch nachfolgende Befehle kurzum bereinigt werden, damit der offset relativ gering ist, zum Teil auch je nach Bandbreite der zur Verfügung stehenden Internet Anbindung.
Zuerst muss der ntpd
-Dienst/Deamon mit nachfolgendem Befehl gestoppt werden:
# systemctl stop ntpd.service
Anschließend wird die Zeit mit einem der unter dem Befehl ntpq -4np
aufgelisteten Zeitserver synchronisiert, was mit nachfolgendem Befehl realsiert werden kann:
# ntpdate 131.188.3.220 5 Oct 14:48:07 ntpdate[2517]: adjust time server 131.188.3.220 offset 0.145769 sec
Anschließend wird der ntpd
-Dienst/Deamon mit nachfolgendem Befehl wieder gestartet:
# service ntpd start Starting ntpd: [ OK ]
HINWEIS - Warten Sie ca. 10 Minuten, bevor nachfolgende Abfrage durchgeführt wird !!!
Abschließend wir der Befehl zu überprüfen, in wie weit der offset bzw. die Abweichung zur aktuell gültigen Zeit ist, noch einmal ausgeführt:
# ntpq -np4 remote refid st t when poll reach delay offset jitter ============================================================================== +46.4.54.78 129.69.1.153 2 u 19 64 377 36.111 28.293 24.654 *131.234.137.24 .DCF. 1 u 12 64 377 43.241 24.100 32.154 +141.40.103.103 129.69.1.153 2 u 11 64 377 46.183 25.988 30.931 +78.47.136.228 141.24.7.240 2 u 10 64 377 32.121 25.555 30.914 +95.89.157.176 192.168.100.122 2 u 13 64 377 61.341 28.482 35.455 +213.95.21.43 131.76.36.210 2 u 8 64 377 31.485 26.107 27.892 +213.9.73.106 134.34.3.18 2 u 7 64 377 39.795 26.240 25.152
Zeitserver und NetworkManager
Falls der NetworkManager auf dem Server mit dem „Zeitserver“ zum Einsatz kommt, kann es mit der Standard-Implementierung des NetworkManagers zu Problemen kommen. In diesem Falls ist in der Konfigurationsdatei:
/etc/sysconfig/network
nachfolgender Eintrag zu ergänzen (nur relevanter Ausschnitt):
... NETWORKWAIT=1