在Linux系统中,CBC(Cipher Block Chaining)模式的加密算法
被认为存在安全隐患(例如可能被攻击者利用来进行Padding Oracle攻击)。因此,建议禁用SSH服务中不安全的CBC模式加密算法,并使用更安全的加密算法:CTR(Counter Mode)
或GCM(Galois/Counter Mode)
。
一. 检查当前SSH服务支持的加密算法
-
列出SSH服务支持的加密算法:
使用以下命令列出服务器端支持的加密算法:ssh -Q cipher
或
sshd -T | grep ciphers
如果输出中包含
aes128-cbc
、3des-cbc
等信息,则说明SSH服务支持CBC模式加密。 -
检查当前使用的加密算法:
从客户端测试连接,查看会话使用的加密算法:ssh -v username@hostname
在输出中寻找类似以下内容:
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256 debug1: cipher: aes128-cbc
如果使用了
-cbc
相关算法,则需要进行修复。
二. 修改SSH服务配置文件
-
编辑SSH服务的配置文件:
sudo vi /etc/ssh/sshd_config
-
查找或添加以下配置项,用于指定允许的加密算法:
Ciphers aes256-ctr,aes192-ctr,aes128-ctr,aes256-gcm@openssh.com,aes128-gcm@openssh.com
Ciphers
指定允许的加密算法。- 移除任何
cbc
模式的算法(如aes128-cbc
、3des-cbc
)。 - 使用
ctr
或gcm
模式的算法。
- 保存文件并退出。
三. 重新启动SSH服务
修改配置后,重启SSH服务以使更改生效:
sudo systemctl restart sshd
或
sudo service sshd restart
四. 验证配置更改
-
重新列出支持的加密算法:
ssh -Q cipher
确保输出中不再包含
cbc
模式的算法。 -
测试客户端连接:
使用以下命令连接,确认是否使用安全算法:ssh -v username@hostname
确保输出中显示的加密算法为非
cbc
模式,例如:debug1: cipher: aes256-ctr
五. 扫描SSH服务的漏洞
-
使用工具扫描SSH服务以验证是否仍支持CBC模式加密算法:
-
nmap:
nmap --script ssh2-enum-algos -p 22 hostname
检查输出中是否列出了CBC模式加密算法。
-
ssh-audit(需要安装):
ssh-audit hostname
该工具可以详细列出SSH服务的加密算法及其安全性。
-
-
如果发现仍然支持CBC模式,重新检查
/etc/ssh/sshd_config
文件中的配置。
六. 其他
-
升级OpenSSH:
确保使用最新版本的OpenSSH,旧版本可能支持不安全的算法。sudo apt update && sudo apt install openssh-server
-
测试回滚策略:
在修改前,确保已验证SSH配置文件语法,以避免配置错误导致无法连接:sudo sshd -t
-
限制登录协议版本:
在配置文件中确保只允许SSH协议版本2:Protocol 2