Как установить Bro на Ubuntu 16.04

Вступление

Bro - среда анализа сети с открытым исходным кодом и приложение для мониторинга безопасности. Он объединяет некоторые из лучших функций OSSEC и osquery в одной хорошей упаковке.

Бро может выполнять анализ и обнаружение как на основе сигнатур, так и на основе поведения, но основная часть того, что он делает, - это анализ и обнаружение на основе поведения. В длинный список функций Bro включены следующие возможности:

  • Обнаружение грубых атак на сетевые сервисы, такие как SSH и FTP

  • Выполнить мониторинг и анализ трафика HTTP

  • Обнаружить изменения в установленном программном обеспечении

  • Выполните проверку сертификата SSL / TLS

  • Обнаружение SQL-инъекций

  • Выполнить мониторинг целостности файлов всех файлов

  • Отправка отчетов об активности, сводных данных и ошибках, а также оповещений по электронной почте

  • Выполнить геолокацию IP-адресов на уровне города

  • Работать в автономном или распределенном режиме

Бро может быть установлен из источника или через менеджер пакетов. Установка из источника более сложна, но это единственный метод, который поддерживает геолокацию IP, если библиотека геолокации установлена ​​до ее компиляции.

Установка Bro делает доступными для системы дополнительные команды, такие как + bro + и + broctl +. + bro + может использоваться для анализа файлов трассировки, а также для анализа трафика в реальном времени; + broctl + - это интерактивная утилита оболочки и командной строки, используемая для управления автономными или распределенными установками Bro.

В этой статье вы установите Bro из исходного кода в Ubuntu 16.04 в автономном режиме.

Предпосылки

Для завершения этой статьи вам понадобится следующее:

  • Сервер Ubuntu 16.04 с брандмауэром и учетной записью пользователя без полномочий root с привилегиями sudo, настроенными с использованием этого Initial Руководство по установке для Ubuntu 16.04. Поскольку мы будем выполнять некоторые задачи, требующие дополнительной оперативной памяти, вам потребуется развернуть сервер, на котором есть как минимум 1 ГБ памяти.

  • Postfix установлен на сервере как агент отправки почты только для отправки (https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only). -smtp-server-on-ubuntu-16-04 [это руководство Postfix в Ubuntu 16.04]. MTA, такой как Postfix, должен быть установлен для Bro, чтобы отправлять оповещения по электронной почте. Он будет работать без него, но письма не будут отправлены.

Шаг 1 - Установка зависимостей

Прежде чем вы сможете установить Bro из исходного кода, вам нужно установить его зависимости.

Сначала обновите базу данных пакетов. Невыполнение этого перед установкой пакетов может привести к ошибкам менеджера пакетов.

sudo apt-get update

Зависимости Бро включают в себя ряд библиотек и инструментов, таких как Libpcap, OpenSSL и https://www.isc.org/ загрузки / привязывать / [BIND8]. BroControl дополнительно требует Python 2.6 или выше. Поскольку мы собираем Bro из исходного кода, нам понадобятся некоторые дополнительные зависимости, такие как CMake, SWIG, https: // www.gnu.org/software/bison/[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 - Загрузка базы данных GeoIP

Здесь мы загрузим базу данных GeoIP, от которой будет зависеть Bro для определения местоположения IP-адреса. Мы загрузим два сжатых файла, содержащие базу данных IPv4 и базу данных IPv6, распакуем их и затем переместим в каталог + / usr / share / GeoIP +.

Загрузите базы данных 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

Имея базу данных GeoIP, мы можем установить Bro непосредственно на следующем шаге.

Шаг 3 - Установка Бро из источника

Чтобы установить Bro из исходного кода, сначала нам нужно клонировать репозиторий из GitHub.

Git уже установлен по умолчанию в Ubuntu, поэтому вы можете клонировать репозиторий с помощью следующей команды. Файлы будут помещены в каталог с именем + bro +.

git clone --recursive git://git.bro.org/bro

Перейдите в каталог проекта.

cd bro

Запустите настройку Bro, что займет не более минуты.

./configure

Затем используйте + make + для сборки программы. Это может занять до 20 минут, в зависимости от вашего сервера.

make

Вы увидите процент завершения в начале большинства строк вывода при его запуске.

Как только он закончится, установите Bro, что должно занять меньше минуты.

sudo make install

Bro будет установлен в каталог + / usr / local / bro +.

Теперь вам нужно добавить каталог + / usr / local / bro / bin в ваш` + $ PATH`. Чтобы убедиться, что он доступен глобально, лучший подход для этого - указать путь в файле в каталоге + / etc / profile.d +. Мы назовем этот файл + 3rd-party.sh +.

Создайте и откройте + 3rd-party.sh + в своем любимом текстовом редакторе.

sudo nano /etc/profile.d/3rd-party.sh

Скопируйте и вставьте в него следующие строки. Первая строка является пояснительным комментарием, а вторая строка убедится, что + / usr / local / bro / bin + добавлена ​​к пути любого пользователя в системе.

