Как установить и настроить Suricata на CentOS 8

Как установить и настроить Suricata на CentOS 8

 

В этом руководстве вы узнаете, как установить и настроить Suricata на CentOS 8. Suricata — это бесплатный механизм обнаружения сетевых угроз с открытым исходным кодом. Он может функционировать как механизм обнаружения вторжений (IDS), встроенная система предотвращения вторжений (IPS), мониторинг сетевой безопасности (NSM), а также как средство автономной обработки pcap. Он работает, проверяя сетевой трафик с помощью правил и сигнатур, а также поддерживает скрипты Lua для обнаружения сложных угроз.

Благодаря способности записывать журналы в форматах YAML и JSON, Suricata может быть интегрирована с другими инструментами, такими как SIEM, Splunk, Logstash / Elasticsearch, Kibana для дальнейшей обработки и визуализации журналов.

Suricata предлагает целый ряд функций. Прочтите о них на странице «Все возможности Suricata» .

Установите и настройте Suricata на CentOS 8

Системные Требования

Что ж, Suricata является многопоточным, поэтому, если у вас достаточно ядер, вы можете использовать их как можно больше. Кроме того, выделите достаточно оперативной памяти.

В этой демонстрации мы выделили 2 виртуальных ЦП и 4 ГБ ОЗУ нашему серверу Suricata.

Установка Suricata на CentOS 8

Существуют различные способы установки Suricata на CentOS 8;

  • Установка Suricata на CentOS 8 из исходного кода
  • Установите Suricata на CentOS 8 из EPEL Repos

Установика Suricata на CentOS 8 из исходного кода

Запустить обновление системы

Обновите свой системный пакет, выполнив команду ниже

dnf update
Установите необходимые инструменты сборки и зависимости

Существует ряд зависимостей пакетов и инструментов сборки, необходимых для успешной сборки и установки Suricata на CentOS 8 из исходного кода.

dnf config-manager --set-enabled PowerTools
dnf install diffutils file-devel gcc jansson-devel make nss-devel libyaml-devel libcap-ng-devel libpcap-devel pcre-devel python3 python3-pyyaml rust-toolset zlib-devel curl wget tar lua lua-devel lz4-devel
Скачать исходный код Suricata

Загрузите исходный код последней стабильной версии Suricata со страницы загрузок Suricata . На момент написания этой статьи Suricata 5.0.3 является последней стабильной версией.

wget https://www.openinfosecfoundation.org/download/suricata-5.0.3.tar.gz -P /tmp
Извлечь исходный код Suricata

После завершения загрузки извлеките исходный код;

cd /tmp
tar xzf suricata-5.0.3.tar.gz
Сборка и установка Suricata на CentOS 8

Перейдите в исходный каталог, соберите и установите Suricata на CentOS 8.

cd suricata-5.0.3

Запустите сценарий настройки, чтобы адаптировать Suricata к системе и убедитесь, что все необходимые зависимости присутствуют.

./configure --sysconfdir=/etc --localstatedir=/var --prefix=/usr/ --enable-lua --enable-geopip

Команда устанавливает Suricata в /usr/bin/suricata, имеет конфигурацию /etc/suricataи используется /var/log/suricataкак каталог журнала.

Дополнительные параметры сборки см ./configure --help. В.

Скомпилируйте и установите правила и конфигурации Suricata.

make
make install-full
...
22/7/2020 -- 21:14:44 - <Info> -- Backing up current rules.
22/7/2020 -- 21:14:44 - <Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 27530; enabled: 20677; added: 27530; removed 0; modified: 0
22/7/2020 -- 21:14:44 - <Info> -- Skipping test, disabled by configuration.
22/7/2020 -- 21:14:44 - <Info> -- Done.

You can now start suricata by running as root something like:
  /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0

If a library like libhtp.so is not found, you can run suricata with:
  LD_LIBRARY_PATH=/usr/lib /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0

The Emerging Threats Open rules are now installed. Rules can be
updated and managed with the suricata-update tool.

