Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

服务器初始化

安全加固

Fail2Ban

Fail2Ban 通过实时监控系统日志,自动识别并在防火墙中封禁那些在短时间内多次认证失败的恶意IP,从而阻断暴力破解攻击。

比如说如果IP 1.2.3.4 在5分钟内输错3次密码,则封禁该IP 24小时。

安装:

1
2
sudo apt update
sudo apt install fail2ban -y

启动并设置开机自启:

1
2
3
4
5
# 1. 允许服务开机自启
sudo systemctl enable fail2ban

# 2. 现在立刻启动服务
sudo systemctl start fail2ban

查看状态:

1
sudo systemctl status fail2ban

正常开启的情况应该会看到这样的内容:

image-20260111133505137

Jail

Fail2Ban 的 Jail(监狱) 是一个独立的防御策略单元。它将“日志监控规则”与“防火墙执行动作”绑定,用于保护特定的服务。

从技术实现角度,一个 Jail 包含以下三个核心闭环流程:

  1. 日志轮询 (Log Polling): Jail 持续读取并分析指定的系统日志文件(Backend,例如 /var/log/auth.log)。
  2. 正则匹配与计数 (Filter & Counter): 使用预设的 Python 正则表达式 (Regex) 实时匹配日志中的失败记录。Jail 会在内存中维护一个滑动时间窗口 (findtime),统计同一源 IP 的匹配次数。
  3. 动作执行 (Action Execution): 一旦计数达到设定的阈值 (maxretry),Jail 会立即调用系统层面的命令(通常是修改 iptablesnftables 防火墙规则),在网络层直接拒绝该 IP 的连接请求,并持续 bantime 设定的时长。

查看Jail情况:

1
sudo fail2ban-client status

如果显示:

1
2
3
Status
|- Number of jail: 0
`- Jail list:

则代表没有监控任何东西。

开启ssh监控:

1
printf "[sshd]\nenabled = true\n" | sudo tee /etc/fail2ban/jail.local

然后重启服务让它生效:

1
sudo systemctl restart fail2ban

这时候再检查就应该看到:

1
2
3
4
sudo fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd