sshd“ UseDNS”选项的意义是什么?


78

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

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


2
我也在这里向CoreOS

Answers:


65

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

在典型配置中,DNS仅用于记录。它可以用于身份验证,但前提IgnoreRhosts no是在中指定了sshd_config。这对于老设备所使用RSH,在那里你可以说“叫用户的兼容性bob称为机上darkstar可登录为alice没有显示任何凭证”(写darkstar bob~alice/.rhosts)。仅当您信任可能连接到ssh服务器的所有计算机时,它才是安全的。换句话说,这很少以安全的方式使用。

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

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


因此,UseDNS仅与基于主机的身份验证有关吗?如果我不使用基于主机的身份验证,并且不在乎主机名或IP是否出现在日志中,UseDNS不会有什么不同?
user368507

5
@ user368507是的,就是这样。UseDNS如果您使用基于密钥的主机身份验证,则仅在使用基于主机名的主机身份验证(即极弱的身份验证)时才有用。
吉尔斯2012年

3
当然@Gilles,如果使用基于密钥主机为基础的认证,UseDNS是非常有用的多,而且是至关重要的。您可以基于密钥对用户进行身份验证,并根据分配给MAC地址的主机名对服务器进行身份验证。
卡拉·丹尼兹(Kar deniz)'16

38

我在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.

2
up upvote ...这更有用,因为它包含了我一直在寻找的信息。
0xC0000022L 2014年

1
同样,如果UseDNS为no,则无法在pam_access规则中匹配主机名,而必须使用IP。
ColinM '16

1
几年前,我对这个答案进行了投票,但是直到今天,我才注意到,在Ubuntu 15.10及更高版本中的OpenSSH 6.8p1中,默认值已更改为“ UseDNS no”
Anthony Geoghegan

RedHat(在RHEL7中)最近也将默认值也更改为No,这破坏了基于主机名的访问控制(这些访问控制主要用作Intranet上的咨询控制,显然不是唯一的访问控制机制)。
dannysauer

8

从的联机帮助页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记录有意义时,此类警告才可以帮助您找到攻击者。

编辑:根据Andrey Voitenkov的评论进行了更新。


因此,这是根据DNS服务器中存在的内容对允许谁进行连接的筛选器?
user368507

2
为什么会使其无法访问?如果DNS A / PTR记录不匹配,sshd只会生成警告。解决问题时,登录顺序将很慢。
Andrey Voitenkov 2012年

只要攻击者无法在所讨论from=的授权密钥(如果使用)之前欺骗该字段中的值,就不会阻止访问该授权密钥。
Alecz

7

当您在authorized_keys文件中使用FROM选项并且要按名称(而不仅仅是IP)进行筛选时,需要使用该选项。

Authorized_keys文件行中的FROM选项允许您限制可以使用特定密钥的主机。
这提高了管理可相互访问的多个服务器的能力,而又不允许机器的克隆通常无意间冒充机器的来源(剩余的crontabs,人为错误)。


3

我想在CentOS 7(7.1.1503)上添加它,因此在Red Hat Enterprise Linux 7上,我无法使用yesfor 的默认设置登录UseDNS。取消注释并将其设置为之后no,我便能够登录。因此,如果DNS无法正常工作,看来确实可以拒绝服务!在CentOS 6中,它似乎是默认值no,因此我可以ssh在没有可用DNS的情况下加入!

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.