Skip to main content

配置Nginx防护

1. 创建Nginx访问过滤器

创建文件 /etc/fail2ban/filter.d/nginx-access.conf

sudo nano /etc/fail2ban/filter.d/nginx-access.conf

文件内容:

[Definition]
# 匹配所有非静态文件的GET/POST请求
failregex = ^<HOST> -.*"(GET|POST)[^"]*HTTP.*" (200|301|302|304)
# 排除静态文件请求
ignoreregex = ^<HOST> -.*"(GET|POST).*\.(jpg|jpeg|png|gif|ico|css|js|txt|pdf|zip|mp4|webm|woff|woff2|ttf|svg|eot|xml|json|robots\.txt|favicon\.ico)[^\s]* HTTP.*"

[INCLUDES]
before = common.conf

2. 创建Jail配置文件

创建文件 /etc/fail2ban/jail.d/nginx-access.conf

sudo nano /etc/fail2ban/jail.d/nginx-access.conf

文件内容:

[nginx-access]
# 启用此防护
enabled = true
# 监控的端口
port = http,https
# 使用的过滤器
filter = nginx-access
# 日志文件路径(支持多个路径)
logpath = /www/wwwlogs/*.log
# 60秒内的最大尝试次数
maxretry = 40
# 统计时间窗口(秒)
findtime = 60
# 封禁时长(秒)- 7天
bantime = 604800
# 执行动作
action = iptables-multiport[name=nginx-access, port="http,https", protocol=tcp]
# 日志编码
logencoding = utf-8
# 可选:设置白名单IP
# ignoreip = 127.0.0.1/8 192.168.1.0/24