Установка и использование Suricata на Linux Ubuntu

Используемые термины: Suricata, Linux, Ubuntu.
Данная инструкция протестирована на Linux Ubuntu от 16.04 до 20.04. Установка suricata будет выполнена как из репозиториев, так и исходников.
Как настраивать Suricata
Настройка часового пояса и синхронизации времени
Установка Suricata
Начальная настройка
Перехват трафика и режимы работы
Чтобы определиться со способом установки suricata мы должны понимать принцип перехвата трафика. Есть несколько вариантов, как мы можем использовать программный продукт:
- IDS — обнаружение вторжений.
- IPS — предотвращение вторжений.
- NSM — мониторинг безопасности.
Для организации IPS/IDS/NSM необходимо пропускать сетевой трафик через сервер suricata. Как правило, последний ставится на границе с Интернет. На основе правил и анализа система принимает решение, пропускать трафик или нет. В данном режиме под Linux есть два варианта фильтрации трафика — NFQUEUE и AF_PACKET. Первый работает медленнее, он использует встроенный сетевой фильтр операционной системы. Режим AF_PACKET требует нескольких интерфейсов, а система должна работать в качестве шлюза, при блокировки пакета он не будет передан на второй интерфейс.
При установке suricata из репозитория, работает режим NFQUEUE. Для возможности использования AF_PACKET необходима сборка из исходников.
Для настройки сурикаты в качестве IDS/NSM сервер не обязательно должен находиться на пути сетевого трафика — мы можем зеркалировать пакеты от сетевого оборудования в сторону сурикаты.
В данной инструкции мы рассмотрим пример настройки IDS/NSM.
Настройка времени
Система, крайне, чувствительна ко времени и может начать работать некорректно, если оно не будет настроено правильно.
Для начала настроим часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере мы выставим московское время. Список всех доступных зон можно посмотреть командой timedatectl list-timezones.
Затем установим утилиту для синхронизации времени:
apt-get install chrony
И разрешим ее автозапуск:
systemctl enable chrony
Установка
Установку можно выполнить двумя способами:
- Из репозитория. Быстрый и удобный способ, но мы получим стандартную сборку без экзотических функций.
- Из исходников. Данный метод сложнее, но позволит собрать пакет с дополнительными опциями, например, CUDA для возможности использовать GPU.
Рассмотрим оба процесса.
Из репозитория
Устанавливаем репозиторий:
apt-get install software-properties-common
add-apt-repository ppa:oisf/suricata-stable
Когда увидим
Press [ENTER] to continue or ctrl-c to cancel adding it
... нажимаем Enter.
Обновляем список пакетов:
apt-get update
Устанавливаем suricata:
apt-get install suricata
Разрешаем автозапуск сервиса:
systemctl enable suricata
Из исходников
Рассмотрим пример установки пакета безопасности с поддержкой использования AF_PACKET. Процедуру разобьем на несколько этапов.
1. Подготовка к сборке
Устанавливаем необходимые для сборки пакеты:
apt-get 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 rustc cargo
Если необходимо использовать Suricata в качестве IPS, также ставим пакеты:
apt-get install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0
Переходим по ссылке https://openinfosecfoundation.org/download/ и копируем ссылку на последнюю (или нужную) версию пакета:
Используя скопированную ссылку, скачиваем архив на сервер:
wget https://openinfosecfoundation.org/download/suricata-5.0.3.tar.gz
Распакуем его:
tar zxvf suricata-*.tar.gz
Переходим в каталог с распакованным архивом:
cd suricata-*
2. Сборка и установка
По умолчанию, suricata собирается как IDS. Рассмотрим оба варианта для конфигурирования.
а) если собираем для режима IDS:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
б) если собираем для режима IPS:
./configure --enable-af-packet --prefix=/usr --sysconfdir=/etc --localstatedir=/var
* для возможности работы в режиме IPS необходимо включить опции --enable-af-packet или --enable-nfqueue.
После конфигурирования собираем пакет:
make
... и устанавливаем его:
make install
После установим конфигурационный файлы:
make install-conf
Для установки и обновления suricata ставим пакеты:
apt-get install python-pip
pip install --upgrade suricata-update
3. Завершение установки
Для полного завершения установки, создадим конфиг по умолчанию и сервис для автозапуска.
И так, создаем файл:
vi /etc/default/suricata
RUN=yes
RUN_AS_USER=
SURCONF=/etc/suricata/suricata.yaml
LISTENMODE=af-packet
IFACE=eth0
NFQUEUE="-q 0"
CUSTOM_NFQUEUE="-q 0 -q 1 -q 2 -q 3"
PIDFILE=/var/run/suricata.pid
Загружаем скрипт автозапуска командой:
wget https://www.dmosk.ru/files/suricata -P /etc/init.d
Разрешаем запуск файла:
chmod +x /etc/init.d/suricata
Перечитываем конфигурацию systemd:
systemctl daemon-reload
Разрешаем автозапуск suricata и стартуем ее сервис:
systemctl enable suricata
systemctl start suricata
Базовая настройка
Для запуска нашего приложения осталось выполнить несколько настроек.
1. Обновление правил
Для этого вводим команду:
suricata-update
Система выполнит загрузку правил и сравнит их с текущими. При необходимости, обновит файлы.
Также необходимо обновить индекс источника правил:
suricata-update update-sources
2. Настройка рабочего сетевого интерфейса
После установки, в настройках suricata прописан интерфейс eth0, на котором должен принимать запросы сервер. Однако, рабочий интерфейс может быть другой — посмотреть его можно командой:
ip a
Например, в моем случае это ens32:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:81:07:a0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.15/24 brd 192.168.0.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe81:7a0/64 scope link
valid_lft forever preferred_lft forever
И так, меняем по очереди интерфейс в двух файлах.
Сначала в настройках по умолчанию:
vi /etc/default/suricata
IFACE=ens32
Затем в пользовательских настройках:
vi /etc/suricata/suricata.yaml
...
af-packet:
- interface: ens32
...
pcap:
- interface: ens32
...
pfring:
- interface: ens32
...
Перезапускаем сурикату:
systemctl restart suricata