Безопасность — это не только про секьюрную настройку всего и вся. Атакующие ломают даже самые защищенные системы, а администраторы месяцами не замечают злоумышленника, который прочно закрепился в системе и сливает данные. Чтобы предотвратить такой сценарий и детектировать атаку, существуют системы обнаружения вторжений. С одной из них — опенсорсной Snort — мы научимся работать в этой статье.
Snort — это опенсорсная система обнаружения вторжений, IDS. Она может работать как сниффер или логгер, но нас интересует именно NIDS (Network Intrusion Detection System). В таком режиме Snort проверяет все входящие пакеты на признаки известных видов сетевых атак (DDoS, сканирование портов, попытки авторизации брутфорсом и так далее).
Аналогия здесь следующая: владельцы магазинов ставят камеры, чтобы обезопасить себя от кражи. Они не помешают вскрыть замки, но зафиксируют действия воришек и помогут их поймать. Примерно так же обстоит дело с системами обнаружения вторжений, которые существуют в виде отдельных решений или компонентов систем класса Internet Security. Они не могут отразить нападение, но оповещают об атаке и помогают в расследовании инцидентов.
Долго останавливаться на описании этого продукта я не буду, так как на страницах журнала можно найти много информации о ней. Например, в статье Даниила Светлова Snort рассматривается как часть опенсорсной SIEM. Скажу лишь, почему я выбрал Snort. Этому способствовали три фактора:
Плюс к этому компания уже давно поглощена гигантом с авторитетным названием Cisco, а там ребята как минимум неплохо разбираются в сетях.
Просто установить Snort не так уж хлопотно. Можно воспользоваться документацией на сайте. Мы же, как люди, которых не пугают сложности, будем устанавливать с дополнительными плюшками, которые помогут расширить возможности основного продукта.
Помимо собственно Snort, нам понадобится:
За работу!
Устанавливать я буду октябрьский релиз Snort 2.9.12, так как Snort 3 представлен лишь бета-версией. В качестве ОС выбрана Ubuntu 16.04.1, установка на Ubuntu 16 и 18 ничем не отличаются. Есть разница в установке на Ubuntu 14, но об этом в статье говорить не будем.
Сначала настраиваем сетевой интерфейс.
Важное замечание для пользователей Ubuntu. С версии 15.10 сетевые интерфейсы уже не следуют стандарту ethХ. Поэтому корректно указывай имя своего интерфейса. Именно тут и возникает большинство проблем с конфигами.
Выбираем тот сетевой интерфейс, который будет мониторить Snort, и в конце настроек interfaces прописываем две строки для отключения Large Receive Offload и Generic Receive Offload. Это желательно сделать для уменьшения нагрузки на процессор:
post-up ethtool -K eth0 gro off post-up ethtool -K eth0 lro off
Перезагружаем настроенный сетевой интерфейс:
sudo ifconfig enp0s3 down && sudo ifconfig enp0s3 up
Затем по стандарту — update && upgrade и ставим необходимые компоненты:
sudo apt-get install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev liblzma-dev openssl libssl-dev libnghttp2-dev.
Далее создаем папку, в которой будем намешивать исходники, солить и перчить их по вкусу. Скачиваем туда систему сбора данных (DAQ — Data AcQuisition). Это библиотека, которая заменяет прямые вызовы на функции libpcap, что облегчает работу на различных аппаратных и программных интерфейсах без необходимости вносить изменения в сам Snort.
mkdir snort cd snort wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz tar -xvzf daq-2.0.6.tar.gz cd daq-2.0.6 ./configure make sudo make install
Теперь можно поставить сам Snort.
cd ~/snort_src wget https://www.snort.org/downloads/snort/snort-2.9.12.tar.gz tar -xvzf snort-2.9.12.tar.gz cd snort-2.9.12 ./configure --enable-sourcefire --disable-open-appid make sudo make install sudo ldconfig sudo ln -s /usr/local/bin/snort /usr/sbin/snort
Пробуем вывести версию Snort для того, чтобы убедиться, что все взлетело и работает.
/usr/sbin/snort –V
Вывод должен иметь вид, как на скриншоте.
Установка закончена, погнали дальше!
О безопасности необходимо помнить всегда, но мы-то не постоянно за компьютером. Поэтому создадим пользователя для Snort.
sudo groupadd snort sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
Теперь создаем необходимые папки и раздаем права:
sudo mkdir /etc/snort sudo mkdir /etc/snort/rules sudo mkdir /etc/snort/rules/iplists sudo mkdir /etc/snort/preproc_rules sudo mkdir /usr/local/lib/snort_dynamicrules sudo mkdir /etc/snort/so_rules sudo touch /etc/snort/rules/iplists/black_list.rules sudo touch /etc/snort/rules/iplists/white_list.rules sudo touch /etc/snort/rules/local.rules sudo touch /etc/snort/sid-msg.map sudo mkdir /var/log/snort sudo mkdir /var/log/snort/archived_logs sudo chmod -R 5775 /etc/snort sudo chmod -R 5775 /var/log/snort sudo chmod -R 5775 /var/log/snort/archived_logs sudo chmod -R 5775 /etc/snort/so_rules sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules sudo chown -R snort:snort /etc/snort sudo chown -R snort:snort /var/log/snort sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
Распихаем конфигурационные файлы и файлы настроек по нужным папкам:
cd ~/snort/snort-2.9.12/etc/ sudo cp *.conf* /etc/snort sudo cp *.map /etc/snort sudo cp *.dtd /etc/snort cd ~/snort/snort-2.9.12/src/dynamic-preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/ sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
В итоге должна получиться вот такая структура папок и файлов.
Комментируем все строки с 457-й по 651-ю в файле /etc/snort/snort.conf
. Делается это для того, чтобы Snort при запуске не скачивал правила, поскольку для обработки правил у нас будет настройка PulledPork.
sudo sed -i 's/include $RULE_PATH/#include $RULE_PATH/' /etc/snort/snort.conf
Вносим несколько правок в этот же конфигурационный файл вручную:
var RULE_PATH /etc/snort/rules
.var SO_RULE_PATH /etc/snort/so_rules
.var PREPROC_RULE_PATH /etc/snort/preproc_rules
.var WHITE_LIST_PATH /etc/snort/rules/iplists
.var BLACK_LIST_PATH /etc/snort/rules/iplists
.include $RULE_PATH/local.rules
для возможности использовать свои правила.output unified2: filename snort.u2, limit 128
.include $RULE_PATH/snort.rules
.Правок много, и в них легко ошибиться. К счастью, Snort умеет проверять файл конфигурации. Рекомендую это делать после каждого ковыряния в конфиге.
sudo snort -T -c /etc/snort/snort.conf -i enp0s3
Если видишь заветные слова Snort successfully validated the configuration! Snort exiting
, значит, все в порядке и ничего пока не сломано.
Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
1 год7190 р. Экономия 1400 рублей! |
1 месяц720 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости