Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PoW-Shield — 该项目致力于通过工作量证明来对抗第7层DDoS攻击,并附带了额外的WAF和控制器。功能齐全,已容器化,可快速轻量部署。 | Kitploit
工具/GitHubGitHub/ruisiang/pow-shield
Web安全
GitHubruisiang/pow-shield

PoW-Shield

该项目致力于通过工作量证明来对抗第7层DDoS攻击,并附带了额外的WAF和控制器。功能齐全,已容器化,可快速轻量部署。

查看仓库网站
4087491年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
PoW Shield

描述

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 服务时,后台发生的过程如下:

  1. 服务器生成一个随机十六进制编码的“前缀”,并将其随 PoW Shield 页面一起发送给客户端。
  2. 客户端浏览器 JavaScript 尝试暴力破解一个“随机数”(nonce),该随机数与前缀拼接后,可以生成一个 SHA256 哈希,其前导零位数超过服务器指定的“难度” D。即 SHA256(prefix + nonce)=0…0xxxx(二进制,前导 0 个数大于 D)。
  3. 客户端 JavaScript 将计算出的随机数发送到服务器进行验证。如果验证通过,服务器会生成一个 cookie,让客户端通过认证。
  4. 服务器开始将经过认证的客户端流量代理到后端服务器,并启用 WAF 过滤。

配置

您可以通过以下方法配置 PoW Shield。

  • nodejs:.env(示例:.env.example)
  • docker-compose:docker-compose.yaml(示例:docker-compose.example.yaml)
  • docker run:-e 参数

环境变量

使用方法

Nodejs

前提条件

  • Docker ^19.0.0
  • Nodejs ^14.0.0
root@kitploit:~
# 克隆仓库
git clone https://github.com/RuiSiang/PoW-Shield.git

# 安装依赖
npm install

# 配置设置
cp -n .env.example .env
# 编辑 .env
nano .env

# 编译
npm run build

#############################################
# 使用数据库(Redis)运行,推荐且更快     #
# 首先安装 redis                           #
# sudo apt-get install redis-server        #
#############################################
npm start
#############################################

#############################################
#        无数据库运行(模拟 Redis)        #
#############################################
npm run start:standalone # linux
npm run start:standalone-win # windows
#############################################

# 测试功能(可选)
npm test

Docker(仓库)

root@kitploit:~
####################################################
# Docker 使用数据库(Redis)运行,推荐且更快       #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield
####################################################

####################################################
#        Docker 无数据库运行(模拟 Redis)         #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -e NODE_ENV="standalone" -d ruisiang/pow-shield
####################################################

####################################################
#                  Docker Compose                  #
####################################################
# 复制 docker-compose.example.yaml
cp -n docker-compose.example.yaml docker-compose.yaml
# 编辑 docker-compose.yaml
nano docker-compose.yaml

# 启动容器
docker-compose -f docker-compose.yaml up
####################################################

压力测试

注意:这仅适用于非容器化的 PoW Shield 版本,运行测试时您的系统可能会出现不稳定。

root@kitploit:~
# 启动压力测试
npm run stress

# 如果您在 .env 中更改了 PORT 变量,也应更改压力测试脚本中的目标变量
nano scripts/stress.sh

以下测试是在 i7-10870H CPU 的单线程上进行的,每个并发参数持续 60 秒。

大量 GET 请求

Nonce 洪水

从以上样本可以看出,PoW Shield 的适当最大负载估计约为 512 个并发连接。此后错误率和延迟会恶化到超出正常接受范围。因此,在机器的负载均衡环境中(每个内核上运行 1 个 PoW Shield 实例,共 8 个内核),它应该能够处理大约 4096 个并发连接(客户端),总请求率可达 32k 请求/秒。

参考

  • Fedor Indutny 的工作量证明(PoW 工具函数)
  • Zesecure 的 Shadowd(WAF 规则)

许可证

MIT

下载工具
变量类型默认值描述
PORT通用3000PoW Shield 监听的端口
SESSION_KEY通用cookie 签名的密钥,出于安全考虑请使用唯一密钥,否则任何人都可以伪造您的签名 cookie
BACKEND_URL通用将经过认证的流量转发到的位置,接受 IP 和 URL(接受 protocol://url(:port) 或 protocol://ip(:port))
DATABASE_HOSTRedis127.0.0.1Redis 服务主机
DATABASE_PORTRedis6379Redis 服务端口
DATABASE_PASSWORDRedisnullRedis 服务密码
POWPoWon开启/关闭 PoW 功能(如果暂时不关闭,何必使用这个项目?)
NONCE_VALIDITYPoW60000指定随机数在生成后必须提交给服务器的最大秒数(用于强制难度变更并过滤过时随机数)
DIFFICULTYPoW13问题难度,生成的哈希中前导 0 的位数(0:极其简单 ~ 256:不可能,13(默认)浏览器大约需要 5 秒计算)
RATE_LIMIT速率限制on开启/关闭速率限制功能
RATE_LIMIT_SAMPLE_MINUTES速率限制60指定经过多少分钟后会话/IP 的统计数据重置
RATE_LIMIT_SESSION_THRESHOLD速率限制100单个会话在触发令牌吊销前允许的请求数
RATE_LIMIT_BAN_IP速率限制on开启/关闭 IP 封禁功能
RATE_LIMIT_IP_THRESHOLD速率限制500单个会话在触发 IP 封禁前允许的请求数
RATE_LIMIT_BAN_MINUTES速率限制15IP 封禁持续分钟数
WAFWAFon开启/关闭 WAF 功能
WAF_URL_EXCLUDE_RULESWAF扫描请求 URL 时要排除的规则,使用 ',' 分隔规则编号,使用 '-' 指定范围(例如:1,2-4,5,7-10)
WAF_HEADER_EXCLUDE_RULESWAF14,33,80,96,100扫描请求头部时要排除的规则,使用 ',' 分隔规则编号,使用 '-' 指定范围(例如:1,2-4,5,7-10)
WAF_BODY_EXCLUDE_RULESWAF扫描请求体时要排除的规则,使用 ',' 分隔规则编号,使用 '-' 指定范围(例如:1,2-4,5,7-10)
SSLSSLoff开启/关闭 SSL 功能
SSL_CERT_PATHSSLtests/ssl/mock-cert.pemSSL 证书路径
SSL_KEY_PATHSSLtests/ssl/mock-key.pemSSL 密钥路径
SOCKETSocketoff开启/关闭 Socket 功能
SOCKET_URLSocketPoW Phalanx 控制器位置,接受 IP 和 URL(接受 protocol://url:port 或 protocol://ip:port)
SOCKET_TOKENSocketPoW Phalanx 控制器的订阅令牌
并发连接数平均延迟错误率每秒请求数
6415.3ms0.00004188
12830.2ms0.00004229
25660.4ms0.00004235
512122.6ms0.01424166
1024261.7ms0.17663894
20481966.5ms0.49791027
40964685ms0.7179838
并发连接数平均延迟错误率每秒请求数
6415.6msN/A4094
12831.5msN/A4058
25661.5msN/A4159
512129.5msN/A3945
1024264.4msN/A3858
2048592.1msN/A3407
40961212.6msN/A3322