服务器初始化
安全加固
Fail2Ban
Fail2Ban 通过实时监控系统日志,自动识别并在防火墙中封禁那些在短时间内多次认证失败的恶意IP,从而阻断暴力破解攻击。
比如说如果IP 1.2.3.4 在5分钟内输错3次密码,则封禁该IP 24小时。
安装:
1 | sudo apt update |
启动并设置开机自启:
1 | # 1. 允许服务开机自启 |
查看状态:
1 | sudo systemctl status fail2ban |
正常开启的情况应该会看到这样的内容:

Jail
Fail2Ban 的 Jail(监狱) 是一个独立的防御策略单元。它将“日志监控规则”与“防火墙执行动作”绑定,用于保护特定的服务。
从技术实现角度,一个 Jail 包含以下三个核心闭环流程:
- 日志轮询 (Log Polling): Jail 持续读取并分析指定的系统日志文件(Backend,例如
/var/log/auth.log)。 - 正则匹配与计数 (Filter & Counter): 使用预设的 Python 正则表达式 (Regex) 实时匹配日志中的失败记录。Jail 会在内存中维护一个滑动时间窗口 (
findtime),统计同一源 IP 的匹配次数。 - 动作执行 (Action Execution): 一旦计数达到设定的阈值 (
maxretry),Jail 会立即调用系统层面的命令(通常是修改iptables或nftables防火墙规则),在网络层直接拒绝该 IP 的连接请求,并持续bantime设定的时长。
查看Jail情况:
1 | sudo fail2ban-client status |
如果显示:
1 | Status |
则代表没有监控任何东西。
开启ssh监控:
1 | printf "[sshd]\nenabled = true\n" | sudo tee /etc/fail2ban/jail.local |
然后重启服务让它生效:
1 | sudo systemctl restart fail2ban |
这时候再检查就应该看到:
1 | sudo fail2ban-client status |