Menu Close

30.2. 在服务器上启用网络时间安全性(NTS)

如果您运行自己的网络时间协议(NTP)服务器,您可以启用服务器网络时间协议(NTS)支持来促进其客户端安全地同步。

如果 NTP 服务器是其它服务器的客户端,即它不是 Stratum 1 服务器,它应使用 NTS 或对称密钥进行同步。

先决条件

  • PEM 格式的服务器私钥
  • 带有 PEM 格式的所需中间证书的服务器证书

流程

  1. chrony.conf中指定私钥和证书文件

    For example:
    ntsserverkey /etc/pki/tls/private/foo.example.net.key
    ntsservercert /etc/pki/tls/certs/foo.example.net.crt
  2. 通过设置组所有权,确保 chrony 系统用户可读密钥和证书文件。

    For example:
    chown :chrony /etc/pki/tls/*/foo.example.net.*
  3. 确保 chrony.conf 中存在 ntsdumpdir /var/lib/chrony 指令。
  4. 重启 chronyd 服务:

    systemctl restart chronyd
    重要

    如果服务器具有防火墙,则需要允许 NTP 和 Network Time Security-Key Establishment(NTS-KE)的 UDP 123TCP 4460 端口。

验证

  • 使用以下命令从客户端机器执行快速测试:

    $ chronyd -Q -t 3 'server
    
    foo.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 exiting

    System 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 acceptedAuthenticated NTP packets 项带有一个非零值,这意味着至少有一个客户端能够连接到 NTS-KE 端口并发送经过身份验证的 NTP 请求。