应禁用不必要的ssh端口转发:在/etc/ssh/sshd_config中设置allowtcpforwarding no、tcpforwarding no、permittunnel no, reload配置并用sshd -t校验,必要时通过match块做细粒度启用。

关闭不必要的SSH端口转发功能
SSH默认允许端口转发(TcpForwarding yes),这会为攻击者提供构建隧道、绕过网络隔离的便利条件。一旦某台服务器失陷,攻击者可立即用ssh -L或ssh -R将内网服务暴露到可控节点,实现横向渗透。
实战建议:
- 在
/etc/ssh/sshd_config中显式禁用:TcpForwarding noAllowTcpForwarding noPermitTunnel no - 若业务确需部分转发(如跳板机管理),应配合
Match User或Match Address做细粒度控制,仅对特定用户/IP启用 - 修改后执行
sudo systemctl reload sshd生效,并用sshd -t校验配置语法
限制SSH连接源与目标范围
横向移动常依赖“任意连任意”——攻击者从已控主机发起SSH连接,扫遍内网存活IP。限制连接方向能大幅压缩攻击面。
操作要点:
- 防火墙层面:用
iptables或nftables限制出向SSH连接,例如只允许跳板机访问核心数据库网段:-A OUTPUT -o eth0 -p tcp --dport 22 -d 10.20.30.0/24 -j ACCEPT-A OUTPUT -p tcp --dport 22 -j DROP - SSH客户端层面:在
/etc/ssh/ssh_config中设置Host段约束目标地址,避免误连或被恶意脚本滥用 - 服务端层面:通过
sshd_config的AllowUsers和AllowGroups限定谁可登录,再配合Match Address限制来源IP段
禁用密码登录,强制密钥认证并绑定使用环境
密码登录不仅易被爆破,更易因弱口令、复用密码导致多台机器被一锅端;而私钥一旦泄露,攻击者可无感横向移动。
关键加固动作:
- 配置
PubkeyAuthentication yes+PasswordAuthentication no+PermitEmptyPasswords no - 为每台服务器生成独立密钥对,不跨主机复用;私钥本地存储时设
chmod 600,公钥上传前检查authorized_keys权限是否为644 - 利用
environment="..."或command="..."前缀限制authorized_keys中某公钥的用途,例如仅允许执行rsync备份,无法交互式登录
部署SSH行为审计与异常连接告警
即使做了上述限制,仍需监控“谁在什么时候连了谁”,以便及时发现异常模式——比如非工作时间大量SSH连接尝试、单用户短时间登录多台不同网段主机。
落地方法:
- 开启
LogLevel VERBOSE,确保/var/log/auth.log记录完整的登录源IP、用户名、端口、认证方式 - 用
faillog和lastlog定期检查失败/成功登录频次,结合awk/grep脚本识别异常IP - 接入SIEM(如ELK或Wazuh)聚合日志,设置规则匹配:
• 同一源IP 5分钟内登录≥3台不同主机
• 登录目标包含.ssh/id_rsa访问记录
• 出现ssh -fNgL类后台隧道命令痕迹(可通过进程审计或auditd捕获)










