Поиск по сайту:

Как установить Suricata IDS на Ubuntu 22.04


На этой странице

  1. Требования
  2. Начало работы
  3. Установить Suricata из исходного кода
  4. Установите Suricata из репозитория Ubuntu
  5. Настроить Suricata
  6. Подтвердить Suricata
  7. Заключение

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-атак. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.