描述
PoW Shield 通过充当代理服务器,在后端服务和最终用户之间利用工作量证明,为 OSI 应用层提供 DDoS 防护。该项目旨在为 Google 的 ReCaptcha 等常见反 DDoS 方法提供一种替代方案,这些方法往往令人困扰。访问受 PoW Shield 保护的网络服务从未如此简单:只需访问 URL,您的浏览器将自动为您完成其余验证。
PoW Shield 旨在通过单个 Web 应用 / Docker 镜像提供以下服务:
- 工作量证明认证
- 速率限制和 IP 黑名单
- Web 应用防火墙
(新版)领英上的文章
在 Pentester Academy TV 上展示
Medium 上的故事
特性
- Web 服务结构
- 代理功能
- PoW 实现
- Docker 化
- IP 黑名单
- 速率限制
- 单元测试
- WAF 实现
- 多实例同步(Redis)
- SSL 支持
通过 PoW Phalanx 控制器支持:
- 多实例管理
- 白名单令牌
- 黑名单 IP 同步
- 动态难度控制
- 仪表盘
另一种使用 Go 语言的实现 PoW-Shield-Go(开发中),用于压力测试以及未来的优化生产版本。
工作原理
基本上,PoW Shield 作为实际 Web 应用/服务前端的代理工作。它通过工作量证明进行验证,仅将经过授权的流量代理到真实服务器。该代理易于安装,并能够使用 WAF 保护低安全性的应用程序。
当用户浏览受 PoW Shield 保护的 Web 服务时,后台发生的过程如下:
- 服务器生成一个随机十六进制编码的“前缀”,并将其随 PoW Shield 页面一起发送给客户端。
- 客户端浏览器 JavaScript 尝试暴力破解一个“随机数”(nonce),该随机数与前缀拼接后,可以生成一个 SHA256 哈希,其前导零位数超过服务器指定的“难度” D。即 SHA256(prefix + nonce)=0…0xxxx(二进制,前导 0 个数大于 D)。
- 客户端 JavaScript 将计算出的随机数发送到服务器进行验证。如果验证通过,服务器会生成一个 cookie,让客户端通过认证。
- 服务器开始将经过认证的客户端流量代理到后端服务器,并启用 WAF 过滤。
配置
您可以通过以下方法配置 PoW Shield。
- nodejs:.env(示例:.env.example)
- docker-compose:docker-compose.yaml(示例:docker-compose.example.yaml)
- docker run:-e 参数
环境变量