- Установка и использование Suricata на Linux Ubuntu
- Перехват трафика и режимы работы
- Настройка времени
- Установка
- Из репозитория
- Из исходников
- 1. Подготовка к сборке
- 2. Сборка и установка
- 3. Завершение установки
- Базовая настройка
- 1. Обновление правил
- 2. Настройка рабочего сетевого интерфейса
- Русские Блоги
- установка Suricata
- Установите Suricata IDS в Linux
- Установите зависимости в операционных системах Debian, Ubuntu или Linux Mint
- Установите зависимости в операционных системах CentOS, Fedora или RHEL
- Настройте Suricata IDS в первый раз
- Используйте Suricata для мониторинга вторжений
- подводить итоги
Установка и использование Suricata на Linux Ubuntu
Данная инструкция протестирована на Linux Ubuntu от 16.04 до 20.04. Установка suricata будет выполнена как из репозиториев, так и исходников. Сетевой трафик для анализа мы будем зеркалировать от Mikrotik.
Перехват трафика и режимы работы
Чтобы определиться со способом установки suricata мы должны понимать принцип перехвата трафика. Есть несколько вариантов, как мы можем использовать программный продукт:
- IDS — обнаружение вторжений.
- IPS — предотвращение вторжений.
- NSM — мониторинг безопасности.
Для организации IPS/IDS/NSM необходимо пропускать сетевой трафик через сервер suricata. Как правило, последний ставится на границе с Интернет. На основе правил и анализа система принимает решение, пропускать трафик или нет. В данном режиме под Linux есть два варианта фильтрации трафика — NFQUEUE и AF_PACKET. Первый работает медленнее, он использует встроенный сетефой фильтр операционной системы. Режим AF_PACKET требует нескольких интерфейсов, а система должна работать в качестве шлюза, при блокировки пакета он не будет передан на второй интерфейс.
При установке suricata из репозитория, работает режим NFQUEUE. Для возможности использования AF_PACKET необходима сборка из исходников.
Для настройки сурикаты в качестве IDS/NSM сервер не обязательно должен находиться на пути сетевого трафика — мы можем зеркалировать пакеты от сетевого оборудования в сторону сурикаты.
В данной инструкции мы рассмотрим пример настройки IDS/NSM с зеркалированием трафика от Mikrotik.
Настройка времени
Система, крайне, чувствительна ко времени и может начать работать некорректно, если оно не будет настроено правильно.
Для начала настроим часовой пояс:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере мы выставим московское время.
Затем установим утилиту для синхронизации времени:
apt-get install chrony
И разрешим ее автозапуск:
systemctl enable chrony
Установка
Установку можно выполнить двумя способами:
- Из репозитория. Быстрый и удобный способ, но мы получим стандартную сборку без экзотических функций.
- Из исходников. Данный метод сложнее, но позволит собрать пакет с дополнительными опциями, например, CUDA для возможности использовать GPU.
Рассмотрим оба процесса.
Из репозитория
apt-get install software-properties-common
Press [ENTER] to continue or ctrl-c to cancel adding it
. нажимаем Enter.
Обновляем список пакетов:
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/ и копируем ссылку на последнюю (или нужную) версию пакета:
Используя скопированную ссылку, скачиваем архив на сервер:
tar zxvf suricata-*.tar.gz
Переходим в каталог с распакованным архивом:
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.
После конфигурирования собираем пакет:
. и устанавливаем его:
После установим конфигурационный файлы:
Для установки и обновления suricata ставим пакеты:
apt-get install python-pip
pip install —upgrade suricata-update
3. Завершение установки
Для полного завершения установки, создадим конфиг по умолчанию и сервис для автозапуска.
И так, создаем файл:
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:
Разрешаем автозапуск suricata и стартуем ее сервис:
systemctl enable suricata
systemctl start suricata
Базовая настройка
Для запуска нашего приложения осталось выполнить несколько настроек.
1. Обновление правил
Для этого вводим команду:
Система выполнит загрузку правил и сравнит их с текущими. При необходимости, обновит файлы.
Также необходимо обновить индекс источника правил:
2. Настройка рабочего сетевого интерфейса
После установки, в настройках suricata прописан интерфейс eth0, на котором должен принимать запросы сервер. Однако, рабочий интерфейс может быть другой — посмотреть его можно командой:
Например, в моем случае это ens32:
1: lo: 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 :
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
И так, меняем по очереди интерфейс в двух файлах.
Источник
Русские Блоги
установка Suricata
Команда suricata —build-info может просматривать информацию, относящуюся к плагину
В условиях постоянного возникновения угроз безопасности системы обнаружения вторжений (IDS) особенно необходимы в сегодняшней среде центров обработки данных. Однако по мере того, как все больше и больше серверов обновляют свои сетевые карты до 10 ГБ / 40 ГБ Ethernet, становится все труднее и труднее выполнять обнаружение вторжений на аппаратных средствах на таких линиях с интенсивными вычислениями. Одним из способов повышения производительности систем обнаружения вторжений является Многопоточная система обнаружения вторжений , Он распределяет работу по глубокой проверке пакетов, интенсивно потребляющую ресурсы ЦП, на несколько параллельных задач. Такое параллельное обнаружение может в полной мере использовать преимущества многоядерного оборудования для легкого увеличения пропускной способности системы обнаружения вторжений. В связи с этим можно выделить два известных проекта с открытым исходным кодом, а именно Suricata с участием Bro 。
Установите Suricata IDS в Linux
Давайте соберем Suricata из исходных файлов, но перед этим нам нужно установить несколько зависимостей, как показано ниже.
Установите зависимости в операционных системах Debian, Ubuntu или Linux Mint
- $ sudo apt-get install wget build — essential libpcre3 — dev libpcre3 — dbg automake autoconf libtool libpcap — dev libnet1 — dev libyaml — dev zlib1g — dev libcap — ng — dev libjansson — dev
Установите зависимости в операционных системах CentOS, Fedora или RHEL
- $ sudo yum install wget libpcap — devel libnet — devel pcre — devel gcc — c ++ automake autoconf libtool make libyaml — devel zlib — devel file — devel jansson — devel nss — devel
После установки всех зависимых пакетов мы можем приступить к установке Suricata.
Первый изhttp://suricata-ids.org/download/Загрузите исходный код Suricata, а затем соберите его. На момент написания этой статьи номер последней версии — 2.0.8.
- $ wget http : //www.openinfosecfoundation.org/download/suricata-2.0.8.tar.gz
- $ tar — xvf suricata — 2.0 . 8.tar . gz
- $ cd suricata — 2.0 . 8
- $ ./ configure — sysconfdir = /etc —localstatedir=/ var
Ниже приводится образец информации о конфигурации.
- Suricata Configuration :
- AF_PACKET support : yes
- PF_RING support : no
- NFQueue support : no
- NFLOG support : no
- IPFW support : no
- DAG enabled : no
- Napatech enabled : no
- Unix socket enabled : yes
- Detection enabled : yes
- libnss support : yes
- libnspr support : yes
- libjansson support : yes
- Prelude support : no
- PCRE jit : yes
- LUA support : no
- libluajit : no
- libgeoip : no
- Non — bundled htp : no
- Old barnyard2 support : no
- CUDA enabled : no
Теперь его можно скомпилировать и установить.
Исходный код Suricata поставляется с файлом конфигурации по умолчанию. Установите эти файлы конфигурации по умолчанию следующим образом.
- $ sudo make install — conf
Как и следовало ожидать, если нет набора правил IDS, Suricata бесполезна. К счастью, Makefile предоставляет нам возможность установки набора правил IDS. Способ установки следующий.
- $ sudo make install — rules
Приведенная выше команда установки правила изменится сEmergingThreats.netЗагрузите снимок доступных наборов правил сообщества и сохраните их в каталоге / etc / suricata / rules.
Настройте Suricata IDS в первый раз
Пришло время настроить Suricata. Расположение файла конфигурации: /etc/suricata/suricata.yaml , Воспользуйтесь следующей командой, чтобы открыть этот файл в текстовом редакторе.
- $ sudo vi / etc / suricata / suricata . yaml
Файл содержит некоторую базовую конфигурацию, необходимую для работы.
для default-log-dir Ключевое слово определяет расположение файла журнала Suricata.
- default — log — dir : /var/ log / suricata /
в vars Ниже раздела вы найдете несколько переменных, которые важны для Suricata. HOME_NET Переменная должна указывать сеть, которую проверяет Суриката. Присваивается EXTERNAL_NET Переменная !$HOME_NET Представляет другие сети, кроме локальной сети. XXX_PORTS Переменные используются для идентификации номеров портов, используемых различными службами. Обратите внимание, что независимо от того, какой порт используется, Suricata может автоматически обнаруживать HTTP-трафик. Так что не имеет значения, правильно ли указан порт.
- vars :
- HOME_NET : «[192.168.122.0/24]»
- EXTERNAL_NET : «!$HOME_NET»
- HTTP_PORTS : «80»
- SHELLCODE_PORTS : «!80»
- SSH_PORTS : 22
host-os-policy Часть его используется для защиты некоторых хорошо известных методов атаки (например, повторной сборки TCP), которые используют собственное поведение сетевого стека операционной системы для избежания обнаружения. В качестве контрмеры путем точной настройки алгоритма механизма обнаружения для целевой операционной системы Hyundai IDC предоставляет метод обнаружения «на основе цели». Следовательно, если вы знаете, в какой операционной системе работает хост, предоставление этой информации Suricata может значительно повысить вероятность успешного обнаружения. Это host-os-policy Смысл существования. В этом примере политикой IDC по умолчанию является Linux. Если для IP-адреса не указана информация об операционной системе, Suricata по умолчанию применяет стратегию обнаружения, основанную на системе Linux. Как показано ниже, при захвате связи с 192.168.122.0/28 и 192.168.122.155 Suricata применит стратегию обнаружения, основанную на системе Windows.
- host — os — policy :
- # These are Windows machines .
- windows : [ 192.168 . 122.0 / 28 , 192.168 . 122.155 ]
- bsd : []
- bsd — right : []
- old — linux : []
- # Make the default policy Linux .
- linux : [ 0.0 . 0.0 / 0 ]
- old — solaris : []
- solaris : [ «::1» ]
- hpux10 : []
- hpux11 : []
- irix : []
- macos : []
- vista : []
- windows2k3 : []
В threading В разделе вы можете указать соответствие ЦП для разных потоков Suricata. По умолчанию,Сходство с ЦПЗапрещено использовать ( set-cpu-affinity: no ), что означает, что Suricata распределяет свои потоки по всем доступным ядрам ЦП. Suricata по умолчанию создает поток обнаружения для каждого ядра ЦП. Вы можете указать detect-thread-ratio: N Чтобы отрегулировать это поведение. Здесь будет создано N * M потоков обнаружения, а M представляет собой общее количество ядер ЦП.
- threading :
- set — cpu — affinity : no
- detect — thread — ratio : 1.5
Через указанную выше настройку потока Suricata создаст 1,5 * M потоков обнаружения, где M — общее количество ядер ЦП системы.
Если вы хотите узнать больше о конфигурации Suricata, вы можете прочитать файл конфигурации по умолчанию. Внутри много заметок для вашего ясного понимания.
Используйте Suricata для мониторинга вторжений
Пришло время запустить Suricata, но перед этим нужно выполнить еще один шаг.
При использовании режима захвата pcap настоятельно рекомендуется отключить любые функции удаления пакетов (например, LRO / GRO) на сетевой карте мониторинга Suricata. Эти функции могут мешать захвату пакетов в реальном времени.
Отключите функцию LRO / GRO интерфейса eth0 следующим образом.
- $ sudo ethtool — K eth0 gro off lro off
Здесь следует отметить, что в случае использования некоторых сетевых карт вы увидите следующее предупреждающее сообщение. Просто игнорируйте их, эти сообщения просто говорят вам, что ваша сетевая карта не поддерживает функцию LRO.
- Cannot change large — receive — offload
Suricata поддерживает множество режимов работы. Рабочий режим определяет, какой поток будет использовать IDC. Следующая команда может просмотреть всеДоступные режимы работы。
- $ sudo / usr / local / bin / suricata — list — runmodes
По умолчанию Suricata использует режим работы autofp (сокращение от auto flow pinned load balancing). В этом режиме пакеты из определенного потока будут выделены в отдельный поток обнаружения. Эти потоки будут выделять соответствующие потоки в соответствии с минимальным количеством необработанных пакетов.
Наконец, давайте запустим Suricata и посмотрим, как она работает.
- $ sudo / usr / local / bin / suricata — c / etc / suricata / suricata . yaml — i eth0 — init — errors — fatal
В этом примере мы отслеживаем сетевой интерфейс eth0 в 8-ядерной системе. Как показано выше, Suricata создала 13 потоков обработки пакетов и 3 потока управления. Поток обработки пакетов включает поток захвата пакетов PCAP и 12 потоков обнаружения (производных от 8 * 1.5). Это означает, что 1 поток захвата пакетов в IDS распределяет нагрузку между 12 потоками обнаружения. Поток управления включает в себя 1 поток управления и 2 потока, связанных с подсчетом / статистикой.
Ниже приведен снимок экрана потока, обработанного Suricata (автор:htopПривлечь).
Журналы обнаружения Suricata хранятся в каталоге / var / log / suricata.
- $ tail — f / var / log / suricata / fast . log
- 04 / 01 / 2015 — 15 : 47 : 12.559075 [**] [ 1 : 2200074 : 1 ] SURICATA TCPv4 invalid checksum [**] [ Classification : ( null )] [ Priority : 3 ] < TCP >172.16 . 253.158 : 22 -> 172.16 . 253.1 : 46997
- 04 / 01 / 2015 — 15 : 49 : 06.565901 [**] [ 1 : 2200074 : 1 ] SURICATA TCPv4 invalid checksum [**] [ Classification : ( null )] [ Priority : 3 ] < TCP >172.16 . 253.158 : 22 -> 172.16 . 253.1 : 46317
- 04 / 01 / 2015 — 15 : 49 : 06.566759 [**] [ 1 : 2200074 : 1 ] SURICATA TCPv4 invalid checksum [**] [ Classification : ( null )] [ Priority : 3 ] < TCP >172.16 . 253.158 : 22 -> 172.16 . 253.1 : 46317
Журнал также может предоставлять для импорта формат Json:
подводить итоги
В этом руководстве я показал вам, как установить систему обнаружения вторжений Suricata на многоядерный сервер Linux. В отличие от однопоточногоSnort IDSSuricata может легко извлечь выгоду из преимуществ многопроцессорной функции многоядерного оборудования. Хорошая идея — настроить Suricata, чтобы максимизировать ее производительность и дальность обнаружения. Поклонники Сурикаты поддерживаютИнтернет-вики, Если вы планируете развернуть Suricata в своей среде, я настоятельно рекомендую вам пойти туда, чтобы узнать больше.
Добавьте параметр -D при открытии suricata, запустите suricata как демон и сгенерируйте файлы pid в / var / run по умолчанию
После обновления используемых правил оно вступит в силу только в том случае, если команда suricata-update инструмента suricata-update используется для обновления конфигурации и перезапуска suricata.
Официальный документ Suricata, процесс установки CentOS:
И hiredis, и libevent — это пакеты, необходимые для связи между suricata и redis, и при компиляции необходимо указать соответствующие настройки.
—enable-hiredis позволяет модулю redis вступить в силу, —with-libevent-includes = DIR указывает путь к libevent
Эти пакеты, установленные через yum, обычно находятся в / usr / lib или / usr / lib64.
Источник