Suricata — сетевой сенсор с открытым кодом: он разбирает пакеты, сопоставляет их с правилами и пишет события в журнал. Дома такой сенсор полезен, чтобы видеть, что происходит в собственной сети: какие устройства стучатся наружу, не сканирует ли кто-то ваши порты, не появился ли в сегменте лишний участник. Важное ограничение: мониторить можно только свой трафик и свою сеть. Прослушивание чужого канала, перехват трафика соседей и работа на оборудовании без разрешения владельца недопустимы; в России такие действия регулируются законом. Дальше — только сценарий «моя квартира, мой роутер, мой коммутатор».

Что понадобится

Минимум — Linux-машина с двумя сетевыми интерфейсами или зеркалированием порта на управляемом коммутаторе. Второй вариант удобнее: роутер отправляет копию трафика на порт сенсора и продолжает работать. Если зеркалирования нет, сенсор можно поставить в разрыв, но это уже риск для доступности сети.

  • Процессор: четыре ядра и больше при гигабитном канале.
  • Память: от 4 ГБ, больше при большом объёме правил.
  • Диск: отдельный раздел под /var/log/suricata.
  • Доступ: только по SSH из доверенного сегмента.
  • Время: синхронизация через chrony или systemd-timesyncd.

Для домашней сети достаточно зеркалировать трафик роутера целиком, но не направляйте сенсор на интерфейс управления.

Установка

В Debian и Ubuntu Suricata есть в штатном репозитории. Версия может отставать, но обновления приходят вместе с системой. После установки проверьте имена интерфейсов: сенсор должен смотреть в тот, куда приходит зеркало.

sudo apt update
sudo apt install -y suricata jq
sudo systemctl status suricata
ip -br link

Основной конфиг — /etc/suricata/suricata.yaml. Правила по умолчанию лежат в /var/lib/suricata/rules/, а журналы — в /var/log/suricata/. Перед первым запуском обязательно задайте сеть и интерфейс, иначе сенсор будет смотреть не туда.

Настройка сети и интерфейса

Переменная HOME_NET описывает вашу сеть, EXTERNAL_NET — всё остальное. Если указать any, правила начнут срабатывать на трафик, который вас не касается, а анализ потеряет смысл. Для типовой квартиры это одна подсеть.

vars:
  address-groups:
    HOME_NET: "[192.168.1.0/24]"
    EXTERNAL_NET: "!$HOME_NET"

af-packet:
  - interface: eth1
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes
    use-mmap: yes
    ring-size: 2048

Интерфейс eth1 — тот, куда приходит зеркало. Проверьте имена через ip -br link. Если трафик идёт через bridge, укажите bridge-интерфейс. Для теста на файле вместо живого интерфейса используйте режим чтения pcap — он не требует прав на сеть.

sudo suricata -T -c /etc/suricata/suricata.yaml -v
sudo suricata -c /etc/suricata/suricata.yaml -r sample.pcap -l /tmp/suri-test
sudo systemctl enable --now suricata

Флаг -T проверяет конфигурацию и правила без запуска. Если тест прошёл, а сервис падает, смотрите journalctl -u suricata -n 100: чаще всего это несуществующий интерфейс или синтаксическая ошибка в правиле.

Правила: база и свои сигнатуры

suricata-update скачивает набор Emerging Threats Open и собирает итоговый файл правил. Запускайте его регулярно, но не во время активной отладки: обновление может добавить шумные правила. Для домашней сети полезно начать с набора, отключив всё, что не относится к вашим сервисам.

sudo suricata-update
sudo suricata-update list-sources
sudo suricata-update enable-source et/open
sudo suricata-update --no-test

Свои правила складывайте в отдельный файл и подключайте его в конфиге, чтобы обновление не затирало изменения. Пример: предупреждение о множественных подключениях к SSH на вашем хосте. Это не блокировка, а сигнал для разбора.

alert tcp any any -> $HOME_NET 22 (
  msg:"Много подключений к SSH за минуту";
  flow:to_server;
  threshold: type both, track by_src, count 10, seconds 60;
  sid:1000001; rev:1;
)

alert tcp $HOME_NET any -> $HOME_NET 23 (
  msg:"Telnet внутри домашней сети";
  flow:to_server;
  sid:1000002; rev:1;
)

Идентификаторы sid от 1000000 зарезервированы для локальных правил. После правки всегда выполняйте suricata -T: синтаксис чувствителен к точкам с запятой и пробелам.

Журналы и разбор алертов

Главный источник данных — eve.json: одна JSON-строка на событие. Там есть алерты, DNS-запросы, HTTP-метаданные, TLS и статистика. Читать его глазами бессмысленно, нужен jq и пара готовых фильтров.

sudo jq -c 'select(.event_type=="alert") | {time, src_ip, dest_ip, sig: .alert.signature}' /var/log/suricata/eve.json | tail -20

sudo jq -r 'select(.event_type=="dns") | .dns.rrname' /var/log/suricata/eve.json | sort | uniq -c | sort -rn | head

sudo jq -r 'select(.event_type=="alert") | .alert.signature' /var/log/suricata/eve.json | sort | uniq -c | sort -rn

Частые срабатывания одного правила — повод не отключать его сразу, а понять причину. Начните с инвентаризации: какие устройства и порты действительно нужны.

fast.log содержит короткие строки для быстрого просмотра, stats.log — счётчики пакетов и потерь. Если в stats растёт capture.kernel_drops, сенсор не успевает: уменьшите набор правил или проверьте, не включены ли GRO/LRO на интерфейсе захвата.

Режим IPS и осторожность

Suricata умеет не только предупреждать, но и блокировать через nfqueue. Дома включайте это только после недели наблюдения и только для своей сети. Ошибка в правиле может отрезать вас от собственного сервера, а блокировка нужного устройства — сломать умный дом. Начните с режима IDS, где ничего не блокируется.

sudo suricata -c /etc/suricata/suricata.yaml -q 0
sudo nft list ruleset
sudo journalctl -u suricata --since "1 hour ago" | grep -i error

Если после включения IPS пропал доступ, отключите юнит и вернитесь к IDS: без физического доступа к машине такие опыты опасны.

Чек-лист домашнего сенсора

  • HOME_NET соответствует вашей подсети, а не any.
  • Зеркалируется только ваш трафик, с согласия всех пользователей сети.
  • Проверка конфига suricata -T проходит без ошибок.
  • Правила обновляются по расписанию, локальные лежат отдельно.
  • eve.json ротируется, диск не заполняется.
  • В stats.log нет устойчивого роста потерь.
  • Доступ к веб-интерфейсу, если он есть, закрыт аутентификацией.

Итог

Suricata превращает домашнюю сеть из «чёрного ящика» в наблюдаемую систему: видно, какие устройства куда ходят и какие правила срабатывают. Начните с IDS на зеркале порта, задайте корректный HOME_NET, обновляйте правила и разбирайте алерты через jq. И помните главное: сенсор допустим только для собственного трафика и собственной сети — приватность соседей и чужих устройств остаётся вне вашего доступа.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте