Inhaltsverzeichnis
Time Protocol CentOS 6
Das sogenannte Time Protocol ist im RFC868 - deutsch beschrieben und ist eine ältere Möglichkeit, einen Zeitserver zu realisieren, ähnlich wie das NTP (Network Time Protocol) jedoch mit anderer Protokoll-Spezifikation, 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.
Das „Time Protocol“ sieht eine Website-unabhängige, maschinenlesbare Datum- und Zeitübermittlung vor. Der „Zeitserver“ sendet die Zeit, gerechnet in Sekunden seit Mitternacht des 1. Januar 1900, als 32-Bit-Binärzahl.
Um einen „Zeitserver“ im Time Protocol unter CentOS zu realisieren, kann der xinetd
-Dienst/Daemon verwendet werden. Nachfolgen soll veranschaulicht werden, wie unter Zuhilfenahme des xinetd
-Dienstes/Daemon dies realisiert werden kann.
HINWEIS - Nachfolgend soll die Installation eines „Zeitservers“ für eine privates Netzwerk beschrieben werden!
HINWEIS - Der Einsatz von 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“ wird nachfolgendes Paket benötigt:
installiert werden.
Um eine „Zeitabfrage“ gegen den „Zeitserver“ durchführen zu können, kann das Paket
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete xinetd
installiert:
# yum install xinetd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.hosteurope.de * extras: ftp.hosteurope.de * updates: ftp.hosteurope.de Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package xinetd.x86_64 2:2.3.14-29.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: xinetd x86_64 2:2.3.14-29.el6 base 120 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total download size: 120 k Installed size: 257 k Is this ok [y/N]: y Downloading Packages: xinetd-2.3.14-29.el6.x86_64.rpm | 120 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : 2:xinetd-2.3.14-29.el6.x86_64 1/1 Installed: xinetd.x86_64 2:2.3.14-29.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket xinetd
installiert wurden.
# rpm -qil xinetd Name : xinetd Relocations: (not relocatable) Version : 2.3.14 Vendor: CentOS Release : 29.el6 Build Date: Thu 11 Nov 2010 06:44:27 PM CET Install Date: Sat 06 Aug 2011 12:23:30 PM CEST Build Host: c6b6.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: xinetd-2.3.14-29.el6.src.rpm Size : 263397 License: xinetd Signature : RSA/8, Sun 03 Jul 2011 07:05:49 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.xinetd.org Summary : A secure replacement for inetd Description : Xinetd is a secure replacement for inetd, the Internet services daemon. Xinetd provides access control for all services based on the address of the remote host and/or on time of access and can prevent denial-of-access attacks. Xinetd provides extensive logging, has no limit on the number of server arguments, and lets you bind specific services to specific IP addresses on your host machine. Each service has its own specific configuration file for Xinetd; the files are located in the /etc/xinetd.d directory. /etc/rc.d/init.d/xinetd /etc/sysconfig/xinetd /etc/xinetd.conf /etc/xinetd.d/chargen-dgram /etc/xinetd.d/chargen-stream /etc/xinetd.d/daytime-dgram /etc/xinetd.d/daytime-stream /etc/xinetd.d/discard-dgram /etc/xinetd.d/discard-stream /etc/xinetd.d/echo-dgram /etc/xinetd.d/echo-stream /etc/xinetd.d/tcpmux-server /etc/xinetd.d/time-dgram /etc/xinetd.d/time-stream /usr/sbin/xinetd /usr/share/doc/xinetd-2.3.14 /usr/share/doc/xinetd-2.3.14/CHANGELOG /usr/share/doc/xinetd-2.3.14/COPYRIGHT /usr/share/doc/xinetd-2.3.14/INSTALL /usr/share/doc/xinetd-2.3.14/README /usr/share/doc/xinetd-2.3.14/empty.conf /usr/share/doc/xinetd-2.3.14/sample.conf /usr/share/man/man5/xinetd.conf.5.gz /usr/share/man/man5/xinetd.log.5.gz /usr/share/man/man8/xinetd.8.gz
Mit nachfolgendem Befehl, wird das Pakete rdate
installiert:
# yum install rdate Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.hosteurope.de * extras: ftp.hosteurope.de * updates: ftp.hosteurope.de Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package rdate.x86_64 0:1.4-16.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: rdate x86_64 1.4-16.el6 base 19 k Transaction Summary ================================================================================ Install 1 Package(s) Upgrade 0 Package(s) Total download size: 19 k Installed size: 29 k Is this ok [y/N]: y Downloading Packages: rdate-1.4-16.el6.x86_64.rpm | 19 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : rdate-1.4-16.el6.x86_64 1/1 Installed: rdate.x86_64 0:1.4-16.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket rdate
installiert wurden.
# rpm -qil rdate Name : rdate Relocations: (not relocatable) Version : 1.4 Vendor: CentOS Release : 16.el6 Build Date: Thu 11 Nov 2010 08:20:51 PM CET Install Date: Sat 06 Aug 2011 01:16:29 PM CEST Build Host: c6b4.bsys.dev.centos.org Group : Applications/System Source RPM: rdate-1.4-16.el6.src.rpm Size : 29675 License: GPLv2+ Signature : RSA/8, Sun 03 Jul 2011 07:00:07 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : ftp://people.redhat.com/sopwith/ Summary : Tool for getting the date/time from a remote machine Description : The rdate utility retrieves the date and time from another machine on your network, using the protocol described in RFC 868. If you run rdate as root, it will set your machine's local time to the time of the machine that you queried. /usr/bin/rdate /usr/share/doc/rdate-1.4 /usr/share/doc/rdate-1.4/COPYING /usr/share/man/man1/rdate.1.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:
# chkconfig xinetd on
Eine Überprüfung, ob beim Neustart des Server der xinetd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# chkconfig --list | grep xinetd xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services:
/etc/xinetd.d
Mit nachfolgendem Befehl, kann in das Konfigurationsverzeichnis
/etc/xinetd.d
gewechselt werden:
# cd /etc/xinetd.d
Innerhalb des Verzeichnisses, dessen Inhalt mit nachfolgendem Befehl aufgelistet werden kann und eine Ausgabe in etwa wie nachfolgende erzeugen sollte,
# ls -l /etc/xinetd.d total 44 -rw-r--r--. 1 root root 1157 Nov 11 2010 chargen-dgram -rw-r--r--. 1 root root 1159 Nov 11 2010 chargen-stream -rw-r--r--. 1 root root 1157 Nov 11 2010 daytime-dgram -rw-r--r--. 1 root root 1159 Nov 11 2010 daytime-stream -rw-r--r--. 1 root root 1157 Nov 11 2010 discard-dgram -rw-r--r--. 1 root root 1159 Nov 11 2010 discard-stream -rw-r--r--. 1 root root 1148 Nov 11 2010 echo-dgram -rw-r--r--. 1 root root 1150 Nov 11 2010 echo-stream -rw-r--r--. 1 root root 1212 Nov 11 2010 tcpmux-server -rw-r--r--. 1 root root 1149 Nov 11 2010 time-dgram -rw-r--r--. 1 root root 1150 Nov 11 2010 time-stream
sind die beiden Konfigurationsdateien
/etc/xinetd.d/time-dgram
/etc/xinetd.d/time-stream
von Bedeutung!
Änderungen und persönliche Anpassungen sind mit einem voranstehenden Kommentar, welche wie nachfolgend dargestellt aussieht
# Tachtler
gekennzeichnet.
/etc/xinetd.d/time-dgram
Nachfolgend dargestellte Änderungen sollten an der Konfigurationsdatei durchgeführt werden (komplette Konfigurationsdatei):
# This is the configuration for the udp/dgram time service. service time { # This is for quick on or off of the service # Tachtler # default: disable = yes disable = no # The next attributes are mandatory for all services id = time-dgram type = INTERNAL wait = yes socket_type = dgram # protocol = socket type is usually enough # External services must fill out the following # user = # group = # server = # server_args = # External services not listed in /etc/services must fill out the next one # port = # RPC based services must fill out these # rpc_version = # rpc_number = # Logging options # log_type = # log_on_success = # log_on_failure = # Networking options # Tachtler # default: # flags = flags = IPv4 # bind = # redirect = # v6only = # Access restrictions # only_from = # no_access = # access_times = # cps = 50 10 # instances = UNLIMITED # per_source = UNLIMITED # max_load = 0 # deny_time = 120 # mdns = yes # Environmental options # env = # passenv = # nice = 0 # umask = 022 # groups = yes # rlimit_as = # rlimit_cpu = # rlimit_data = # rlimit_rss = # rlimit_stack = # Banner options. (Banners aren't normally used) # banner = # banner_success = # banner_fail = }
/etc/xinetd.d/time-stream
Nachfolgend dargestellte Änderungen sollten an der Konfigurationsdatei durchgeführt werden (komplette Konfigurationsdatei):
# This is the configuration for the tcp/stream time service. service time { # This is for quick on or off of the service # Tachtler # default: disable = yes disable = no # The next attributes are mandatory for all services id = time-stream type = INTERNAL wait = no socket_type = stream # protocol = socket type is usually enough # External services must fill out the following # user = # group = # server = # server_args = # External services not listed in /etc/services must fill out the next one # port = # RPC based services must fill out these # rpc_version = # rpc_number = # Logging options # log_type = # log_on_success = # log_on_failure = # Networking options # Tachtler # default: # flags = flags = IPv4 # bind = # redirect = # v6only = # Access restrictions # only_from = # no_access = # access_times = # cps = 50 10 # instances = UNLIMITED # per_source = UNLIMITED # max_load = 0 # deny_time = 120 # mdns = yes # Environmental options # env = # passenv = # nice = 0 # umask = 022 # groups = yes # rlimit_as = # rlimit_cpu = # rlimit_data = # rlimit_rss = # rlimit_stack = # Banner options. (Banners aren't normally used) # banner = # banner_success = # banner_fail = }
iptables Regel
Damit der „Zeitserver“ auch erreichbar ist und nicht die Weitergab der Zeitinformationen via Time Protocol 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 2420 321K 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 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 106 8056 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 6 28 896 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 2246 packets, 823K bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 37 -j ACCEPT
-A INPUT -p udp --dport 37 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -p tcp --dport 37 -j ACCEPT # iptables -I INPUT 5 -p udp --dport 37 -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 2571 334K 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 1 60 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:37 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:37 7 115 8740 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:123 8 31 992 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 6 packets, 800 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 und Postition 6 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:37 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:37 ...
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 xinetd
-Dienst/Deamon mit nachfolgendem Befehl gestartete werden:
# service xinetd start Starting xinetd: [ OK ]
Ob der „Zeitserver“, sprich der xinetd
-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 xinetd root 1235 0.0 0.1 103148 824 pts/0 S+ 12:54 0:00 \_ grep xinetd root 1228 0.0 0.1 21972 936 ? Ss 12:54 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
Eine weitere Überprüfung, ob auch die entsprechenden Services des inetd
-Dienstes/Daemon gestartete werden, kann mit nachfolgendem Befehl herausgefunden werden:
# chkconfig --list | tail -n 14 xinetd 0:off 1:off 2:on 3:on 4:on 5:on 6:off xinetd based services: chargen-dgram: off chargen-stream: off daytime-dgram: off daytime-stream: off discard-dgram: off discard-stream: off echo-dgram: off echo-stream: off tcpmux-server: off time-dgram: on time-stream: on
Zeitserver überprüfen
Unter Zuhilfenahme des Befehls rdate
, kann überprüft werden, ob der „Zeitserver“ zur Auslieferung der Zeit im Stande ist.
Nachfolgende Befehle, können auf dem Server auf dem der „Zeitserver“ läuft, oder auf einem sich im Netzwerk befindlichen Server durchgeführt werden:
Befehl zu Abfrage gegen den Zeitserver via TCP:
# rdate 192.168.0.2 rdate: [192.168.0.2] Sat Aug 6 13:22:30 2011
Befehl zu Abfrage gegen den Zeitserver via UDP:
# rdate -u 192.168.0.2 rdate: [192.168.0.2] Sat Aug 6 13:23:24 2011