CloudCone 这类面向开发者的 VPS 服务商,默认提供的 Linux 实例一旦暴露 SSH 端口,几乎都会面临自动化脚本的密码尝试。配置 Fail2ban 是目前社区公认最轻量且有效的自动化防御方案,它不依赖额外的硬件防火墙,直接在系统层面拦截恶意 IP。
先说结论:在 CloudCone VPS 上部署 Fail2ban 是防止 SSH 暴力破解的标准动作,配置得当可在不影响合法登录的前提下自动封禁恶意请求。
- 先判断:确认操作系统类型(Debian/Ubuntu 或 CentOS/RHEL),因为日志文件路径不同。
- 优先做:创建 jail.local 配置文件覆盖默认设置,避免软件升级导致配置丢失。
- 再验证:启动服务后检查状态及防火墙规则,确保不会误封自己的管理 IP。
命令速用版
如果你希望快速完成基础部署,可以根据系统选择以下命令。注意执行前请确保当前登录会话稳定,避免配置错误导致无法连接。
# Ubuntu/Debian 系统
sudo apt update
sudo apt install fail2ban -y# CentOS/RHEL 系统
sudo yum install epel-release -y
sudo yum install fail2ban -y# 启动服务并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban为什么会这样
SSH 暴力破解的本质是攻击者使用自动化工具,在短时间内尝试大量用户名和密码组合。传统的防火墙规则是静态的,无法识别这种动态的尝试行为。Fail2ban 的工作原理是持续监控系统日志(如 /var/log/auth.log),通过正则表达式匹配失败登录记录。当同一个 IP 在指定时间内失败次数超过阈值,它会调用系统的防火墙工具(如 iptables 或 firewalld)下发封禁规则。这个过程完全自动化,相当于给服务器请了一个不知疲倦的保安。
分步处理
以下是经过验证的配置流程,每一步都有检查点,确保配置生效且安全。
1. 创建本地配置文件
不要直接修改 jail.conf,因为软件更新时会覆盖该文件。正确的做法是复制一份作为本地配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local2. 编辑配置参数
使用编辑器打开 /etc/fail2ban/jail.local,找到 [sshd] 段落。如果没有则新建。以下配置适用于大多数场景:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
ignoreip = 127.0.0.1/8 ::1 你的公网 IP注意:CentOS/RHEL 系统的 logpath 通常是 /var/log/secure。务必将 ignoreip 中的“你的公网 IP”替换为当前登录服务器的 IP,防止把自己封禁在外。
3. 调整 SSH 端口(可选但推荐)
修改默认 22 端口可以减少大部分自动化扫描。如果修改了 SSH 端口,需同步更新 Fail2ban 配置中的 port 参数,并重启 SSH 服务。
4. 重启 Fail2ban 服务
配置修改后需要重启服务才能生效:
sudo systemctl restart fail2ban怎么验证是否生效
配置完成后,不要假设它已经工作,需要通过命令确认状态。
1. 检查服务状态
sudo fail2ban-client status如果显示活性状态,说明服务运行正常。
2. 查看 SSH 监狱详情
sudo fail2ban-client status sshd这里可以看到当前已封禁的 IP 列表(Banned IP list)。如果是新部署,列表可能为空。
3. 模拟测试(谨慎操作)
可以在另一台机器上尝试多次错误密码登录,然后再次运行 status 命令,观察该 IP 是否出现在封禁列表中。同时可以在服务器上使用 iptables -L -n 查看防火墙规则是否增加了相应的 DROP 规则。
常见坑
根据实际运维经验,以下几个问题最容易导致配置失效或无法登录:
1. 日志路径错误
Ubuntu/Debian 使用 /var/log/auth.log,而 CentOS/RHEL 使用 /var/log/secure。配置错误会导致 Fail2ban 无法读取日志,从而不触发封禁。
2. 误封管理 IP
如果没有在 ignoreip 中添加自己的公网 IP,一旦自己输错几次密码,也会被封禁。遇到这种情况只能通过 VPS 服务商的控制台(如 CloudCone 的 VNC)登录服务器解封。
3. 修改 SSH 端口未同步
如果在 sshd_config 中修改了 SSH 端口,但 Fail2ban 配置中 port 仍为 ssh 或 22,可能导致监控失效。建议明确指定数字端口。
4. 防火墙后端冲突
部分新系统默认使用 nftables 或 firewalld,而旧配置可能指向 iptables。通常 Fail2ban 能自动检测,但如果发现封禁不生效,需检查 action 配置是否匹配当前系统的防火墙工具。
参考来源
- 5 分钟搞定:用 Fail2Ban 自动封禁 SSH 暴力破解 IP(附详细配置步骤)
- fail2ban 实战:5 分钟搞定 SSH 暴力破解防护 (附 Nginx 转发配置)
- 基于 Fail2ban 的暴力破解防护:SSH 与 Web 服务安全加固
- 入门系列之使用 fail2ban 防御 SSH 服务器的暴力破解攻击 - 腾讯云开发者
原文链接:https://www.zjcp.cc/ask/10171.html
