0
0
0
【网络安全】fail2ban

文章摘要
|
fail2ban 是一个自动封禁恶意 IP 的防护工具。它专门用来对付你刚才日志里看到的那种 SSH 暴力破解:自动扫描日志,发现某个 IP 反复登录失败,就自动把它拉黑一段时间。最重要的是,如果设置了禁止密码登录,那这的防护力基本为零。
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd + _COMM=sshd-session
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:# 查看 SSH 防护状态(能看到当前被封的 IP 列表)
sudo fail2ban-client status sshd
# 手动解封某个 IP
sudo fail2ban-client set sshd unbanip 120.48.56.8🛡️ 它怎么工作的?
简单说就是一个监控→检测→封禁→解封的循环:
监控:实时盯着你指定的日志文件(比如
/var/log/secure)。检测:用正则规则匹配失败记录,发现某个 IP 在短时间内失败次数超过阈值(
maxretry)。封禁:自动调用防火墙(iptables/firewalld)把该 IP 加入黑名单,禁止连接。
解封:封禁时间(
bantime)到期后,自动释放。
# 1. 安装 EPEL 源和软件
sudo dnf install -y epel-release
sudo dnf install -y fail2ban
# 2. 启动并设置开机自启
sudo systemctl enable --now fail2ban关键配置:不要直接改 jail.conf,创建一个 jail.local 来覆盖默认设置,这样软件更新时你的配置不会被冲掉。
sudo vim /etc/fail2ban/jail.local写入以下内容:
[DEFAULT]
# 封禁 1 小时
bantime = 3600
# 10 分钟内
findtime = 600
# 失败 3 次就封
maxretry = 3
# 把自己的 IP 加白名单,防止误封自己
ignoreip = 127.0.0.1/8 ::1 你的公网IP
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure # Rocky Linux 的日志路径sudo systemctl restart fail2ban