Snort - популярный выбор для запуска систем обнаружения сетевых вторжений или сокращенно NIDS. Она отслеживает пакетные данные, отправленные и полученные через определенный сетевой интерфейс. NIDS может отлавливать угрозы, направленные на уязвимые места вашей системы, используя технологии обнаружения на основе сигнатур и анализа протоколов. Программное обеспечение NIDS, если оно установлено и настроено должным образом, может выявлять новейшие атаки, заражения вредоносным ПО, взломанные системы и нарушения сетевой политики. В этом руководстве вы найдёте инструкции по установке Snort в Debian 11.
Snort - одна из наиболее часто используемых сетевых IDS. Он легкий, с открытым исходным кодом, доступен на множестве платформ и может быть удобно установлен даже на самых маленьких экземплярах облачных серверов. Хотя Snort способен на гораздо большее, чем просто мониторинг сети, в этом руководстве показано, как настроить и запустить Snort в режиме NIDS с базовой настройкой, которую впоследствии можно расширить по мере необходимости.
Подготовка вашего сервера
Установка базовой конфигурации Snort на Debian довольно проста, но требует нескольких шагов. Сначала вам нужно установить всё необходимое программное обеспечение, чтобы подготовить ваш облачный сервер к установке самого Snort. Установите необходимые библиотеки с помощью следующей команды.
1 2 3 4 | sudo apt install -y gcc libpcre3-dev zlib1g-dev libpcap-dev \ openssl libssl-dev libnghttp2-dev libdumbnet-dev bison flex g++ \ autoconf libtool make cmake hwloc libhwloc-dev libluajit-5.1-dev \ liblzma-dev |
Когда все предварительные условия выполнены, переходим к установке Snort в Debian 11. Snort можно загрузить и установить вручную из исходного кода. Ниже вы найдете инструкции, как это сделать.
Установка Snort из исходного кода
Установка Snort на Debian из исходного кода состоит из нескольких шагов: загрузка кода, его настройка, компиляция кода, установка в соответствующий каталог и, наконец, настройка правил обнаружения.
Начните с создания временной папки загрузки в вашем домашнем каталоге, а затем перейдите в неё с помощью команды ниже.
1 | mkdir ~/snort_src && cd ~/snort_src |
Сам Snort использует нечто под названием Data Acquisition library (DAQ) для осуществления абстрактных вызовов библиотек захвата пакетов. Загрузите последнюю версию исходного пакета DAQ с сайта Snort с помощью команды wget, либо с нашего зеркала:
1 | wget https://mirror.g-soft.info/snort/libdaq-3.0.11.tar.gz |
Замените номер версии в команде, если доступна более новый версия.
Загрузка займет всего несколько секунд. После завершения извлеките исходный код и перейдите в новый каталог с помощью следующих команд.
1 2 | tar -xvzf libdaq-*.tar.gz cd libdaq-*/ |
Последняя версия требует дополнительного шага для автоматической реконфигурации DAQ перед запуском конфигурации. Используйте приведенную ниже команду, которая требует, чтобы у вас были установлены autoconf и libtool.
1 | autoreconf -f -i |
После этого запустите сценарий конфигурации, используя его значения по умолчанию, затем скомпилируйте программу с помощью make и, наконец, установите DAQ.
1 2 3 4 | ./bootstrap ./configure make -j $(nproc) sudo make install |
После установки DAQ вы можете приступить к работе с Snort, для этого вернитесь в папку загрузки.
1 | cd ~/snort_src |
Затем загрузите исходный код Snort с помощью wget. Номер последней версии вы можете найти на странице загрузки Snort. При необходимости замените его в следующей команде.
1 | wget https://mirror.g-soft.info/snort/snort3-3.1.57.0.tar.gz |
После завершения загрузки извлеките исходный код и измените его в новом каталоге с помощью следующих команд.
1 2 | tar -xvzf snort3-*.tar.gz cd snort3-*/ |
Затем настройте установку запустите make и make install.
1 2 3 4 | ./configure_cmake.sh cd build make -j $(nproc) sudo make install |
После этого продолжите ниже о том, как настроить конфигурационные файлы.
Настройка Snort для работы в режиме NIDS
Далее вам нужно будет настроить Snort для вашей системы. Это включает в себя редактирование некоторых конфигурационных файлов, загрузку правил, которым будет следовать Snort, и пробный запуск Snort.
Начните с обновления общих библиотек с помощью следующей команды.
1 | sudo ldconfig |
Настройка сетевого интерфейса
Замените ens36 на имя вашего сетевого интерфейса
Вам нужно будет установить сетевой интерфейс в неразборчивом режиме, чтобы он мог видеть весь отправляемый на него сетевой трафик.
Вы можете установить его с помощью следующей команды:
1 | sudo ip link set dev ens36 promisc on |
Теперь вы можете проверить это с помощью следующей команды:
1 | sudo ip add sh ens36 |
Далее вам также необходимо отключить разгрузку интерфейса. Сначала проверьте, включена ли эта функция, используя следующую команду:
1 | sudo ethtool -k ens36 | grep receive-offload |
Теперь вы можете отключить его с помощью следующей команды:
1 | ethtool -K ens36 gro off lro off |
Создайте служебный файл Systemd для сетевой карты Snort
Далее вам нужно будет создать служебный файл systemd для сетевой карты Snort.
1 | sudo nano /etc/systemd/system/snort3-nic.service |
Добавьте следующие строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [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 ens36 promisc on ExecStart=/usr/sbin/ethtool -K ens36 gro off lro off TimeoutStartSec=0 RemainAfterExit=yes [Install] WantedBy=default.target |
Замените ens36 - на имя используемого сетевого интерфейса
Сохраните и закройте файл, затем перезагрузите демон systemd, чтобы применить изменения:
1 | sudo systemctl daemon-reload |
Затем запустите и включите Snort с помощью следующей команды:
1 2 | sudo systemctl start snort3-nic.service sudo systemctl enable snort3-nic.service |
Вы можете проверить состояние Snort с помощью следующей команды:
1 | systemctl status snort3-nic.service |
Установить правила Snort
Правила очень важны для механизма обнаружения вторжений Snorts. Сначала создайте каталог для хранения всех правил:
1 2 | sudo mkdir -p /usr/local/etc/rules sudo mkdir -p /usr/local/etc/snort/ |
Затем скопируйте файлы конфигурации из папки загрузки.
1 2 | sudo cp ~/snort_src/snort3-*/lua/*.lua /usr/local/etc/snort/ sudo cp ~/snort_src/snort3-*/lua/*.rules /usr/local/etc/snort/ |
Загрузите правила сообщества с помощью следующей команды:
1 | wget -qO- https://www.snort.org/downloads/community/snort3-community-rules.tar.gz | tar xz -C /usr/local/etc/rules/ |
или
1 | wget -qO- https://mirror.g-soft.info/snort/snort3-community-rules.tar.gz | sudo tar xz -C /usr/local/etc/rules/ |
Затем отредактируйте основной файл конфигурации Snort:
1 | sudo nano /usr/local/etc/snort/snort.lua |
Определите свою сеть, как показано ниже:
1 2 | HOME_NET = '192.168.1.0/24' EXTERNAL_NET = '!$HOME_NET' |
Затем укажите путь к правилам Snort:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 -- (see also related path vars at the top of snort_defaults.lua) variables = default_variables, rules = [[ include /usr/local/etc/rules/snort3-community-rules/snort3-community.rules ]] } |
Сохраните и закройте файл, когда закончите.
Служебный файл Systemd для Snort
Создайте файл systemd для управления Snort через systemd.
1 | sudo nano /etc/systemd/system/snort3.service |
Добавьте следующие конфигурации:
1 2 3 4 5 6 7 8 9 10 11 | [Unit] Description=Snort Daemon After=syslog.target network.target [Service] Type=simple ExecStart=/usr/local/snort/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i ens36 -m 0x1b -u root -g root ExecStop=/bin/kill -9 $MAINPID [Install] WantedBy=multi-user.target |
Сохраните и закройте файл, затем перезагрузите демон systemd с помощью следующей команды:
1 | sudo systemctl daemon-reload |
Затем запустите и включите службу Snort с помощью следующей команды:
1 | sudo systemctl enable --now snort3 |
Теперь вы можете проверить состояние Snort, используя следующую команду:
1 | systemctl status snort3 |
Заключение
Поздравляем, теперь вы успешно настроили и протестировали сетевую систему обнаружения вторжений. Однако это руководство охватывает только самые основы, введение в Snort и NIDS в целом.
─$ systemctl status snort3
× snort3.service - Snort Daemon
Loaded: loaded (/etc/systemd/system/snort3.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Thu 2023-06-08 20:25:25 +05; 22min ago
Duration: 33ms
Main PID: 22239 (code=exited, status=1/FAILURE)
CPU: 33ms
июн 08 20:25:25 kali snort[22239]: FATAL: see prior 1 errors (0 warnings)
июн 08 20:25:25 kali snort[22239]: Fatal Error, Quitting..
июн 08 20:25:25 kali snort[22239]: --------------------------------------------------
июн 08 20:25:25 kali snort[22239]: o")~ Snort++ 3.1.57.0
июн 08 20:25:25 kali snort[22239]: --------------------------------------------------
июн 08 20:25:25 kali snort[22239]: Loading /usr/local/etc/snort/snort.lua:
июн 08 20:25:25 kali snort[22239]: --------------------------------------------------
июн 08 20:25:25 kali snort[22239]: pcap DAQ configured to passive.
июн 08 20:25:25 kali systemd[1]: snort3.service: Main process exited, code=exited, status=1/FAILURE
июн 08 20:25:25 kali systemd[1]: snort3.service: Failed with result 'exit-code'.
Либо пропустили какие-то шаги.
Но скорее всего, необходимо изменить имя сетевой карты в настройках сервиса с ens36 на вашу.
так же, можно заглянуть в диагностику
journalctl -feu snort3