三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

怎么在 CloudCone VPS 上配置 Fail2ban 防止 SSH 暴力破解

怎么在 CloudCone VPS 上配置 Fail2ban 防止 SSH 暴力破解

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.local

2. 编辑配置参数

使用编辑器打开 /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

← 返回列表