For more information please see:
  https://suricata.readthedocs.io/en/latest/rule-management/index.html

make[1]: Leaving directory '/tmp/suricata-5.0.3'

Suricata теперь устанавливается из исходников на CentOS 8.

Установка Suricata на CentOS 8 из EPEL Repos

Для беспроблемной установки Suricata на CentOS 8 использование репозиториев EPEL для установки является верным вариантом.

Установка EPEL Repos на CentOS 8
dnf install epel-release
Установка Suricata из EPEL Repos CentOS 8
dnf info suricata
Available Packages
Name         : suricata
Version      : 5.0.3
Release      : 1.el8
Architecture : x86_64
Size         : 2.3 M
Source       : suricata-5.0.3-1.el8.src.rpm
Repository   : epel
Summary      : Intrusion Detection System
URL          : https://suricata-ids.org/
License      : GPLv2
...

Как видите, репозитории EPEL предоставляют последнюю стабильную версию Suricata.

Затем вы можете установить его, выполнив команду;

dnf install suricata

Правила Сурикаты

Suricata использует различные наборы правил / сигнатуры для обнаружения подходящих угроз и предупреждения о них. Правила также известны как подписи.  Emerging Threats ,  Emerging Threats Pro  и VRT источника пожара  — наиболее часто используемые правила.

В большинстве случаев вы можете найти файлы правил в папке /etc/suricata/rules/. Это когда вы устанавливаете Suricata из репозиториев.

ls /etc/suricata/rules/
app-layer-events.rules  dhcp-events.rules  dns-events.rules  http-events.rules   kerberos-events.rules  nfs-events.rules  smb-events.rules   stream-events.rules
decoder-events.rules    dnp3-events.rules  files.rules       ipsec-events.rules  modbus-events.rules    ntp-events.rules  smtp-events.rules  tls-events.rules

Правила Emergency Threat обычно хранятся как /var/lib/suricata/rules/suricata.rulesSuricata.rules файл обычно содержит все правила , определенные в правилах файл , расположенный под /etc/suricata/rules/.

Чтобы установить и обновить правила Emergency Threat, используйте suricata-updateкоманду.

suricata-update

Это загружается и устанавливается suricata.rules.

Правило / подпись состоит из следующих разделов:

  • Действие , которое определяет , что происходит , когда совпадает с подписью.
  • Заголовок , определяющий протокол, IP — адреса, порты и направление этого правила.
  • Параметры правила , определяющие особенности правила.
alert ip any any -> any any (msg:"SURICATA Applayer Mismatch protocol both directions"; flow:established; app-layer-event:applayer_mismatch_protocol_both_directions; flowint:applayer.anomaly.count,+,1; classtype:protocol-command-decode; sid:2260000; rev:1;)

Подробнее о введении в правила Suricata .

Базовая настройка Suricata

/etc/suricata/suricata.yaml это файл конфигурации Suricata по умолчанию.

Файл конфигурации содержит множество настраиваемых параметров. Однако для нашей базовой настройки мы сосредоточимся только на сетевом интерфейсе, который прослушивает Suricata, и IP-адресе, прикрепленном к этому интерфейсу.

Чтобы найти интерфейс и IP-адрес, выполните команду ниже;

ip --brief add
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp0s3           UP             10.0.2.15/24 
enp0s8           UP             192.168.56.133/24 fe80::12c8:9a8a:6d1:deaf/64

В нашем случае наш интерфейс — enp0s8, а IP-адрес — 192.168.56.133.

Откройте и отредактируйте файл конфигурации Suricata.

vim /etc/suricata/suricata.yaml

В разделе vars вам необходимо настроить Suricata, чтобы различать вашу внутреннюю сеть, которую необходимо защитить, и внешнюю сеть. Это может быть сделано путем определения правильных значений для  HOME_NET и  EXTERNAL_NET переменных соответственно при адресных группах.

HOME_NETПеременная должна включать в себя IP — адрес интерфейса , на котором Suricata прослушивает и все локальные сети для защиты.

Эти EXTERNAL_NET переменные должны определить любой IP или сети , которая не является локальным.

