sshd“UseDNS”选项有什么意义?

sshd“UseDNS”选项有什么意义?

我知道它的作用,但我不知道为什么。它可以防止什么攻击?

它与所有类型的身份验证方法相关吗? (基于主机、密码、公钥、键盘交互...)

答案1

UseDNS选项大多无用。如果客户端计算机位于 Internet 上,则它们很可能没有任何反向 DNS,它们的反向 DNS 无法正向解析,或者它们的 DNS 不提供除“属于此”之外的任何信息。 IP 地址已告诉您 ISP”。

在典型配置中,DNS 仅用于日志记录。它可以用于身份验证,但前提IgnoreRhosts no是在 中指定sshd_config。这是为了与使用 rsh 的旧安装兼容,您可以说“bob在被调用的计算机上调用的用户darkstar可以登录,而不alice显示任何凭据”(通过写入darkstar bob~alice/.rhosts。仅当您信任所有可能连接到 ssh 服务器的计算机时,它才是安全的。换句话说,这很少能以安全的方式使用。

鉴于除非在非常特殊的情况下,DNS 查找不会提供任何有用的信息,因此应该将其关闭。据我所知,它默认启用的唯一原因是它在技术上更安全(如果您关心身份验证,而不是可用性),即使这只适用于极少数情况。

关闭此功能的另一个论点是,每个多余的功能都是不必要的安全风险

答案2

我在 Ubuntu 中添加了一个关于此的错误报告(旧的但仍然是最新的)。

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371

我建议将默认值更改为“否”并添加更新的文档:

# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.

答案3

从手册页sshd_config(5)

 UseDNS  Specifies whether sshd(8) should look up the remote host name and
         check that the resolved host name for the remote IP address maps
         back to the very same IP address.  The default is “yes”.

启用此功能会使从没有正确(正向和反向)DNS 的位置进行的访问在日志中生成警告。

因此,这并不能阻止任何攻击,只是它需要客户端的一些合格的远程地址才能不记录任何警告。仅当 PTR 记录有意义时,此类警告才可以帮助您追踪攻击者。

编辑:根据评论更新安德烈·沃伊坚科夫

答案4

我想补充一点,在 CentOS 7 (7.1.1503) 以及 Red Hat Enterprise Linux 7 上,我是无法yes使用for的默认设置登录UseDNS。取消注释并将其设置为 后no,我就能够登录了。由此看来,如果 DNS 无法正常工作,确实可以拒绝服务!在 CentOS 6 中,默认值似乎是no,因此我可以ssh在没有正常运行的 DNS 的情况下!

我想补充一点,我的实验是在 LXC 容器上进行的,而不是在物理机上进行的,以防产生影响!

相关内容