上一篇 下一篇 分享链接 返回 返回顶部

SSH暴力破解防护:实用配置清单与最佳实践

发布人: 发布时间:15小时前 阅读量:0

引言

SSH(Secure Shell)是服务器远程管理最常用的协议,但同时也是暴力破解攻击的主要目标。攻击者通过自动化脚本不断尝试用户名和密码组合,一旦成功将直接威胁服务器安全。本文整理了一份经过验证的SSH防护配置清单,帮助管理员从基础到进阶加固服务器。

核心防护措施

1. 修改默认SSH端口

将默认的22端口改为高位端口(如2222、10022),可显著降低扫描攻击的命中率。编辑SSH配置文件 /etc/ssh/sshd_config,设置 Port 2222,并确保防火墙放行新端口。

2. 禁止root直接登录

编辑配置文件,设置 PermitRootLogin no。仅允许普通用户通过SSH登录,需要提权时使用 sudo 命令。这可以有效阻止针对root账户的暴力破解。

3. 使用公钥认证替代密码登录

生成密钥对(ssh-keygen -t ed25519),将公钥添加到目标服务器的 ~/.ssh/authorized_keys 文件中。然后在配置文件中设置 PasswordAuthentication noPubkeyAuthentication yes。密钥认证几乎无法被暴力破解。

4. 限制可登录用户与IP白名单

/etc/ssh/sshd_config 中添加 AllowUsers usernameAllowGroups groupname,仅允许指定用户或组登录。同时利用防火墙(如iptables、ufw)设置来源IP白名单:ufw allow from 192.168.1.0/24 to any port 2222

自动化防御工具

5. 部署Fail2ban

Fail2ban能实时监控SSH登录日志,检测到多次失败尝试后自动添加防火墙规则封禁发起IP。安装命令:apt install fail2ban(Debian/Ubuntu)或 yum install fail2ban(CentOS)。复制默认配置 /etc/fail2ban/jail.confjail.local,并启用SSH监控:

  • 设置 [sshd] 段落下的 enabled = true
  • 调整 maxretry = 5(单IP最多失败5次)
  • 设置 bantime = 86400(封禁24小时)
  • 设定 findtime = 600(检测窗口10分钟)

重启服务:systemctl restart fail2ban

6. 启用SSH双因素认证(2FA)

安装 libpam-google-authenticator 包,运行 google-authenticator 生成二维码,将密钥绑定到手机应用(如Google Authenticator)。在 /etc/pam.d/sshd 首行添加 auth required pam_google_authenticator.so,并在 sshd_config 中设置 ChallengeResponseAuthentication yesAuthenticationMethods publickey,keyboard-interactive。这样登录需同时提供密钥和动态验证码。

日志与审计

7. 开启详细日志并定期审查

在sshd_config中设置 LogLevel VERBOSE 以记录更多详情(如公钥指纹)。日志位置:/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS)。可使用 journalctl -u sshd(systemd系统)查看。建议配合logwatch、ossec等工具自动分析异常。

8. 限制SSH连接频率与黏性连接

通过配置 MaxAuthTries 3(每次连接最多尝试次数)和 MaxStartups 10:30:100(当未认证连接数达到10后开始以30%概率拒绝新连接,直到100上限)来降低暴力破解效率。

总结

SSH暴力破解是持续性的威胁,但通过上述配置清单——修改端口、禁用密码登录、密钥认证、Fail2ban、2FA、IP白名单及日志审计——能将风险降至极低。管理员应定期检查配置是否生效,并结合系统更新与入侵检测工具形成纵深防御体系。安全无小事,主动防护胜过事后补救。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com