与常规密码验证相比,不使用 SSH 公钥验证确实是一个严重的安全漏洞

与常规密码验证相比,不使用 SSH 公钥验证确实是一个严重的安全漏洞

如何使用公钥认证比使用更安全密码验证,考虑到以下事实:

  1. 默认 SSH 端口已从其默认
  2. 防火墙在多次尝试失败后将 IP 列入黑名单
  3. 密码看起来相当复杂(14-20无意义的字符)

答案1

  • 您的密码有 12 个字符,每个字符 6 位,即 72 位随机性。SSH 密钥至少有 2048 位,这很难猜到。
  • SSH 密钥存储在您的客户端上,仅 SSH 客户端可以访问,您甚至都不知道。密码通常用于其他目的(泄露的可能性更高)并输入到不受信任的环境中。
  • 在 MITM 攻击下,尝试使用 SSH 密钥进行身份验证不会泄露私钥,而尝试密码身份验证则会泄露密码。

答案2

假设有人从你的键盘下偷走了便签,从而窃取了你的密码?或者使用橡胶软管。如果禁用密码验证,它将几乎毫无用处。

答案3

公钥身份验证更强大,因为 AAA 依赖于密钥对,实际上是一个数学身份,而不是一串字符(密码)。必须拥有公共部分才能成功进行身份验证,而您不能只是靠在肩膀上或用橡胶管拿到它。至于关于 MITM 的评论...好吧,ssh 不会以明文形式传输密码。

当然,除了公钥之外,你还可以做更多的事情:

  • 限制可以连接到该系统的源 IP
    • 主机防火墙
    • TCP 包装器
    • 反向代理
  • 在 sshd_config 中使用“AllowUsers”和“Allowgroups”
  • 使用 PAM,有各种模块可以应用更多安全过滤
  • 需要公钥认证和密码,
  • 在 sshd_config 中设置“PermitRootLogin No”
  • 在 sshd_config 中将“ServerKeyBits”设置为 2048
  • 生成 2048 位或更大的公钥

公钥认证的替代品?

  • 使用 S/MIME,生成一次性密码列表

相关内容