如何使用PoW-Shield防禦DDoS和垃圾郵件攻擊

語言: CN / TW / HK

關於PoW-Shield

PoW-Shield是一款功能強大的網路安全防禦工具,該工具可以幫助廣大研究人員和使用者抵禦DDoS攻擊和垃圾郵件攻擊。除此之外,PoW-Shield還帶有Web應用防火牆功能,並提供了Docker映象以方便實現快速輕量級部署。

PoW-Shield可以通過充當代理的形式,並利用後端服務和終端使用者之間的工作證明,在OSI應用層提供DDoS保護。該專案旨在提供針對通用驗證碼方法的替代方案,比如說Google的ReCaptcha,而這一點對於社群來說一直都是一個難題。訪問受PoW-Shield保護的Web服務也非常簡單,直接開啟瀏覽器並填寫目標站點URL,瀏覽器將會自動為我們完成剩餘的安全驗證。

PoW-Shield旨在通過一個單一Web應用或Docker映象提供下列服務:

工作證明驗證

訪問頻率限制和IP黑名單

Web應用程式防火牆

功能介紹

Web服務結構

代理功能

PoW實現

Docker化部署

IP黑名單功能

訪問頻率限制

單元測試

Web應用程式防火牆實現

多例項同步(Redis)

工具下載&使用

Node.js

首先,我們可以使用下列命令將該專案原始碼克隆至本地:

git clone https://github.com/RuiSiang/PoW-Shield.git

接下來,安裝該工具所需的依賴元件:

npm install

然後配置工具相關資訊:

cp -n .env.example .env

# edit .env

nano .env

執行下列命令執行程式碼構建:

npm run build

執行並同時啟動資料庫(建議使用輕量級的Redis):

# install redis first

# sudo apt-get install redis-server

npm start

執行但不啟動資料庫:

npm run start:standalone # linux

npm run start:standalone-win # windows

測試工具功能(可選):

npm test

Docker(

Docker帶Redis資料庫執行:

docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield

Docker不帶資料庫執行:

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引數

環境變數

常用配置

PORT:待監聽埠,預設為3000
SESSION_KEY:cookie簽名所需的金鑰
BACKEND_URL:代理驗證流量的目的地址,接受IP和URL

資料庫選項(Redis)

DATABASE_HOST:Redis服務主機地址,預設為127.0.0.1
DATABASE_PORT:Redis服務埠,預設為6379
DATABASE_PASSWORD:Redis服務密碼,預設為空

PoW選項

POW:是否開啟PoW功能,預設為on(開)
NONCE_VALIDITY:指定Nonce生成後多久才傳送至伺服器,預設為60000
INITIAL_DIFFICULTY:初始難度,生成的雜湊中前導0位的數量,預設為13

訪問頻率選項

RATE_LIMIT:是否開啟頻率限制,預設為on(開)
RATE_LIMIT_SAMPLE_MINUTES:指定會話/ip的統計資訊重置間隔分鐘數,預設為60
RATE_LIMIT_SESSION_THRESHOLD:單個會話在觸發令牌撤銷之前能傳送的請求數量,預設為100
RATE_LIMIT_BAN_IP:是否開啟IP黑名單功能,預設為on(開)
RATE_LIMIT_IP_THRESHOLD:指定會話/ip在地址被拉黑之前傳送的請求數量,莫爾奈威500
RATE_LIMIT_BAN_MINUTES:IP地址拉黑時間,預設為15分鐘

WAF選項

WAF
WAF_URL_EXCLUDE_RULES:是否開啟Web應用防火牆,預設為on(開)
WAF_HEADER_EXCLUDE_RULES:在掃描請求URL時引入額外規則
WAF_BODY_EXCLUDE_RULES:在掃描請求Body時引入額外規則

許可證協議

本專案的開發與釋出遵循BSD 3-Clause開源許可證協議。

功能演示影片

影片地址:https://you*tu.be/zeNKUDR7_Jc

專案地址

PoW-Shield:【 GitHub傳送門

參考資料

https://ruisiang.medium.com/pow-shield-application-layer-proof-of-work-ddos-filter-4fed32465509

https://hub.docker.com/repository/docker/ruisiang/pow-shield