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

Обновлено и опубликовано Опубликовано:

Используемые термины: SuricataLinuxUbuntu.

Данная инструкция протестирована на Linux Ubuntu от 16.04 до 20.04. Установка 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

Установка

Установку можно выполнить двумя способами:

  1. Из репозитория. Быстрый и удобный способ, но мы получим стандартную сборку без экзотических функций.
  2. Из исходников. Данный метод сложнее, но позволит собрать пакет с дополнительными опциями, например, 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/ и копируем ссылку на последнюю (или нужную) версию пакета:

Копируем ссылку на последнюю версию Suricata

Используя скопированную ссылку, скачиваем архив на сервер:

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

# Ubuntu # Безопасность # Серверы # Сети
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет