《远程访问安全加固策略》
第4章 SSH客户端安全配置
4、SSH客户端安全配置:StrictHostKeyChecking、连接超时设置、加密算法白名单
SSH客户端的安全配置是远程访问安全的第一道防线。通过合理配置客户端参数,可以有效防止中间人攻击、减少闲置连接风险,并确保仅使用强加密算法进行通信。本节将深入讲解三个核心配置项:StrictHostKeyChecking、连接超时设置以及加密算法白名单。
4.1 StrictHostKeyChecking:防御中间人攻击
StrictHostKeyChecking 是 SSH 客户端用于验证远程服务器主机密钥的策略。当设置为 yes 时,客户端会严格比对已知主机密钥,若密钥不匹配或未知,则拒绝连接。这能有效防止攻击者通过伪造服务器身份进行中间人攻击。
推荐配置:
# 在 ~/.ssh/config 或 /etc/ssh/ssh_config 中设置
Host *
StrictHostKeyChecking yes
UserKnownHostsFile ~/.ssh/known_hosts
4.2 连接超时设置:避免闲置连接风险
通过设置 ServerAliveInterval 和 ServerAliveCountMax,SSH客户端可以定期检测连接是否存活,并在服务器无响应时自动断开连接。这有助于释放系统资源,并防止因用户离开终端而导致的未授权访问。
- ServerAliveInterval:客户端向服务器发送存活检测消息的间隔时间(秒)。推荐值:
60。 - ServerAliveCountMax:未收到响应前允许的最大检测次数。推荐值:
3。 - 超时总时间 = ServerAliveInterval × ServerAliveCountMax。例如 60×3=180秒(3分钟)无响应则断开。
配置示例:
# 在 ~/.ssh/config 中设置
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
# 可选:TCPKeepAlive 作为补充
TCPKeepAlive yes
4.3 加密算法白名单:禁用弱加密算法
SSH支持多种加密算法,但部分旧算法(如 aes128-cbc、hmac-md5)存在已知漏洞。通过配置 Ciphers、MACs 和 KexAlgorithms 白名单,可以强制客户端仅使用经过审核的强加密算法,提升通信安全性。
完整配置示例:
# 在 ~/.ssh/config 或 /etc/ssh/ssh_config 中设置
Host *
# 加密算法白名单
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-256,hmac-sha2-512
KexAlgorithms curve25519-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
4.4 综合配置建议
将上述三个配置项整合到 ~/.ssh/config 文件中,形成统一的SSH客户端安全策略:
# 全局SSH客户端安全配置
Host *
# 严格主机密钥检查
StrictHostKeyChecking yes
UserKnownHostsFile ~/.ssh/known_hosts
# 连接超时设置
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
# 加密算法白名单
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-256,hmac-sha2-512
KexAlgorithms curve25519-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
# 其他安全选项
Compression no
ForwardX11 no
PermitLocalCommand no
💡 提示: 配置完成后,建议使用 ssh -v user@host 命令验证实际使用的算法和参数。若服务器不支持白名单中的算法,连接将失败,此时需根据服务器端配置进行调整。
专注课程资料整理