...
vars:
  # more specific is better for alert accuracy and performance
  address-groups:
    #HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"
    HOME_NET: "[192.168.56.133]"
    #HOME_NET: "[192.168.0.0/16]"
    #HOME_NET: "[10.0.0.0/8]"
    #HOME_NET: "[172.16.0.0/12]"
    #HOME_NET: "any"

    EXTERNAL_NET: "!$HOME_NET"
...

В af-packetразделе установите значение интерфейса для вашего имени интерфейса.

...
# Linux high speed capture support
af-packet:
  - interface: enp0s8
...

Сохраните и выйдите из файла конфигурации.

Укажите правила Suricata

Определите файлы правил Suricata для использования. В этой демонстрации мы используем правила ET по умолчанию;

...
default-rule-path: /var/lib/suricata/rules

rule-files:
  - suricata.rules
...

Отключить разгрузку пакетов

Отключите разгрузку пакетов Suricata, отключив интерфейс Large Receive Offload (LRO) / Generic Receive Offload (GRO);

ethtool -K <interface> gro off lro off

Замените <interface>своим интерфейсом.

Сначала проверьте, включены ли эти функции;

ethtool -k enp0s8 | grep -iE "generic|large"
	tx-checksum-ip-generic: on
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off [fixed]

Если включено, отключите, выполнив команду ниже;

ethtool -K enp0s8 gro off lro off

Запуск Suricata

Suricata может управляться сервисом systemd.

Прежде чем вы сможете запустить его, вам необходимо указать интерфейс, который он прослушивает, в /etc/sysconfig/suricataфайле конфигурации.

vim /etc/sysconfig/suricata
...

# Add options to be passed to the daemon
#OPTIONS="-i eth0 --user suricata "
OPTIONS="-i enp0s8 --user suricata "

Сохраните и выйдите из файла,

Запустите и включите Suricata для запуска при загрузке в CentOS 8.

systemctl enable --now suricata

Вы можете проверить статус;

systemctl status suricata
● suricata.service - Suricata Intrusion Detection Service
   Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-07-23 16:50:34 EAT; 29s ago
     Docs: man:suricata(1)
  Process: 19153 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS)
 Main PID: 19154 (Suricata-Main)
    Tasks: 7 (limit: 5027)
   Memory: 387.6M
   CGroup: /system.slice/suricata.service
           └─19154 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i enp0s8 --user suricata

Jul 23 16:50:34 ceph-admin.kifarunix-demo.com systemd[1]: Starting Suricata Intrusion Detection Service...
Jul 23 16:50:34 ceph-admin.kifarunix-demo.com systemd[1]: Started Suricata Intrusion Detection Service.
Jul 23 16:50:34 ceph-admin.kifarunix-demo.com suricata[19154]: 23/7/2020 -- 16:50:34 - <Notice> - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode
Jul 23 16:50:42 ceph-admin.kifarunix-demo.com suricata[19154]: 23/7/2020 -- 16:50:42 - <Notice> - all 1 packet processing threads, 4 management threads initialized, 

Обратите внимание, что вместо использования службы s systemd, описанной выше, вы можете запустить Suricata с помощью простой команды;

suricata -D -c /etc/suricata/suricata.yaml -i enp0s8

Лесозаготовка Suricata;

Чтобы проверить, запущена ли Suricata, проверьте журнал Suricata:

tail /var/log/suricata/suricata.log

Вы должны увидеть такую ​​линию;

...
23/7/2020 -- 16:50:42 - - all 1 packet processing threads, 4 management threads initialized, engine started.

Проверить статистику Suricata;

tail -f /var/log/suricata/stats.log

Чтобы проверить журналы предупреждений Suricata;

tail -f /var/log/suricata/fast.log

Suricata также может писать журналы в выводе EVE Json. Файл журнала по умолчанию:

tail -f /var/log/suricata/eve.json

Тестирование правил Suricata

В этой демонстрации мы используем правила ET Suricata по умолчанию. Если вы создали свои собственные правила, обязательно проверьте правила Suricata на наличие синтаксических ошибок;

