如何使用PoW-Shield防御DDoS和垃圾郵件攻擊
關(guān)于PoW-Shield
PoW-Shield是一款功能強(qiáng)大的網(wǎng)絡(luò)安全防御工具,該工具可以幫助廣大研究人員和用戶抵御DDoS攻擊和垃圾郵件攻擊。除此之外,PoW-Shield還帶有Web應(yīng)用防火墻功能,并提供了Docker鏡像以方便實(shí)現(xiàn)快速輕量級(jí)部署。
PoW-Shield可以通過(guò)充當(dāng)代理的形式,并利用后端服務(wù)和最終用戶之間的工作證明,在OSI應(yīng)用層提供DDoS保護(hù)。該項(xiàng)目旨在提供針對(duì)通用驗(yàn)證碼方法的替代方案,比如說(shuō)Google的ReCaptcha,而這一點(diǎn)對(duì)于社區(qū)來(lái)說(shuō)一直都是一個(gè)難題。訪問(wèn)受PoW-Shield保護(hù)的Web服務(wù)也非常簡(jiǎn)單,直接打開瀏覽器并填寫目標(biāo)站點(diǎn)URL,瀏覽器將會(huì)自動(dòng)為我們完成剩余的安全驗(yàn)證。
PoW-Shield旨在通過(guò)一個(gè)單一Web應(yīng)用或Docker鏡像提供下列服務(wù):
- 工作證明驗(yàn)證
- 訪問(wèn)頻率限制和IP黑名單
- Web應(yīng)用程序防火墻
功能介紹
- Web服務(wù)結(jié)構(gòu)
- 代理功能
- PoW實(shí)現(xiàn)
- Docker化部署
- IP黑名單功能
- 訪問(wèn)頻率限制
- 單元測(cè)試
- Web應(yīng)用程序防火墻實(shí)現(xiàn)
- 多實(shí)例同步(Redis)
工具下載&使用
Node.js
首先,我們可以使用下列命令將該項(xiàng)目源碼克隆至本地:
- git clone https://github.com/RuiSiang/PoW-Shield.git
接下來(lái),安裝該工具所需的依賴組件:
- npm install
然后配置工具相關(guān)信息:
- cp -n .env.example .env
- # edit .env
- nano .env
運(yùn)行下列命令執(zhí)行代碼構(gòu)建:
- npm run build
執(zhí)行并同時(shí)啟動(dòng)數(shù)據(jù)庫(kù)(建議使用輕量級(jí)的Redis):
- # install redis first
- # sudo apt-get install redis-server
- npm start
執(zhí)行但不啟動(dòng)數(shù)據(jù)庫(kù):
- npm run start:standalone # linux
- npm run start:standalone-win # windows
測(cè)試工具功能(可選):
- npm test
Docker(庫(kù))
Docker帶Redis數(shù)據(jù)庫(kù)運(yùn)行:
- docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield
Docker不帶數(shù)據(jù)庫(kù)運(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
接下來(lái),我們就可以啟動(dòng)容器了:
- 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:代理驗(yàn)證流量的目的地址,接受IP和URL
數(shù)據(jù)庫(kù)選項(xiàng)(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選項(xiàng):
- POW:是否開啟PoW功能,默認(rèn)為on(開)
- NONCE_VALIDITY:指定Nonce生成后多久才發(fā)送至服務(wù)器,默認(rèn)為60000
- INITIAL_DIFFICULTY:初始難度,生成的哈希中前導(dǎo)0位的數(shù)量,默認(rèn)為13
訪問(wèn)頻率選項(xiàng):
- RATE_LIMIT:是否開啟頻率限制,默認(rèn)為on(開)
- RATE_LIMIT_SAMPLE_MINUTES:指定會(huì)話/ip的統(tǒng)計(jì)信息重置間隔分鐘數(shù),默認(rèn)為60
- RATE_LIMIT_SESSION_THRESHOLD:?jiǎn)蝹€(gè)會(huì)話在觸發(fā)令牌撤銷之前能發(fā)送的請(qǐng)求數(shù)量,默認(rèn)為100
- RATE_LIMIT_BAN_IP:是否開啟IP黑名單功能,默認(rèn)為on(開)
- RATE_LIMIT_IP_THRESHOLD:指定會(huì)話/ip在地址被拉黑之前發(fā)送的請(qǐng)求數(shù)量,莫爾奈威500
- RATE_LIMIT_BAN_MINUTES:IP地址拉黑時(shí)間,默認(rèn)為15分鐘
WAF選項(xiàng):
- WAF
- WAF_URL_EXCLUDE_RULES:是否開啟Web應(yīng)用防火墻,默認(rèn)為on(開)
- WAF_HEADER_EXCLUDE_RULES:在掃描請(qǐng)求URL時(shí)引入額外規(guī)則
- WAF_BODY_EXCLUDE_RULES:在掃描請(qǐng)求Body時(shí)引入額外規(guī)則
許可證協(xié)議
本項(xiàng)目的開發(fā)與發(fā)布遵循BSD 3-Clause開源許可證協(xié)議。
功能演示視頻
視頻地址:https://you*tu.be/zeNKUDR7_Jc
項(xiàng)目地址
PoW-Shield:【GitHub傳送門】