В этой статье раз­берем, как нас­тро­ить опен­сор­сную сис­тему обна­руже­ния втор­жений, которая не прос­то выяв­ляет угро­зы, а еще и при интегра­ции, нап­ример, с Fail2Ban активно про­тиво­дей­ству­ет им и пре­дос­тавля­ет удоб­ные инс­тру­мен­ты для прос­мотра информа­ции о том, какая это ата­ка и отку­да она идет. Мой выбор пал на Snort 3.

В «Хакере» нес­коль­ко лет назад уже раз­бирали уста­нов­ку Snort, но речь шла о вто­рой вер­сии, а мне хотелось имен­но третью.

Я дав­ний пок­лонник Red Hat и всю уста­нов­ку буду выпол­нять на Rocky Linux 10. Поч­ти все how-to написа­ны для Ubuntu, поэто­му наша вер­сия будет осо­бой.

Пред­положим, что у нас нес­коль­ко сер­веров Snort и нам нуж­но сле­дить за ресур­сами, которые смот­рят наружу: поч­товым сер­вером Exchange, обратным прок­си на Nginx и пог­ранич­ным офис­ным роуте­ром Cisco. Даль­ше все это соберем на одном сер­вере Grafana и будем визу­али­зиро­вать ата­ки.

Внед­рив Snort, мы смо­жем:

  1. Вы­являть не толь­ко извес­тные ата­ки по сиг­натурам, но и ано­маль­ную активность, нап­ример ска­ниро­вание пор­тов.
  2. Ав­томати­чес­ки бло­киро­вать источни­ки атак на Nginx за счет интегра­ции с Fail2Ban.
  3. По­нимать, что про­исхо­дит в сети: визу­али­зация в Grafana показы­вает геог­рафию, интенсив­ность и типы атак.

Итак, нач­нем.

Ска­чива­ем об­раз Rocky Linux.

За­ходим в гипер­визор и соз­даем вир­туаль­ную машину с такими парамет­рами: 2 vCPU, 4 Гбайт ОЗУ, 25 Гбайт HDD. В ито­ге получа­ем све­жеус­танов­ленный сер­вер.

Пер­вое, что нуж­но сде­лать, — обно­вить сис­тему:

sudo yum update -y

Под­клю­чаем нуж­ный репози­торий и уста­нав­лива­ем необ­ходимые тул­зы:

sudo yum -y install epel-release net-tools openssl openssl-devel bind-utils openssh-clients wget telnet traceroute tcpdump zip unzip tar chrony setools-console policycoreutils-python-utils

Так как у меня вир­туаль­ная машина на VMware, став­лю VMware Tools:

sudo yum -y install open-vm-tools

Нас­тро­им син­хро­низа­цию вре­мени нашего сер­вера Snort и NTP-сер­вера сети ком­пании (у меня это кон­трол­лер домена с име­нем dc1.mydomain.local):

sudo sed -i 's/^pool .*/server dc1.mydomain.local iburst/' /etc/chrony.conf
sudo systemctl enable chronyd
sudo systemctl restart chronyd

Пе­резаг­рузим ОС:

sudo reboot

Ус­танав­лива­ем биб­лиоте­ки, нуж­ные для сбор­ки Snort:

sudo yum groupinstall -y "Development Tools"
sudo yum install -y libdnet-devel libunwind-devel cmake hwloc-devel luajit-devel

Пе­рехо­дим в каталог opt — имен­но там будем собирать Snort из исходни­ков:

cd /opt

Ус­тановим и соберем биб­лиоте­ку libdaq для сбо­ра дан­ных:

sudo yum config-manager --set-enabled crb
sudo yum install -y libpcap-devel pcre2-devel
sudo git clone https://github.com/snort3/libdaq.git
cd libdaq
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
cd ../

Ус­тановим и соберем инс­тру­мент для ана­лиза про­изво­дитель­нос­ти и управле­ния памятью gperftools:

sudo git clone https://github.com/gperftools/gperftools.git
cd gperftools
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
cd ../

Ус­тановим и соберем сам Snort 3:

sudo git clone https://github.com/snort3/snort3.git
cd snort3
sudo ldconfig
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
sudo ./configure_cmake.sh --prefix=/ --enable-tcmalloc
cd build
sudo make -j"$(nproc)"
sudo make install
cd ../../

Про­верим вер­сию:

sudo echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/local.conf
sudo ldconfig
sudo snort -V

От­лично, Snort 3 уста­нов­лен.

Соз­дадим необ­ходимые катало­ги и фай­лы:

sudo mkdir /etc/snort/appid
sudo mkdir /var/log/snort/
sudo touch /var/log/snort/alert_json.txt
sudo chmod 644 /var/log/snort/alert_json.txt

Ус­тановим пла­гин OpenAppID для детек­ции раз­личных при­ложе­ний:

sudo wget https://www.snort.org/downloads/openappid/33380 -O snort-openappid-33380.tar.gz
sudo tar -xzvf snort-openappid-33380.tar.gz
sudo cp -R odp /etc/snort/appid

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии