Linux SSH弱密钥交换算法(Weak Key Exchange Algorithms)检查及修复

在Linux环境中,Weak Key Exchange Algorithms(弱密钥交换算法) 是指存在安全漏洞的算法,这些算法可能被攻击者利用进行中间人攻击或其他形式的密码学攻击。常见的弱算法包括:diffie-hellman-group1-sha1diffie-hellman-group14-sha1

一. 检查当前使用的密钥交换算法

1. 检查SSH服务配置

弱密钥交换算法通常与SSH服务相关,如支持的密钥交换算法列表。首先检查sshd_config文件中的配置:

sudo vi /etc/ssh/sshd_config

查看以下字段:

KexAlgorithms

如果此字段为空或包含已知的弱算法(diffie-hellman-group1-sha1),需要进行更新。

2. 使用工具检查当前支持的算法

a. 使用ssh -Q命令列出支持的密钥交换算法:
ssh -Q kex
b. 使用nmap扫描SSH服务:
sudo nmap --script ssh2-enum-algos -p 22 <目标IP>

此命令会列出SSH服务支持的算法,包括密钥交换算法。

c. 使用ssh-audit工具:

ssh-audit是专门用于分析SSH配置和检测弱算法的工具。安装方法如下:

sudo apt install ssh-audit  # Debian/Ubuntu
sudo yum install ssh-audit  # CentOS/RHEL

执行扫描:

ssh-audit <目标IP>

二. 修复弱密钥交换算法

1. 禁用弱算法

编辑/etc/ssh/sshd_config文件,在其中明确指定安全的密钥交换算法。添加或修改如下行:

KexAlgorithms curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
推荐的强密钥交换算法包括:
  • curve25519-sha256
  • [email protected]
  • ecdh-sha2-nistp256
  • ecdh-sha2-nistp384
  • ecdh-sha2-nistp521

保存并退出后,重新启动SSH服务:

sudo systemctl restart sshd

2. 更新客户端配置

在客户端配置文件中(通常是~/.ssh/config),添加以下内容以使用安全算法:

Host *
    KexAlgorithms curve25519-sha256,[email protected],ecdh-sha2-nistp256

三. 验证修复

使用以下命令验证配置是否生效:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 <目标IP>

如果连接被拒绝,说明弱算法已成功禁用。

使用ssh-auditnmap再次扫描目标以确认。


四. 全面更新系统和SSH版本

老版本的SSH服务可能不支持更安全的密钥交换算法,建议更新到最新版本:

sudo apt update && sudo apt upgrade -y  # Debian/Ubuntu
sudo yum update -y                      # CentOS/RHEL

更新OpenSSH:

sudo apt install openssh-server -y  # Debian/Ubuntu
sudo yum install openssh-server -y  # CentOS/RHEL

五. 监控和日志

通过日志监控验证是否仍有尝试使用弱算法的连接:

查看SSH日志文件:

sudo tail -f /var/log/auth.log  # Debian/Ubuntu
sudo tail -f /var/log/secure    # CentOS/RHEL

查找类似以下记录的条目:

Unable to negotiate with : no matching key exchange method found

六.禁用TLS中的弱密钥交换算法

如果涉及TLS服务,更新配置文件(例如nginxapache)以禁用弱密钥交换算法,

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5:!3DES:!RSA;

重新启动服务后验证:

openssl s_client -connect <目标IP>:443 -cipher <弱算法>

如果连接失败,说明弱算法已禁用。

你可能感兴趣的:(Linux,linux,ssh,运维,服务器,tls,安全威胁分析)