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

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

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

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

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

Категории

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

Krawl

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

558455 ч 38 мин назадПроверено 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 — это cloud-native deception-сервер, предназначенный для обнаружения, задержки и анализа вредоносных атакующих, веб-краулеров и автоматизированных сканеров.

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

dashboard

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

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

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

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

use case

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

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

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

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

geoip

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

attack_types

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

ipinsight

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

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

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

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

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

Автономный: идеален для сред разработки или домашних лабораторий с небольшим количеством запросов. Никакой дополнительной настройки не требуется — просто запустите Krawl, и всё работает.

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

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

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

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

Бан-лист Krawl

Krawl поддерживает регулярно обновляемый banlist.txt с IP-адресами атакующих, которые активировали его honeypot-ловушки. Бан-лист публикуется еженедельно и доступен для скачивания, что помогает сообществу превентивно блокировать известных злоумышленников даже без использования 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 с одним из двух режимов развёртывания.

Standalone: только сервер 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`). **Измените их перед развертыванием в production.**```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:~
Production-ready compose-файлы также доступны в каталоге [`docker/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/). Для **разработки** (сборка из исходного кода с hot-reload) используйте compose-файлы в [`docker/dev/`](https://github.com/blessedrebus/krawl/blob/HEAD/docker/dev/).

Подробнее об обоих режимах см. [Deployment Modes](https://github.com/blessedrebus/krawl/blob/HEAD/docs/deployment-modes.md).

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

Helm-чарт **по умолчанию использует масштабируемый режим** со встроенными PostgreSQL и Redis:```bash
helm install krawl oci://ghcr.io/blessedrebus/krawl-chart --version 2.3.0 \
  -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 предоставлены для обоих режимов:

  • values-minimal.yaml ---> Scalable (default)
  • values-standalone.yaml ---> Standalone

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

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/HEAD/config.yaml) для расширенной конфигурации, например, при развёртывании с помощью Docker Compose или Helm chart.

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

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

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `CONFIG_LOCATION` | Path to yaml config file | `config.yaml` |
| `KRAWL_PORT` | Server listening port | `5000` |
| `KRAWL_DELAY` | Response delay in milliseconds | `100` |
| `KRAWL_SERVER_HEADER` | HTTP Server header for deception | `""` |
| `KRAWL_LINKS_LENGTH_RANGE` | Link length range as `min,max` | `5,15` |
| `KRAWL_LINKS_PER_PAGE_RANGE` | Links per page as `min,max` | `10,15` |
| `KRAWL_CHAR_SPACE` | Characters used for link generation | `abcdefgh...` |
| `KRAWL_MAX_COUNTER` | Initial counter value | `10` |
| `KRAWL_PROBABILITY_ERROR_CODES` | Error response probability (0-100%) | `0` |
| `KRAWL_INFINITE_PAGES_FOR_MALICIOUS` | Serve infinite pages to malicious IPs | `true` |
| `KRAWL_MAX_PAGES_LIMIT` | Maximum page limit for crawlers | `250` |
| `KRAWL_BAN_DURATION_SECONDS` | Ban duration in seconds for rate-limited IPs | `600` |

</details>

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_DASHBOARD_SECRET_PATH` | Custom dashboard path | Auto-generated |
| `KRAWL_DASHBOARD_PASSWORD` | Password for protected dashboard panels | Auto-generated |
| `KRAWL_DASHBOARD_CACHE_WARMUP` | Pre-compute dashboard data every 5 minutes for instant page loads | `true` |
| `KRAWL_DASHBOARD_WARMUP_PAGES` | Number of pages to pre-warm per table panel | `10` |
| `KRAWL_DASHBOARD_WARMUP_AGGREGATION` | Pre-compute full top_paths/top_ua aggregations for zero-query serving | `false` |
| `KRAWL_DASHBOARD_TOP_N_MIN_COUNT` | Minimum access count for top paths/user agents panels (set to 1 to disable) | `5` |
| `KRAWL_METRICS_ENABLED` | Expose Prometheus metrics at `/<dashboard_path>/metrics` | `true` |
| `KRAWL_LOG_LEVEL` | Application log level (`DEBUG`, `INFO`, `WARNING`, `ERROR`) | `INFO` |

</details>

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_DATABASE_PATH` | Database file location | `data/krawl.db` |
| `KRAWL_DATABASE_PERSIST_SUSPICIOUS_ONLY` | Only persist suspicious requests to the access log | `false` |
| `KRAWL_DATABASE_RETENTION_DAYS` | Days to retain data in database | `30` |
| `KRAWL_BACKUPS_PATH` | Path where database dump are saved | `backups` |
| `KRAWL_BACKUPS_CRON` | cron expression to control backup job schedule | `*/30 * * * *` |
| `KRAWL_BACKUPS_ENABLED` | Boolean to enable db dump job | `true` |

