RackNerd VPS 被扫描攻击如何配置 Fail2ban 防御

文章导读
在 RackNerd VPS 上防御扫描攻击,最推荐安装 Fail2ban 并启用 SSH 监狱规则,适用于 Linux 系统日志可读取的场景,风险边界是配置错误可能导致管理员自身 IP 被误封。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

在 RackNerd VPS 上防御扫描攻击,最推荐安装 Fail2ban 并启用 SSH 监狱规则,适用于 Linux 系统日志可读取的场景,风险边界是配置错误可能导致管理员自身 IP 被误封。

先说结论:Fail2ban 通过监控日志自动封禁恶意 IP,适合大多数 Linux VPS 基础防护,但需确保防火墙服务正常运行。

  • 先判断:确认 VPS 系统类型及日志路径,Ubuntu 通常在 /var/log/auth.log,CentOS 通常在 /var/log/secure。
  • 优先做:创建 jail.local 配置文件而非直接修改 jail.conf,避免软件更新覆盖配置。
  • 再验证:使用 fail2ban-client status 命令查看监狱状态,确认规则已加载且无报错。

命令速用版

以下命令适用于基于 Debian 或 Ubuntu 的系统,CentOS 或 AlmaLinux 用户需将包管理器替换为 yum 或 dnf。

apt update && apt install fail2ban -y
systemctl enable fail2ban && systemctl start fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

为什么会这样

Fail2ban 防御的核心机制是日志分析与防火墙联动,而不是直接拦截网络包。

当攻击者尝试暴力破解 SSH 或其他服务时,会在系统日志中留下失败记录。Fail2ban 定期扫描这些日志,一旦某个 IP 在指定时间内失败次数超过阈值,就会调用防火墙命令将该 IP 加入拒绝列表。这种方式不影响正常用户的连接体验,只在检测到异常行为后介入。

RackNerd VPS 被扫描攻击如何配置 Fail2ban 防御

分步处理

第一步是安装软件包,确保系统源可用。第二步是配置监狱规则,重点是指定正确的日志路径和封禁时长。第三步是重启服务使配置生效。

编辑 /etc/fail2ban/jail.local 文件,找到 [sshd] 部分,确保 enabled = true。如果需要修改封禁次数,调整 maxretry 参数,例如设置为 5 次。设置 bantime 为封禁时长,单位是秒,例如 3600 代表一小时。

保存文件后,执行 systemctl restart fail2ban 重启服务。如果使用的是 firewalld 而不是 iptables,需在 jail.local 中指定 banaction = firewallcmd-ipset 或相应后端,否则封禁规则可能无法写入防火墙。

RackNerd VPS 被扫描攻击如何配置 Fail2ban 防御

怎么验证是否生效

运行 fail2ban-client status sshd 查看 SSH 监狱状态,输出中应包含 Currently failed 和 Total failed 计数。

查看日志文件 /var/log/fail2ban.log,确认没有 ERROR 级别的报错信息。尝试使用错误密码从另一台机器连接 SSH,连续多次失败后,使用该机器 IP 执行 iptables -L -n 或 firewall-cmd `--list-all`,应能看到该 IP 出现在拒绝列表中。

常见坑

配置时未将管理员当前 IP 加入 ignoreip 白名单,导致配置测试期间自己被锁在门外。防火墙后端不匹配,例如系统使用 nftables 但 Fail2ban 配置为 iptables,导致封禁命令执行失败。日志轮转后路径变化,需确保 fail2ban 监控的是当前活跃的日志文件。

常见问题

配置错误被锁定了怎么办

通过 VPS 服务商的控制台使用 VNC 或 Web Shell 登录服务器,执行 fail2ban-client unban IP 地址 解除封禁,或暂时停止 fail2ban 服务。

RackNerd VPS 被扫描攻击如何配置 Fail2ban 防御

Fail2ban 能防御 DDoS 攻击吗

不能,Fail2ban 主要针对应用层日志分析,DDoS 攻击通常发生在网络层,会耗尽带宽或连接数,需在防火墙或上游清洗。

需要为每个服务单独配置吗

是的,每个服务对应一个监狱配置,例如 vsftpd、apache-auth 等,需在 jail.local 中分别启用并指定对应的日志路径。

参考来源

Fail2ban Official Documentation, Configuration Guide, https://github.com/fail2ban/fail2ban