Answers:
该UseDNS
选项几乎没有用。如果客户端计算机位于Internet上,则很有可能它们没有任何反向DNS,它们的反向DNS无法正向解析,或者它们的DNS除了“属于”之外,不提供任何信息。 IP地址已经告诉您的ISP”。
在典型配置中,DNS仅用于记录。它可以用于身份验证,但前提IgnoreRhosts no
是在中指定了sshd_config
。这对于老设备所使用RSH,在那里你可以说“叫用户的兼容性bob
称为机上darkstar
可登录为alice
没有显示任何凭证”(写darkstar bob
在~alice/.rhosts
)。仅当您信任可能连接到ssh服务器的所有计算机时,它才是安全的。换句话说,这很少以安全的方式使用。
鉴于DNS查找仅在非常特殊的情况下不提供任何有用的信息,因此应将其关闭。据我所知,默认情况下处于启用状态的唯一原因是它在技术上更加安全(如果您仅关注身份验证,而不是可用性),即使这仅适用于极少数情况。
关闭此功能的另一个理由是,每个多余的功能都是不必要的安全风险。
UseDNS
如果您使用基于密钥的主机身份验证,则仅在使用基于主机名的主机身份验证(即极弱的身份验证)时才有用。
UseDNS
是非常有用的多,而且是至关重要的。您可以基于密钥对用户进行身份验证,并根据分配给MAC地址的主机名对服务器进行身份验证。
我在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.
从的联机帮助页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的评论进行了更新。
from=
的授权密钥(如果使用)之前欺骗该字段中的值,就不会阻止访问该授权密钥。
当您在authorized_keys文件中使用FROM选项并且要按名称(而不仅仅是IP)进行筛选时,需要使用该选项。
Authorized_keys文件行中的FROM选项允许您限制可以使用特定密钥的主机。
这提高了管理可相互访问的多个服务器的能力,而又不允许机器的克隆通常无意间冒充机器的来源(剩余的crontabs,人为错误)。