Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Krawl — Krawl — это настраиваемый, легковесный, облачный веб-сервер обмана и анти-краулер, который создает поддельные веб-приложения с простыми уязвимостями, используя реалистичные, случайно сгенерированные приманки и HTML-шаблоны, созданные ИИ. | Kitploit
Инструменты/GitHubGitHub/blessedrebus/krawl
Безопасность контейнеровСбор информацииВеб-безопасностьСетевая безопасностьБезопасность облачных средРазведка угрозРеагирование на ИнцидентыАнти-БотБезопасность ИИ
GitHubblessedrebus/krawl

Krawl

Krawl — это настраиваемый, легковесный, облачный веб-сервер обмана и анти-краулер, который создает поддельные веб-приложения с простыми уязвимостями, используя реалистичные, случайно сгенерированные приманки и HTML-шаблоны, созданные ИИ.

5584583 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
РепозиторийСайт

Krawl

Современный настраиваемый сервер-ловушка (honeypot) для веб-приложений, предназначенный для обнаружения и отслеживания вредоносной активности злоумышленников и веб-краулеров с помощью обманных веб-страниц, поддельных учетных данных и canary-токенов.

License Release
GitHub Container Registry Kubernetes Helm Chart

Содержание

  • Демо
  • Что такое Krawl?
  • Панель управления Krawl
  • Режимы развертывания
  • Бан-лист Krawl
  • Быстрый старт
    • Docker Run
    • Docker Compose
    • Kubernetes
    • Uvicorn (Python)
  • Конфигурация
    • config.yaml
    • Переменные окружения
  • Блокировка вредоносных IP
  • Репутация IP
  • Работа за обратным прокси или CDN
  • Метрики и мониторинг
  • Дополнительная документация
  • Обман с помощью ИИ
  • Участие в разработке

Демо

Совет: для дополнительного интереса просканируйте пути из robots.txt

URL Krawl: http://demo.krawlme.com

Просмотр панели управления http://demo.krawlme.com/das_dashboard

Что такое Krawl?

Krawl — это облачный сервер-обманка (deception server), предназначенный для обнаружения, задержки и анализа вредоносных злоумышленников, веб-краулеров и автоматических сканеров.

Он создает реалистичные поддельные веб-приложения, наполненные «легкой добычей»: панелями администратора, файлами конфигурации и раскрытыми поддельными учетными данными, чтобы привлекать и выявлять подозрительную активность.

dashboard

Расходуя ресурсы злоумышленников, Krawl помогает четко отличать вредоносное поведение от легитимных краулеров.

Возможности:

  • Страницы-обманки, созданные ИИ: Позвольте злоумышленникам помочь сгенерировать вашу фальшивую уязвимую поверхность атаки
  • Страницы-ловушки для пауков: Бесконечные случайные ссылки для расходования ресурсов краулеров на основе проекта spidertrap
  • Поддельные страницы входа: WordPress, phpMyAdmin, панели администратора
  • Пути-ловушки (honeypot): Рекламируются в robots.txt для перехвата сканеров
  • Поддельные учетные данные: Реалистичные имена пользователей, пароли, API-ключи
  • Интеграция Canary Token: Внешние триггеры оповещений
  • Случайные заголовки сервера: Сбивают с толку атаки, основанные на заголовке и версии сервера
  • Панель управления в реальном времени: Мониторинг подозрительной активности
  • Настраиваемые списки слов: Простая конфигурация на основе JSON
  • Случайная инъекция ошибок: Имитация реального поведения сервера

Вы можете легко разместить Krawl рядом с другими вашими сервисами, чтобы защитить их от веб-краулеров и вредоносных пользователей с помощью обратного прокси. Подробнее см. в документации по обратному прокси.

use case

Панель управления Krawl

Krawl предоставляет полнофункциональную панель управления, доступную по случайному секретному пути, генерируемому при запуске, или по пользовательскому пути, настраиваемому через KRAWL_DASHBOARD_SECRET_PATH. Это скрывает панель от злоумышленников, сканирующих вашу ловушку.

Панель организована в виде шести вкладок:

  • Обзор: общий вид активности атак: интерактивная карта источников IP, последние подозрительные запросы, а также топ IP, User-Agent и путей.

geoip

  • Атаки: детальная разбивка перехваченных учетных данных, срабатываний ловушек и обнаруженных типов атак (SQLi, XSS, path traversal и т. д.) с графиками и таблицами.

attack_types

  • Анализ IP: углубленное криминалистическое представление выбранного IP: геолокация, информация об ISP/ASN, флаги репутации, поведенческая хронология, распределение типов атак и полная история доступа.

ipinsight

Кроме того, после аутентификации с паролем панели становятся доступны две защищенные вкладки:

  • Отслеживаемые IP: ведение списка наблюдения за IP-адресами, которые вы хотите мониторить с течением времени.
  • Бан-лист IP: управление блокировками IP, просмотр обнаруженных злоумышленников и экспорт бан-листа в сыром формате или в формате IPTables.
  • Обман: управление страницами, созданными ИИ, их экспорт или импорт новых.

Подробнее см. в документации по панели управления.

Режимы развертывания

Krawl поддерживает два режима развертывания, управляемых параметром mode в config.yaml или переменной окружения KRAWL_MODE.

Standalone: идеален для сред разработки или homelab с низким количеством запросов. Ноль дополнительной настройки — просто запустите Krawl, и он заработает.

  • Развертывание одного контейнера без внешних зависимостей
  • Меньшее потребление RAM и ресурсов

Scalable: предназначен для производственных сред или высоконагруженных ловушек. Helm-чарт по умолчанию использует этот режим.

  • Более быстрая и отзывчивая панель управления благодаря многоуровневому кэшированию Redis
  • Меньше операций ввода-вывода на диск, так как Redis выступает в роли кэша горячего пути перед PostgreSQL
  • Горизонтальное масштабирование увеличивает количество реплик Krawl за балансировщиком нагрузки

Подробную конфигурацию, примеры Docker Compose, настройку Kubernetes/Helm и пошаговые инструкции по миграции см. в документации по режимам развертывания.

Бан-лист Krawl

Krawl поддерживает регулярно обновляемый banlist.txt с IP-адресами злоумышленников, которые сработали на его ловушки. Бан-лист публикуется еженедельно и доступен для скачивания, помогая сообществу превентивно блокировать известных вредоносных акторов даже без использования Krawl.

Бан-лист также можно получить напрямую: https://demo.krawlme.com/das_dashboard/api/export-ips?categories=attacker&fwtype=raw.

Обмен бан-листами между экземплярами

Экземпляры Krawl могут объединять свои бан-листы: каждый может публиковать свой собственный список по неаутентифицированному пути и загружать списки из других экземпляров (или любой текстовый список IP). Загруженные IP объединяются с локальными решениями о блокировке и отображаются в панели управления.```yaml banlist:

Public, unauthenticated download path for this instance's banlist.

Supports the same ?categories= and ?fwtype= parameters as the main API.

Empty = disabled.

export_path: "/public_banlist.txt"

Upstream banlists to fetch and merge. Plain ".txt" lists work too.

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

root@kitploit:~
## Quickstart

### 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

Docker Compose

Создайте файл docker-compose.yaml с одним из двух режимов развертывания.

Автономный режим: только сервер Krawl с хранилищем Sqlite:```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:

root@kitploit:~
**Масштабируемость**: с PostgreSQL и Redis:

> [!CAUTION]
> В примере ниже используются **пароли по умолчанию** (`krawl`/`krawl`). **Измените их перед развертыванием в производственной среде.**```yaml
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: krawl
      POSTGRES_USER: krawl
      POSTGRES_PASSWORD: krawl
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U krawl -d krawl"]
      interval: 10s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  krawl:
    image: ghcr.io/blessedrebus/krawl:latest
    container_name: krawl-server
    ports:
      - "5000:5000"
    environment:
      - CONFIG_LOCATION=config.yaml
      - KRAWL_MODE=scalable
      - KRAWL_POSTGRES_HOST=postgres
      - KRAWL_POSTGRES_PORT=5432
      - KRAWL_POSTGRES_USER=krawl
      - KRAWL_POSTGRES_PASSWORD=krawl
      - KRAWL_POSTGRES_DATABASE=krawl
      - KRAWL_REDIS_HOST=redis
      - KRAWL_REDIS_PORT=6379
      # - KRAWL_DASHBOARD_PASSWORD=my-secret-password
    volumes:
      - ./config.yaml:/app/config.yaml:ro
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy

volumes:
  postgres_data:
  redis_data:

Чтобы развернуть, просто выполните```bash docker compose up -d

root@kitploit:~
Готовые к продакшену compose-файлы также доступны в каталоге [`docker/`](https://github.com/blessedrebus/krawl/blob/main/docker). Для **разработки** (сборка из исходников с горячей перезагрузкой) используйте compose-файлы в [`docker/dev/`](https://github.com/blessedrebus/krawl/blob/main/docker/dev).

Более подробную информацию об обоих режимах см. в разделе [Режимы развертывания](https://github.com/blessedrebus/krawl/blob/main/docs/deployment-modes.md).

### Kubernetes
**Krawl также доступен нативно в Kubernetes**. Установка может быть выполнена либо [через манифест](https://github.com/blessedrebus/krawl/blob/main/kubernetes/README.md), либо [с использованием Helm-чарта](https://github.com/blessedrebus/krawl/blob/main/helm/README.md).

Helm-чарт **по умолчанию использует масштабируемый режим** со встроенными PostgreSQL и Redis:```bash
helm install krawl oci://ghcr.io/blessedrebus/krawl-chart --version 2.3.1 \
  -n krawl-system --create-namespace \
  --set postgres.password=your-password \
  --set redis.password=your-redis-password \
  --set dashboardPassword=your-dashboard-password \
  --set config.dashboard.secret_path=/my-secret-dashboard

Минимальные примеры файлов значений предоставлены для обоих режимов:

  • values-minimal.yaml ---> Масштабируемый (по умолчанию)
  • values-standalone.yaml ---> Автономный

См. Режимы развертывания и Документацию по чарту для полной конфигурации и инструкций по миграции.

Uvicorn (Python)

Запустите Krawl напрямую с Python 3.13+ и uvicorn для локальной разработки или тестирования:```bash pip install -r requirements.txt uvicorn app:app --host 0.0.0.0 --port 5000 --app-dir src --no-server-header

root@kitploit:~
Доступ к серверу: `http://localhost:5000`

## Конфигурация
Krawl использует **иерархию конфигурации**, в которой **переменные окружения имеют приоритет над файлом конфигурации**. Такой подход рекомендуется для развертывания в Docker и быстрой настройки без дополнительных усилий.

### Конфигурация через config.yaml
Вы можете использовать файл [config.yaml](https://github.com/blessedrebus/krawl/blob/main/config.yaml) для расширенной настройки, например, при развертывании с помощью Docker Compose или Helm chart.

### Конфигурация через переменные окружения

Все настройки могут быть заданы через переменные окружения, которые переопределяют `config.yaml`.
Имя переменной формируется как `KRAWL_` плюс путь к настройке в верхнем регистре, так что `dashboard.password`
становится `KRAWL_DASHBOARD_PASSWORD`.

<details>
<summary><b>Сервер и генерация ссылок</b> (12 переменных)</summary>

Как Krawl представляет себя и формирует лабиринт генерируемых страниц.

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `CONFIG_LOCATION` | Путь к yaml-файлу конфигурации | `config.yaml` |
| `KRAWL_PORT` | Порт прослушивания сервера | `5000` |
| `KRAWL_DELAY` | Задержка ответа в миллисекундах | `100` |
| `KRAWL_SERVER_HEADER` | HTTP-заголовок Server для обмана | `""` |
| `KRAWL_LINKS_LENGTH_RANGE` | Диапазон длины ссылок в формате `min,max` | `5,15` |
| `KRAWL_LINKS_PER_PAGE_RANGE` | Количество ссылок на страницу в формате `min,max` | `10,15` |
| `KRAWL_CHAR_SPACE` | Символы, используемые для генерации ссылок | `abcdefgh...` |
| `KRAWL_MAX_COUNTER` | Начальное значение счетчика | `10` |
| `KRAWL_PROBABILITY_ERROR_CODES` | Вероятность ответа с ошибкой (0-100%) | `0` |
| `KRAWL_INFINITE_PAGES_FOR_MALICIOUS` | Показывать бесконечные страницы вредоносным IP-адресам | `true` |
| `KRAWL_MAX_PAGES_LIMIT` | Максимальный лимит страниц для краулеров | `250` |
| `KRAWL_BAN_DURATION_SECONDS` | Длительность бана в секундах для IP с превышением лимита запросов | `600` |

</details>

<details>
<summary><b>Панель управления, метрики и журналирование</b> (8 переменных)</summary>

Доступ к панели управления, предварительный прогрев кэша, Prometheus и уровень журналирования.

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_DASHBOARD_SECRET_PATH` | Пользовательский путь к панели управления | Автогенерируемый |
| `KRAWL_DASHBOARD_PASSWORD` | Пароль для защищенных панелей панели управления | Автогенерируемый |
| `KRAWL_DASHBOARD_CACHE_WARMUP` | Предварительный расчет данных панели управления каждые 5 минут для мгновенной загрузки страниц | `true` |
| `KRAWL_DASHBOARD_WARMUP_PAGES` | Количество страниц для предварительного прогрева на каждую табличную панель | `10` |
| `KRAWL_DASHBOARD_WARMUP_AGGREGATION` | Предварительный расчет полных агрегаций top_paths/top_ua для обслуживания без запросов | `false` |
| `KRAWL_DASHBOARD_TOP_N_MIN_COUNT` | Минимальное количество обращений для панелей top paths/user agents (установите 1 для отключения) | `5` |
| `KRAWL_METRICS_ENABLED` | Публикация метрик Prometheus по адресу `/<dashboard_path>/metrics` | `true` |
| `KRAWL_LOG_LEVEL` | Уровень журналирования приложения (`DEBUG`, `INFO`, `WARNING`, `ERROR`) | `INFO` |

</details>

<details>
<summary><b>База данных, хранение и резервное копирование</b> (6 переменных)</summary>

Место хранения, срок хранения данных и задание на дамп.

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_DATABASE_PATH` | Расположение файла базы данных | `data/krawl.db` |
| `KRAWL_DATABASE_PERSIST_SUSPICIOUS_ONLY` | Сохранять только подозрительные запросы в журнал доступа | `false` |
| `KRAWL_DATABASE_RETENTION_DAYS` | Срок хранения данных в базе данных в днях | `30` |
| `KRAWL_BACKUPS_PATH` | Путь, куда сохраняются дампы базы данных | `backups` |
| `KRAWL_BACKUPS_CRON` | cron-выражение для управления расписанием задания резервного копирования | `*/30 * * * *` |
| `KRAWL_BACKUPS_ENABLED` | Логическое значение для включения задания дампа базы данных | `true` |

</details>

<details>
<summary><b>Ловушки: tarpit, страницы обмана и canary</b> (6 переменных)</summary>

Опциональные ловушки и страницы, отдаваемые атакующим.

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_TARPIT_ENABLED` | Ловить AI-агентов медленными ответами и случайным текстом | `false` |
| `KRAWL_TARPIT_DELAY_SECONDS` | Дополнительная задержка в секундах, добавляемая к каждому ответу при активном tarpit | `5` |
| `KRAWL_DECEPTION_IMPORT_PAGES` | Автоматический импорт страниц обмана из `src/templates/deception/` при запуске | `true` |
| `KRAWL_CUSTOM_TEMPLATE_PATH` | Путь внутри контейнера к пользовательскому HTML-шаблону. Шаблон должен содержать плейсхолдеры `{counter}` и `{content}`. | `/templates/custom_page.html` |
| `KRAWL_CANARY_TOKEN_URL` | Внешний URL canary-токена | Нет |
| `KRAWL_CANARY_TOKEN_TRIES` | Количество запросов перед показом canary-токена | `10` |

</details>

<details>
<summary><b>Анализатор репутации IP</b> (6 переменных)</summary>

Пороговые значения, определяющие классификацию IP-адреса.

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_HTTP_RISKY_METHODS_THRESHOLD` | Порог обнаружения рискованных HTTP-методов | `0.1` |
| `KRAWL_VIOLATED_ROBOTS_THRESHOLD` | Порог нарушений robots.txt | `0.1` |
| `KRAWL_UNEVEN_REQUEST_TIMING_THRESHOLD` | Порог коэффициента вариации для анализа тайминга | `0.5` |
| `KRAWL_UNEVEN_REQUEST_TIMING_TIME_WINDOW_SECONDS` | Временное окно для анализа тайминга запросов в секундах | `300` |
| `KRAWL_USER_AGENTS_USED_THRESHOLD` | Порог обнаружения множественных user agents | `2` |
| `KRAWL_ATTACK_URLS_THRESHOLD` | Порог обнаружения атакующих URL | `1` |

</details>

<details>
<summary><b>Бан-лист и игнорируемые IP</b> (4 переменных)</summary>

Обмен бан-листами с другими экземплярами и трафик, который никогда не отслеживается.

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_IGNORED_IPS` | IP-адреса/CIDR через запятую, которые никогда не отслеживаются, не банятся и не экспортируются | Loopback, RFC1918, link-local, CGNAT |
| `KRAWL_BANLIST_EXPORT_PATH` | Публичный путь загрузки бан-листа, например `/public_banlist.txt` (пусто = отключено) | `""` |
| `KRAWL_BANLIST_SOURCES` | URL-адреса вышестоящих бан-листов через запятую для загрузки и объединения | Бан-лист сообщества Krawl |
| `KRAWL_BANLIST_REFRESH_INTERVAL` | Интервал в секундах между загрузками вышестоящих бан-листов | `3600` |

</details>

<details>
<summary><b>Страницы обмана, генерируемые ИИ</b> (10 переменных)</summary>

См. [документацию по генерации ИИ](https://github.com/blessedrebus/krawl/blob/main/docs/ai_generation.md).

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_AI_ENABLED` | Включить страницы обмана, генерируемые ИИ | `false` |
| `KRAWL_AI_PROVIDER` | Поставщик ИИ (`"openrouter"` или `"openai"`) | `"openrouter"` |
| `KRAWL_AI_OPENAI_BASE_URL` | Необязательный базовый URL OpenAI для пользовательских конечных точек API | `"https://api.openai.com/v1"` |
| `KRAWL_AI_API_KEY` | Ключ API для поставщика ИИ | `None` |
| `KRAWL_AI_MODEL` | Модель ИИ для генерации страниц | `"nvidia/nemotron-3-super-120b-a12b:free"` |
| `KRAWL_AI_TIMEOUT` | Таймаут запроса в секундах для вызовов API ИИ | `60` |
| `KRAWL_AI_MAX_DAILY_REQUESTS` | Максимальное количество страниц, генерируемых ИИ в день (0 = без ограничений) | `0` |
| `KRAWL_AI_PROMPT` | Пользовательский шаблон промпта для генерации страниц ИИ | Промпт по умолчанию |
| `KRAWL_AI_REASONING_ENABLED` | Включить токены рассуждения (только для моделей рассуждения OpenRouter) | `false` |
| `KRAWL_AI_REASONING_EFFORT` | Уровень рассуждения (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`) | `"medium"` |

</details>

<details>
<summary><b>Масштабируемый режим: PostgreSQL и Redis</b> (13 переменных)</summary>

Используется только при `KRAWL_MODE=scalable`. См. [Режимы развертывания](https://github.com/blessedrebus/krawl/blob/main/docs/deployment-modes.md).

| Переменная окружения | Описание | По умолчанию |
|----------------------|-------------|---------|
| `KRAWL_MODE` | Режим развертывания (`standalone` или `scalable`) | `standalone` |
| `KRAWL_POSTGRES_HOST` | Имя хоста PostgreSQL | `localhost` |
| `KRAWL_POSTGRES_PORT` | Порт PostgreSQL | `5432` |
| `KRAWL_POSTGRES_USER` | Имя пользователя PostgreSQL | `krawl` |
| `KRAWL_POSTGRES_PASSWORD` | Пароль PostgreSQL | `krawl` |
| `KRAWL_POSTGRES_DATABASE` | Имя базы данных PostgreSQL | `krawl` |
| `KRAWL_REDIS_HOST` | Имя хоста Redis | `localhost` |
| `KRAWL_REDIS_PORT` | Порт Redis | `6379` |
| `KRAWL_REDIS_DB` | Номер базы данных Redis | `0` |
| `KRAWL_REDIS_PASSWORD` | Пароль Redis | Нет |
| `KRAWL_REDIS_CACHE_TTL` | TTL в секундах для данных прогрева панели управления | `600` |
| `KRAWL_REDIS_HOT_TTL` | TTL в секундах для данных горячего пути (информация о банах, категории IP) | `30` |
| `KRAWL_REDIS_TABLE_TTL` | TTL в секундах для постраничных таблиц панели управления | `120` |

</details>


Например```bash
# Set canary token
export CONFIG_LOCATION="config.yaml"
export KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"

# Set number of pages range (min,max format)
export KRAWL_LINKS_PER_PAGE_RANGE="5,25"

# Set analyzer thresholds
export KRAWL_HTTP_RISKY_METHODS_THRESHOLD="0.2"
export KRAWL_VIOLATED_ROBOTS_THRESHOLD="0.15"

# Set custom dashboard path and password
export KRAWL_DASHBOARD_SECRET_PATH="/my-secret-dashboard"
export KRAWL_DASHBOARD_PASSWORD="my-secret-password"

Пример запуска Docker с переменными окружения (автономный режим):```bash docker run -d
-p 5000:5000
-e KRAWL_MODE=standalone
-e KRAWL_PORT=5000
-e KRAWL_DELAY=100
-e KRAWL_DASHBOARD_PASSWORD="my-secret-password"
-e KRAWL_CUSTOM_TEMPLATE_PATH="/templates/custom_page.html"
-e KRAWL_CANARY_TOKEN_URL="http://your-canary-token-url"
--name krawl
ghcr.io/blessedrebus/krawl:latest

root@kitploit:~
## Использование Krawl для блокировки вредоносных IP-адресов
Krawl использует систему на основе репутации для классификации IP-адресов атакующих и предоставляет два способа экспорта списков IP-адресов для интеграции с межсетевыми экранами.

Конечная точка `/api/export-ips` выполняет запросы непосредственно к базе данных и поддерживает фильтрацию по категории IP-адреса (`attacker`, `bad_crawler`, `regular_user`, `good_crawler`) и формату вывода (`raw`, `iptables`, `nftables`):```bash
curl "https://your-krawl-instance/<DASHBOARD-PATH>/api/export-ips?categories=attacker&fwtype=raw"

Это обеспечивает автоматическую блокировку вредоносного трафика на различных платформах:

  • OPNsense и pfSense
  • RouterOS
  • IPtables и Nftables
  • Fail2Ban

Полный список параметров API, примеры и добавление пользовательских форматов межсетевых экранов см. в документации Firewall Exporters.

Krawl также может отправлять заблокированные IP-адреса напрямую в Cloudflare Account IP List для использования в правилах WAF. Синхронизация выполняется как фоновая задача и обновляет список полной заменой через настраиваемый интервал. См. документацию Cloudflare Banlist Sync.

IP Reputation

Krawl использует задачи, которые анализируют недавний трафик для построения и постоянного обновления репутации IP. Он запускается периодически и оценивает каждый активный IP-адрес на основе нескольких поведенческих индикаторов, чтобы классифицировать его как атакующего, краулера или обычного пользователя. Пороговые значения полностью настраиваются.

ip reputation

Анализ включает:

  • Использование рискованных HTTP-методов (например, соотношение POST, PUT, DELETE)
  • Нарушения Robots.txt
  • Аномалии времени запросов (всплески или нерегулярные паттерны)
  • Согласованность User-Agent
  • Обнаружение атакующих URL (например, паттерны SQL-инъекций, XSS)

Каждый сигнал вносит вклад в взвешенную модель оценки, которая присваивает категорию репутации:

  • attacker
  • bad_crawler
  • good_crawler
  • regular_user
  • unknown (при недостаточности данных)

Полученные оценки и метрики сохраняются в базе данных и используются Krawl для управления дашбордами, отслеживания репутации и автоматических мер реагирования, таких как блокировка IP или интеграция с межсетевыми экранами.

AI-генерируемые страницы-обманки

Krawl может автоматически генерировать реалистичные страницы-обманки с помощью AI-моделей из API OpenRouter или OpenAI. Эта функция создаёт уникальные правдоподобные honeypot-страницы на лету, чтобы обманывать атакующих без ручного создания страниц.

Ключевые возможности:

  • Динамическая генерация: создаёт уникальные HTML-страницы для любого пути запроса
  • Умное кэширование: кэширует сгенерированные страницы, чтобы избежать избыточных вызовов API
  • Ежедневное ограничение запросов: контроль затрат на API с настраиваемыми лимитами запросов
  • Несколько провайдеров: поддержка OpenRouter (бесплатные варианты) и OpenAI
  • Плавный откат: возврат к стандартному honeypot при отключении или достижении лимита
  • Обслуживание из кэша: ранее сгенерированные страницы обслуживаются даже при отключённом AI

Быстрая настройка:```yaml ai: enabled: true provider: "openrouter" openai_base_url: "your-custom-base-url" api_key: "your-api-key" model: "nvidia/nemotron-3-super-120b-a12b:free" timeout: 60 max_daily_requests: 10

root@kitploit:~
Для подробной настройки и использования см. [документацию по AI-генерации](https://github.com/blessedrebus/krawl/blob/main/docs/ai_generation.md).

Вы также можете **внести вклад в шаблоны обмана**, открыв PR, см. [Вклад в шаблоны обмана](https://github.com/blessedrebus/krawl/blob/main/docs/deception_pages.md#contributing-deception-templates-via-pr).

## Работа за обратным прокси или CDN

**NGINX, Traefik и другие прокси, такие как CloudFlare**, требуют пересылки заголовков, чтобы Krawl видел реальный IP-адрес. См. [документацию по обратному прокси](https://github.com/blessedrebus/krawl/blob/main/docs/reverse-proxy.md) с примерами конфигурации и полным списком заголовков.

## Метрики и мониторинг

Krawl предоставляет метрики [Prometheus](https://prometheus.io/) по адресу `/<dashboard_secret_path>/metrics` (включено по умолчанию) и поставляется с готовой к импорту панелью [Grafana](https://grafana.com/) в файле [`grafana-dashboard.json`](https://github.com/blessedrebus/krawl/blob/main/grafana-dashboard.json).

Полный список метрик, шаги импорта в Grafana и настройку сбора данных Prometheus / Kubernetes (`ServiceMonitor`) см. в [документации по мониторингу](https://github.com/blessedrebus/krawl/blob/main/docs/monitoring.md).

## Дополнительная документация

| Тема | Описание |
|-------|-------------|
| [AI-генерация](https://github.com/blessedrebus/krawl/blob/main/docs/ai_generation.md) | Настройка AI-генерируемых страниц обмана с помощью OpenRouter или OpenAI |
| [Страницы обмана](https://github.com/blessedrebus/krawl/blob/main/docs/deception_pages.md) | Управление, импорт и экспорт страниц обмана; массовые операции и фильтрация по дате |
| [Режимы развертывания](https://github.com/blessedrebus/krawl/blob/main/docs/deployment-modes.md) | Автономный режим (SQLite) против масштабируемого (PostgreSQL + Redis), конфигурация и миграция данных |
| [Honeypot](https://github.com/blessedrebus/krawl/blob/main/docs/honeypot.md) | Полный обзор страниц-ловушек: фейковые логины, листинги каталогов, файлы с учетными данными, ловушки SQLi/XSS/XXE/инъекций команд и многое другое |
| [Панель мониторинга](https://github.com/blessedrebus/krawl/blob/main/docs/dashboard.md) | Доступ и изучение панели мониторинга в реальном времени |
| [API панели мониторинга](https://github.com/blessedrebus/krawl/blob/main/docs/dashboard-api.md) | Собственный JSON API Krawl: справочник конечных точек, аутентификация, интерактивная документация OpenAPI и загрузка вложений |
| [Внешние API](https://github.com/blessedrebus/krawl/blob/main/docs/api.md) | Сторонние API, к которым обращается Krawl для получения данных об IP, репутации и геолокации |
| [Обратный прокси](https://github.com/blessedrebus/krawl/blob/main/docs/reverse-proxy.md) | Как развернуть Krawl за NGINX или использовать поддомены-приманки |
| [Резервное копирование базы данных](https://github.com/blessedrebus/krawl/blob/main/docs/backups.md) | Включение и настройка автоматического задания дампа базы данных |
| [Canary Token](https://github.com/blessedrebus/krawl/blob/main/docs/canary-token.md) | Настройка внешних триггеров оповещений через canarytokens.org |
| [Список слов](https://github.com/blessedrebus/krawl/blob/main/docs/wordlist.md) | Настройка фейковых имен пользователей, паролей и листингов каталогов |
| [Архитектура](https://github.com/blessedrebus/krawl/blob/main/docs/architecture.md) | Технический обзор кодовой базы, конвейера запросов, схемы базы данных и фоновых задач |
| [Синхронизация списка блокировок Cloudflare](https://github.com/blessedrebus/krawl/blob/main/docs/cloudflare_banlist.md) | Отправляет заблокированные IP-адреса из Krawl в список IP-адресов аккаунта Cloudflare для использования в правилах WAF. Синхронизация выполняется как фоновая задача и обновляет список полной заменой. |
| [Экспортеры брандмауэра](https://github.com/blessedrebus/krawl/blob/main/docs/firewall-exporters.md) | Экспорт списков блокировки IP в форматах raw, iptables или nftables через REST API |
| [Tarpit](https://github.com/blessedrebus/krawl/blob/main/docs/tarpit.md) | Замедление и отравление AI-краулеров задержанными ответами с шумовым заполнением |
| [Метрики и мониторинг](https://github.com/blessedrebus/krawl/blob/main/docs/monitoring.md) | Конечная точка метрик Prometheus, справочник предоставляемых метрик, панель Grafana и сбор данных ServiceMonitor |

## Вклад в проект

Вклад приветствуется! Пожалуйста:
1. Сделайте форк репозитория
2. Создайте ветку для новой функции
3. Внесите свои изменения
4. Отправьте pull request (объясните изменения!)


## Отказ от ответственности
> [!CAUTION]
> Это система обмана/honeypot. Развертывайте в изолированных средах и внимательно следите за событиями безопасности. Используйте ответственно и в соответствии с применимыми законами и нормативными актами.

## История звезд
<img src="https://star-history.dera.page/svg?repos=BlessedRebuS/Krawl&amp;type=Date" width="600" alt="Star History Chart" />
Скачать инструмент
StandaloneScalable
База данныхSQLite (режим WAL)PostgreSQL
КэшPython dict в памятиRedis (многоуровневый TTL)
Реплики1 (один экземпляр)1+ (горизонтальное масштабирование)
Внешние зависимостиНетPostgreSQL + Redis
Лучше всего подходит дляРазработки, homelab, <500 тыс. запросовПродакшена, высокой доступности, >500 тыс. запросов