Меню

Suricata установка и настройка centos



Установка и использование 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

Установка

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

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

Читайте также:  Настройка часов на брелке томагавк 9010

Разрешаем запуск файла:

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

И так, меняем по очереди интерфейс в двух файлах.

Источник

Building an IDS on CentOS using Suricata

I think I may have just switched from Snort to Suricata.

Me, About 40 Minutes Ago

One of the things I like to have on my internet servers is a basic Intrusion Detection System (IDS). This tells me interesting things like:

  • If I’m being portscanned
  • If malicious IPs are talking to me
  • If there is any malware detected in my traffic streams
  • If C2 traffic is detected in my traffic streams
  • If people are attempting to hack me through web traffic
  • If people are brute forcing my SSH daemon
  • Etc.

For over a decade I’ve been using Snort for my IDS on Linux systems, but for the first day of the new year I wanted to try something different.

[ NOTE: It’s also quite annoying that in order to install Snort you still need lots of alcohol and lots of patience. Not to mention great troubleshooting skills. In 2015 you should be able to run yum install snort and be three minutes from a running config.

But you can’t do that. Not even close. I can make it work, but it takes over an hour of troubleshooting. Every. Single. Time. ]

So I gave Suricata a try tonight, and I had it up and running in less than 30 minutes. I captured the steps to save you some time.

Getting the software

Make sure you have EPEL:

Make your Suricata directory:

Download and install Suricata:

[ NOTE: That last bit— make install-full — is remarkable in how much it configures for you on its own. It basically downloads and sets up your rules and gives you a nearly running system. ]

Configuration

Link your configs:

[ NOTE: the Suricata docs are phenomenal. Much better than Snort’s I’d say. All I did was follow the instructions really, using some knowledge from my Snort experience. ]

Set your HOST OS Policy in /etc/suricata/reference.config :

Get Oinkmaster from:

[ NOTE: Oinkmaster is a rule management system. It’s super light, no big deal. ]

Create a directory for Oinkmaster in /etc/ :

Decompress the Oinkmaster tarball into /etc/oinkmaster , and then edit /etc/oinkmaster/oinkmaster.conf to add the following line:

[ NOTE: These Emerging Threat rules are free rules supported by the community that keep up with the latest threats, and they’re updated daily. ]

Читайте также:  Настройка отображения в opera

Then you run oinkmaster.pl to download and install the rules:

Then you tweak your rules you want to run in Suricata’s conf file. I start with these and then add from there:

  • botcc.rules
  • compromised.rules
  • dshield.rules
  • emerging-attack.rules
  • emerging-currentõevents.rules
  • emerging-malware.rules
  • emerging-scan.rules
  • emerging-shellcode.rules
  • emerging-trojan.rules
  • emerging-worm.rules

Remember to set your $HOMEõNET variable in /etc/suricata/suricata.yaml , and make sure you are logging to /var/log/suricata , and that the directory exists.

Starting up

You should be all set. Run the command with the —init-errors-fatal option at first to see if there are any issues.

Then once that’s working, remove that piece and add the -D option to run in daemon mode.

Now check to see if you have logs in /var/log/suricata/fast.log

You should see something like:

…which means you’re up and running.

Now just run that Oinkmaster command daily (with your tweaked URLs for different rulesets) to keep your rules up to date, and don’t forget to restart Suricata after the updates.

So I hope this has been helpful, and that enjoy the switch to Suricata from Snort as much as I have.

Источник

Snort или Suricata. Часть 2: установка и первичная настройка Suricata

Если верить статистике, объем сетевого трафика увеличивается примерно на 50% каждый год. Это приводит к росту нагрузки на оборудование и, в частности, повышает требования к производительности IDS/IPS. Можно покупать дорогостоящее специализированное железо, но есть вариант подешевле — внедрение одной из систем с открытым исходным кодом. Многие начинающие администраторы считают, будто установить и сконфигурировать бесплатную IPS довольно сложно. В случае с Suricata это не совсем верно — поставить и ее и начать отражать типовые атаки с набором бесплатных правил можно за несколько минут.

Зачем нужна еще одна открытая IPS?

Долгое время считавшаяся стандартом система Snort разрабатывается с конца девяностых, поэтому изначально она была однопоточной. За долгие годы в ней появились все современные фишки, вроде поддержки IPv6, возможности анализа протоколов прикладного уровня или универсальный модуль доступа к данным.

Базовый движок Snort 2.X научился работать с несколькими ядрами, но так и остался однопоточным и потому не может оптимально использовать преимущества современных аппаратных платформ.

Проблема была решена в третьей версии системы, но ее готовили так долго, что на рынке успела появиться написанная с нуля Suricata. В 2009 году ее начали разрабатывать именно как многопоточную альтернативу Snort, обладающую из коробки функциями IPS. Код распространяется под лицензией GPLv2, но финансовые партнеры проекта имеют доступ к закрытой версии движка. Некоторые проблемы с масштабируемостью в первых версиях системы возникали, но они довольно быстро были решены.

Почему Suricata?

