
Krawlは、カスタマイズ可能で軽量なクラウドネイティブのWebデセプションサーバー兼アンチクローラーです。現実的でランダムに生成されたデコイデータとAI生成のHTMLテンプレートを使用して、低難易度の脆弱性を持つ偽のWebアプリケーションを作成します。
ヒント: さらなるお楽しみとして robots.txt のパスをクロールしてみてください
Krawl は、悪意のある攻撃者、Webクローラー、自動スキャナーを検知し、遅延させ、分析するために設計されたクラウドネイティブな欺瞞サーバーです。
管理パネル、設定ファイル、露出した偽の認証情報など、手に入れやすい餌を詰め込んだリアルな偽のWebアプリケーションを作成し、疑わしい活動を引き寄せて特定します。

攻撃者のリソースを浪費することで、Krawlは悪意のある行為と正当なクローラーを明確に区別するのに役立ちます。
主な機能:
リバースプロキシを使用することで、Krawlを他のサービスと並べて簡単に公開し、Webクローラーや悪意のあるユーザーからそれらを保護できます。詳細はリバースプロキシのドキュメントを参照してください。

Krawlは、起動時に生成されるランダムなシークレットパス、または KRAWL_DASHBOARD_SECRET_PATH で設定されたカスタムパスからアクセスできる包括的なダッシュボードを提供します。これにより、ハニーポットをスキャンする攻撃者からダッシュボードを隠すことができます。
ダッシュボードは6つのタブで構成されています:


Threats: TLSHファジーハッシュによってキャンペーンごとにグループ化されたペイロード。これにより、ウェブシェルとその編集された亜種が無関係なヒットではなく1つのキャンペーンとして扱われ、キャプチャされたすべてのファイルのインデックスも表示されます。
IP Insight: 選択したIPの詳細なフォレンジックビュー: 地理位置情報、ISP/ASN情報、レピュテーションフラグ、行動タイムライン、攻撃タイプの分布、リファラ履歴、キャプチャされたファイルと認証情報、完全なアクセス履歴。

さらに、ダッシュボードのパスワードで認証すると、保護されたタブが利用可能になります:
ヘッダーアイコンからは、APIドキュメント、バンリストのエクスポート、実行中の設定を表示する設定パネル、およびスケジュールされたタスクをオンデマンドで実行するためのメンテナンスページを開くことができます。
詳細はダッシュボードのドキュメントを参照してください。
Krawlは2つのデプロイモードをサポートしており、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はローカルのBAN判定にマージされ、 ダッシュボードに表示されます。```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 Run
最新のイメージを使用して、スタンドアロンモードで 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 でサーバーにアクセスします
2つのデプロイモードのいずれかで docker-compose.yaml を作成します。
スタンドアロン: 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 を使用: