本文基于Ubuntu 20.04及以上系统操作,直接执行命令安装所需工具:
执行命令:sudo apt update && sudo apt install fail2ban nginx -y
该步骤会自动安装fail2ban(攻击拦截工具)和Nginx(Web服务),无需额外依赖。
不要修改系统默认配置,先复制一份自定义配置模板:
执行命令:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
用nano编辑器打开自定义配置文件:
执行命令:sudo nano /etc/fail2ban/jail.local
找到文件开头的[DEFAULT]段,修改以下参数:
找到[nginx-auth]段,取消该行的注释符号(去掉前面的;),并确认logpath指向你的Nginx错误日志路径(默认:/var/log/nginx/error.log),完整段示例:
[nginx-auth]
enabled = true
filter = nginx-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 86400
按Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。
重启fail2ban服务让配置生效:
执行命令:sudo systemctl restart fail2ban
检查拦截规则是否激活:
执行命令:sudo fail2ban-client status nginx-auth
输出中看到Status for the jail: nginx-auth且Filter、Actions均为OK,说明配置成功。

找到你的Web站点配置文件,默认路径为/etc/nginx/sites-available/default,用nano打开:
执行命令:sudo nano /etc/nginx/sites-available/default
在server块内添加针对登录接口的限制规则,示例(假设登录接口路径为/admin/login):
location /admin/login {
limit_req zone=login burst=5 nodelay;
保留原有配置,如proxy_pass、index等
}
先检查配置语法是否正确:
执行命令:sudo nginx -t
输出显示test is successful后,重启Nginx:
执行命令:sudo systemctl restart nginx
如果是自主开发的Web项目,可在登录逻辑中添加本地文件级限制(无需额外数据库),以PHP为例:
在登录验证代码的最顶部添加以下内容:
该代码无需额外组件,直接复制到登录处理文件即可生效。
用另一终端执行以下命令,连续输错后台密码3次:
执行命令:curl -X POST -d "username=admin&password=wrong123" https://你的域名/admin/login
3次请求后,执行fail2ban检查命令:
执行命令:sudo fail2ban-client status nginx-auth
输出中会显示被封禁的IP,说明fail2ban已生效;再用curl连续发6次登录请求,第6次会返回503错误,说明Nginx限制生效。
下一篇: 企业级系统访客权限限制设计与实施指南












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图