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

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

Мониторинг и реагирование на инциденты (SOAR) в реальном времени с использованием ELK‑стека в Termux

В эпоху мобильных вычислений многие специалисты по безопасности предпочитают использовать Android‑устройства как полноценные площадки для исследований и реагирования. Termux предоставляет полноценный Linux‑окружение, а ELK‑стек (Elasticsearch, Logstash, Kibana) позволяет собрать, проанализировать и визуализировать события в реальном времени. Совмещение этих инструментов образует основу SOAR (Security Orchestration, Automation and Response)‑системы, способной автоматически реагировать на угрозы.

Подготовка Termux

Перед установкой необходимо убедиться, что Termux обновлён и имеет доступ к необходимым репозиториям.

apt update && apt upgrade -y
pkg install wget curl gnupg unzip git -y

Для работы с Java‑приложениями (необходимыми для Elasticsearch) понадобится openjdk-17-jdk:

pkg install openjdk-17 -y

Установка ELK‑стека

В Termux нет готовых пакетов ELK, поэтому будем использовать официальные tar‑архивы.

# Создаём директорию
mkdir -p $HOME/elk && cd $HOME/elk

# Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-8.12.0-linux-x86_64.tar.gz

# Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.12.0-linux-x86_64.tar.gz
tar -xzf logstash-8.12.0-linux-x86_64.tar.gz

# Kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.12.0-linux-x86_64.tar.gz
tar -xzf kibana-8.12.0-linux-x86_64.tar.gz

После распаковки каждый компонент можно запускать из соответствующей папки.

Конфигурация Elasticsearch

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

cd $HOME/elk/elasticsearch-8.12.0
bin/elasticsearch -E discovery.type=single-node &

Откройте http://127.0.0.1:9200 в браузере (можно использовать termux-open-url) и следуйте мастеру создания пароля.

Настройка Logstash для сбора логов

Создадим простой pipeline, который будет принимать syslog‑сообщения по UDP, парсить их и отправлять в Elasticsearch.

cat > $HOME/elk/logstash-8.12.0/config/syslog.conf <<'EOF'
input {
  udp {
    port => 5140
    codec => json {
      charset => "UTF-8"
    }
  }
}

filter {
  grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{HOSTNAME:host} %{DATA:process}: %{GREEDYDATA:msg}" }
  }
  date {
    match => ["timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss"]
    timezone => "UTC"
  }
}

output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "syslog-%{+YYYY.MM.dd}"
    user => "elastic"
    password => ""
  }
  stdout { codec => rubydebug }
}
EOF

# Запуск pipeline
cd $HOME/elk/logstash-8.12.0
bin/logstash -f config/syslog.conf &

Настройка Kibana

Запускаем Kibana и подключаем её к только что созданному Elasticsearch.

cd $HOME/elk/kibana-8.12.0
bin/kibana &

Откройте http://127.0.0.1:5601 в мобильном браузере, создайте индекс‑pattern syslog- и получите первую визуализацию.

Реализация простого SOAR‑модуля

Для автоматизации реакций будем использовать Python‑скрипт, который будет опрашивать Elasticsearch на предмет новых тревог и выполнять предопределённые действия (отправка сообщения в Telegram, блокировка IP и т.д.).

# Установка зависимостей
pkg install python -y
pip install elasticsearch telegram

# soarscript.py
cat > $HOME/soar.py <<'PY'
import time
from elasticsearch import Elasticsearch
import telegram

ES = Elasticsearch(['http://127.0.0.1:9200'], http_auth=('elastic', ''))
BOT = telegram.Bot(token='')
CHAT_ID = 

QUERY = {
    "query": {
        "range": {"@timestamp": {"gte": "now-1m"}}
    }
}

def send_alert(hit):
    msg = f"⚠️ New alert!
Host: {hit['_source'].get('host')}
Message: {hit['_source'].get('msg')}"
    BOT.send_message(chat_id=CHAT_ID, text=msg)

while True:
    res = ES.search(index='syslog-', body=QUERY)
    for hit in res['hits']['hits']:
        send_alert(hit)
    time.sleep(30)
PY

# Запуск в фоне
nohup python $HOME/soar.py &

Скрипт проверяет новые записи каждую минуту и отправляет уведомление в Telegram. По аналогии можно добавить вызов iptables для блокировки IP‑адресов.

Автоматизация и реагирование в реальном времени

Для более гибкой оркестрации рекомендуется использовать cron (в Termux это crontab) или systemd‑like менеджеры (например, sv из runit). Пример cron‑задачи:

# Откройте crontab
crontab -e

# Добавьте строку (каждые 2 минуты)
/2    * /data/data/com.termux/files/home/soar.py >> /data/data/com.termux/files/home/soar.log 2>&1

Тестирование в реальном времени

Отправим тестовое syslog‑сообщение с помощью logger (установлен в Termux):

logger -n 127.0.0.1 -P 5140 "Test alert: suspicious login from 192.168.1.100"

После нескольких секунд событие появится в Kibana, а Telegram‑бот получит уведомление. При необходимости можно настроить автоматическое добавление правила iptables -I INPUT -s 192.168.1.100 -j DROP в функции send_alert.

Лучшие практики

  • Разделяйте данные: используйте отдельные индексы для логов приложений, системных событий и тревог.
  • Настраивайте ILM (Index Lifecycle Management) для автоматического удаления старых данных.
  • Шифруйте соединения между Logstash и Elasticsearch (TLS).
  • Регулярно меняйте пароли elastic и токены ботов.
  • Мониторьте нагрузку процессора и памяти: в Termux ресурсы ограничены.

Заключение

Развёртывание ELK‑стека в Termux и построение простого SOAR‑модуля позволяют превратить Android‑устройство в полноценный центр мониторинга и реагирования на киберугрозы. При правильной настройке система способна собирать логи, визуализировать их в реальном времени и автоматически выполнять контрмеры, минимизируя время реакции.

Если вы хотите ускорить внедрение SOAR‑решений, настроить масштабируемый ELK‑стек или получить профессиональную поддержку, обратитесь к RybinskLab. Мы предоставляем услуги по консалтингу, развертыванию и обучению персонала, а также разрабатываем кастомные автоматизации под ваши бизнес‑задачи.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

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