Как установить 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).
Спасибо за чтение, пожалуйста, поделитесь своими отзывами и предложениями в разделе комментариев.