We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Создание полностью автономного honeypot‑кластера в Termux: развёртывание Cowrie, Dionaea и Conpot с агрегацией данных в Loki

Пошаговое руководство по развёртыванию автономного honeypot‑кластера в Termux: Cowrie, Dionaea и Conpot, сбор событий и агрегация в Loki с локальной визуализацией. Безопасные практики и легальный подход.

Honeypot‑системы применяют для безопасного анализа попыток атак и формирования телеметрии. В этой статье мы рассмотрим, как развернуть полностью автономный кластер в Termux с тремя популярными компонентами: Cowrie (SSH/Telnet симуляция), Dionaea (сценарии для уязвимостей и сетевых сервисов) и Conpot (ICS/SCADA протоколы). Затем покажем, как агрегировать события в Grafana Loki и как удобно просматривать логи.

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

Правовые и безопасные рамки (критично)

  • Изоляция: разворачивайте honeypot только в сети, где вы контролируете адресацию и доступ (например, отдельный сегмент лабораторной сети).
  • Локальная сеть: при необходимости используйте VPN/туннелирование только для построения локальной сети между устройствами в вашей лаборатории, а не для обхода блокировок.
  • Запрет на “активное” воздействие: honeypot должен только отвечать на входящие соединения; не запускайте функции, которые будут сканировать внешние сети или атаковать.
  • Документация: фиксируйте, что и где развернуто, и обеспечьте сохранность логов согласно внутренним правилам.
  • Снижение рисков: включайте ограничения по ресурсам, используйте отдельные учётные записи и контейнеризацию при возможности.

Архитектура: что именно мы будем строить

Схема решения:

  • Cowrie — SSH/Telnet honeypot, который собирает сессии и попытки команд.
  • Dionaea — honeypot для сетевых сервисов/эксплойтов, который ловит характерные паттерны.
  • Conpot — моделирование ICS устройств (Modbus и др.), сбор событий.
  • Loki — центральное хранилище логов, куда мы агрегируем данные из всех компонентов.

Все компоненты будут работать автономно на одном устройстве Termux (в “кластерном” смысле: три независимых узла логики в рамках одной платформы) с единым сбором событий в Loki.

Подготовка Termux

Перед стартом обновим систему, установим базовые пакеты и настроим окружение.

pkg update -y
pkg upgrade -y
pkg install -y git python python-dev clang make wget tar ncurses-utils openssl libcrypt util-linux

Для Python удобно использовать virtualenv, чтобы не мешать системным пакетам.

pkg install -y python3-pip
python3 -m pip install --upgrade pip

Локальная схема адресации и изоляция

Если вы собираете трафик с других устройств/хостов в лаборатории, настройте отдельный сегмент сети и фиксируйте, какие устройства имеют доступ к honeypot‑сегменту. Это снижает вероятность “нецелевого” взаимодействия.

Если вы хотите, чтобы устройство Termux было доступно для проверки только из вашей локальной сети, используйте локальную схему (например, через ваш LAN и правила маршрутизации/файрвола). В рамках этой статьи мы не рассматриваем обход блокировок или внешнюю публикацию без контроля.

Установка и настройка Cowrie

Cowrie обычно запускается как приложение на Python с зависимостями. На практике проще собрать и запустить по официальным сценариям.

Создадим рабочую директорию:

mkdir -p ~/lab/honeypots
cd ~/lab/honeypots

Склонируем репозиторий Cowrie и подготовим окружение (версии могут отличаться, поэтому при необходимости подбирайте совместимость Python/зависимостей).

git clone https://github.com/cowrie/cowrie.git cowrie
cd cowrie
python3 -m pip install virtualenv
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt

Далее задаём минимальные параметры. Конкретный файл конфигурации зависит от версии Cowrie. Ниже — общий шаблон подхода: задайте порты, интерфейс и хранение логов в вашей директории.

# пример: открыть конфиг и скорректировать под свою сеть
# путь может отличаться; проверьте структуру каталога cowrie
ls

Рекомендуемая практика: сохраняйте данные Cowrie в выделенный каталог и включайте форматирование, пригодное для дальнейшей передачи в Loki (через агент логов или отправку текстовых событий).

Установка и настройка Dionaea

Dionaea — honeypot, который часто используют под натурный разбор сетевого “шумa”. На Termux ключевой момент — корректная сборка и зависимости. Если у вас возникают проблемы компиляции, используйте облегчённые режимы или заранее проверьте доступность инструментов в вашем окружении.