suricata -c /etc/suricata/suricata.yaml -T -v
23/7/2020 -- 17:44:10 - - Running suricata under test mode
23/7/2020 -- 17:44:10 - - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode
23/7/2020 -- 17:44:10 - - CPUs/cores online: 1
23/7/2020 -- 17:44:10 - - fast output device (regular) initialized: fast.log
23/7/2020 -- 17:44:10 - - eve-log output device (regular) initialized: eve.json
23/7/2020 -- 17:44:10 - - stats output device (regular) initialized: stats.log
23/7/2020 -- 17:44:12 - - 1 rule files processed. 20676 rules successfully loaded, 0 rules failed
23/7/2020 -- 17:44:12 - - Threshold config parsed: 0 rule(s) found
23/7/2020 -- 17:44:12 - - 20679 signatures processed. 1138 are IP-only rules, 3987 are inspecting packet payload, 15324 inspect application layer, 103 are decoder event only
23/7/2020 -- 17:44:25 - - Configuration provided was successfully loaded. Exiting.
23/7/2020 -- 17:44:25 - - cleaning up signature grouping structure… complete

Затем перезапустите Suricata;

systemctl restart suricata

Выполните тестовую атаку SSH DDoS

В другой системе установите инструмент hping3 и выполните тестовую атаку SSH DDoS.

dnf install hping3

Затем атакуйте SSH на сервере с Suricata

hping3 -S -p 22 --flood --rand-source 192.168.56.133

Обратитесь к man hping3.

Во время работы hping следите за журналами предупреждений на сервере Suricata;

tail -f /var/log/suricata/fast.log

Вы должны увидеть такие строки журнала;

...
07/24/2020-21:43:02.613445 [] [1:2400000:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 1 [] [Classification: Misc Attack] [Priority: 2] {TCP} 42.163.214.132:4391 -> 192.168.56.133:22
07/24/2020-21:43:02.751133 [] [1:2400007:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 8 [] [Classification: Misc Attack] [Priority: 2] {TCP} 122.8.52.209:11845 -> 192.168.56.133:22
07/24/2020-21:43:02.800769 [] [1:2400012:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 13 [] [Classification: Misc Attack] [Priority: 2] {TCP} 160.184.221.156:15315 -> 192.168.56.133:22
07/24/2020-21:43:02.801827 [] [1:2400009:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 10 [] [Classification: Misc Attack] [Priority: 2] {TCP} 139.81.59.221:15607 -> 192.168.56.133:22
07/24/2020-21:43:02.802528 [] [1:2400013:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 14 [] [Classification: Misc Attack] [Priority: 2] {TCP} 163.198.206.175:15818 -> 192.168.56.133:22
07/24/2020-21:43:02.803033 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.194.135.87:15970 -> 192.168.56.133:22
07/24/2020-21:43:02.803268 [] [1:2400006:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 7 [] [Classification: Misc Attack] [Priority: 2] {TCP} 110.41.189.155:16042 -> 192.168.56.133:22
07/24/2020-21:43:02.803548 [] [1:2400009:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 10 [] [Classification: Misc Attack] [Priority: 2] {TCP} 143.135.26.50:16131 -> 192.168.56.133:22
07/24/2020-21:43:02.870288 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.194.107.110:19140 -> 192.168.56.133:22
07/24/2020-21:43:02.871212 [] [1:2400003:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 4 [] [Classification: Misc Attack] [Priority: 2] {TCP} 101.194.46.143:19453 -> 192.168.56.133:22
07/24/2020-21:43:02.871608 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.16.182.33:19588 -> 192.168.56.133:22
...

С помощью этого простого теста мы видим, что Suricata настроена и работает нормально с использованием правил Emergency Threat по умолчанию.

На этом заканчивается наше руководство по установке и настройке Suricata на CentOS 8.

Ссылка

Подробнее читайте в Руководстве пользователя Suricata .

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

одиннадцать − 9 =

Прокрутить вверх