如何使用PoW-Shield防御DDoS和垃圾郵件攻擊
關(guān)于PoW-Shield
PoW-Shield是一款功能強(qiáng)大的網(wǎng)絡(luò)安全防御工具,該工具可以幫助廣大研究人員和用戶抵御DDoS攻擊和垃圾郵件攻擊。除此之外,PoW-Shield還帶有Web應(yīng)用防火墻功能,并提供了Docker鏡像以方便實(shí)現(xiàn)快速輕量級部署。
PoW-Shield可以通過充當(dāng)代理的形式,并利用后端服務(wù)和最終用戶之間的工作證明,在OSI應(yīng)用層提供DDoS保護(hù)。該項目旨在提供針對通用驗證碼方法的替代方案,比如說Google的ReCaptcha,而這一點(diǎn)對于社區(qū)來說一直都是一個難題。訪問受PoW-Shield保護(hù)的Web服務(wù)也非常簡單,直接打開瀏覽器并填寫目標(biāo)站點(diǎn)URL,瀏覽器將會自動為我們完成剩余的安全驗證。
PoW-Shield旨在通過一個單一Web應(yīng)用或Docker鏡像提供下列服務(wù):
- 工作證明驗證
- 訪問頻率限制和IP黑名單
- Web應(yīng)用程序防火墻
功能介紹
- Web服務(wù)結(jié)構(gòu)
- 代理功能
- PoW實(shí)現(xiàn)
- Docker化部署
- IP黑名單功能
- 訪問頻率限制
- 單元測試
- Web應(yīng)用程序防火墻實(shí)現(xiàn)
- 多實(shí)例同步(Redis)

工具下載&使用
Node.js
首先,我們可以使用下列命令將該項目源碼克隆至本地:
- git clone https://github.com/RuiSiang/PoW-Shield.git
接下來,安裝該工具所需的依賴組件:
- npm install
然后配置工具相關(guān)信息:
- cp -n .env.example .env
- # edit .env
- nano .env
運(yùn)行下列命令執(zhí)行代碼構(gòu)建:
- npm run build
執(zhí)行并同時啟動數(shù)據(jù)庫(建議使用輕量級的Redis):
- # install redis first
- # sudo apt-get install redis-server
- npm start
執(zhí)行但不啟動數(shù)據(jù)庫:
- npm run start:standalone # linux
- npm run start:standalone-win # windows
測試工具功能(可選):
- npm test
Docker(庫)
Docker帶Redis數(shù)據(jù)庫運(yùn)行:
- docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield
Docker不帶數(shù)據(jù)庫運(yùn)行:
- 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
- # edit docker-compose.yaml
- nano docker-compose.yaml
接下來,我們就可以啟動容器了:
- docker-compose up
工具配置
配置方法:
- nodejs:(樣例:.env.example)
- docker-compose:docker-compose.yaml(樣例:docker-compose.example.yaml)
- docker run:-e參數(shù)
環(huán)境變量
常用配置:
- PORT:待監(jiān)聽端口,默認(rèn)為3000
- SESSION_KEY:cookie簽名所需的密鑰
- BACKEND_URL:代理驗證流量的目的地址,接受IP和URL
數(shù)據(jù)庫選項(Redis):
- DATABASE_HOST:Redis服務(wù)主機(jī)地址,默認(rèn)為127.0.0.1
- DATABASE_PORT:Redis服務(wù)端口,默認(rèn)為6379
- DATABASE_PASSWORD:Redis服務(wù)密碼,默認(rèn)為空
PoW選項:
- POW:是否開啟PoW功能,默認(rèn)為on(開)
- NONCE_VALIDITY:指定Nonce生成后多久才發(fā)送至服務(wù)器,默認(rèn)為60000
- INITIAL_DIFFICULTY:初始難度,生成的哈希中前導(dǎo)0位的數(shù)量,默認(rèn)為13
訪問頻率選項:
- RATE_LIMIT:是否開啟頻率限制,默認(rèn)為on(開)
- RATE_LIMIT_SAMPLE_MINUTES:指定會話/ip的統(tǒng)計信息重置間隔分鐘數(shù),默認(rèn)為60
- RATE_LIMIT_SESSION_THRESHOLD:單個會話在觸發(fā)令牌撤銷之前能發(fā)送的請求數(shù)量,默認(rèn)為100
- RATE_LIMIT_BAN_IP:是否開啟IP黑名單功能,默認(rèn)為on(開)
- RATE_LIMIT_IP_THRESHOLD:指定會話/ip在地址被拉黑之前發(fā)送的請求數(shù)量,莫爾奈威500
- RATE_LIMIT_BAN_MINUTES:IP地址拉黑時間,默認(rèn)為15分鐘
WAF選項:
- WAF
- WAF_URL_EXCLUDE_RULES:是否開啟Web應(yīng)用防火墻,默認(rèn)為on(開)
- WAF_HEADER_EXCLUDE_RULES:在掃描請求URL時引入額外規(guī)則
- WAF_BODY_EXCLUDE_RULES:在掃描請求Body時引入額外規(guī)則
許可證協(xié)議
本項目的開發(fā)與發(fā)布遵循BSD 3-Clause開源許可證協(xié)議。
功能演示視頻
視頻地址:https://you*tu.be/zeNKUDR7_Jc
項目地址
PoW-Shield:【GitHub傳送門】






















