
Krawl은 사용자 정의 가능하고 경량화된 클라우드 네이티브 웹 디셉션 서버이자 안티 크롤러로, 실제와 같은 무작위 생성 디코이 데이터와 AI 생성 HTML 템플릿을 사용하여 낮은 수준의 취약점을 가진 가짜 웹 애플리케이션을 생성합니다.
팁: 추가 재미를 위해 robots.txt 경로를 크롤링해 보세요
Krawl은 악의적인 공격자, 웹 크롤러 및 자동화된 스캐너를 탐지하고 지연시키며 분석하도록 설계된 클라우드 네이티브 기만 서버입니다.
관리자 패널, 구성 파일, 노출된 가짜 자격 증명과 같은 손쉬운 먹잇감으로 가득 찬 현실적인 가짜 웹 애플리케이션을 생성하여 의심스러운 활동을 유인하고 식별합니다.

공격자의 리소스를 낭비함으로써 Krawl은 악의적인 행동과 합법적인 크롤러를 명확히 구분하는 데 도움을 줍니다.
주요 기능:
리버스 프록시를 사용하여 다른 서비스와 함께 Krawl을 쉽게 노출시켜 웹 크롤러와 악의적인 사용자로부터 서비스를 보호할 수 있습니다. 자세한 내용은 리버스 프록시 문서를 참조하세요.

Krawl은 시작 시 생성되는 무작위 비밀 경로 또는 KRAWL_DASHBOARD_SECRET_PATH를 통해 구성된 사용자 정의 경로에서 접근할 수 있는 포괄적인 대시보드를 제공합니다. 이를 통해 허니팟을 스캔하는 공격자로부터 대시보드를 숨길 수 있습니다.
대시보드는 여섯 개의 탭으로 구성됩니다:


위협: TLSH 퍼지 해시로 캠페인별로 그룹화된 페이로드로, 웹셸과 그 수정 변형이 서로 무관한 적중이 아닌 하나의 캠페인으로 읽히며, 캡처된 모든 파일의 색인이 포함됩니다.
IP 인사이트: 선택한 IP에 대한 심층 포렌식 보기: 지리적 위치, ISP/ASN 정보, 평판 플래그, 행동 타임라인, 공격 유형 분포, 리퍼러 기록, 캡처된 파일 및 자격 증명, 전체 접근 기록.

또한 대시보드 비밀번호로 인증하면 보호된 탭을 사용할 수 있습니다:
헤더 아이콘은 API 문서, 차단 목록 내보내기, 실행 중인 구성을 보여주는 설정 패널, 그리고 예약된 작업을 필요 시 실행하기 위한 유지 관리 페이지를 엽니다.
자세한 내용은 대시보드 문서를 참조하세요.
Krawl은 config.yaml의 mode 설정 또는 KRAWL_MODE 환경 변수로 제어되는 두 가지 배포 모드를 지원합니다.
| 독립 실행형 | 확장 가능 | |
|---|---|---|
| 데이터베이스 | SQLite (WAL 모드) | PostgreSQL |
| 캐시 | 인메모리 Python dict | Redis (다계층 TTL) |
| 복제본 | 1 (단일 인스턴스) | 1+ (수평 확장) |
| 외부 의존성 | 없음 | PostgreSQL + Redis |
| 적합한 용도 | 개발, 홈랩, 50만 건 미만 요청 | 프로덕션, HA, 50만 건 초과 요청 |
독립 실행형: 요청 수가 적은 개발 환경이나 홈랩에 이상적입니다. 추가 구성이 필요 없으며, Krawl을 실행하기만 하면 작동합니다.
확장 가능: 프로덕션 환경이나 고트래픽 허니팟을 위해 설계되었습니다. Helm 차트는 기본적으로 이 모드를 사용합니다.
자세한 구성, Docker Compose 예제, Kubernetes/Helm 설정, 단계별 마이그레이션 지침은 배포 모드 문서를 참조하세요.
Krawl은 허니팟 트랩을 트리거한 공격자의 IP 주소로 구성된 정기적으로 업데이트되는 banlist.txt를 유지합니다. 차단 목록은 매주 게시되며 다운로드할 수 있어, Krawl을 사용하지 않더라도 커뮤니티가 알려진 악성 행위자를 선제적으로 차단할 수 있도록 돕습니다.
차단 목록은 다음에서 직접 가져올 수도 있습니다: https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw.
Krawl 인스턴스는 차단 목록을 연합할 수 있습니다: 각 인스턴스는 인증되지 않은 경로에 자체 목록을 게시하고 다른 인스턴스(또는 일반 텍스트 IP 목록)의 목록을 가져올 수 있습니다. 가져온 IP는 로컬 차단 결정에 병합되어 대시보드에 표시됩니다.```yaml banlist:
export_path: "/public_banlist.txt"
sources: - "https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw" - "https://krawl.example.com/public_banlist.txt"
refresh_interval: 3600 # seconds between fetches
## 빠른 시작
### Docker 실행
최신 이미지로 Krawl을 독립 실행 모드로 실행하세요:```bash
docker run -d \
-p 5000:5000 \
-e KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard" \
-e KRAWL_DASHBOARD_PASSWORD="my-secret-password" \
-v krawl-data:/app/data \
--name krawl \
ghcr.io/blessedrebus/krawl:latest
http://localhost:5000에서 서버에 접속합니다.
두 가지 배포 모드 중 하나로 docker-compose.yaml을 생성합니다.
Standalone: Sqlite 스토리지를 사용하는 Krawl 서버만:```yaml services: krawl: image: ghcr.io/blessedrebus/krawl:latest container_name: krawl-server ports: - "5000:5000" environment: - CONFIG_LOCATION=config.yaml # - KRAWL_DASHBOARD_PASSWORD=my-secret-password volumes: - ./config.yaml:/app/config.yaml:ro - krawl-data:/app/data restart: unless-stopped
volumes: krawl-data:
**확장 가능**: PostgreSQL 및 Redis 사용 시: