Ubuntu 16.04 NTP 服务器无法读取密钥文件

Ubuntu 16.04 NTP 服务器无法读取密钥文件

我读过这个论坛指南以及一些答案与 NTP 服务器有关。

我需要使用身份验证,但是当我重新启动 ntp 服务时,日志中出现一条错误消息“ntpd[1710]: authreadkeys: file /etc/ntp.keys: Permission denied”

这是我的配置文件:

driftfile /var/lib/ntp/ntp.drift

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server 0.uk.pool.ntp.org iburst
server 1.uk.pool.ntp.org iburst
server 2.uk.pool.ntp.org iburst
server 3.uk.pool.ntp.org iburst

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap

restrict 127.0.0.1
restrict ::1

#enable auth
keys /etc/ntp.keys

trustedkey 17
controlkey 17
requestkey 17

我已确认该文件可读,并已在多个权限(400、600、700、777)下尝试过。

如何让我的服务器读取身份验证密钥?

答案1

我在 19.10 遇到了同样的问题。它/var/log/syslog像这样显示连续条目...

6月10日 12:34:56 主机名 ntpd[12345]: authreadkeys: 文件‘/etc/ntp.keys’: 权限被拒绝
6月10日 12:34:56 HOSTNAME 内核:[...] 审核:类型=1400 审核(...):apparmor =“DENIED”操作=“open”配置文件=“/usr/sbin/ntpd”名称=“/etc/ntpkey_MD5key_HOSTNAME.1234567890”pid=12345 comm=“ntpd”requested_mask=“r”denied_mask=“r”fsuid=0 ouid=0

查看/etcAppArmor 中允许ntpd访问哪些文件...

$ grep /etc/ntp /etc/apparmor.d/usr.sbin.ntpd
  /etc/ntp.conf r,
  /etc/ntp.conf.dhcp r,
  /etc/ntpd.conf r,
  /etc/ntpd.conf.tmp r,
  /etc/ntp.keys r,
  /etc/ntp/** r,
  /etc/ntp.drift rwl,
  /etc/ntp.drift.TEMP rwl,
  /etc/ntp/drift * rwl,

...我可以看到/etc/ntp.keys/etc/ntp/**包含在内。但是,当使用它ntp-keygen来生成对称密钥时,它会创建ntp.keys一个指向文件名包括主机名和文件戳...

$ ls -l /etc/ntp*
-rw-r--r-- 1 root root 123 六月 10 12:34 /etc/ntp.conf
-rw-r----- 1 root root 456 6月10日 12:34 /etc/ntpkey_MD5key_HOSTNAME.1234567890
lrwxrwxrwx 1 root root 33 六月 10 12:34 /etc/ntp.keys -> ntpkey_MD5key_HOSTNAME.1234567890

AppArmor 显然不遵循符号链接在其规则中,所以你要么需要……

  • 建立ntp.keys硬链接/唯一链接而不是符号链接,或者......
  • 将密钥文件移动到/etc/ntp/目录内的某个位置,或者......
  • 我采取的方法受到以下启发:一条评论关于此问题的重复帖子。我创建了一个/etc/apparmor.d/local/usr.sbin.ntpd包含此内容的文件...
    /etc/ntpkey_MD5key_HOSTNAME.1234567890 r,
    
    ...然后指示 AppArmor重新加载个人资料为了ntpd...
    sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.ntpd
    
    ...重新启动后ntpd...
    sudo 服务 ntp 重启
    
    ...它成功加载密钥文件。

答案2

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

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

相关内容