我发现我的服务器通过 SSH 仍然支持 diffie-hellman-group1-sha1。为了符合最新的 PCI 合规性,我一直在试图弄清楚如何禁用 diffie-hellman-group1-sha1。Weakdh.org 并没有明确说明如何禁用此功能,网络上也没有提供任何信息。在不禁用 Ubuntu 上 SSH 的端口 22 的情况下,禁用此算法的正确方法是什么?以下是我的服务器在运行时支持的算法ssh -Q kex
。
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
diffie-hellman-group1-sha1
[email protected]
答案1
跑步
ssh -Q kex
为您提供以下列表客户支持的算法。您将从服务器获取sshd -T | grep kex
(当然是在服务器上)。
如果您想删除一个,只需获取从上一个命令中获取的列表,删除您感兴趣的算法并将其放入/etc/ssh/sshd_config
(或用 kex 算法替换那里的现有行)。
答案2
在 OpenSSH 7.6 中,如果您想删除一个或多个选项并保留其余默认设置,您可以添加以下行/etc/ssh/sshd_config
:
KexAlgorithms -diffie-hellman-group1-sha1,ecdh-sha2-nistp256
请注意-
逗号分隔列表开头的。上面的行将禁用 diffie-hellman-group1-sha1 和 ecdh-sha2-nistp256。
sshd_config
在 man中有更详细的说明KexAlgorithms
:
If the specified value begins with a ‘-’ character, then the specified methods (including
wildcards) will be removed from the default set instead of replacing them.
最后要注意的是,在进行任何更改后,务必在重新启动 sshd 之前/etc/ssh/sshd_config
验证它们。sshd -t
答案3
sshd_config 命令
KexAlgorithms
Specifies the available KEX (Key Exchange) algorithms. Multiple algorithms must be comma-separated. The default is
[email protected],
ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
diffie-hellman-group-exchange-sha256,
diffie-hellman-group-exchange-sha1,
diffie-hellman-group14-sha1,
diffie-hellman-group1-sha1
因此,要禁用“diffie-hellman-group1-sha1”,请使用参数 KexAlgorithms 指定所需的算法
例子
KexAlgorithms diffie-hellman-group-exchange-sha256,[电子邮件保护],
答案4
为了RedHat 8 / CentOS 8系统使用以下步骤禁用不安全的密钥交换算法 diffie-hellman-group-exchange-sha1
步骤 1:列出 openssh 客户端支持的密钥交换算法
# ssh -Q kex
步骤 2:列出 openssh 服务器支持的密钥交换算法
# sshd -T | grep kex
步骤 3:删除diffie-hellman-组交换-sha1SSH 弱密钥交换算法。
# vi /etc/ssh/sshd_config
步骤 4:备份下面列出的 openssh 服务器和客户端配置文件。
# cp -p /etc/crypto-policies/back-ends/openssh.config /etc/crypto-policies/back-ends/openssh.config-bkp
# cp -p /etc/crypto-policies/back-ends/opensshserver.config /etc/crypto-policies/back-ends/opensshserver.config-bkp
步骤 5:现在删除diffie-hellman-组交换-sha1openssh 服务器和客户端配置文件中的弱密钥交换算法。
# vi /etc/crypto-policies/back-ends/openssh.config
# vi /etc/crypto-policies/back-ends/opensshserver.config
步骤 5:验证diffie-hellman-组交换-sha1交换算法条目是否正确删除。
# grep -i diffie-hellman-group-exchange-sha1 /etc/crypto-policies/back-ends/openssh.config
# grep -i diffie-hellman-group-exchange-sha1 /etc/crypto-policies/back-ends/opensshserver.config
上面列出的命令不应该有任何输出。
步骤 6:重新启动 sshd.service
# systemctl restart sshd.service
# systemctl status sshd.service
步骤 7:现在,您可以用详细模式建立 SSH 连接,并且不应该有任何调试 kex 名称日志diffie-hellman-组交换-sha1
# ssh -vvv username@IP-Address
# ssh -o KexAlgorithms=diffie-hellman-group-exchange-sha1 [email protected]
# nmap --script ssh2-enum-algos -sV -p 22 127.0.0.1
对于 RedHat 7 系统,使用以下命令禁用正在使用的不安全密钥交换算法
- diffie-hellman-组交换-sha1
- diffie-hellman-group1-sha1
依次执行以下命令。
# cp -p /etc/ssh/ssh_config /etc/ssh/ssh_config-bkp
# for kex in `ssh -Q kex| grep -vE "diffie-hellman-group-exchange-sha1|diffie-hellman-group1-sha1"|paste -s -d,`; do echo "KexAlgorithms $kex"; done >> /etc/ssh/ssh_config
# sudo systemctl restart sshd; systemctl status sshd
# ssh -vvv username@IP-Address
# ssh -o KexAlgorithms=diffie-hellman-group-exchange-sha1 [email protected]