Создадим каталог и клонируем:

cd ~/lab/honeypots
git clone https://github.com/DinoTools/dionaea.git dionaea
cd dionaea

Дальше: установка зависимостей и сборка зависят от версии и требований. Как минимум потребуются сборочные инструменты и сетевые библиотеки. Проверяйте документацию в репозитории.

# примерная логика: подготовить сборку и собрать
# фактические команды уточняйте по README dionaea
ls

Конфиг Dionaea определяет, какие службы и порты слушать. В лаборатории задайте порты так, чтобы не конфликтовать с Cowrie и Conpot.

Установка и настройка Conpot

Conpot — симулятор ICS устройств, работающий как сервер с набором профилей. Нам важно выделить порт для Modbus/иных интерфейсов и настроить маппинг устройств.

cd ~/lab/honeypots
git clone https://github.com/mushorg/conpot.git conpot
cd conpot
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt

Далее: выбираете профиль conpot (шаблон устройства) и конфиг. В типовом подходе вы указываете:

  • какой порт слушать
  • где хранить состояния/логи
  • настройки имитируемых датчиков/реестров
# пример: посмотреть доступные настройки
ls
find . -maxdepth 2 -type f -name ".yml" -o -name ".yaml" 2>/dev/null

После настройки профиля Conpot запускается как сервис/процесс приложения.

Сбор логов для Loki: единый формат событий

Чтобы агрегировать события из Cowrie, Dionaea и Conpot в Loki, важно обеспечить:

  • консистентные теги (например, {job="cowrie"}, {job="dionaea"}, {job="conpot"})
  • временную синхронизацию (хотя бы на уровне устройства)
  • минимальный риск утечки: если логи содержат чувствительные строки, ограничьте доступ и хранение.

Практически: вы можете использовать агент логов (например, promtail) или отправлять события через HTTP API Loki. В Termux проще начать с текстовых логов и агентной обработки.

Установка Loki (лабораторный вариант)

Для автономности мы развернём Loki локально на том же устройстве Termux. Однако имейте в виду: Loki — достаточно ресурсоёмкий компонент. На слабом устройстве лучше уменьшать retention и размер буфера.

Один из практичных вариантов — запустить Loki как бинарник. На практике это зависит от доступности архитектуры и версии. Ниже — ориентир: скачивание подходящего релиза и запуск.

cd ~/lab
mkdir -p loki
cd loki
# пример: скачивание подходящего бинарника (версию и платформу выбирайте самостоятельно)
# wget https://github.com/grafana/loki/releases/download/<version>/loki-linux-arm64.zip
# unzip loki-linux-arm64.zip
# chmod +x loki-linux-arm64

Создадим конфигурацию Loki. Строго под вашу версию Loki конфиг может отличаться, поэтому используйте шаблон с официальной документации.

cd ~/lab/loki
mkdir -p config
cat > config/loki-config.yaml <<'YAML'
# минимальная схема конфигурации для лабораторных целей
# уточните параметры под вашу версию Loki
auth_enabled: false
server:
  http_listen_port: 3100
  grpc_listen_port: 9096
common:
  path_prefix: /data/loki
  storage:
    filesystem:
      chunks_directory: /data/loki/chunks
      rules_directory: /data/loki/rules
schema_config:
  configs:
    - from: 2020-01-01
      store: tsdb
      object_store: filesystem
      schema: v13
      index:
        prefix: index_
        period: 24h
limits_config:
  retention_period: 168h
YAML

Запустим Loki (команду подставьте под имя бинарника, который вы скачали):

mkdir -p ~/lab/loki/data/loki
# пример запуска
# ./loki-linux-arm64 -config.file=config/loki-config.yaml

Агент promtail для маршрутизации логов в Loki

Promtail читает файлы логов и отправляет в Loki. Это удобный “мост” для агрегирования событий Cowrie, Dionaea и Conpot.

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

cd ~/lab
mkdir -p promtail
cd promtail
# wget https://github.com/grafana/loki/releases/download/<version>/promtail-linux-arm64.zip
# unzip promtail-linux-arm64.zip
# chmod +x promtail-linux-arm64

Пример конфигурационного подхода: три “scrape_configs” с разными job‑тегами и путями к логам.

mkdir -p config
cat > config/promtail-config.yaml <<'YAML'
server:
  http_listen_port: 9080
positions:
  filename: /data/positions.yaml
clients:
  - url: http://127.0.0.1:3100/loki/api/v1/push
scrape_configs:
  - job_name: cowrie
    static_configs:
      - targets:
          - localhost
        labels:
          job: cowrie
          path: /data/logs/cowrie/.log
  - job_name: dionaea
    static_configs:
      - targets:
          - localhost
        labels:
          job: dionaea
          path: /data/logs/dionaea/.log
  - job_name: conpot
    static_configs:
      - targets:
          - localhost
        labels:
          job: conpot
          path: /data/logs/conpot/*.log
YAML

Подготовим каталоги под логи (подсказка: вам нужно настроить Cowrie/Dionaea/Conpot так, чтобы они туда писали или делали копирование/линковку):

mkdir -p ~/lab/loki/data/logs/cowrie
mkdir -p ~/lab/loki/data/logs/dionaea
mkdir -p ~/lab/loki/data/logs/conpot

Запустим promtail:

mkdir -p ~/lab/promtail/data
# пример запуска
# ./promtail-linux-arm64 -config.file=config/promtail-config.yaml

Проверка потока: “видим ли мы” события в Loki

После запуска promtail отправка в Loki должна начаться при появлении новых логов. Проверьте:

  • доступность Loki: http://127.0.0.1:3100/
  • наличие записей в Loki по job‑лейблам

Если у вас есть Grafana в лаборатории — подключите Loki как источник данных. Если Grafana нет, можно использовать curl к Loki API.

# Пример запроса к Loki API (уточняйте endpoint под вашу версию):
curl -s "http://127.0.0.1:3100/loki/api/v1/query_range?query=%7Bjob%3D%22cowrie%22%7D&start=0&limit=20" 

Оркестрация “кластерного” запуска в Termux

Чтобы управлять тремя компонентами, удобно подготовить скрипт запуска. Он:

  • поднимет окружения
  • запустит Cowrie, Dionaea и Conpot
  • запустит promtail и Loki
cat > ~/lab/start-honeypot-cluster.sh <<'SH'
#!/data/data/com.termux/files/usr/bin/bash
set -e

cd ~/lab

# 1) Loki
# ./loki-linux-arm64 -config.file=./loki/config/loki-config.yaml &

# 2) promtail
# cd ~/lab/promtail
# ./promtail-linux-arm64 -config.file=config/promtail-config.yaml &

# 3) Cowrie
# cd ~/lab/honeypots/cowrie
# source .venv/bin/activate
# ./start.sh &

# 4) Dionaea
# cd ~/lab/honeypots/dionaea
# ./start.sh &

# 5) Conpot
# cd ~/lab/honeypots/conpot
# source .venv/bin/activate
# conpot -c <path_to_config> &

echo "Cluster start sequence issued. Check logs and Loki stream."
SH

chmod +x ~/lab/start-honeypot-cluster.sh

Запуск:

~/lab/start-honeypot-cluster.sh

Типовые точки отказа и как их диагностировать

  • Нет событий в Loki: проверьте пути path в promtail и реально ли файлы пишутся.
  • Высокая нагрузка: снизьте retention в Loki и ограничьте частоту чтения/буферизацию агентом.
  • Конфликт портов: убедитесь, что Cowrie/Dionaea/Conpot используют разные порты.
  • Несовместимость зависимостей: проверьте Python‑версии и параметры сборки Dionaea.
  • Дублирование логов: убедитесь, что у каждой службы единый назначенный файл без “двойной” записи.

Заключение

Мы рассмотрели практический подход к созданию полностью автономного honeypot‑кластера в Termux: развёртывание Cowrie, Dionaea и Conpot с последующей агрегацией событий в Loki через промтейл. Ключ к стабильной работе — корректная изоляция сети, единый подход к тегированию логов и проверка связки “источник → агент → Loki → запрос/визуализация”.

Если вы хотите, чтобы у вас это было развёрнуто под вашу лабораторную сеть “под ключ”, выполнена настройка портов/изолирования и построены готовые дашборды и правила оповещений — обращайтесь в РыбинскЛАБ (ведущий эксперт: Усачёв Денис Евгеньевич). Мы поможем безопасно и корректно организовать мониторинг и анализ попыток атак в рамках закона и ваших требований.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект