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