我们正在尝试 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 数据包,以期扩大影响。