В эпоху мобильных вычислений многие специалисты по безопасности предпочитают использовать 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. Мы предоставляем услуги по консалтингу, развертыванию и обучению персонала, а также разрабатываем кастомные автоматизации под ваши бизнес‑задачи.