sshd_config 命令

sshd_config 命令

我发现我的服务器通过 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]

相关内容