/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 для почты, ведения журнала и других настроек.

Давайте посмотрим, что нужно изменить в каждом файле.

Настройка узлов для мониторинга

Чтобы настроить узлы, которые Bro будет контролировать, нам нужно изменить файл + node.cfg +.

Из коробки Bro настроен для работы в автономном режиме. Поскольку это автономная установка, вам не нужно изменять этот файл, но хорошо бы убедиться, что значения верны.

Откройте файл для редактирования.

sudo nano /usr/local/bro/etc/node.cfg

В разделе + bro + найдите параметр + interface +. По умолчанию это + etho0 +, и это должно соответствовать общедоступному интерфейсу вашего сервера Ubuntu 16.04. Если это не так, обязательно обновите его.

/usr/local/bro/etc/node.cfg

[bro]
type=standalone
host=localhost
interface=

Сохраните и закройте файл, когда вы закончите. Мы настроим частные сети, к которым принадлежит узел.

Настройка частных сетей узла

Файл + networks.cfg + - это то, где вы настраиваете, к каким IP-сетям принадлежит узел (т.е. IP-сеть любого из интерфейсов вашего сервера, которые вы хотите отслеживать).

Для начала откройте файл.

sudo nano /usr/local/bro/etc/networks.cfg

По умолчанию файл поставляется с тремя частными IP-блоками, уже настроенными в качестве примера того, как ваш должен быть указан.

/usr/local/bro/etc/networks.cfg

# 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 для проверки сетевых адресов для интерфейсов вашего сервера. Окончательная версия вашего + networks.cfg + должна выглядеть примерно так, а ваши сетевые адреса подставляются в:

Пример /usr/local/bro/etc/networks.cfg

         Public IP space
        Private IP space

Сохраните и закройте файл, когда вы закончите редактировать его. Далее мы настроим параметры почты и регистрации.

Настройка почты и настройки журналов

В файле + broctl.cfg + вы конфигурируете, как BroControl выполняет свои обязанности по электронной почте и ведению журнала. Большинство значений по умолчанию не нужно менять. Вам просто нужно указать целевой адрес электронной почты.

Откройте файл для редактирования.

sudo nano /usr/local/bro/etc/broctl.cfg

В разделе * Параметры почты * в верхней части файла найдите параметр * MailTo * и измените его на действительный адрес электронной почты, которым вы управляете. Все уведомления по электронной почте Bro будут отправлены на этот адрес.

/usr/local/bro/etc/broctl.cfg

. . .
# Mail Options

# Recipient address for all emails sent out by Bro and BroControl.
MailTo =
. . .

Сохраните и закройте файл, когда вы закончите редактировать его.

Это все, что нужно для настройки Bro, так что теперь вы можете использовать BroControl для запуска и управления Bro.

Шаг 5 - Управление Bro с BroControl

BroControl используется для управления установками Bro - запуска и остановки службы, развертывания Bro и выполнения других задач управления. Это одновременно инструмент командной строки и интерактивная оболочка.

Если + broctl + вызывается с помощью + sudo / usr / local / bro / bin / broctl +, он запустит интерактивную оболочку:

OutputWelcome to BroControl 1.5-21

Type "help" for help.

[BroControl] >

Вы можете выйти из интерактивной оболочки с помощью команды + exit +.

Из оболочки вы можете запустить любую допустимую команду Bro. Эти же команды также можно запускать непосредственно из командной строки, не вызывая оболочку. Выполнение команд в командной строке часто является более полезным подходом, поскольку позволяет перенаправить вывод команды + broctl + в стандартную команду Linux. В оставшейся части этого шага мы будем вызывать команды + broctl + в командной строке.

Во-первых, используйте + broctl deploy + для запуска Bro и убедитесь, что файлы, необходимые для BroControl и Bro, обновлены в соответствии с настройками в шаге 4.

sudo /usr/local/bro/bin/broctl deploy

Вы также должны запускать эту команду всякий раз, когда вносятся изменения в файлы конфигурации или сценарии.

Вы можете проверить статус Bro, используя команду + status +.

sudo /usr/local/bro/bin/broctl status

Вывод будет выглядеть следующим образом. Помимо + running +, статус также может быть + crash + или + остановлен +.

OutputName         Type       Host          Status    Pid    Started
bro          standalone localhost     running   6807   12 Apr 05:42:50

Если вам нужно перезапустить Bro, вы можете использовать + sudo / usr / local / bro / bin / broctl restart +.

Далее, давайте сделаем сервис Bro более надежным, настроив https://www.digitalocean.com/community/tutorials/how-to-schedule-routine-tasks-with-cron-and-anacron-on-a-vps[a cron job.

Шаг 6 - Настройка cron для Bro

Bro не имеет файла дескриптора службы Systemd, но он поставляется со скриптом cron, который, если он включен, перезапустит Bro в случае сбоя и выполнит другие задачи, такие как проверка наличия свободного места на диске и удаление файлов журнала с истекшим сроком действия.

