如何使用PoW-Shield防御DDoS和垃圾郵件攻擊
關于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傳送門】