Установка Suricata на Ubuntu 22.04

Что такое Suricata
Suricata — это бесплатный и открытый инструмент для сетевого анализа и обнаружения угроз, разработанный OISF. Поддерживает режимы IDS и IPS. Правила и сигнатуры определяют, какие пакеты помечать и блокировать. Suricata — распространённая альтернатива Snort и даёт глубокий взгляд на сетевые события.
Краткое определение: IDS — система обнаружения вторжений; IPS — система предотвращения вторжений.
Основные требования
- Сервер с Ubuntu 22.04.
- Настроен root или пользователь с sudo.
Перед началом
Обновите пакеты и установите зависимости. Это снизит шанс ошибок при компиляции и установке.
apt update -y
apt upgrade -yЗатем установите набор библиотек и инструментов сборки:
apt install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0 make libmagic-dev libjansson-dev libjansson4 pkg-config libnspr4-dev libnss3-dev liblz4-dev rustc cargo python3-pip python3-distutils
apt install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0Важно: убедитесь, что на сервере достаточно свободного места и установлен современный компилятор (gcc). Если у вас мало опыта с компиляцией, удобнее использовать пакет из репозитория (ниже).
Установка Suricata из исходников
Шаги ниже устанавливают Suricata из архива исходного кода. Это даёт больше контроля над опциями сборки.
Скачайте релиз (пример для версии 6.0.8):
wget https://www.openinfosecfoundation.org/download/suricata-6.0.8.tar.gzРаспакуйте архив:
tar xzf suricata-6.0.8.tar.gzПерейдите в каталог и запустите конфигурацию с нужными опциями:
cd suricata-6.0.8
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/varПример части вывода конфигурации (сокращённо):
Host: x86_64-pc-linux-gnu
Compiler: gcc (exec name) / g++ (real)
GCC Protect enabled: no
GCC march native enabled: yes
To build and install run 'make' and 'make install'.Соберите и установите Suricata:
make
make install-fullПосле установки утилита подскажет, как запускать Suricata из командной строки:
You can now start suricata by running as root something like:
/usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0Emerging Threats правила будут установлены, а обновление правил выполняется через suricata-update.
Установка Suricata из репозитория Ubuntu
Этот способ проще и быстрее. Он полезен для продакшен-систем, где важна воспроизводимость.
Установите вспомогательные пакеты:
apt install gnupg2 software-properties-common curl wget git unzip -yДобавьте официальный PPA и обновите кеш:
add-apt-repository ppa:oisf/suricata-stable --yes
apt updateПроверьте доступную версию пакета:
apt-cache policy suricataПример вывода:
suricata:
Installed: (none)
Candidate: 1:6.0.4-3Установите Suricata и утилиту jq (полезна для парсинга JSON-логов eve.json):
apt install suricata jqПроверьте собранную версию:
suricata --build-infoПример вывода (сокращённо):
This is Suricata version 6.0.8 RELEASE
Features: NFQ PCAP_SET_BUFF AF_PACKET ...
Suricata Configuration:
AF_PACKET support: yes
NFQueue support: yes
Detection enabled: yesНастройка Suricata
Редактируйте основной конфигурационный файл, укажите HOME_NET и интерфейс.
nano /etc/suricata/suricata.yamlНайдите и измените строки, например:
HOME_NET: "[10.0.2.0/24]"
EXTERNAL_NET: "!$HOME_NET"
af-packet:
- interface: eth0
sip:
enabled: noСохраните файл. Обновите и проверьте конфигурацию правил:
suricata-update
suricata -T -c /etc/suricata/suricata.yaml -vПример вывода теста загрузки конфигурации:
18/10/2022 -- 13:45:16 - - 28627 signatures processed. ...
18/10/2022 -- 13:45:19 - - Configuration provided was successfully loaded. Exiting.Запуск и статус сервиса
Включите автозапуск и запустите сервис:
systemctl enable --now suricata
systemctl status suricataПример ожидаемого статуса:
Active: active (running) since Tue 2022-10-18 13:38:52 UTC; 6min ago
.../usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid --af-packet -D -vvvТакже можно посмотреть доступные режимы запуска:
suricata --list-runmodesВерификация и тестирование
Перед ручным запуском отключите аппаратные оффлоады на интерфейсе:
ethtool -K eth0 gro off lro offОстановите сервис и удалите PID, если нужно запустить вручную:
systemctl stop suricata
rm -rf /var/run/suricata.pid
suricata -D -c /etc/suricata/suricata.yaml -i eth0Для простого теста можно сгенерировать SYN-флуд с удалённой машины с помощью hping3 (тестируйте только в контролируемой среде):
hping3 -S -p 80 --flood --rand-source suricata-ip -I eth0 -c 50Просматривайте быстрые логи:
tail -f /var/log/suricata/fast.logПример детектов, которые вы можете увидеть:
10/18/2022-14:01:38.569298 [] [1:2210008:2] SURICATA STREAM 3way handshake SYN resend different seq on SYN recv [] ...Полезные команды — шпаргалка
- Проверка конфигурации: suricata -T -c /etc/suricata/suricata.yaml -v
- Запуск в фоне: suricata -D -c /etc/suricata/suricata.yaml -i eth0
- Сброс PID: rm -rf /var/run/suricata.pid
- Обновление правил: suricata-update
- Парсинг eve.json: jq . /var/log/suricata/eve.json
- Отключение оффлоада: ethtool -K eth0 gro off lro off
Рекомендации по безопасности и производительности
- Запускайте Suricata на выделенной машине или VM с достаточной CPU и памятью.
- Для высоких нагрузок используйте AF_PACKET или NFQ с правильной настройкой потоков.
- Включите логирование eve.json и отправляйте копии логов в централизованную систему (SIEM).
- Ограничьте доступ к /etc/suricata и к логам для привилегированных пользователей.
- Регулярно обновляйте правила и Suricata с учётом тестирования в staging среде.
Решение проблем — когда что-то идёт не так
- Suricata не запускается: проверьте права на /etc/suricata и наличие зависимостей.
- Блокировки/пропуски пакетов: проверьте аппаратный оффлоад и настройку сетевого драйвера.
- Мало производительности: уменьшите объём логирования, настройте detect-thread и af-packet.
- Не загружаются правила suricata-update: проверьте сетевой доступ и ключи репозитория.
Важно: не применяйте правила в blocking/IPS режиме на бойевой инфраструктуре без предварительного теста.
Инцидентный план и откат (Runbook)
- При подозрении на ложные срабатывания временно переключите Suricata в режим IDS (наблюдение).
- Заблокируйте IP на уровне firewall, если требуется немедленная защита.
- Соберите логи: /var/log/suricata/eve.json и fast.log.
- Откат правил: откатите недавние обновления suricata-update или восстановите бэкап /etc/suricata.
- Перезапустите сервис: systemctl restart suricata.
- Проведите пост-инцидентный анализ и обновите процедуры.
Критерии приёмки
- Suricata успешно стартует и проходит тест конфигурации без ошибок.
- Suricata генерирует логи в /var/log/suricata (fast.log и eve.json).
- Правила загружаются и обновляются через suricata-update.
- Тестовые атаки в лаборатории регистрируются в логах.
Контрольные списки по ролям
Администратор:
- Установить зависимости и Suricata.
- Настроить автообновление правил в тестовой среде.
- Настроить ротацию логов и мониторинг.
Оператор безопасности:
- Анализировать eve.json в SIEM.
- Настраивать исключения/threshold для снижения шумов.
- Поддерживать актуальность правил и уведомлять об изменениях.
Небольшой словарь (1 строка)
- HOME_NET — сеть, которую вы защищаете.
- EXTERNAL_NET — все адреса, не входящие в HOME_NET.
- AF_PACKET — высокопроизводительный механизм пакетного захвата в Linux.
- NFQ — Netfilter queue, позволяет передавать пакеты из ядра в пользовательское пространство.
Короткое резюме
Suricata можно установить из исходников или через репозиторий. Из исходников даёт гибкость, из репозитория — проще и быстрее для продакшена. После установки обязательно проверьте конфигурацию, отключите аппаратный оффлоад для корректной работы и настройте обновление правил.
Если нужны примеры production-конфигураций, рекомендации по tuning для высоких нагрузок или генерация правил — напишите, я помогу адаптировать под вашу сеть.
Похожие материалы
Как бесплатно увеличить место в Dropbox
Организация закладок браузера с ChatGPT
Громкость Windows 11 застряла на 100% — как исправить
Rate limiting в Node.js и Express
Google Gemini на iPhone: включить и убрать