Введение
Bro – это специальное приложение для мониторинга и анализа сетевой активности, которое используется для обнаружения и защиты от вторжений. Этот фреймворк предназначен для анализа сетевого трафика и отличается от других систем обнаружения вторжений тем, что он анализирует несколько протоколов независимо от того, какие порты они используют.
Bro отвечает за множество важных и полезных функций, таких как захват пакетов, запись потока данных, написание скриптов, отправка оповещений и другое. Вы можете использовать Bro для того, чтобы анализировать транзакционные данные в сети.
Само приложение Bro является бесплатным, но у него есть платная версия под названием Broala. Bro можно установить как прямо из источника с кодом, так и используя менеджер пакетов. Установка из источника с исходными файлами чуть более сложная, но это единственный подходящий способ, который поддерживает IP-геолокацию, если библиотека геолокации была установлена до компиляции.
Установка Bro дает возможность использовать дополнительные команды, такие как bro и broctl. Команду bro можно использовать для анализа живого трафика; broctl – это интерактивная оболочка и утилита командной строки, которая используется отдельно либо с другими установками Bro.
В данной статье мы рассмотрим отдельную установку Bro на машину с Ubuntu 16.04.
Требования
Для того, чтобы выполнить все инструкции, вам нужно следующее:
- сервер с установленной Ubuntu 16.04, а также фаерволом и пользователем с sudo-правами. На сервере должно быть минимум 1 Гбайт оперативной памяти;
- агент пересылки сообщений Postfix, который будет использоваться для отправки утилитой Bro уведомлений. Приложение может работать и без него, но тогда вы не будете получать письма.
1. Установка зависимостей
Перед тем, как приступить к установке Bro, необходимо загрузить зависимости этого приложения.
Начинаем стандартно с обновления базы данных доступных пакетов. Если этого не сделать, то при установке пакетов могут произойти какие-нибудь ошибки. Введите команду:
$ sudo apt-get update
Зависимости Bro включают в себя списки определенных библиотек и инструментов (например, Libpcap, OpenSSL и BIND8). Также необходим Python версии 2.6 и выше. Так как установка будет происходит из исходника, то нам понадобятся еще и некоторые другие дополнительные зависимости, а именно CMake, SWIG, Bison и компилятор C/C++.
Все эти зависимости можно установить одной командой:
$ sudo apt-get install bison cmake flex g++ gdb make libmagic-dev libpcap-dev libgeoip-dev libssl-dev python-dev swig2.0 zlib1g-dev
После того, как закончилась установка, нам нужно загрузить базы данных, которые Bro будет использовать для IP-геолокации.
2. Установка БД IP-геолокации
Теперь нам нужно установить базу данных, которую Bro будет использовать для определения геолокации IP-адресов. Вам надо сначала загрузить два сжатых файла, которые содержат IPv4 и IPv6 базы данных, разархивировать их и перенести в директорию /usr/share/GeoIP.
В этой статье мы будем использовать базу данных IP для геолокации от MaxMind.
Начнем с загрузки баз данных IPv4 и IPv6.
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz $ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz
Разархивируйте оба файла, в вашей рабочей директории должно появиться два новых файла: GeoLiteCity.dat и GeoLiteCityv6.dat.
$ gzip -d GeoLiteCity.dat.gz $ gzip -d GeoLiteCityv6.dat.gz
Затем переместите их в нужную директорию, параллельно переименовав:
$ sudo mv GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat $ sudo mv GeoLiteCityv6.dat /usr/share/GeoIP/GeoIPCityv6.dat
Теперь база данных для геолокации IP-адресов находится в правильном месте, и можно перейти к установке самого приложения Bro.
3. Установка Bro из исходников
Для того, чтобы установить Bro из исходников, сначала надо клонировать репозиторий с Гитхаба.
Git по умолчанию уже установлен на Ubuntu, поэтому клонировать репозиторий можно следующей командой:
$ git clone --recursive git://git.bro.org/bro
Файлы будут помещены в директорию bro.
Измените директорию проекта.
$ cd bro
Запустите конфигурацию Bro, которая должна занять меньше минуты.
$ ./configure
А теперь используйте команду make для того, чтобы создать программу. Процесс займет до 20 минут, в зависимости от характеристик вашего сервера.
$ make
После завершения процесса установите Bro (по времени это займет не больше минуты).
$ sudo make install
Приложение будет установлено в директорию /usr/local/bro.
Теперь вам нужно добавить директорию /usr/local/bro/bin в переменную $PATH. Для того, чтобы убедиться, что она доступна везде, лучше всего указать путь в файле 3rd-party.sh в директории /etc/profile.d.
Создайте и откройте файл 3rd-party.sh в любом удобном для вас редакторе:
$ sudo nano /etc/profile.d/3rd-party.sh
После этого скопируйте туда строки, которые написаны ниже.
# Expand PATH to include the path to Bro's binaries export PATH=$PATH:/usr/local/bro/bin
Сохраните и закройте файл, а затем примените изменения, используя команду source.
$ source /etc/profile.d/3rd-party.sh
Для того, чтобы убедиться в том, что путь загружается правильно, вы можете выйти, а затем заново авторизоваться.
Теперь Bro установлен, и можно перейти к настройкам перед тем, как запустить приложение.
4. Настройка Bro
Теперь мы сделаем изменения в некоторых файлах для того, чтобы Bro точно работал так, как нам нужно. Все файлы расположены в директории /usr/local/bro/etc, и это:
- node.cfg – файл используется для настройки, какие узлы будут мониториться;
- networks.cfg – файл содержит список сетей в обозначении CIDR, которые являются локальными для этого узла;
- broctl.cfg – основной конфигурационный файл BroControl для почты, логов и других настроек.
Теперь перейдем к изменениям, которые нужно внести в каждый из файлов.
Настройка узлов для мониторинга
Это настраивается в файле node.cfg. Так как в данном случае мы рассматриваем Bro для работы в автономном режиме (это задано по умолчанию после установки), то менять ничего не нужно. Однако не будет лишним проверить, правильно ли заданы настройки
Откройте файл для редактирования.
$ sudo nano /usr/local/bro/etc/node.cfg
В секции bro найдите параметр interface. По умолчанию будет стоять etho0. Этот параметр должен совпадать с параметром вашего сервера, и если это не так, то измените его.
После этого сохраните и закройте файл.
Теперь перейдем к настройке частных сетей, к которым будет относится узел.
Настройка частных сетей узла
Нам нужен файл networks.cfg – именно в нем можно настроить IP сетей, к которым будет относится узел (то есть сеть любого из ваших серверных интерфейсов, которые вы хотите мониторить).
Для начала откройте файл.
$ sudo nano /usr/local/bro/etc/networks.cfg
По умолчанию в файле есть три частных IP-блока, которые уже настроены. Это пример того, как вам нужно настроить ваши.
# List of local networks in CIDR notation, optionally followed by a # descriptive tag. # For example, "10.0.0.0/8" or "fe80::/64" are valid prefixes. 10.0.0.0/8 Private IP space 172.16.0.0/12 Private IP space 192.168.0.0/16 Private IP space
Удалите три уже существующих блока и добавьте свои. Для того, чтобы выяснить сетевые адреса ваших серверных интерфейсов, используйте команду ip addr show. Финальная версия файла должна выглядеть примерно так (с вашими сетевыми адресами):
203.0.113.0/24 Public IP space 198.51.100.0/24 Private IP space
После редактирования сохраните и закройте файл. Перейдем к настройке почты и логирования.
Настройка почты и логирования
Эти настройки содержатся в файле broctl.cfg . Большинство настроек, которые уже заданы по умолчанию, менять не надо. Нужно лишь указать правильный электронный адрес для уведомлений.
Поэтому откройте файл для редактирования:
$ sudo nano /usr/local/bro/etc/broctl.cfg
В секции Mail Options вверху файла найдите параметр MailTo и введите туда корректный электронный адрес. На него будут поступать все уведомления.
. . . # Mail Options # Recipient address for all emails sent out by Bro and BroControl. MailTo = ваш_адрес@пример.ру . . .
Затем сохраните и закройте файл. Теперь приложение Bro настроено.
5. Работа с Bro при помощи BroControl
BroControl используется для работы с Bro: запуск и остановка сервиса, разворачивание Bro и некоторые другие задачи. Это одновременно и инструмент командной строки, и интерактивная оболочка.
Если набрать broctl с командой sudo /usr/local/bro/bin/broctl, то вы запустите интерактивную оболочку.
Output Welcome to BroControl 1.5-21 Type "help" for help. [BroControl] >
Чтобы выйти из нее, нужно ввести команду exit.
Из этой оболочки вы можете запустить любую команду Bro. Но, по сути, эти же команды вы можете выполнять прямо из командной строки, без необходимости захода в оболочку.
Выполнение команд из командной строки – это, как правило, более удобный подход, потому что он позволяет вывести выход команды broctl в стандартную Linux команду. Поэтому в этом пункте статьи мы будем использовать команды broctl в командной строке.
Вначале используйте команду broctl deploy для того, чтобы запустить Bro. Убедитесь, что все файлы, необходимые для BroControl и Bro, актуальны на текущий момент.
$ sudo /usr/local/bro/bin/broctl deploy
Эту команду необходимо выполнять всякий раз, когда вы вносите изменения в конфигурационные файлы или скрипты.
Примечание.
Если после ввода команды Bro не запустилось, то обратите внимание на вывод – там будет указана причина. Например, вы можете увидеть вот такое сообщение (даже если у вас установлен MTA):
Output bro not running (was crashed) Error: error occurred while trying to send mail: send-mail: SENDMAIL-NOTFOUND not found starting ... starting bro ...
Решение проблемы – редактирование конфигурационного файла /usr/local/bro/etc/broctl.cfg и добавление Sendmail в конце секции Mail Options.
. . . # Added for Sendmail SendMail = /usr/sbin/sendmail ############################################### # Logging Options . . .
А затем заново выполните деплой:
$ sudo /usr/local/bro/bin/broctl deploy
Для того, чтобы проверить статус Bro, используйте соответствующую команду:
$ sudo /usr/local/bro/bin/broctl status
Вывод будет выглядеть примерно так:
Output Name Type Host Status Pid Started bro standalone localhost running 6807 12 Apr 05:42:50
Помимо статуса running вы можете увидеть статус crashed или stopped.
Для того, чтобы перезапустить Bro, используйте команду:
$ sudo /usr/local/bro/bin/broctl restart
Разница между broctl restart и broctl deploy заключается в том, что первая команда используется в тех случаях, когда вы хотите остановить и заново запустить весь сервис, а последняя – в случае, если вы внесли какие-либо изменения в настройки или скрипты.
Дополнительно
Остальную информацию об этой утилите вы можете найти в официальной документации.
Комментарии