环境说明
- nginx version: nginx/1.18.0
- CentOS Linux release 8.3.2011
- fail2ban 0.11.2
- 防火墙:firewalld
问题说明
nginx access.log 有许多恶意访问路径记录,导致日志文件过大,占用服务器资源
例:
47.117.84.86 - - [18/Jun/2021:17:06:15 +0800] "GET /phpMyAdmin/ HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safar i/537.36" 47.117.84.86 - - [18/Jun/2021:17:06:15 +0800] "GET /phpmyadmin/ HTTP/1.1" 404 548 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safar i/537.36"
|
步骤说明
安装 fail2ban
sudo dnf install fail2ban
启动&设置开机启动 fail2ban
sudo systemctl enable --now fail2ban
注:—now参数
- 设置为开机自动:systemctl enable
- 设置为开机自动并现在立刻启动:systemctl enable —now
配置 fail2ban
Fail2ban会按照以下顺序读取配置文件:
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf /etc/fail2ban/jail.local /etc/fail2ban/jail.d/*.local
|
每个.local文件都会覆盖文件中的设置.conf。
示例配置
[nginx-cc] enabled = true port = http,https filter = nginx-cc action = %(action_mwl)s maxretry = 3 findtime = 60 bantime = -1 logpath = /home/wwwlogs/access.log
|
[root@iZbp14vt99zpj8dde2fdlmZ wwwroot]# fail2ban-client status nginx-cc Status for the jail: nginx-cc |- Filter | |- Currently failed: 12 | |- Total failed: 338 | `- File list: /home/wwwlogs/access.log `- Actions |- Currently banned: 19 |- Total banned: 21 `- Banned IP list: 47.117.94.207 47.117.33.84 47.117.79.197 47.117.84.41 47.117.67.205 47.117.73.237 47.117.37.92 47.117.75.161 47.117.39.76 47.117.65.124 47.117.39.232 47.117.35.77 47.117.34.254 113.57.182.197 185.142.236.43 169.255.6.18 47.90.209.11 120.36.229.157 61.151.178.176
|