4. 时间同步

4.1. 时间同步的重要性

由于 Kerberos 身份验证的安全性部分基于票证的时间戳,因此在 Kerberos 服务器上准确设置时钟至关重要。正如我们在 Kerberos 简介中提到的,票证的短生命周期用于防止攻击者成功执行暴力攻击或重放攻击。

如果您允许服务器的时钟漂移,您的网络将容易受到此类攻击。由于时钟同步在 Kerberos 协议的安全性中非常重要,如果时钟未在合理的时间窗口内同步,Kerberos 将报告致命错误并拒绝运行。由于与 KDC 时钟的时间差,从时钟不准确的机器尝试进行身份验证的客户端将被 KDC 拒绝身份验证。

4.2. NTP 简介

网络时间协议 (NTP) 可用于服务器的时间同步。许多公共 NTP 服务器可用于同步。NTP 能够将局域网 (LAN) 内的客户端时钟同步到毫秒级,广域网 (WAN) 内的客户端时钟同步到几十毫秒级。NTP 服务器按层级划分。主 NTP 服务器被归类为 stratum 1。由于公共主服务器数量相对较少,因此不应将其用于客户端机器的同步。公共 stratum 2 服务器可用于客户端机器同步,并使用公共 stratum 1 服务器同步自己的时钟。对于我们的 Kerberos 服务器,我们将设置 NTP 以查询三个 stratum 2 服务器。维护的公共 stratum 2 服务器列表可以在这里找到

4.3. NTP 安装和配置

为了在 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 时间服务器。