11.5. chrony 中的网络时间安全概述(NTS)
Network Time Security(NTS)是用于网络时间协议(NTP)的身份验证机制,旨在扩展大量客户端。它将验证从服务器计算机接收的数据包在移到客户端机器时是否被取消处理。Network Time Security(NTS)包含 Key Establishment(NTS-KE)协议,该协议会自动创建在服务器及其客户端中使用的加密密钥。
NTS 与 FIPS 和 OSPP 配置文件不兼容。当您启用 FIPS 和 OSPP 配置文件时,使用 NTS 配置的 chronyd 可能会中止,并显示一条致命消息。您可以通过将 GNUTLS_FORCE_FIPS_MODE=0 设置添加到 /etc/sysconfig/ 服务的 OSPP 配置集和 FIPS 模式。
chronyd 文件来禁用 chronyd
11.5.1. 在客户端上启用网络时间安全(NTS) 复制链接链接已复制到粘贴板!
默认情况下不启用 Network Time Security(NTS)。您可以在 /etc/chrony.conf 中启用 NTS。为此,请执行以下步骤:
先决条件
- 时间服务器支持 NTS。
流程
编辑 /etc/crony.conf 文件并进行以下更改:
除推荐的
iburst选项外,使用nts选项指定服务器。For example: server time.example.com iburst nts server nts.netnod.se iburst nts server ptbtime1.ptb.de iburst nts添加以下设置以避免在系统引导时重复 Network Time Security-Key Establishment (NTS-KE)会话:
ntsdumpdir /var/lib/chrony如果存在,注释掉或删除以下设置,以禁用与
DHCP提供的网络时间协议(NTP)服务器的同步:sourcedir /run/chrony-dhcp重启
chronyd服务:systemctl restart chronyd
验证
验证
NTS密钥是否已成功建立:# chronyc -N authdata Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ================================================================ time.example.com NTS 1 15 256 33m 0 0 8 100 nts.netnod.se NTS 1 15 256 33m 0 0 8 100 ptbtime1.ptb.de NTS 1 15 256 33m 0 0 8 100KeyID、Type和KLen应带有非零值。如果该值为零,请检查系统日志中来自chronyd的错误消息。验证客户端是否正在进行 NTP 测量:
# chronyc -N sources MS Name/IP address Stratum Poll Reach LastRx Last sample ========================================================= time.example.com 3 6 377 45 +355us[ +375us] +/- 11ms nts.netnod.se 1 6 377 44 +237us[ +237us] +/- 23ms ptbtime1.ptb.de 1 6 377 44 -170us[ -170us] +/- 22msReach列中应具有非零值;理想情况是 377。如果值很少为 377 或永远不是 377,这表示 NTP 请求或响应在网络中丢失。
11.5.2. 在时间服务器上启用网络时间安全(NTS) 复制链接链接已复制到粘贴板!
如果您运行自己的网络时间协议(NTP)服务器,您可以启用服务器网络时间协议(NTS)支持来促进其客户端安全地同步。
如果 NTP 服务器是其它服务器的客户端,即它不是 Stratum 1 服务器,它应使用 NTS 或对称密钥进行同步。
先决条件
-
以
PEM格式的服务器私钥 -
带有
PEM格式的所需中间证书的服务器证书
流程
编辑
/etc/chrony.conf文件并进行以下更改:ntsserverkey /etc/pki/tls/private/<ntp-server.example.net>.key ntsservercert /etc/pki/tls/certs/<ntp-server.example.net>.crt对私钥和证书文件设置权限,允许 chrony 用户读取文件,例如
# chown root:chrony /etc/pki/tls/private/<ntp-server.example.net>.key /etc/pki/tls/certs/<ntp-server.example.net>.crt # chmod 644 /etc/pki/tls/private/<ntp-server.example.net>.key /etc/pki/tls/certs/<ntp-server.example.net>.crt-
确保
ntsdumpdir /var/lib/chrony设置存在。 在 firewalld 中打开所需端口:
# firewall-cmd --permannent --add-port={323/udp,4460/tcp} # firewall-cmd --reload重启
chronyd服务:# systemctl restart chronyd
验证
从客户端机器执行测试:
$ chronyd -Q -t 3 'server ntp-server.example.net iburst nts maxsamples 1' 2021-09-15T13:45:26Z chronyd version 4.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG) 2021-09-15T13:45:26Z Disabled control of system clock 2021-09-15T13:45:28Z System clock wrong by 0.002205 seconds (ignored) 2021-09-15T13:45:28Z chronyd exitingSystem clock wrong消息指示 NTP 服务器接受 NTS-KE 连接并使用 NTS 保护的 NTP 消息进行响应。验证 NTS-KE 连接并验证服务器中观察的 NTP 数据包:
# chronyc serverstats NTP packets received : 7 NTP packets dropped : 0 Command packets received : 22 Command packets dropped : 0 Client log records dropped : 0 NTS-KE connections accepted: 1 NTS-KE connections dropped : 0 Authenticated NTP packets: 7如果
NTS-KE connections accepted和Authenticated NTP packets项带有一个非零值,这意味着至少有一个客户端能够连接到 NTS-KE 端口并发送经过身份验证的 NTP 请求。