В Suricata есть нескольких модулей (как и в Snort): захвата, сбора, декодирования, обнаружения и вывода. По умолчанию захваченный трафик идет до декодирования одним потоком, хотя это больше нагружает систему. При необходимости потоки можно разделить в настройках и распределить по процессорам — Suricata очень хорошо оптимизируется под конкретное железо, хотя это уже не уровень HOWTO для начинающих. Стоит также отметить наличие в Suricata основанных на библиотеке HTP продвинутых средств инспектирования HTTP. Они же могут быть использованы для протоколирование трафика без детектирования. Система также поддерживает декодирование IPv6, включая туннели IPv4-in-IPv6, IPv6-in-IPv6 и другие.

Для перехвата трафика могут использоваться разные интерфейсы (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), а в режиме Unix Socket можно автоматически анализировать захваченные другим сниффером файлы PCAP. Кроме того, модульная архитектура Suricata упрощает подключение новых элементов для захвата, декодирования, анализа и обработки сетевых пакетов. Важно также отметить, что в Suricata блокировка трафика осуществляется средствами штатного фильтра операционной системы. В GNU/Linux доступно два варианта работы IPS: через очередь NFQUEUE (режим NFQ) и через zero copy (режим AF_PACKET). В случае первом случае попадающий в iptables пакет направляется в очередь NFQUEUE, где может обрабатываться на пользовательском уровне. Suricata прогоняет его по своим правилам и выносит один из трех вердиктов: NF_ACCEPT, NF_DROP и NF_REPEAT. Первые два пояснений не требуют, а последний позволяет промаркировать пакеты и отправить их в начало текущей таблицы iptables. Режим AF_PACKET отличается более высоким быстродействием, но накладывает на систему ряд ограничений: она должна иметь два сетевых интерфейса и работать в качестве шлюза. Заблокированный пакет просто не пересылается на второй интерфейс.

Читайте также:  Настройка экспозиции по серым картам

Важная фишка Suricata — возможность использования наработок для Snort. Администратору доступны, в частности, наборы правил Sourcefire VRT и OpenSource Emerging Threats, а также коммерческие Emerging Threats Pro. Унифицированный вывод можно анализировать с помощью популярных бэкендов, также поддерживается вывод в PCAP и Syslog. Настройки системы и правила хранятся в файлах формата YAML, который легко читается и может обрабатываться автоматически. Движок Suricata распознает множество протоколов, поэтому в правилах нет необходимости привязываться к номеру порта. Кроме того в правилах Suricata активно практикуется концепция flowbits. Для отслеживания срабатывания используются переменные сессии, позволяющие создавать и применять различные счетчики и флаги. Многие IDS рассматривают разные TCP-соединения как отдельные сущности и могут не увидеть связи между ними, свидетельствующей о начале атаки. Suricata старается видеть картину целиком и во многих случаях распознает распределенный по разным соединениям вредоносный трафик. О ее преимуществах можно рассуждать долго, мы лучше перейдем к установке и настройке.

Как установить?

Мы будем устанавливать Suricata на виртуальный сервер, работающий под управлением Ubuntu 18.04 LTS. Все команды необходимо выполнять от имени суперпользователя (root). Наиболее безопасный вариант — подключиться к серверу по SSH с правами обычного пользователя, а затем применить утилиту sudo для повышения привилегий. Для начала необходимо установить пакеты, которые нам понадобятся:

Подключаем внешний репозиторий:

Устанавливаем последнюю стабильную версию Suricata:

При необходимости правим конфигурационные файлы имя, заменив использующийся по умолчанию eth0 на фактическое имя внешнего интерфейса сервера. Настройки по умолчанию хранятся в файле /etc/default/suricata, а пользовательские — в /etc/suricata/suricata.yaml. Настройка IDS по большей части ограничивается правкой этого конфигурационного файла. В нем множество параметров, которые по названию и назначению совпадают с аналогами из Snort. Синтаксис тем не менее совершенно другой, но файл читать намного проще чем конфиги Snort, к тому же он хорошо прокомментирован.

Внимание! Перед запуском стоит проверить значения переменных из раздела vars.

Чтобы завершить настройку потребуется установить suricata-update для обновления и загрузки правил. Сделать это довольно просто:

Дальше нам нужно запустить команду suricata-update для установки набора правил Emerging Threats Open:

Для просмотра списка источников правил выполняем следующую команду:

Обновляем источники правил:

Повторно просматриваем обновленные источники:

При необходимости можно включить доступные бесплатные источники:

После этого необходимо еще раз обновить правила:

На этом установку и первичную настройку Suricata в Ubuntu 18.04 LTS можно считать законченной. Дальше начинается самое интересное: в следующей статье мы подключим виртуальный сервер к офисной сети через VPN и начнем анализировать весь входящий и исходящий трафик. Особое внимание уделим блокированию атак DDoS, активности вредоносного ПО и попыткам эксплуатации уязвимостей в доступных из сетей общего пользования сервисов. Для наглядности будут смоделированы атаки наиболее распространенных типов.

Источник

Adblock
detector