Nginx-Lua-Anti-DDoS是一个使用Lua编写的抗DDoS脚本,用于保护Nginx Web服务器。该脚本带有一个基于HTML和JavaScript的身份验证谜题,其灵感来源于Cloudflare的“ I am under attack ”模式。这是一个抗DDoS身份验证页面,可保护Nginx服务器免受包括所有第7层攻击、缓解历史攻击、拒绝服务(DoS)、DoS影响、分布式拒绝服务(DDoS)、所有暴力破解攻击、零日漏洞利用在内的各种类型的攻击。
功能表格 功能类别 具体功能 功能描述 访问控制 IP地址白名单 允许特定IP地址访问资源 IP子网范围白名单 允许特定IP子网范围访问资源 IP地址黑名单 禁止特定IP地址访问资源 IP子网范围黑名单 禁止特定IP子网范围访问资源 用户代理白名单 仅允许特定用户代理(浏览器/设备)访问 用户代理黑名单 禁止特定用户代理(如恶意爬虫)访问 DDoS防护 自动开启"遭受攻击"模式 检测到DDoS攻击时自动激活防护机制 DDoS认证HTML页面 在攻击期间展示验证页面过滤恶意流量 认证保护 受保护区域访问控制 通过用户名/密码限制特定网站/路径的访问 认证日志记录 记录成功/失败的认证尝试,可与Fail2Ban集成封禁恶意IP 请求过滤 范围头过滤 防御慢速HTTP攻击(如Slowloris) Web应用防火墙(WAF) POST数据检查 检测并阻止恶意POST请求/漏洞利用 URL恶意内容检测 扫描URL中的SQL注入/XSS等攻击特征 查询字符串检测 检查参数中的恶意内容/漏洞利用 请求头检查 分析所有请求头是否存在异常 Cookie漏洞检测 识别Cookie中的安全漏洞利用 性能优化 查询字符串排序 优化缓存效率 查询字符串白名单 只允许特定参数传递 查询字符串移除 从URL中删除指定参数 文件压缩/精简 压缩JS/CSS/HTML文件,移除空格和无效代码 错误处理 自定义错误页面 用定制页面替换默认错误提示 隐藏Web应用错误 拦截PHP/MySQL等敏感错误信息,防止泄露 网页内容替换 动态修改页面/文件中的输出内容
夸克「anti_ddos_challenge.lua」 链接: https://pan.quark.cn/s/99e265d375c8
将此脚本添加到你的 Nginx 配置文件夹中
nginx/conf/lua/ 将此脚本添 加到你的 HTTP 块中,或者根据你希望此脚本运行的位置,它可以放在server 块或location 块中,该脚本可以为 单个位置、整个服务器或服务器上的每个网站提供保护。
lua_shared_dict antiddos 70m; #Anti -DDoS共享内存区,用于跟踪每个唯一用户的请求lua_shared_dict antiddos_blocked 70m; #Anti -DDoS 共享内存区,用于存放被封禁用户的反分布式拒绝服务共享内存lua_shared_dict ddos_counter 10m; #Anti -DDoS 共享内存区,用于跟踪被封禁用户的总数lua_shared_dict jspuzzle_tracker 70m; #Anti -DDoS 共享内存区, 用于监控每个唯一的 IP 地址以及它们在解谜失败时的累计次数access_by_lua_file anti_ddos_challenge .lua; nginx 配置文件示例 这将为 nginx 服务器上的所有网站运行:
http { #shared memory addresses in http block lua_shared_dict antiddos 70m; lua_shared_dict antiddos_blocked 70m; lua_shared_dict ddos_counter 10m; lua_shared_dict jspuzzle_tracker 70m; access_by_lua_file anti_ddos_challenge .lua; } 使其仅针对单一网站运行:
server { #nginx config settings etc lua_shared_dict antiddos 70m; lua_shared_dict antiddos_blocked 70m; lua_shared_dict ddos_counter 10m; lua_shared_dict jspuzzle_tracker 70m; access_by_lua_file conf /lua/anti_ddos_challenge.lua; } 仅在这个location块中运行:
location / { lua_shared_dict antiddos 70m; lua_shared_dict antiddos_blocked 70m; lua_shared_dict ddos_counter 10m; lua_shared_dict jspuzzle_tracker 70m; access_by_lua_file conf /lua/anti_ddos_challenge.lua; } 在脚本设置中,你将看到如下配置选项:
-- [[ Enable/ disable script this feature allows you to turn on or off this script so you can leave this file in your nginx configuration permamently . This way you don 't have to remove access_by_lua_file anti_ddos_challenge.lua; to stop protecting your websites :) you can set up your nginx config and use this feature to enable or disable protection 1 = enabled 2 = disabled ]] localized. master_switch = 1 --enabled by default 将值从 1 更改为 2 ,脚本将被禁用,当站点受到攻击时,可以改为1,启用脚本。
环境要求 只需 Nginx + Lua 即可使用脚本。去哪里获取带有 Lua 功能的 Nginx?
下载 Nginx + Lua Openresty 在此处提供适用于 Windows、Linux 等系统的 Nginx + Lua 版本。
https://openresty.org/en/download.html Nginx4windows 在此处提供带有 Lua 的 Windows 特定版本。
http://nginx-win.ecsds.eu/ 或者你可以在此处下载 Nginx 的源代码,然后自己用 Lua 编译 Nginx。
https://nginx.org/en/download.html https://pan.quark.cn/s/c1feb433209a https://pan.quark.cn/s/6b902d362db1
物理主机须支持 CPU 虚拟化功能, 否则 WSL Kali 可能无法使用。 精简系统自带软件, 美化字体及部分图标, 适度优化;
推荐运行环境:
VMware: 17.x(建议视情分配图形内存)
运行内存: 8 GB
固态硬盘: 300 GB
阅读原文:原文链接
该文章在 2025/11/18 10:38:52 编辑过