Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PoW-Shield — Layer 7 DDoS 방어를 위해 작업 증명(Proof of Work)을 사용하는 프로젝트로, 추가로 WAF 및 컨트롤러를 포함합니다. 전체 기능 세트를 갖추고 있으며 컨테이너화되어 빠르고 가벼운 배포가 가능합니다. | Kitploit
도구/GitHubGitHub/ruisiang/pow-shield
Web Security
GitHubruisiang/pow-shield

PoW-Shield

Layer 7 DDoS 방어를 위해 작업 증명(Proof of Work)을 사용하는 프로젝트로, 추가로 WAF 및 컨트롤러를 포함합니다. 전체 기능 세트를 갖추고 있으며 컨테이너화되어 빠르고 가벼운 배포가 가능합니다.

저장소 보기웹사이트
408741년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
PoW Shield

설명

PoW Shield는 작업 증명(proof of work)을 활용하여 백엔드 서비스와 최종 사용자 간의 프록시 역할을 함으로써 OSI 애플리케이션 계층에서 DDoS 보호를 제공합니다. 이 프로젝트는 Google의 ReCaptcha와 같은 일반적인 안티-DDoS 방법에 대한 대안을 제공하는 것을 목표로 하며, ReCaptcha는 항상 해결하기 어려운 문제였습니다. PoW Shield로 보호되는 웹 서비스에 접속하는 것은 그 어느 때보다 쉬워졌습니다. URL로 이동하기만 하면 브라우저가 자동으로 나머지 인증을 수행합니다.

PoW Shield는 단일 웹앱/도커 이미지에 번들로 제공되는 다음 서비스를 제공하는 것을 목표로 합니다:

  • 작업 증명 인증
  • 속도 제한 및 IP 블랙리스트
  • 웹 애플리케이션 방화벽

(신규) LinkedIn 게시글

Pentester Academy TV 소개

Medium 스토리

기능

  • 웹 서비스 구조
  • 프록시 기능
  • PoW 구현
  • 도커화
  • IP 블랙리스트
  • 속도 제한
  • 단위 테스트
  • WAF 구현
  • 다중 인스턴스 동기화 (Redis)
  • SSL 지원

PoW Phalanx 컨트롤러를 통해 지원:

  • 다중 인스턴스 관리
  • 화이트리스트 토큰
  • 블랙리스트 IP 동기화
  • 동적 난이도 제어
  • 대시보드

Go로 구현된 대체 버전 PoW-Shield-Go (작업 중) – 스트레스 테스트 및 향후 최적화된 프로덕션 버전용.

작동 방식

기본적으로 PoW Shield는 실제 웹 앱/서비스 앞에서 프록시 역할을 합니다. 작업 증명을 통해 인증을 수행하고 인증된 트래픽만 실제 서버로 전달합니다. 프록시는 쉽게 설치할 수 있으며 WAF를 통해 보안 수준이 낮은 애플리케이션도 보호할 수 있습니다.

사용자가 PoW Shield로 보호되는 웹 서비스를 탐색할 때 백그라운드에서 일어나는 일은 다음과 같습니다:

  1. 서버가 무작위 16진수로 인코딩된 "접두사(prefix)"를 생성하여 PoW Shield 페이지와 함께 클라이언트에 전송합니다.
  2. 클라이언트 측 브라우저 JavaScript는 접두사에 추가했을 때 SHA256 해시를 생성하여 서버가 지정한 "난이도 D"보다 많은 선행 0비트를 가질 수 있는 "논스(nonce)"를 무차별 대입으로 찾으려고 시도합니다. 즉, SHA256(prefix + nonce)=0…0xxxx (이진수, D개 이상의 선행 0 포함)
  3. 클라이언트 측 JavaScript는 계산된 논스를 서버에 전송하여 확인을 요청하고, 확인이 통과되면 서버는 클라이언트가 인증을 통과할 수 있는 쿠키를 생성합니다.
  4. 서버는 이제 인증된 클라이언트 트래픽을 WAF 필터링이 활성화된 상태로 서버에 프록싱하기 시작합니다.

설정

다음 방법을 통해 PoW Shield를 구성할 수 있습니다.

  • nodejs: .env (예: .env.example)
  • docker-compose: docker-compose.yaml (예: docker-compose.example.yaml)
  • docker run: -e 매개변수

환경 변수

사용법

Nodejs

전제 조건

  • Docker ^19.0.0
  • Nodejs ^14.0.0
root@kitploit:~
# 저장소 복제
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
#############################################

#############################################
#        데이터베이스 없이 실행 (mock redis)        #
#############################################
npm run start:standalone # linux
npm run start:standalone-win # windows
#############################################

# 기능 테스트(선택 사항)
npm test

Docker (리포지토리)

root@kitploit:~
####################################################
# 데이터베이스(redis)와 함께 Docker 실행, 권장 및 더 빠름 #
####################################################
docker run -p 3000:3000 -e BACKEND_URL="http://example.com" -d ruisiang/pow-shield
####################################################

####################################################
#        데이터베이스 없이 Docker 실행 (mock 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에서만 작동하며, 테스트를 실행할 때 시스템이 불안정해질 수 있습니다.

