Как установить и настроить 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.rules
. Suricata.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 .