Ntp

嘗試讀取密鑰文件時拒絕 NTP 伺服器權限

  • February 9, 2022

我正在嘗試為我的內部網路上的主機設置一個 NTP 時間伺服器以與之同步。

我需要使用授權才能符合 PCI 標準。

我使用 ntp-keygen -M 創建了一組密鑰,並將以下程式碼段添加到伺服器上的 /etc/ntp.conf 文件中。

enable auth
keys /etc/ntp.keys
trustedkey 1 7 17

我無法從客戶端連接到伺服器。當我在客戶端上執行“ntpq -c as”時,我可以看到身份驗證對我的伺服器來說是“壞的”。我已將伺服器上生成的密鑰文件複製到客戶端,並將受信任的密鑰行也添加到客戶端,如下所示:

server timeserver key 17
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
keys /etc/ntp.keys
trustedkey 1 7 17

查看伺服器日誌,我可以看到在嘗試讀取文件時出現權限被拒絕錯誤,如下所示。

Jan 30 12:38:01 ip-10-0-1-103 systemd[1]: Starting LSB: Start NTP daemon...
Jan 30 12:38:01 ip-10-0-1-103 ntp[28084]:  * Starting NTP server ntpd
Jan 30 12:38:01 ip-10-0-1-103 ntpd[28094]: ntpd 4.2.8p4@1.3265-o Wed Oct  5 12:34:45 UTC 2016 (1): Starting
Jan 30 12:38:01 ip-10-0-1-103 ntpd[28094]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 112:116
Jan 30 12:38:01 ip-10-0-1-103 ntp[28084]:    ...done.
Jan 30 12:38:01 ip-10-0-1-103 systemd[1]: Started LSB: Start NTP daemon.
Jan 30 12:38:01 ip-10-0-1-103 ntpd[28096]: proto: precision = 0.182 usec (-22)
Jan 30 12:38:01 ip-10-0-1-103 ntpd[28096]: authreadkeys: file /etc/ntp.keys: Permission denied

我已經使用客戶端機器上的 ntpdate 來設置伺服器的日期,所以我非常有信心網路已經啟動並正在執行。當我忙於設置它時,我實際上已經在兩台伺服器上禁用了 iptables。

伺服器上的密鑰文件是 600,如下所示:

-rw-------  1 root  root    1066 Jan 30 12:29 ntpkey_MD5key_timeserver.3694768152
lrwxrwxrwx  1 root  root      35 Jan 30 12:33 ntp.keys -> ntpkey_MD5key_timeserver.3694768152

我嘗試將配置更改為指向實際文件而不是符號連結。

誰能幫我弄清楚系統日誌中的錯誤是什麼意思以及如何解決這個問題?

編輯:查看原始碼,錯誤的“權限被拒絕”部分似乎來自作業系統。

如果密鑰文件root只能由非 root 使用者讀取,但ntpd以非 root 使用者身份執行,例如使用-u ntp:ntp,請確保有效使用者可以讀取密鑰文件。

例如,您可以使用chmod u=rw,g=r,o= keyfile密鑰文件來允許組讀取,然後chgrp ntp keyfile將組分配ntp給文件,從而有效地允許組ntp訪問文件(但您已經知道了,對吧?)。

仍然值得檢查 apparmor 或 selinux 施加的其他限制。對於前者,您可以嘗試aa-status | grep ntpd檢查。

引用自:https://serverfault.com/questions/829410