如何测试 NTP 服务器是否安全

如何测试 NTP 服务器是否安全

我们正在尝试 ntp.conf 文件中的几个 NTP 配置,并想确定 NTP 服务器是否安全。

遵循此处提供的建议: https://support.ntp.org/Support/AccessRestrictions#Section_6.5.1.2.1

我们补充道:

IPV4: restrict -4 default limited kod nomodify notrap nopeer noquery

IPv6: restrict -6 default limited kod nomodify notrap nopeer noquery

现在的问题是:根据文档中所写的内容:

既然您愿意允许其他人从您的 ntpd 获取时间,您是否允许他们查看您的服务器状态信息(即使这会泄露有关您的操作系统和 ntpd 版本的信息)?

我们如何确定服务器是否正在发送其状态或其他操作系统信息?

此外,如果我们不在限制中添加“noquery”选项,会有什么区别?我们如何测试有和没有“noquery”选项,即添加这样的选项是否有一定的反映?(我们想从安全的角度进行测试)

我们可以使用 wireshark 来检索状态或操作系统信息来测试我们的配置选项吗?

答案1

参考 ntpd 实现通过程序公开了许多实现变量国家邮政局(和国家电力公司只有它的作者才会欣赏这一点)。它们利用特殊 NTP 数据包中的控制协议。控制通道可能会更改 ntpd 配置,尽管在可以自动将配置文件部署到任意数量的主机的现代时代,这很少使用。

维护 ntpd 的风险主要有防止 IP 放大到欺骗地址并保护您的时间同步配置免受网络上未经授权的 IP 地址的更改。

与往常一样,保持修补可以缓解一些缺陷。通过“monlist”函数进行的放大攻击导致CVE-2013-5211。这应该是几年前的更新,但请检查一下全部您的主机位于受支持的发行版上,并受到维护人员的关注。

对 monlist 的关注导致了一些可以轻松扫描它的工具。例如,nmap 脚本 ntp-monlist

完整功能列表如下ntpq 命令记录。 wiki 的 choose-your-own-configuration 中的这些行与 不同noquery,它完全拒绝所有 ntpq 查询。保持时间服务运行。例如,该 nmap 脚本不会返回任何内容。与 形成对比的nomodfy是仅控制更改配置的命令的访问规则。显然nomodify应该受到严格限制,可能仅限于 localhost。

与其他地方的示例配置进行比较,例如来自您最喜欢的 disto 包的配置。RHEL 7 的 ntp.conf建议将此作为访问控制的起点:

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery
    
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
    
restrict 127.0.0.1 
restrict ::1
    
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
# Disable the monitoring facility to prevent amplification attacks using ntpdc  
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor

尽管 ntpd 现在已经修补,但请注意 monlist 缓解措施。此外,远程主机的默认值无法查询或修改。只需进行轻微修改,就可以使 NTP 主机准备好为公共互联网提供服务。

当然,一旦你知道你想要什么 ntp.conf,就可以部署它。自动配置 NTP 服务器,在所有主机的模板映像中获取合理的配置。

所有这些 monlist 讨论都没有涵盖您关于通过 ntp 识别操作系统和平台的原始问题。根据 ntpq 文档,该构建信息可能会通过readvar控制命令出现在系统变量中。例如,到远程服务器: ntpq -c readvar time.example.net。尽管这里有一些实现细节需要解码,例如哪个关联 ID 是所讨论的 NTP 主机。

就我个人而言,我并不太担心泄露 ntpd 的版本信息。有人知道我的 ntpd 是最新的,并且了解一些状态机,但他们对此无能为力。攻击者会向他们能找到的每一台主机发送伪造的 NTP 数据包,以期扩大影响。

相关内容