OpenSSH 8.4 发布

经过四个月的开发 提交 OpenSSH 8.4 的发布,这是一个使用 SSH 2.0 和 SFTP 协议工作的开放客户端和服务器实现。

主要变化:

  • 安全变更:
    • 在 ssh-agent 中,当使用不是为 SSH 身份验证创建的 FIDO 密钥(密钥 ID 不以字符串“ssh:”开头)时,它现在检查是否将使用 SSH 协议中使用的方法对消息进行签名。 此更改将不允许 ssh-agent 重定向到具有 FIDO 密钥的远程主机,以阻止使用这些密钥为 Web 身份验证请求生成签名的能力(相反的情况,当浏览器可以签署 SSH 请求时,最初被排除由于在密钥标识符中使用了“ssh:”前缀)。
    • ssh-keygen 的驻留密钥生成包括对 FIDO 2.1 规范中描述的 credProtect 附加组件的支持,该附加组件通过在执行可能导致从令牌中提取驻留密钥的任何操作之前要求 PIN 来为密钥提供额外的保护。
  • 可能破坏兼容性的更改:
    • 为了支持 FIDO/U2F,建议使用 libfido2 库至少版本 1.5.0。 使用旧版本的功能已部分实现,但在这种情况下,驻留密钥、PIN 请求和连接多个令牌等功能将不可用。
    • 在 ssh-keygen 中,验证确认数字签名所需的验证器数据已添加到确认信息的格式中,可以在生成 FIDO 密钥时选择性地保存。
    • OpenSSH 与访问 FIDO 令牌的层交互时使用的 API 已更改。
    • 当构建 OpenSSH 的便携式版本时,现在需要 automake 来生成配置脚本和随附的构建文件(如果从已发布的代码 tar 文件构建,则不需要重新生成配置)。
  • 添加了对需要在 ssh 和 ssh-keygen 中进行 PIN 验证的 FIDO 密钥的支持。 要使用 PIN 生成密钥,ssh-keygen 中添加了“verify-required”选项。 如果使用此类密钥,则在执行签名创建操作之前,系统会提示用户通过输入 PIN 码来确认其操作。
  • 在 sshd 中,“verify-required”选项是在authorized_keys 设置中实现的,这需要使用令牌操作期间验证用户是否存在的功能。 FIDO 标准为此类验证提供了多种选项,但目前 OpenSSH 仅支持基于 PIN 的验证。
  • sshd 和 ssh-keygen 添加了对验证符合 FIDO Webauthn 标准的数字签名的支持,该标准允许在 Web 浏览器中使用 FIDO 密钥。
  • 在 ssh 中的 CertificateFile 设置中,
    ControlPath、IdentityAgent、IdentityFile、LocalForward 和
    RemoteForward 允许替换以“${ENV}”格式指定的环境变量中的值。

  • ssh 和 ssh-agent 添加了对 $SSH_ASKPASS_REQUIRE 环境变量的支持,该变量可用于启用或禁用 ssh-askpass 调用。
  • 在 ssh 的 ssh_config 中的 AddKeysToAgent 指令中,添加了限制密钥有效期的功能。 指定的限制到期后,密钥会自动从 ssh-agent 中删除。
  • 在 scp 和 sftp 中,使用“-A”标志,您现在可以显式允许使用 ssh-agent 重定向到 scp 和 sftp(默认情况下禁用重定向)。
  • 在 ssh 设置中添加了对“%k”替换的支持,该替换指定主机密钥名称。 此功能可用于将密钥分发到单独的文件中(例如,“UserKnownHostsFile ~/.ssh/known_hosts.d/%k”)。
  • 允许使用“ssh-add -d -”操作从标准输入读取要删除的密钥。
  • 在 sshd 中,连接修剪过程的开始和结束反映在日志中,并使用 MaxStartups 参数进行调节。

OpenSSH 开发人员还回顾了即将停用使用 SHA-1 哈希值的算法,因为 晋升 具有给定前缀的碰撞攻击的有效性(选择碰撞的成本估计约为 45 美元)。 在即将发布的版本之一中,他们计划默认禁用使用公钥数字签名算法“ssh-rsa”的功能,该算法在 SSH 协议的原始 RFC 中提到,并且在实践中仍然广泛存在(以测试使用如果您的系统中没有 ssh-rsa,您可以尝试使用选项“-oHostKeyAlgorithms=-ssh-rsa”通过 ssh 连接)。

为了顺利过渡到 OpenSSH 中的新算法,下一版本将默认启用 UpdateHostKeys 设置,这将自动将客户端迁移到更可靠的算法。 推荐的迁移算法包括基于 RFC2 RSA SHA-256 的 rsa-sha512-8332/2(自 OpenSSH 7.2 起支持并默认使用)、ssh-ed25519(自 OpenSSH 6.5 起支持)和基于 ecdsa-sha2-nistp256/384/521 RFC5656 ECDSA(自 OpenSSH 5.7 起支持)。

来源: opennet.ru

添加评论