Как установить Snort в Ubuntu 20.04 | Ubuntu 18.08

snort logo

Как установить Snort в Ubuntu 20.04 | Ubuntu 18.08

 

Snort — это облегченная сетевая система предотвращения вторжений с открытым исходным кодом для запуска системы обнаружения сетевых вторжений (NIDS). Snort используется для отслеживания пакетных данных, отправленных / полученных через определенный сетевой интерфейс. Системы обнаружения сетевых вторжений могут улавливать угрозы, нацеленные на слабые места и уязвимости вашей системы, с помощью технологий обнаружения на основе сигнатур и анализа протоколов.

Когда программное обеспечение NIDS установлено и настроено правильно, оно может идентифицировать различные виды атак и подозрения, такие как атаки CGI, нарушения сетевой политики, зонды SMB, заражение вредоносным ПО, скомпрометированная система, скрытое сканирование портов и т. Д.

В этом руководстве мы узнаем, как установить Snort 3 на Ubuntu 20.04 .

Некоторые из новых функций Snort 3:

  • Поддержка нескольких потоков обработки пакетов
  • Позволяет обрабатывать несколько пакетов
  • Автоматически создавать справочную документацию
  • Используйте простую конфигурацию с возможностью сценария
  • Сделайте ключевые компоненты подключаемыми
  • Позволяет пользователям писать свои собственные плагины
  • Общая конфигурация и таблица атрибутов
  • Позволяет правилам выполняться быстрее

Шаг 1. Обновите систему

Сначала обновите и обновите свою систему Ubuntu

sudo apt update
sudo apt upgrade

Шаг 2. Установите необходимые зависимости

В репозитории Ubuntu по умолчанию есть пакет snort. Доступный пакет snort — это старая версия. Чтобы установить Snort 3, нам нужно выполнить сборку из исходников. Перед установкой Snort 3 нам нужно установить необходимые компоненты и библиотеки.

Установите пакеты зависимостей Snort 3 с помощью следующей команды:

sudo apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev

После установки зависимостей создайте каталог, в котором вы компилируете и храните исходные файлы для Snort, с помощью следующей команды:

mkdir snort-source-files cd snort-source-files

Затем загрузите и установите последнюю версию библиотеки сбора данных Snort (LibDAQ). Для установки LibDAQ нам необходимо собрать и установить его из исходного кода с помощью следующей команды.

git clone https://github.com/snort3/libdaq.git cd libdaq ./bootstrap ./configure make
make install

Следующая зависимость — Tcmalloc, которая оптимизирует распределение памяти и обеспечивает лучшее использование памяти.

Установите Tcmalloc с помощью следующей команды.

cd ../
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9/gperftools-2.9.tar.gz tar xzf gperftools-2.9.tar.gz 
cd gperftools-2.9/ ./configure make 
make install

Шаг 3. Установите Snort 3 в Ubuntu 20.04.

После настройки зависимостей мы собираемся загрузить и установить Snort 3 на Ubuntu 20.04.

01. Официальный репозиторий Clone Snort 3 на GitHub.

cd ../
git clone git://github.com/snortadmin/snort3.git

02. Измените каталог на Snort3.

cd snort3/

03. Оттуда настройте и включите tcmalloc с помощью следующей команды.

./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc

04. Перейдите в каталог сборки, скомпилируйте и установите Snort 3 с помощью make и make install с помощью следующей команды.

cd build
make 
make install

05. По окончании установки обновите разделяемые библиотеки.

sudo ldconfig

Snort по умолчанию устанавливается в каталог /usr/local/bin/snort, рекомендуется создать символическую ссылку для /usr/sbin/snort.

sudo ln -s /usr/local/bin/snort /usr/sbin/snort

06. Проверьте установку Snort 3.

snort -V

Вывод:

,,_     -> Snort++ <-
   o"  )~   Version 3.1.10.0
    ''''    By Martin Roesch & The Snort Team
            http://snort.org/contact#team
            Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved.
            Copyright (C) 1998-2013 Sourcefire, Inc., et al.
            Using DAQ version 3.0.4
            Using LuaJIT version 2.1.0-beta3
            Using OpenSSL 1.1.1f  31 Mar 2020
            Using libpcap version 1.9.1 (with TPACKET_V3)
            Using PCRE version 8.39 2016-06-14
            Using ZLIB version 1.2.11
            Using LZMA version 5.2.4

Если вы видите аналогичный результат, значит Snort 3 успешно установлен.

Настроить карты сетевого интерфейса

Найдите интерфейс, на котором Snort прослушивает сетевой трафик, и включите неразборчивый режим, чтобы иметь возможность видеть весь отправляемый ему сетевой трафик.

ip link set dev eh0 promisc on

Проверьте с помощью следующей команды.

ip add sh eth0

Вывод:

2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER UP> mtu 1500 qdisc mq state UP group default qlen 1000
     link/ether f2:3c:92:ed:7e:d8 brd ff:ff:ff:ff:ff:ff
     inet 74.207.230.186/24 brd 74.207.230.255 scope global dynamic eth0
        valid_lft 72073sec preferred_lft 72073sec
     inet6 2600:3c02::f03c:92ff:feed:7ed8/64 scope global dynamic mngtmpaddr noprefixroute 
        valid_lft 60sec preferred_lft 20sec
     inet6 fe80::f03c:92ff:feed:7ed8/64 scope link 
        valid_lft forever preferred_lft forever

Затем отключите разгрузку интерфейса, чтобы Snort 3 не усекал большие пакеты, не более 1518 байт. Проверьте, включена ли эта функция, с помощью следующей команды.

ethtool -k eth0 | grep receive-offload

Если вы видите этот вывод, значит, GRO включен, в то время как LRO зафиксирован или LRO включен.

Вывод.

generic-receive-offload: on
large-receive-offload: on

Отключите его с помощью следующей команды.

ethtool -K eth0 gro off lro off

Два гарантируют, что изменения сохранятся при перезагрузке системы, нам нужно создать и включить служебный модуль systemd для реализации изменений.

sudo nano /etc/systemd/system/snort3-nic.service

Вставьте следующую конфигурацию, которая указывает на ваш сетевой интерфейс.

[Unit] Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev eth0 promisc on
ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off 
TimeoutStartSec=0 
RemainAfterExit=yes

[Install]
WantedBy=default.target

Перезагрузите настройки конфигурации systemd:

sudo systemctl daemon-reload

Запустите и включите службу при загрузке с помощью следующей команды:

sudo systemctl enable --now snort3-nic.service

Вывод.

Created symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.

Проверьте snort3-nic.service с помощью:

sudo systemctl status snort3-nic.service

Вывод.

● snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
      Loaded: loaded (/etc/systemd/system/snort3-nic.service; enabled; vendor preset: enabled)
      Active: active (exited) since Sat 2021-09-18 12:35:17 UTC; 4min 59s ago
     Process: 182782 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0>
     Process: 182783 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0>
    Main PID: 182783 (code=exited, status=0/SUCCESS)
 Sep 18 12:35:17 li72-186 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable >
 Sep 18 12:35:17 li72-186 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable >

Установить набор правил сообщества Snort 3

В Snort наборы правил являются основным преимуществом механизма обнаружения вторжений. Существует три типа правил Snort: правила сообщества, зарегистрированные правила, правила подписчика. Правила сообщества представлены сообществом разработчиков ПО с открытым исходным кодом или интеграторами snort.

Мы собираемся показать, как установить Правила сообщества.

Сначала создайте каталог для правил в /usr/local/etc/snort

mkdir /usr/local/etc/rules

Скачайте правила сообщества Snort 3. Вы можете найти его на официальной странице загрузки Snort3 .

wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz

Извлеките загруженные правила и поместите их в ранее созданный каталог /usr/local/etc/rules/

tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/

Snort 3 включает два основных файла конфигурации, snort_defaults.lua и snort.lua .

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

В snort_defaults.lua файлы содержат значения по умолчанию , такие как пути к правилам, AppID, спискам разведки и сетевым переменным.

Когда файлы правил будут извлечены и размещены, мы собираемся настроить один из этих файлов конфигурации под названием snort.lua. Откройте файл любимым редактором и увидите что-то похожее на конфиг.

... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting HOME_NET = 'server_public_IP/32' -- set up the external network addresses. -- (leave as "any" in most situations) EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ... 

Задайте сеть, которую вы хотите защитить от атак, в качестве значения переменной HOME_NET и укажите переменную EXTERNAL_NET на переменную HOME_NET .

Сохранить и выйти.

Вы также можете отредактировать настройки Snort по умолчанию в /usr/local/etc/snort/snort_defaults.lua, а в разделе IPS вы можете определить местоположение ваших правил.

ips =  {     
-- use this to enable decoder and inspector alerts     
--enable_builtin_rules = true,     

-- use include for rules files; be sure to set your path     
-- note that rules files can include other rules files     
include = '/usr/local/etc/rules/snort3-community-rules/snort3-community.rules'  }  ...

Сохранить и выйти.

Запуск Snort как службы

Если вы собираетесь запускать Snort как сервисный демон в фоновом режиме, также можно создать сервисный модуль systemd для Snort. Разумно запускать его от имени непривилегированного пользователя системы.

Создайте системную учетную запись пользователя без входа в систему.

sudo useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort

Затем создайте служебный модуль systemd для Snort, который будет запускаться от имени пользователя snort. Отрегулируйте и сопоставьте с вашим сетевым интерфейсом.

sudo nano /etc/systemd/system/snort3.service

Вставьте следующую конфигурацию.

[Unit] Description=Snort 3 NIDS Daemon After=syslog.target network.target [Service] Type=simple ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eht0 -m 0x1b -u snort -g snort [Install] WantedBy=multi-user.target

Перезагрузите конфигурацию systemd.

sudo systemctl daemon-reload

Установите владельца и разрешения для файла журнала.

sudo chmod -R 5775 /var/log/snort
sudo chown -R snort:snort /var/log/snort

Запустите и включите Snort для запуска при загрузке системы:

sudo systemctl enable --now snort3

Проверьте статус службы, чтобы убедиться, что она запущена.

sudo systemctl status snort3

Вывод.

● snort3.service - Snort 3 NIDS Daemon
      Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
      Active: active (running) since Sat 2021-09-18 12:44:32 UTC; 6s ago
    Main PID: 182886 (snort)
       Tasks: 2 (limit: 1071)
      Memory: 62.6M
      CGroup: /system.slice/snort3.service
              └─182886 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none >
 Sep 18 12:44:32 li72-186 systemd[1]: Started Snort 3 NIDS Daemon.

Заключение

В этом руководстве рассказывается, как установить систему обнаружения вторжений в сеть Snort 3 на Ubuntu 20.04.

Linux не на 100% защищен от вирусов и подозрительных вещей, всегда лучше установить какой-нибудь инструмент и быть уверенным, что никто не пытается сделать что-то подозрительное на вашем устройстве и в сети. Другие альтернативы Snort, которые вы можете изучить: Ossec, Palo Alto Networks Next-Generation Firewall, Next-Generation Intrusion Prevention System (NGIPS).

Спасибо за чтение, пожалуйста, поделитесь своими отзывами и предложениями в разделе комментариев.

Author: forgero