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

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

Настройка системы обнаружения вторжений (Snort) в Termux с адаптивными правилами под мобильный трафик

Подробная инструкция по установке и настройке Snort в Termux на Android. Создаём адаптивные правила, учитывающие мобильный трафик, и интегрируем PulledPork для автоматического обновления.

Android‑устройства становятся всё более привлекательными целями для злоумышленников. Snort — проверенный IDS/IPS, который можно запустить в среде Termux, позволяя анализировать сетевой трафик прямо на смартфоне. В этой статье мы пройдём от установки до создания адаптивных правил, учитывающих особенности мобильных сетей.

Подготовка окружения

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

termux-setup-storage

Обновляем репозитории и ставим базовые инструменты:

pkg update && pkg upgrade -y
pkg install -y git clang make autoconf automake libtool pkg-config wget tar gzip openssl-dev libpcap-dev libpcre-dev zlib-dev

Скачивание и сборка Snort

Скачиваем последнюю стабильную версию Snort из официального репозитория:

wget https://www.snort.org/downloads/snort/snort-2.9.20.1.tar.gz -O snort.tar.gz
mkdir -p $HOME/snort && tar -xzf snort.tar.gz -C $HOME/snort --strip-components=1

Собираем Snort:

cd $HOME/snort
./configure --enable-sourcefire
make -j$(nproc)
make install

После установки бинарники находятся в /data/data/com.termux/files/usr/local/bin. Добавим путь в $PATH:

echo 'export PATH=$PATH:/data/data/com.termux/files/usr/local/bin' >> $HOME/.profile
source $HOME/.profile

Установка PulledPork для управления правилами

PulledPork автоматизирует загрузку, обновление и подготовку правил Snort.

cd $HOME
git clone https://github.com/shirkdog/pulledpork.git
cd pulledpork
chmod +x pulledpork.pl

Создаём конфигурационный файл pulledpork.conf (пример ниже). Обязательно укажите ваши Oinkcode, полученный после регистрации на snort.org.

cat > pulledpork.conf << 'EOF'
[PulledPork]
# Путь к Snort
snort_path = /data/data/com.termux/files/usr/local/bin/snort
# Путь к каталогу правил
rule_path = /data/data/com.termux/files/usr/local/etc/snort/rules
# Оinkcode (замените на ваш)
oinkcode = YOUR_OINKCODE_HERE
# URL репозитория правил
snort_rules_url = https://www.snort.org/downloads/community/community-rules.tar.gz
# Параметры обновления
update = yes
EOF
EOF

Запускаем первое обновление правил:

perl pulledpork.pl -c pulledpork.conf -l

Базовая конфигурация Snort

Создаём директорию конфигураций и основной файл snort.conf:

mkdir -p /data/data/com.termux/files/usr/local/etc/snort
cat > /data/data/com.termux/files/usr/local/etc/snort/snort.conf << 'EOF'
# Основные пути
var RULE_PATH /data/data/com.termux/files/usr/local/etc/snort/rules
var SO_RULE_PATH /data/data/com.termux/files/usr/local/etc/snort/so_rules
var PREPROC_RULE_PATH /data/data/com.termux/files/usr/local/etc/snort/preproc_rules
var WHITE_LIST_PATH /data/data/com.termux/files/usr/local/etc/snort/rules/white_list.rules
var BLACK_LIST_PATH /data/data/com.termux/files/usr/local/etc/snort/rules/black_list.rules

# Сетевой интерфейс (будет подменён скриптом)
var HOME_NET any
var EXTERNAL_NET any

# Включаем динамические правила
include $RULE_PATH/local.rules
include $RULE_PATH/community.rules
EOF
EOF

Адаптивные правила под мобильный трафик

Мобильные сети часто меняют IP‑адреса, поэтому фиксировать HOME_NET как any неэффективно. Мы создадим небольшую оболочку, которая будет автоматически подставлять текущие диапазоны сети, полученные из iproute2 и netcfg.

cat > $HOME/update_home_net.sh << 'EOS'
#!/usr/bin/env bash
# Получаем диапазоны IPv4, назначенные текущему Wi‑Fi/моб. сети
INTERFACES=$(ip -o -4 addr list | awk '{print $2" "$4}')
HOME_NET=""
for i in $INTERFACES; do
    IP_RANGE=$(echo $i | cut -d' ' -f2)
    HOME_NET+="$IP_RANGE,"
done
# Убираем последнюю запятую
HOME_NET=${HOME_NET%,}
# Обновляем snort.conf
CONFIG=/data/data/com.termux/files/usr/local/etc/snort/snort.conf
sed -i "s/^var HOME_NET ./var HOME_NET $HOME_NET/" $CONFIG
EOS
chmod +x $HOME/update_home_net.sh

Запускаем скрипт перед стартом Snort:

$HOME/update_home_net.sh

Теперь HOME_NET всегда отражает актуальные подсети вашего устройства.

Пример адаптивного правила

Создадим пользовательское правило, которое будет срабатывать только при попытке соединения с известными C&C‑серверами, но только из внешних подсетей (т.е. когда ваш телефон находится в роуминге).

cat > /data/data/com.termux/files/usr/local/etc/snort/rules/local.rules << 'EOF'
# Блокируем известные C&C IP, если они не принадлежат HOME_NET
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Попытка соединения с C&C"; sid:1000001; rev:1;)
EOF

Обратите внимание, что переменная $EXTERNAL_NET автоматически подставляется как «все, кроме HOME_NET», что делает правило контекстно‑зависимым.

Запуск Snort в режиме IDS

Запускаем Snort, указывая интерфейс (например, wlan0 или rmnet_data0 для мобильного data):

# Определяем активный интерфейс
IFACE=$(ip route | grep default | awk '{print $5}')
# Запускаем Snort в фоне, выводим в log.txt
snort -c /data/data/com.termux/files/usr/local/etc/snort/snort.conf -i $IFACE -A console -l $HOME/snort_logs &

Логи будут сохраняться в $HOME/snort_logs. Для просмотра используйте cat или less.

Автоматизация обновления правил

Создадим cron‑задачу (Termux поддерживает crontab) для еженедельного обновления правил и пересчёта HOME_NET:

pkg install -y cronie
crontab -e
# Добавьте строки:
0 3  * 0 $HOME/update_home_net.sh && perl $HOME/pulledpork/pulledpork.pl -c $HOME/pulledpork/pulledpork.conf -l

Таким образом, каждый воскресный день в 03:00 будет обновляться конфигурация и правила.

Мониторинг и отладка

  • Для быстрых проверок используйте snort -T -c ... — проверка синтаксиса.
  • События в реальном времени выводятся в консоль, если запустить Snort без опции -A console, заменив её на -A fast и просмотрев файл fast.log.
  • Для более детального анализа подключите barnyard2 (можно собрать из исходников) и отправляйте события в Elastic Stack.

Заключение

Настройка Snort в Termux позволяет превратить ваш Android‑устройство в полноценный датчик сетевых угроз. Адаптивные правила, основанные на динамическом определении HOME_NET, делают IDS гибкой и эффективной даже в условиях часто меняющихся мобильных IP‑адресов. Регулярное обновление правил через PulledPork и автоматизация посредством cron гарантируют актуальность защиты.

Если вам требуется профессиональная настройка IDS/IPS, аудит мобильных сетей или построение комплексных решений на базе открытого ПО, обращайтесь в RybinskLab. Мы поможем интегрировать Snort, Suricata и другие инструменты в ваш инфраструктурный стек, обеспечим поддержку и обучение персонала.

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

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

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

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