Команда Bro + cron + включена из коробки, но вам нужно установить задание cron, которое фактически запускает скрипт. Сначала вам нужно добавить файл пакета cron для Bro в + / etc / cron.d +. Следуя соглашению, мы назовем этот файл + bro +, поэтому создайте и откройте его.

sudo nano /etc/cron.d/bro

Запись для копирования и вставки в файл показана далее. Он будет запускать Bro’s + cron + каждые пять минут. Если он обнаружит, что Bro разбился, он перезапустит его.

/etc/cron.d/bro

*/5 * * * * root /usr/local/bro/bin/broctl cron

Вы можете изменить + 5 + в приведенной выше команде, если хотите, чтобы она выполнялась чаще.

Сохраните и закройте файл, когда вы закончите с ним.

Когда задание cron активировано, вы должны получить электронное письмо о том, что каталог для файла статистики был создан в + / usr / local / bro / logs / stats +. Имейте в виду, что Бро должен действительно потерпеть крах (т.е. быть остановленным бесцеремонно), чтобы это работало. Это не будет работать, если вы остановите Bro самостоятельно, используя BroControl + stop +.

Чтобы проверить, работает ли он, вам нужно либо перезагрузить сервер, либо уничтожить один из процессов Bro. Если вы пойдете по пути перезагрузки, Bro будет перезапущен через пять минут после того, как сервер завершит процесс перезагрузки. Чтобы использовать другой подход, сначала получите один из идентификаторов процесса Bro.

ps aux | grep bro

Затем убейте один из процессов.

sudo kill -9

Если вы затем проверьте статус, используя:

sudo /usr/local/bro/bin/broctl status

Вывод покажет, что он разбился.

OutputName         Type       Host          Status    Pid    Started
bro          standalone localhost     crashed

Вызовите ту же команду через несколько минут, и в результате вы увидите, что она снова работает.

Когда Бро работает полностью, вы должны получать сводные электронные письма об интересных мероприятиях, записанных на интерфейсе, примерно каждый час. И если он когда-нибудь выйдет из строя и перезапустится, вы получите электронное письмо с сообщением, что оно началось после сбоя. В следующем и последнем шаге давайте рассмотрим несколько других основных утилит Bro.

Шаг 7 - Использование + bro +, + bro-cut + и скриптов политики Bro

+ bro + и + bro-cut + - две другие основные команды, которые поставляются с Bro. С помощью + bro + вы можете захватывать живой трафик и анализировать файлы трассировки, полученные с помощью других инструментов. + bro-cut + - это пользовательский инструмент для чтения и получения данных из журналов Bro.

Команда, используемая для захвата живого трафика с помощью + bro +, имеет формат + sudo / usr / local / bro / bin / bro -i +. Как минимум, вы должны указать, какой интерфейс должен захватывать трафик из. + `относится к сценариям политики, которые определяют, что обрабатывает Bro. Вам не нужно указывать сценарий или сценарии, поэтому команда также может выглядеть как ` sudo / usr / local / bro / bin / bro -i +`.

Поскольку + bro + создает много файлов из одного сеанса захвата в рабочий каталог, лучше всего вызывать команду захвата + bro + в каталоге, созданном только для этого сеанса захвата. Ниже, например, показан длинный список (+ ls -l +) файлов, созданных во время сеанса захвата трафика в реальном времени.

Outputtotal 152
-rw-r--r-- 1 root root   277 Apr 14 09:20 capture_loss.log
-rw-r--r-- 1 root root  4711 Apr 14 09:20 conn.log
-rw-r--r-- 1 root root  2614 Apr 14 04:49 dns.log
-rw-r--r-- 1 root root 25168 Apr 14 09:20 loaded_scripts.log
-rw-r--r-- 1 root root   253 Apr 14 09:20 packet_filter.log
-rw-r--r-- 1 root root   686 Apr 14 09:20 reporter.log
-rw-r--r-- 1 root root   708 Apr 14 04:49 ssh.log
-rw-r--r-- 1 root root   793 Apr 14 09:20 stats.log
-rw-r--r-- 1 root root   373 Apr 14 09:20 weird.log

Вы можете попробовать запустить одну из команд захвата сейчас. После того, как он немного запустится, используйте + CTRL + C +, чтобы завершить сеанс захвата + bro +. Вы можете читать каждый из них с помощью + bro-cut +, используя такую ​​команду, как `+ cat | / usr / local / bro / bin / bro-cut -C -d + `.

Заключение

Эта статья познакомила вас с Бро и о том, как установить его отдельно от источника. Вы также узнали, как устанавливать базы данных GeoIP IPv4 и IPv6 из MaxMind, которые Bro использует для определения местоположения IP-адресов на уровне города. Для этого автономного режима установки вы также узнали, как изменить соответствующие аспекты его файлов конфигурации, управлять им с помощью + broctrl +, использовать + bro + для захвата живого трафика и + bro-cut + для вывода и чтения полученного результата. лог-файлы.

Вы можете получить дополнительную информацию о том, как использовать Bro, с сайта документации project.

Related