Установка Graylog2 и централизация логов в Ubuntu 14.04

Graylog2 – это инструмент для управления и анализа логов; его можно использовать как для мониторинга SSH-подключений, так и для отслеживания необычной активности на сервере для отладки приложений. Инструмент Graylog основан на Elasticsearch, Scala, Java и MongoDB.

При помощи Graylog можно собирать и отслеживать множество логов, но данное руководство ограничивается системными логами.

Данный мануал научит вас устанавливать Graylog2 (v0.20.2) и настроить централизованный сбор системных логов.

Примечание: Все компоненты в данном руководстве устанавливаются на один сервер.

Компоненты Graylog

Graylog2 состоит из четырех основных компонентов:

  • Ноды сервера Graylog: рабочий процесс, который получает и обрабатывает сообщения и взаимодействует с клиентскими компонентами; работа этого компонента зависит от CPU.
  • Ноды Elasticsearch: хранят все логи и сообщения. Зависит от RAM и I/O.
  • MongoDB: хранит метаданные; как правило, не получает большой нагрузки.
  • Веб-интерфейс: пользовательский интеерфейс.

Данное руководство поможет выполнить базовую установку Graylog2; при этом все компоненты будут установлены на один сервер. В среде производства рекомендуется устанавливать компоненты на разных машинах.

Требования

  • Сервер Ubuntu 14.04 (минимум 2GB памяти; на сервере с меньшим объемом памяти компоненты Graylog не запустятся).
  • Права root (о начальной настройке сервера и правах можно прочитать здесь).

Установка MongoDB

Система управления базами данных MongoDB проста в установке. Запустите следующую команду, чтобы импортировать открытый GPG-ключ MongoDB в apt:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

Создайте список исходников MongoDB:

echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

Обновите индекс пакетов:

sudo apt-get update

Установите последнюю стабильную версию MongoDB:

sudo apt-get install mongodb-org

БД MongoDB готова к работе.

Установка Java 7

Elasticsearch требует Java 7. Установите Oracle Java 7 (эту версию рекомендуют разработчики Elasticsearch). В целом, OpenJDK тоже подойдёт.

Добавьте PPA-репозиторий для Oracle Java:

sudo add-apt-repository ppa:webupd8team/java

Обновите индекс пакетов:

sudo apt-get update

Установите последнюю стабильную версию Oracle Java 7 и примите условия лицензии:

sudo apt-get install oracle-java7-installer

Установка Elasticsearch

Graylog2 v0.20.2 работает только с версией Elasticsearch v.0.90.10. Загрузите и установите ее с помощью следующих команд:

cd ~; wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.deb
sudo dpkg -i elasticsearch-0.90.10.deb

Теперь нужно изменить параметр clusters.name. Откройте конфигурационный файл Elasticsearch:

sudo vi /etc/elasticsearch/elasticsearch.yml

Найдите раздел, в котором указан параметр cluster.name. Раскомментируйте его и замените значение по умолчанию на graylog2, это выглядит следующим образом:

cluster.name: graylog2

Также нужно ограничить внешний доступ к экземпляру Elasticsearch (порт 9200), чтобы посторонние не могли прочитать данные или отключить кластер Elasticseach через HTTP API. Найдите строку network.bind_host и раскомментируйте ее, чтобы она выглядела следующим образом:

network.bind_host: localhost

Затем добавьте в файл следующую строку, чтобы отключить динамические скрипты.

script.disable_dynamic: true

Сохраните и закройте файл. Перезапустите Elasticsearch:

sudo service elasticsearch restart

Через несколько секунд запустите следующую команду, чтобы убедиться, что Elasticsearch работает правильно:

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

Теперь можно приступать к установке сервера Graylog.

Установка сервера Graylog2

Загрузите архив Graylog2 в каталог /opt:

cd /opt; sudo wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.2/graylog2-server-0.20.2.tgz

Распакуйте архив:

sudo tar xvf graylog2-server-0.20.2.tgz

Создайте символическую ссылку на новый каталог, чтобы упростить имя каталога:

sudo ln -s graylog2-server-0.20.2 graylog2-server

Скопируйте образец конфигурационного файла в /etc:

sudo cp /opt/graylog2-server/graylog2.conf.example /etc/graylog2.conf

Затем установите программу pwgen, при помощи которой можно генерировать пароли и закрытые ключи:

sudo apt-get install pwgen

После этого нужно создать пароль и закрытый ключ администратора. Закрытый ключ указывается в graylog2.conf при помощи параметра password_secret. Сгенерируйте случайный ключ и вставьте его в конфигурацию Graylog2:

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog2.conf

Пароль администратора можно задать, внеся shasum необходимого пароля в параметр root_password_sha2 в конфигурационном файле Graylog2. Создайте shasum необходимого пароля, указав вместо password свой пароль; команда sed добавит полученное значение в настройки Graylog2.

PASSWORD=$(echo -n password | shasum -a 256 | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog2.conf

Итак, пароль администратора установлен. Теперь откройте конфигурационный файл Graylog2, чтобы внести в него несколько изменений.

sudo vi /etc/graylog2.conf

Обратите внимание на параметры password_secret и root_password_sha2, которые теперь имеют случайные значения.

Настройте параметр rest_transport_uri (он отвечает за взаимодействие интерфейса Graylog2 с сервером). Поскольку все компоненты установлены на одном сервере, нужно указать 127.0.0.1 или localhost. Найдите параметр rest_transport_uri и измените его следующим образом:

rest_transport_uri = http://127.0.0.1:12900/

Поскольку Elasticsearch на данный момент использует только один шард, нужно изменить значение параметра elasticsearch_shards на 1:

elasticsearch_shards = 1

Сохраните и закройте файл. Сервер Graylog2 настроен и готов к запуску.

Если вы хотите протестировать сервер, запустите следующую команду:

sudo java -jar /opt/graylog2-server/graylog2-server.jar --debug

Она вернет объемный вывод. Если вы видите подобные строки, значит, сервер Graylog2 настроен правильно:

2014-06-06 14:16:13,420 INFO : org.graylog2.Core - Started REST API at <http://127.0.0.1:12900/>
2014-06-06 14:16:13,421 INFO : org.graylog2.Main - Graylog2 up and running.

Нажмите CTRL-C, чтобы остановить команду и вернуться в оболочку.

Теперь установите сценарий инициализации Graylog2. Скопируйте graylog2ctl в /etc/init.d:

sudo cp /opt/graylog2-server/bin/graylog2ctl /etc/init.d/graylog2

Обновите сценарий: переместите логи Graylog2 в /var/log и посмотрите файл JAR сервера Graylog2 в /opt/graylog2-server, выполнив следующие две команды sed:

sudo sed -i -e 's/GRAYLOG2_SERVER_JAR=\${GRAYLOG2_SERVER_JAR:=graylog2-server.jar}/GRAYLOG2_SERVER_JAR=\${GRAYLOG2_SERVER_JAR:=\/opt\/graylog2-server\/graylog2-server.jar}/' /etc/init.d/graylog2
sudo sed -i -e 's/LOG_FILE=\${LOG_FILE:=log\/graylog2-server.log}/LOG_FILE=\${LOG_FILE:=\/var\/log\/graylog2-server.log}/' /etc/init.d/graylog2

Установите сценарий:

sudo update-rc.d graylog2 defaults

Теперь можно запустить сервер Graylog2:

sudo service graylog2 start

Установка интерфейса Graylog2

Чтобы установить интерфейс Graylog2 v.0.20.2 в /opt, введите:

cd /opt; sudo wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.2/graylog2-web-interface-0.20.2.tgz
sudo tar xvf graylog2-web-interface-0.20.2.tgz

Создайте символическую ссылку на новый каталог, чтобы упростить имя каталога:

sudo ln -s graylog2-web-interface-0.20.2 graylog2-web-interface

После этого нужно настроить закрытый ключ интерфейса (параметр application.secret в файле graylog2-web-interface.conf). Сгенерируйте ключ и добавьте его в файл при помощи sed:

sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

Теперь откройте конфигурационный файл веб-интерфейса с помощью этой команды:

sudo vi /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

Обновите настройки веб-интерфейса. Укажите новое значение параметра graylog2-server.uris; это разделённый запятыми список REST URI сервера.

Поскольку в данной установке есть только нода сервера Graylog2, это значение должно совпадать с параметром rest_listen_uri в настройках Graylog2 (например, http://127.0.0.1:12900/).

graylog2-server.uris="http://127.0.0.1:12900/"

Веб-интерфейс Graylog2 настроен.

Запустите его:

sudo /opt/graylog2-web-interface-0.20.2/bin/graylog2-web-interface

Если вы видите эти две строки, веб-интерфейс работает правильно:

[info] play - Application started (Prod)
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

Нажмите CTRL-C, чтобы остановить веб-интерфейс. Теперь нужно установить сценарий запуска. Вы можете создать свой собственный сценарий или загрузить сценарий из этого мануала. Чтобы загрузить сценарий в домашний каталог, используйте следующую команду:

cd ~; wget https://assets.digitalocean.com/articles/graylog2/graylog2-web

Скопируйте сценарий в /etc/init.d и передайте права на него пользователю root:

sudo cp ~/graylog2-web /etc/init.d/
sudo chown root:root /etc/init.d/graylog2-web
sudo chmod 755 /etc/init.d/graylog2-web

Установите сценарий:

sudo update-rc.d graylog2-web defaults

Запустите интерфейс Graylog2:

sudo service graylog2-web start

Настройка сбора системных логов

Откройте интерфейс Graylog, он доступен по ссылке:

http://gl2_public_IP:9000/

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

В верхней панели указано количество извещений, оно выделено красным. При первом запуске интерфейса программа сообщит, что у вас есть нода без каких-либо входных данных. Добавьте данные  для приема сообщений через UDP.

Входные данные UDP

Чтобы получать сообщения системных логов, откройте выпадающее меню System в верхней панели. В меню выберите Inputs и Syslog UDP, а затем Launch new input.

На экране появится окно Launch a new input: Syslog UDP. Введите следующую инфомацию:

  • Title: syslog
  • Port: 514
  • Bind address: gl2_private_IP

Затем кликните Launch.

Теперь в разделе Local inputs появятся данные syslog (их состояние должно быть running).

Теперь сервер Graylog сможет принимать сообщения системных логов на порт 514.

Настройка rsyslog для передачи сообщений логов в Graylog2

Примечание: Данный раздел нужно выполнить на всех клиентских серверах.

Создайте конфигурационный файл rsyslog в каталоге /etc/rsyslog.d (в руководстве он называется 90-graylog2.conf):

sudo vi /etc/rsyslog.d/90-graylog2.conf

В этот файл нужно добавить следующие строки (замените gl2_private_IP внутренним IP-адресом сервера Graylog2).

$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @gl2_private_IP:514;GRAYLOGRFC5424

Сохраните и закройте файл. Теперь этот файл будет загружаться вместе с другими настройками rsyslog. Перезапустите rsyslog:

sudo service rsyslog restart

Ресурсы Graylog

Откройте в браузере ссылку:

http://gl2_public_IP:9000/

В верхней панели выберите Sources. На экране появится список всех серверов, на которых настроен rsyslog.

Имя хоста указано слева, справа отображается количество сообщений от логов.

Поиск данных Graylog2

Теперь Graylog2 может выполнять поиск по сообщениям. Для примера попробуйте найти sshd, чтобы просмотреть активность SSH. В результате можно посмотреть логи sshd различных серверов и узнать о неудачных попытках входа.

Graylog2 может искать логи конкретного хоста за конкретный период времени.

Поиск данных Graylog2 позволяет просмотреть логи сервера или нескольких серверов после атаки. Централизованное ведение логов позволяет быстрее реагировать на атаки злоумышленников, потому что вам не нужно входить на несколько серверов, чтобы просмотреть текущие события.

Больше о поиске можно найти в официальной документации.

Заключение

Теперь инструмент мониторинга логов Graylog2 установлен на сервер. Можно добавить в настройки другие логи, структурировать или переформатировать логи при помощи logstash или расширить среду Graylog2, переместив его компоненты на разные серверы.

Читайте также: Управление логами с помощью Graylog 2 в Ubuntu 16.04

Tags: , , , , ,