root@kitploit:~
# 스트레스 테스트 시작
npm run stress

# .env에서 PORT 변수를 변경한 경우 스트레스 테스트 스크립트에서 target 변수도 변경해야 합니다.
nano scripts/stress.sh

다음 테스트는 i7-10870H CPU의 단일 스레드에서 각 동시 매개변수에 대해 60초 기간 동안 수행되었습니다.

대량 GET

논스 플러드

위 샘플에서 PoW Shield의 적절한 최대 부하 추정치는 약 512개의 동시 연결임을 알 수 있습니다. 이후 오류율과 지연 시간이 정상 허용 범위를 넘어 악화됩니다. 따라서 머신의 부하 분산 환경(8개 코어 각각에 1개의 PoW Shield 인스턴스)에서는 총 요청 속도 32k requests/second로 약 4096개의 동시 연결(클라이언트)을 최대로 처리할 수 있어야 합니다.

참고 자료

  • Fedor Indutny의 작업 증명 (PoW 유틸리티 함수)
  • Zesecure의 Shadowd (WAF 규칙)

라이선스

MIT

도구 다운로드
변수유형기본값설명
PORT일반3000PoW Shield가 수신 대기하는 포트
SESSION_KEY일반쿠키 서명을 위한 비밀 키, 보안상 고유한 키를 사용하십시오. 그렇지 않으면 누구나 서명된 쿠키를 위조할 수 있습니다.
BACKEND_URL일반인증된 트래픽을 전달할 위치, IP와 URL 모두 허용 (protocol://url(:port) 또는 protocol://ip(:port) 형식)
DATABASE_HOSTRedis127.0.0.1Redis 서비스 호스트
DATABASE_PORTRedis6379Redis 서비스 포트
DATABASE_PASSWORDRedisnullRedis 서비스 비밀번호
POWPoWonPoW 기능 켜기/끄기 (일시적으로 끄지 않는다면 이 프로젝트를 사용할 이유가 없습니다?)
NONCE_VALIDITYPoW60000논스가 생성된 후 서버에 제출되어야 하는 최대 시간(밀리초)을 지정합니다. (난이도 변경을 강제하고 오래된 논스를 필터링하는 데 사용)
DIFFICULTYPoW13문제 난이도, 생성된 해시의 선행 0비트 수 (0:매우 쉬움 ~ 256:불가능, 기본값 13은 브라우저에서 계산하는 데 약 5초 소요)
RATE_LIMIT속도 제한on속도 제한 기능 켜기/끄기
RATE_LIMIT_SAMPLE_MINUTES속도 제한60세션/IP 통계가 재설정될 때까지의 시간(분)
RATE_LIMIT_SESSION_THRESHOLD속도 제한100단일 세션이 토큰 철회를 유발할 때까지 수행할 수 있는 요청 수
RATE_LIMIT_BAN_IP속도 제한onIP 차단 기능 켜기/끄기
RATE_LIMIT_IP_THRESHOLD속도 제한500단일 세션이 IP 차단을 유발할 때까지 수행할 수 있는 요청 수
RATE_LIMIT_BAN_MINUTES속도 제한15IP 차단이 지속되는 시간(분)
WAFWAFonWAF 기능 켜기/끄기
WAF_URL_EXCLUDE_RULESWAF요청 URL을 검사할 때 확인하지 않을 규칙, 쉼표(,)로 규칙 번호를 구분하고, '-'로 범위를 지정 (예: 1,2-4,5,7-10)
WAF_HEADER_EXCLUDE_RULESWAF14,33,80,96,100요청 헤더를 검사할 때 확인하지 않을 규칙, 쉼표(,)로 규칙 번호를 구분하고, '-'로 범위를 지정 (예: 1,2-4,5,7-10)
WAF_BODY_EXCLUDE_RULESWAF요청 본문을 검사할 때 확인하지 않을 규칙, 쉼표(,)로 규칙 번호를 구분하고, '-'로 범위를 지정 (예: 1,2-4,5,7-10)
SSLSSLoffSSL 기능 켜기/끄기
SSL_CERT_PATHSSLtests/ssl/mock-cert.pemSSL 인증서 파일 경로
SSL_KEY_PATHSSLtests/ssl/mock-key.pemSSL 키 파일 경로
SOCKET소켓off소켓 기능 켜기/끄기
SOCKET_URL소켓PoW Phalanx 컨트롤러 위치, IP와 URL 모두 허용 (protocol://url:port 또는 protocol://ip:port 형식)
SOCKET_TOKEN소켓PoW Phalanx 컨트롤러용 구독 토큰
동시 연결 수평균 지연 시간오류율초당 요청 수
6415.3ms0.00004188
12830.2ms0.00004229
25660.4ms0.00004235
512122.6ms0.01424166
1024261.7ms0.17663894
20481966.5ms0.49791027
40964685ms0.7179838
동시 연결 수평균 지연 시간오류율초당 요청 수
6415.6msN/A4094
12831.5msN/A4058
25661.5msN/A4159
512129.5msN/A3945
1024264.4msN/A3858
2048592.1msN/A3407
40961212.6msN/A3322