高防环境下的 SSH 安全加固清单
一 核心策略 减少暴露面与强认证
- 修改默认端口:将 Port 22 改为 1024–65535 的高位端口(如 2022/23456/58222),同步在防火墙放行新端口,先保留一个已连接的终端再重启 sshd,避免锁死。注意:改端口只能降低噪音,不能替代强认证。
- 禁用 root 直登:设置 PermitRootLogin no,创建具备 sudo 权限的普通管理员账号,登录后再提权。
- 强制密钥登录:优先使用 Ed25519 或 RSA 4096,客户端生成密钥对并把公钥加入服务器 ~/.ssh/authorized_keys,服务端关闭密码认证(见下方示例)。
- 协议与算法白名单:显式使用 Protocol 2;仅启用强加密套件与密钥交换算法(见下方示例)。
- 来源 IP 白名单:通过云安全组/防火墙仅放行可信网段;必要时叠加 TCP Wrappers 的 /etc/hosts.allow/deny 做二次限制。
二 服务端关键配置示例 sshd_configini<br># 协议与端口<br>Protocol 2<br>Port 2022<br># 身份与认证<br>PermitRootLogin no<br>PasswordAuthentication no<br>PubkeyAuthentication yes<br>AuthorizedKeysFile .ssh/authorized_keys<br>ChallengeResponseAuthentication no<br>UsePAM yes<br># 会话与暴力尝试<br>MaxAuthTries 2<br>LoginGraceTime 60<br>ClientAliveInterval 300<br>ClientAliveCountMax 2<br># 可选:限制可登录用户/组<br>AllowUsers your_admin@192.0.2.0/24<br># 或 AllowGroups sshusers<br># 可选:禁用转发功能(如不需要)<br>AllowTcpForwarding no<br>X11Forwarding no<br># 加密与完整性算法白名单(按需精简)<br>Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com<br>MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com<br>KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256<br>
- 修改后执行:systemctl restart sshd 并保留一个备用会话验证新配置。
三 动态防护与访问控制
- Fail2ban 自动封禁:对多次失败的源 IP 自动拉黑,建议阈值 maxretry=3、观测窗口 findtime=600、封禁时长 bantime=86400(1天);按实际环境调整。
- 防火墙与 TCP Wrappers:
- UFW:ufw allow from 203.0.113.10 to any port 2022;ufw deny 22/tcp
- nftables:限制新连接速率(如每秒不超过 1 个)以缓解慢速爆破
- hosts.allow/deny:仅允许受信网段访问 sshd
- 云安全组优先:在云平台安全组层面做来源 IP 白名单,再配合主机防火墙实现纵深防御。
四 监控 审计与运维要点
- 实时日志与告警:
- journalctl -fu sshd 实时查看登录事件
- 分析失败来源:grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head
- 提升日志细节:LogLevel VERBOSE
- 变更与回滚:
- 修改端口或禁用密码前,务必保留一个已建立的 SSH 会话;先测试新端口可连再关闭旧会话。
- 使用 ssh -p 2022 user@server 验证连接参数。
- 密钥管理:
- 为私钥设置 passphrase,定期轮换(建议 3–6 个月);团队使用 ssh config 管理多主机与多密钥。
五 高防场景下的进阶建议
- 跳板机/堡垒机集中管控:管理员先登录跳板机,再按需跳转到业务主机,业务主机仅对跳板机网段开放 SSH。
- 端口敲门 Port Knocking:默认丢弃 SSH 端口,只有按预定顺序“敲门”后才临时放行,适合高度暴露但管理严格的场景。
- 仅内网暴露或专线接入:将 SSH 监听在 127.0.0.1 或内网接口,通过 WireGuard/IPSec 等加密隧道访问,显著降低公网攻击面。
- 入侵检测与响应:结合 OSSEC/Wazuh 等 HIDS 对 /var/log/auth.log 做规则告警,联动封禁与取证。
- 合规与基线:遵循等保/ISO27001 等基线要求,定期做配置审计与漏洞扫描,保留审计日志不少于 180 天。