</details>

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_TARPIT_ENABLED` | Trap AI agents with slow responses and random text | `false` |
| `KRAWL_TARPIT_DELAY_SECONDS` | Extra delay in seconds added per response when tarpit is active | `5` |
| `KRAWL_DECEPTION_IMPORT_PAGES` | Auto-import deception pages from `src/templates/deception/` at startup | `true` |
| `KRAWL_CUSTOM_TEMPLATE_PATH` | Path inside the container to a custom HTML template. Template must include `{counter}` and `{content}` placeholders. | `/templates/custom_page.html` |
| `KRAWL_CANARY_TOKEN_URL` | External canary token URL | None |
| `KRAWL_CANARY_TOKEN_TRIES` | Requests before showing canary token | `10` |

</details>

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_HTTP_RISKY_METHODS_THRESHOLD` | Threshold for risky HTTP methods detection | `0.1` |
| `KRAWL_VIOLATED_ROBOTS_THRESHOLD` | Threshold for robots.txt violations | `0.1` |
| `KRAWL_UNEVEN_REQUEST_TIMING_THRESHOLD` | Coefficient of variation threshold for timing | `0.5` |
| `KRAWL_UNEVEN_REQUEST_TIMING_TIME_WINDOW_SECONDS` | Time window for request timing analysis in seconds | `300` |
| `KRAWL_USER_AGENTS_USED_THRESHOLD` | Threshold for detecting multiple user agents | `2` |
| `KRAWL_ATTACK_URLS_THRESHOLD` | Threshold for attack URL detection | `1` |

</details>

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_IGNORED_IPS` | Comma-separated IPs/CIDRs never tracked, banned or exported | Loopback, RFC1918, link-local, CGNAT |
| `KRAWL_BANLIST_EXPORT_PATH` | Public banlist download path, e.g. `/public_banlist.txt` (empty = disabled) | `""` |
| `KRAWL_BANLIST_SOURCES` | Comma-separated upstream banlist URLs to fetch and merge | Бан-лист сообщества Krawl |
| `KRAWL_BANLIST_REFRESH_INTERVAL` | Seconds between upstream banlist fetches | `3600` |

</details>

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

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

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_AI_ENABLED` | Enable AI-generated deception pages | `false` |
| `KRAWL_AI_PROVIDER` | AI provider (`"openrouter"` or `"openai"`) | `"openrouter"` |
| `KRAWL_AI_OPENAI_BASE_URL` | Optional OpenAI Base URL for custom API endpoints | `"https://api.openai.com/v1"` |
| `KRAWL_AI_API_KEY` | API key for AI provider | `None` |
| `KRAWL_AI_MODEL` | AI model to use for page generation | `"nvidia/nemotron-3-super-120b-a12b:free"` |
| `KRAWL_AI_TIMEOUT` | Request timeout in seconds for AI API calls | `60` |
| `KRAWL_AI_MAX_DAILY_REQUESTS` | Max number of AI-generated pages per day (0 = unlimited) | `0` |
| `KRAWL_AI_PROMPT` | Custom prompt template for AI page generation | Default prompt |
| `KRAWL_AI_REASONING_ENABLED` | Enable reasoning tokens (OpenRouter reasoning models only) | `false` |
| `KRAWL_AI_REASONING_EFFORT` | 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/HEAD/docs/deployment-modes.md).

| Environment Variable | Description | Default |
|----------------------|-------------|---------|
| `KRAWL_MODE` | Deployment mode (`standalone` or `scalable`) | `standalone` |
| `KRAWL_POSTGRES_HOST` | PostgreSQL hostname | `localhost` |
| `KRAWL_POSTGRES_PORT` | PostgreSQL port | `5432` |
| `KRAWL_POSTGRES_USER` | PostgreSQL username | `krawl` |
| `KRAWL_POSTGRES_PASSWORD` | PostgreSQL password | `krawl` |
| `KRAWL_POSTGRES_DATABASE` | PostgreSQL database name | `krawl` |
| `KRAWL_REDIS_HOST` | Redis hostname | `localhost` |
| `KRAWL_REDIS_PORT` | Redis port | `6379` |
| `KRAWL_REDIS_DB` | Redis database number | `0` |
| `KRAWL_REDIS_PASSWORD` | Redis password | None |
| `KRAWL_REDIS_CACHE_TTL` | TTL in seconds for dashboard warmup data | `600` |
| `KRAWL_REDIS_HOT_TTL` | TTL in seconds for hot-path data (ban info, IP categories) | `30` |
| `KRAWL_REDIS_TABLE_TTL` | TTL in seconds for paginated dashboard tables | `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"

This enables automatic blocking of malicious traffic across various platforms:

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

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

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

IP-репутация

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

IP-репутация

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

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

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

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

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

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

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

Основные возможности:

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

Быстрая настройка:```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:~
Подробную информацию о настройке и использовании см. в [документации по генерации с помощью ИИ](https://github.com/blessedrebus/krawl/blob/HEAD/docs/ai_generation.md).

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

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

**NGINX, Traefik и другие прокси, такие как CloudFlare**, требуют пересылки заголовков, чтобы Krawl мог видеть реальный IP-адрес. Примеры конфигурации и полный список заголовков см. в [документации по обратному прокси](https://github.com/blessedrebus/krawl/blob/HEAD/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/HEAD/grafana-dashboard.json).

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

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

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

## Внесение вклада

Вклад приветствуется! Пожалуйста:
1. Сделайте форк репозитория
2. Создайте feature-ветку
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" />
Скачать инструмент
АвтономныйМасштабируемый
База данныхSQLite (WAL mode)PostgreSQL
КэшPython-словарь в памятиRedis (multi-tier TTL)
Реплики1 (один экземпляр)1+ (горизонтальное масштабирование)
Внешние зависимостиНетPostgreSQL + Redis
Лучше всего подходит дляРазработка, домашние лаборатории, <500 тыс. запросовПродакшн, HA, >500 тыс. запросов