尝试读取密钥文件时 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 [email protected] 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

我尝试改变配置以指向实际文件而不是符号链接。

有人能帮我找出系统日志中的错误含义以及如何解决这个问题吗?

编辑:看看来源看起来错误中的“权限被拒绝”部分来自操作系统。

答案1

如果密钥文件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检查。

答案2

我启动了一个 Ubuntu 14.04 实例,并注意到在日志中相同的“权限被拒绝”消息之后出现了一个应用程序保护消息。

禁用 apparmor 的 ntp 配置文件可解决该问题。

相关内容