让 fail2ban
自动监控 UFW BLOCK
日志,并在检测到攻击时封禁 IP!
比手动 ufw deny
更高效,适合长期防御!
安装 ufw
防火墙 和 fail2ban
安装完成后,启用 ufw
防火墙:
建议自己稍微配置一下防火墙,关掉所有端口,只留下必要的 80/443 等端口,SSH等端口不要开放(最好设置仅对白名单 IP 放行)
安装 fail2ban:
1
| sudo apt install fail2ban -y
|
设置 fail2ban 开机自启动:
1 2
| sudo systemctl start fail2ban sudo systemctl enable fail2ban
|
创建自定义 jail
规则
首先需要手动添加一个新的监控规则来专门处理 UFW BLOCK
日志:
编辑 jail.local
配置文件:
1
| sudo vi /etc/fail2ban/jail.local
|
参考配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| [DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
allowipv6 = true
backend = systemd
bantime = 3600 findtime = 600 maxretry = 5
[sshd] enabled = true filter = sshd
port = ssh logpath = %(sshd_log)s
bantime = 86400 findtime = 86400 maxretry = 3
action = %(action_)s
[ufw-block] enabled = true filter = ufw-block logpath = /var/log/ufw.log maxretry = 5 findtime = 600 bantime = -1
action = ufw[application="Block", blocktype=reject]
[nginx-botsearch] enabled = true port = http,https logpath = /var/log/nginx/access.log maxretry = 100 findtime = 600 bantime = 2592000
|
创建 ufw-block
过滤器
fail2ban
需要知道如何从日志中提取攻击 IP。创建过滤器:
1
| sudo vi /etc/fail2ban/filter.d/ufw-block.conf
|
写入以下内容:
1 2 3
| [Definition] failregex = ^.*\[UFW BLOCK\].*SRC=<HOST>.*$ ignoreregex =
|
重启 fail2ban
使配置生效
验证配置正确性的命令
1 2 3 4 5 6 7
| sudo fail2ban-client -t
sudo systemctl restart fail2ban
|
1
| sudo fail2ban-client status
|
现在应该能看到 jail list
多了一个 ufw-block
:
1 2 3
| Status |- Number of jail: 3 `- Jail list: nginx-botsearch, sshd, ufw-block
|
查看 ufw-block
的封禁情况:
1
| sudo fail2ban-client status ufw-block
|
解封 IP
如果需要手动解封某个 IP:
1
| sudo fail2ban-client set ufw-block unbanip 123.123.123.123
|
白名单
为了防止自己设备的 IP 被误封,可以添加常用 IP 到 fail2ban 的白名单:
1
| sudo vi /etc/fail2ban/jail.local
|
里面的一行后面加上自己的 IP:
1 2 3 4
| bantime = -1 findtime = 600 maxretry = 1 ignoreip = 例如 123.123.123.123
|
感谢
https://linux.do/t/topic/533088