PoW Shield通过在后端服务和终端用户之间充当使用工作量证明的代理,提供OSI应用层的DDoS保护。该项目旨在为一般的反DDoS方法(如谷歌的ReCaptcha,一直是一个令人头疼的问题)提供一种替代方案。访问由PoW Shield保护的网络服务从未如此简单,只需访问URL,您的浏览器将自动为您完成剩余的验证。
PoW Shield旨在提供以下捆绑在单个网络应用/Docker镜像中的服务:
(新)LinkedIn上的文章
通过PoW Phalanx控制器支持:
Go语言的替代实现PoW-Shield-Go(进行中)用于压力测试和未来的优化生产版本。
基本上,PoW Shield作为实际网络应用/服务前面的代理工作。它通过工作量证明进行验证,只将授权流量代理到实际服务器。该代理易于安装,并能够通过WAF保护低安全性应用。
当用户浏览受PoW Shield保护的网络服务时,后台发生以下情况:
您可以通过以下方法配置PoW Shield。
变量 | 类型 | 默认值 | 描述 |
---|---|---|---|
PORT | 通用 | 3000 | PoW Shield监听的端口 |
SESSION_KEY | 通用 | 用于cookie签名的密钥,出于安全原因使用唯一密钥,否则任何人都可以伪造您的签名cookie | |
BACKEND_URL | 通用 | 代理认证流量的位置,接受IP和URL(接受protocol://url(:port)或protocol://ip(:port)) | |
DATABASE_HOST | Redis | 127.0.0.1 | redis服务主机 |
DATABASE_PORT | Redis | 6379 | redis服务端口 |
DATABASE_PASSWORD | Redis | null | redis服务密码 |
POW | PoW | on | 开启/关闭PoW功能(如果不是暂时关闭,为什么要使用这个项目呢?) |
NONCE_VALIDITY | PoW | 60000 | 指定nonce生成后必须提交到服务器的最长秒数(用于强制难度变化和过滤过时的nonce) |
DIFFICULTY | PoW | 13 | 问题难度,生成的哈希中前导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 | 速率限制 | 15 | IP封禁持续的分钟数 |
WAF | WAF | on | 开启/关闭WAF功能 |
WAF_URL_EXCLUDE_RULES | WAF | 扫描请求URL时排除的规则,使用','分隔规则编号,使用'-'指定范围(例如:1,2-4,5,7-10) | |
WAF_HEADER_EXCLUDE_RULES | WAF | 14,33,80,96,100 | 扫描请求头时排除的规则,使用','分隔规则编号,使用'-'指定范围(例如:1,2-4,5,7-10) |
WAF_BODY_EXCLUDE_RULES | WAF | 扫描请求体时排除的规则,使用','分隔规则编号,使用'-'指定范围(例如:1,2-4,5,7-10) | |
SSL | SSL | off | 开启/关闭SSL功能 |
SSL_CERT_PATH | SSL | tests/ssl/mock-cert.pem | SSL证书路径 |
SSL_KEY_PATH | SSL | tests/ssl/mock-key.pem | SSL密钥路径 |
SOCKET | Socket | off | 开启/关闭socket功能 |
SOCKET_URL | Socket | PoW Phalanx控制器的位置,接受IP和URL(接受protocol://url:port或protocol://ip:port) | |
SOCKET_TOKEN | Socket | PoW Phalanx控制器的订阅令牌 |
# 克隆仓库 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
#################################################### # 使用数据库(redis)的Docker运行,推荐且更快 # #################################################### 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,运行测试时您的系统可能会出现不稳定。
# 开始压力测试 npm run stress # 如果您在.env中更改了PORT变量,您还应该在压力测试脚本中更改目标变量 nano scripts/stress.sh
以下测试在i7-10870H CPU的单线程上进行,每个并发参数的测试时间为60秒。
并发连接数 | 平均延迟 | 错误率 | 每秒请求数 |
---|---|---|---|
64 | 15.3ms | 0.0000 | 4188 |
128 | 30.2ms | 0.0000 | 4229 |
256 | 60.4ms | 0.0000 | 4235 |
512 | 122.6ms | 0.0142 | 4166 |
1024 | 261.7ms | 0.1766 | 3894 |
2048 | 1966.5ms | 0.4979 | 1027 |
4096 | 4685ms | 0.7179 | 838 |
并发连接数 | 平均延迟 | 错误率 | 每秒请求数 |
---|---|---|---|
64 | 15.6ms | N/A | 4094 |
128 | 31.5ms | N/A | 4058 |
256 | 61.5ms | N/A | 4159 |
512 | 129.5ms | N/A | 3945 |
1024 | 264.4ms | N/A | 3858 |
2048 | 592.1ms | N/A | 3407 |
4096 | 1212.6ms | N/A | 3322 |
从上面的样本中,我们可以看到PoW Shield的适当最大负载估计约为512个并发连接。之后,错误率和延迟会
AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成 多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南 ,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号