由于 Kerberos 身份验证的安全性部分基于票证的时间戳,因此在 Kerberos 服务器上准确设置时钟至关重要。正如我们在 Kerberos 简介中提到的,票证的短生命周期用于防止攻击者成功执行暴力攻击或重放攻击。
如果您允许服务器的时钟漂移,您的网络将容易受到此类攻击。由于时钟同步在 Kerberos 协议的安全性中非常重要,如果时钟未在合理的时间窗口内同步,Kerberos 将报告致命错误并拒绝运行。由于与 KDC 时钟的时间差,从时钟不准确的机器尝试进行身份验证的客户端将被 KDC 拒绝身份验证。
网络时间协议 (NTP) 可用于服务器的时间同步。许多公共 NTP 服务器可用于同步。NTP 能够将局域网 (LAN) 内的客户端时钟同步到毫秒级,广域网 (WAN) 内的客户端时钟同步到几十毫秒级。NTP 服务器按层级划分。主 NTP 服务器被归类为 stratum 1。由于公共主服务器数量相对较少,因此不应将其用于客户端机器的同步。公共 stratum 2 服务器可用于客户端机器同步,并使用公共 stratum 1 服务器同步自己的时钟。对于我们的 Kerberos 服务器,我们将设置 NTP 以查询三个 stratum 2 服务器。维护的公共 stratum 2 服务器列表可以在这里找到。
为了在 GNU/Linux 上启用 NTP,您必须安装 NTP 软件包并编辑配置文件名。默认情况下,NTP 配置文件名是/etc/ntp.conf. 配置文件中的默认值是可以接受的。所有需要做的就是添加我们希望用于同步时钟的服务器。身份验证不是必需的,但可以启用身份验证以提高安全性。如果您在局域网 (LAN) 上使用 NTP 服务器,您可能希望使用身份验证。这是一个示例ntp.conf文件名,来自都柏林 GNU 大学。
最后,我们设置一个 cron 作业来执行实际的同步
30 * * * * /usr/sbin/ntpdate -s |
如果我们的系统位于防火墙后,我们可能需要使用 -su 而不是仅仅 -s。-u 参数将指示 ntpdate 使用非特权端口连接到 stratum 2 时间服务器。