Как установить Suricata IDS на Ubuntu 22.04
На этой странице
- Требования
- Начало работы
- Установить Suricata из исходного кода
- Установите Suricata из репозитория Ubuntu
- Настроить Suricata
- Подтвердить Suricata
- Заключение
Suricata — это бесплатное программное обеспечение для сетевого анализа и обнаружения угроз с открытым исходным кодом, разработанное OSIF. Может использоваться как система обнаружения вторжений (IDS) и система предотвращения вторжений (IPS). Он использует набор правил и язык подписи для обнаружения и предотвращения угроз. Это альтернатива Snort, которая может дать отличное представление о том, что происходит в вашей сети с точки зрения безопасности.
В этом уроке я покажу вам, как установить Suricata на сервер Ubuntu 22.04.
Требования
- Сервер под управлением Ubuntu 22.04.
- На вашем сервере настроен пароль root.
Начиная
Перед запуском рекомендуется обновить системные пакеты до последней версии. Вы можете обновить их все, выполнив следующую команду:
apt update -y
apt upgrade -y
После обновления всех пакетов выполните следующую команду, чтобы установить все необходимые зависимости:
apt 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 libnspr4-dev libnss3-dev liblz4-dev rustc cargo python3-pip python3-distutils
apt install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0
Как только вы закончите, вы можете перейти к следующему шагу.
Установите Suricata из исходного кода
Сначала загрузите последнюю версию Suricata с помощью следующей команды:
wget https://www.openinfosecfoundation.org/download/suricata-6.0.8.tar.gz
После завершения загрузки извлеките загруженный файл с помощью следующей команды:
tar xzf suricata-6.0.8.tar.gz
Затем перейдите в извлеченный каталог и настройте его с помощью следующей команды:
cd suricata-6.0.8
./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
Вы получите следующий вывод:
Host: x86_64-pc-linux-gnu Compiler: gcc (exec name) / g++ (real) GCC Protect enabled: no GCC march native enabled: yes GCC Profile enabled: no Position Independent Executable enabled: no CFLAGS -g -O2 -std=c11 -march=native -I${srcdir}/../rust/gen -I${srcdir}/../rust/dist PCAP_CFLAGS -I/usr/include SECCFLAGS To build and install run 'make' and 'make install'. You can run 'make install-conf' if you want to install initial configuration files to /etc/suricata/. Running 'make install-full' will install configuration and rules and provide you a ready-to-run suricata. To install Suricata into /usr/bin/suricata, have the config in /etc/suricata and use /var/log/suricata as log dir, use: ./configure --prefix=/usr/ --sysconfdir=/etc/ --localstatedir=/var/
Затем установите Suricata с помощью следующей команды:
make
make install-full
Вы получите следующий вывод:
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 '/root/suricata-6.0.8'
Установите Suricata из репозитория Ubuntu
Вы также можете установить Suricata из репозитория Ubuntu. Сначала установите все зависимости с помощью следующей команды:
apt install gnupg2 software-properties-common curl wget git unzip -y
Затем добавьте репозиторий Suricata с помощью следующей команды:
add-apt-repository ppa:oisf/suricata-stable --yes
Затем обновите кэш репозитория с помощью следующей команды:
apt update
Затем проверьте пакет Suricata с помощью следующей команды:
apt-cache policy suricata
Вы получите следующий вывод:
suricata: Installed: (none) Candidate: 1:6.0.4-3 Version table: 1:6.0.4-3 500 500 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
Наконец, установите Suricata с помощью следующей команды:
apt install suricata jq
Теперь вы можете проверить информацию о пакете Suricata, используя следующую команду:
suricata --build-info
Вы должны получить следующий результат:
This is Suricata version 6.0.8 RELEASE Features: NFQ PCAP_SET_BUFF AF_PACKET HAVE_PACKET_FANOUT LIBCAP_NG LIBNET1.1 HAVE_HTP_URI_NORMALIZE_HOOK PCRE_JIT HAVE_NSS HAVE_LIBJANSSON TLS TLS_C11 MAGIC RUST SIMD support: SSE_3 Atomic intrinsics: 1 2 4 8 16 byte(s) 64-bits, Little-endian architecture GCC version 11.2.0, C version 201112 compiled with _FORTIFY_SOURCE=2 L1 cache line size (CLS)=64 thread local storage method: _Thread_local compiled with LibHTP v0.5.41, linked against LibHTP v0.5.41 Suricata Configuration: AF_PACKET support: yes eBPF support: no XDP support: no PF_RING support: no NFQueue support: yes NFLOG support: no IPFW support: no Netmap support: no DAG enabled: no Napatech enabled: no WinDivert enabled: no Unix socket enabled: yes Detection enabled: yes
Настроить Суриката
Затем отредактируйте файл конфигурации Suricata и определите свой сетевой интерфейс и сеть:
nano /etc/suricata/suricata.yaml
Измените следующие строки:
HOME_NET: "[10.0.2.0/24]" EXTERNAL_NET: "!$HOME_NET" af-packet: - interface: eth0 # - sip sip: enabled: no
Сохраните и закройте файл, затем обновите конфигурацию Suricata с помощью следующей команды:
suricata-update
Затем проверьте файл конфигурации Suricata с помощью следующей команды:
suricata -T -c /etc/suricata/suricata.yaml -v
Вы получите следующий вывод:
18/10/2022 -- 13:45:14 -- fast output device (regular) initialized: fast.log 18/10/2022 -- 13:45:14 - - eve-log output device (regular) initialized: eve.json 18/10/2022 -- 13:45:14 - - stats output device (regular) initialized: stats.log 18/10/2022 -- 13:45:14 - - SSSE3 support not detected, disabling Hyperscan for SPM 18/10/2022 -- 13:45:16 - - 1 rule files processed. 28624 rules successfully loaded, 0 rules failed 18/10/2022 -- 13:45:16 - - Threshold config parsed: 0 rule(s) found 18/10/2022 -- 13:45:16 - - 28627 signatures processed. 1219 are IP-only rules, 5166 are inspecting packet payload, 22038 inspect application layer, 108 are decoder event only 18/10/2022 -- 13:45:19 - - Configuration provided was successfully loaded. Exiting. 18/10/2022 -- 13:45:19 - - cleaning up signature grouping structure... complete
Затем запустите и включите службу Suricata с помощью следующей команды:
systemctl enable --now suricata
Вы также можете проверить сервис Suricata с помощью следующей команды:
systemctl status suricata
Вы должны увидеть следующий вывод:
? suricata.service - LSB: Next Generation IDS/IPS Loaded: loaded (/etc/init.d/suricata; generated) Active: active (running) since Tue 2022-10-18 13:38:52 UTC; 6min ago Docs: man:systemd-sysv-generator(8) Process: 16504 ExecStart=/etc/init.d/suricata start (code=exited, status=0/SUCCESS) Tasks: 7 (limit: 2242) Memory: 40.0M CPU: 4.073s CGroup: /system.slice/suricata.service ??16514 /usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid --af-packet -D -vvv Oct 18 13:38:52 ubuntu2204 systemd[1]: Starting LSB: Next Generation IDS/IPS... Oct 18 13:38:52 ubuntu2204 suricata[16504]: Starting suricata in IDS (af-packet) mode... done. Oct 18 13:38:52 ubuntu2204 systemd[1]: Started LSB: Next Generation IDS/IPS.
Вы также можете увидеть различные режимы работы, используя следующую команду:
suricata --list-runmodes
Вы получите следующий вывод:
------------------------------------- Runmodes ------------------------------------------ | RunMode Type | Custom Mode | Description |---------------------------------------------------------------------------------------- | PCAP_DEV | single | Single threaded pcap live mode | --------------------------------------------------------------------- | | autofp | Multi threaded pcap live mode. Packets from each flow are assigned to a single detect thread, unlike "pcap_live_auto" where packets from the same flow can be processed by any detect thread | --------------------------------------------------------------------- | | workers | Workers pcap live mode, each thread does all tasks from acquisition to logging |---------------------------------------------------------------------------------------- | PCAP_FILE | single | Single threaded pcap file mode | --------------------------------------------------------------------- | | autofp | Multi threaded pcap file mode. Packets from each flow are assigned to a single detect thread, unlike "pcap-file-auto" where packets from the same flow can be processed by any detect thread |---------------------------------------------------------------------------------------- | PFRING(DISABLED) | autofp | Multi threaded pfring mode. Packets from each flow are assigned to a single detect thread, unlike "pfring_auto" where packets from the same flow can be processed by any detect thread | --------------------------------------------------------------------- | | single | Single threaded pfring mode | --------------------------------------------------------------------- | | workers | Workers pfring mode, each thread does all tasks from acquisition to logging |----------------------------------------------------------------------------------------
Подтвердить Суриката
Перед проверкой Suricata вам необходимо отключить функции разгрузки пакетов на сетевом интерфейсе.
Вы можете отключить его с помощью следующей команды:
ethtool -K eth0 gro off lro off
Затем остановите Suricata с помощью следующей команды:
systemctl stop suricata
rm -rf /var/run/suricata.pid
Затем запустите Suricata вручную, используя следующую команду:
suricata -D -c /etc/suricata/suricata.yaml -i eth0
Затем войдите в удаленную систему и запустите команду hping3, чтобы выполнить простую DDoS-атаку на сервер Suricata:
hping3 -S -p 80 --flood --rand-source suricata-ip -I eth0 -c 50
Затем вернитесь на сервер Suricata и проверьте файл журнала Suricata:
tail -f /var/log/suricata/fast.log
Вы должны увидеть следующий вывод:
10/18/2022-14:01:38.569298 [**] [1:2210008:2] SURICATA STREAM 3way handshake SYN resend different seq on SYN recv [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 157.32.37.21:59188 -> 209.23.10.188:80 10/18/2022-14:01:38.569304 [**] [1:2210004:2] SURICATA STREAM 3way handshake SYNACK resend with different ack [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 209.23.10.188:80 -> 157.32.37.21:59188 10/18/2022-14:01:38.569649 [**] [1:2210008:2] SURICATA STREAM 3way handshake SYN resend different seq on SYN recv [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 157.32.37.21:53343 -> 209.23.10.188:80 10/18/2022-14:01:38.569655 [**] [1:2210004:2] SURICATA STREAM 3way handshake SYNACK resend with different ack [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 209.23.10.188:80 -> 157.32.37.21:53343 10/18/2022-14:01:38.570762 [**] [1:2210008:2] SURICATA STREAM 3way handshake SYN resend different seq on SYN recv [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 157.32.37.21:62070 -> 209.23.10.188:80 10/18/2022-14:01:38.570770 [**] [1:2210004:2] SURICATA STREAM 3way handshake SYNACK resend with different ack [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 209.23.10.188:80 -> 157.32.37.21:62070 10/18/2022-14:01:38.571748 [**] [1:2210008:2] SURICATA STREAM 3way handshake SYN resend different seq on SYN recv [**] [Classification: Generic Protocol Command Decode] [Priority: 3] {TCP} 157.32.37.21:5001 -> 209.23.10.188:80
Заключение
В этом посте вы узнали, как установить Suricata на Ubuntu 22.04. Теперь вы можете внедрить Suricata в своей организации для защиты серверов от DDoS-атак. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.