Ntp
嘗試讀取密鑰文件時拒絕 NTP 伺服器權限
我正在嘗試為我的內部網路上的主機設置一個 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
檢查。