如何在 Debian 下从 ssh 禁用ChaCha20-Poly1305加密?
我尝试过(作为root):
echo 'Ciphers [email protected]' > /etc/ssh/sshd_config.d/anti-terrapin-attack
echo 'Ciphers [email protected]' > /etc/ssh/ssh_config.d/anti-terrapin-attack
systemctl restart sshd
但我的ssh -Q cipher
仍然显示[email protected]
。
更新:
由于完全解决我的问题的答案分布在不同的答案中,让我将它们总结在一处。
为什么?有什么大惊小怪的?-- 查看针对 SSH 发现的攻击,Debian 的
openssh
稳定版本比官方修复落后几代。因此我现在需要自己修复它。为什么 OP 不起作用?——两点:
ssh -Q
cipher 始终显示编译到二进制文件中的所有密码- “ ”目录下的所有配置文件
/etc/ssh/sshd_config.d
都应以“ ”结尾.conf
。
如何禁用攻击?-- 请参阅 Floresta 的实用解决方案https://unix.stackexchange.com/a/767135/374303
如何验证攻击是否已被禁用?-- 基于gogoud的实际解决方案:
nmap --script ssh2-enum-algos -sV -p 22 localhost | grep chacha20 | wc
0 0 0
最好在应用 Floresta 修复之前和之后运行它。
ssh -Q cipher
始终显示编译到二进制文件中的所有密码,无论它们是否启用。对于不安全或默认禁用的算法也是如此。假设您使用的是支持此语法的最新版本的 OpenSSH,您设置的配置应该足以禁用该算法。您可以通过尝试通过 连接来验证这一点
ssh -vvv
,这将打印服务器到客户端的密码列表。如果您没有最新版本的 OpenSSH,则不支持此语法,并且您需要显式列出所需的密码。默认值列在 中
man sshd_config
,对于我的 OpenSSH 版本(Debian 9.6),它看起来像这样(没有 ChaCha):假设您拥有现代客户端,将 AES-GCM 放在列表中的第一位将提高性能(如果您不使用先加密后 MAC 的情况下还可以提高安全性),但是 OpenSSH 的旧版本在使用 AES-GCM 重新生成密钥时会出现段错误(所有主要发行版都已修补),这就是它们位于列表末尾的原因。
请注意,如果您在客户端和服务器上都使用修补过的操作系统,则无需禁用
[email protected]
. 原因是授权的客户端和服务器将与OpenSSH 修补版本中的[email protected]
和扩展协商安全连接。[email protected]
随机刮刀做什么并不重要,因为它们很快就会掉落,并且无需保护它们。但是,如果您没有使用修补过的操作系统,那么您当然容易受到攻击,但话又说回来,您也容易受到各种其他漏洞的影响。
我认为您最初的解决方案是部分正确的。在我的 Debian 12 机器上,/etc/ssh/sshd_config 顶部包含以下行:
因此“/etc/ssh/sshd_config.d”目录中的所有配置文件都应以“.conf”结尾。对于“/etc/ssh/ssh_config.d”也是如此。
以下命令适用于我的系统:
我想知道,是否
ssh -Q
应该反映配置的内容?手册页说明了这一点当然,它也根本无法验证服务器端配置,因为它实际上没有连接到任何地方。
我想你可以尝试连接某个地方
ssh -v
,看看它最终使用什么算法:尝试使用此方法来检查哪些密码实际上可用于 ssh(也可以从远程主机运行):
就我而言,虽然
ssh -Q cipher
显示了[email protected]
,但上面没有显示。将以下内容添加到 /etc/ssh/sshd_config
请注意
-
chacha20 密码字符串开头的 。然后重启你的ssh服务器使其生效。