很多朋友买了便宜的 VPS,跑跑代理或者建个站就不管了。殊不知,公网上的服务器就像没有围墙的院子,只要你开着 SSH 默认的 22 端口,分分钟就有成千上万次暴力破解尝试撞上门来。今天不聊复杂的防火墙规则,也不谈高大上的态势感知,就给大家安利一个老牌、简单但极其有效的工具——fail2ban。

为什么要用 fail2ban?

简单来说,fail2ban 就是一个“看门大爷”。它会扫描你的系统日志(比如 /var/log/auth.log),一旦发现有人在短时间内频繁尝试输入错误的密码或者 SSH 密钥,大爷就会立刻调取系统的防火墙(通常是 iptables 或 nftables),把那个 IP 拉黑封禁一段时间。

对于只有 1G 内存甚至更低配置的小鸡来说,遭遇大规模 SSH 暴力破解会瞬间占满 CPU 和 I/O,导致网站卡顿甚至无法连接。装上 fail2ban,能过滤掉绝大多数“脚本小子”的骚扰,降低系统资源消耗,更重要的是——它心里踏实。

安装步骤:两行命令搞定

绝大多数主流 Linux 发行版都直接收编了这个工具,安装非常简单。

在 Debian/Ubuntu 系统上:

sudo apt update
sudo apt install fail2ban

在 CentOS/RHEL 系统上:

sudo yum install epel-release
sudo yum install fail2ban

安装完成后,记得启动服务并设为开机自启:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Linux 终端命令行界面示意图

执行安装命令的终端界面示例

配置:别动主配置文件

新手最容易犯的错就是直接去编辑 /etc/fail2ban/jail.conf。记住,千万不要改这个文件!软件一更新,你的修改就会被覆盖。正确的做法是创建一个本地配置文件 jail.local,它会覆盖主文件里的默认设置。

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

核心配置详解

打开 jail.local 后,你可以看到很多段落。这里重点说一下几个关键参数的调优建议:

  1. [DEFAULT] 段落

    • bantime: 封禁时长,默认是 10分钟。为了更清净,建议改成 3600(1小时)或者 86400(1天)。当然,如果你担心误封自己,可以先设短一点测试。
    • findtime: 在这个时间段内(比如 600 秒)达到失败次数就封禁。
    • maxretry: 最大允许失败次数。一般来说 3 到 5 次比较合理,输错 5 次密码肯定不是手滑了。
    • destemail: 接收报警邮件的地址。
    • sender: 发件人地址。
    • action: 默认动作通常是 %(action_)s(只封禁),如果你想要收到邮件通知,可以改成 %(action_mwl)s
  2. [sshd] 段落

    • 这部分是专门保护 SSH 服务的,默认是 enabled = true,确认它没被关掉就行。如果你改了 SSH 端口,记得在这里添加 port = 你的端口号,否则它可能只监控 22 端口的日志。

改完配置记得重载

修改完配置文件,一定要让它生效:

sudo systemctl reload fail2ban
# 或者使用 fail2ban-client 命令
sudo fail2ban-client reload

你随时可以用这个命令查看当前谁被关进小黑屋了:

sudo fail2ban-client status sshd

这还不够?再来点“组合拳”

虽然 fail2ban 很强,但也不能全指望它。为了极致的安全,建议配合以下操作:

  1. 修改默认端口:不要用 22,改成一个五位数的高端口,能避开 90% 的全网扫描。
  2. 禁止 root 远程登录:在 /etc/ssh/sshd_config 里设置 PermitRootLogin no,平时只敢用普通用户登录,需要 root 权限时再 sudo -i
  3. 使用 SSH 密钥登录:关闭密码认证(PasswordAuthentication no),只允许密钥登录。绝大多数爆破都是针对弱密码的,没密码字典,他们也就无计可施了。

服务器防火墙安全概念图

Fail2ban 作为防火墙保护服务器的安全概念示意图

总结

安全是个系统工程,但没有行动永远是不安全的。对于我们这种手里攥着几台廉价 VPS 的小站长来说,花两分钟装个 fail2ban,绝对是性价比最高的安全投入。别等到服务器变肉鸡了才想起来去查日志,现在就动手吧!

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