Установка Graylog 1.x на сервер Ubuntu 14.04

Данное руководство поможет установить Graylog v1.3.х (иногда эта версия называется Graylog2) и настроить централизованный сбор системных логов.

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

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

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

Компоненты Graylog

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

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

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

Требования

  • Сервер 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://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Обновите БД apt:

sudo apt-get update

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

sudo apt-get install mongodb-org

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

Установка Java

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

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

sudo add-apt-repository ppa:webupd8team/java

Обновите БД apt:

sudo apt-get update

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

sudo apt-get install oracle-java8-installer

Установка Elasticsearch

Graylog 1.x работает только с Elasticsearch до версии 2.0. Потому рекомендуется установить версию 1.7.х. Elasticsearch можно установить при помощи пакетного менеджера.

Импортируйте открытый GPG-ключ Elasticsearch:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Если командная строка на этом этапе зависла, вероятно, она ожидает пароль.

Создайте исходный список Elasticsearch:

echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.x.list

Обновите базу apt:

sudo apt-get update

Установите Elasticsearch:

sudo apt-get -y install elasticsearch

После успешной установки Elasticsearch нужно настроить программу:

sudo vi /etc/elasticsearch/elasticsearch.yml

Найдите раздел, который задаёт cluster.name. Раскоментируйте его и замените стандартное значение значением graylog-development:

cluster.name: graylog-development

После этого нужно ограничить доступ к Elasticsearch (порт 9200), чтобы посторонние не смогли получить доступ к данным или отключить кластер через интерфейс HTTP. Найдите строку network.host и укажите в ней localhost.

network.host: localhost

Сохраните и закройте файл.

Запустите Elasticsearch:

sudo service elasticsearch restart

Подождите пару минут и проверьте работу Elasticsearch:

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

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

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

Загрузите пакет Graylog в домашний каталог:

cd ~
wget https://packages.graylog2.org/repo/packages/graylog-1.3-repository-ubuntu14.04_latest.deb

Добавьте этот пакет в пакетный менеджер:

sudo dpkg -i graylog-1.3-repository-ubuntu14.04_latest.deb

Установите пакет graylog-server:

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install graylog-server

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

sudo apt-get install pwgen

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

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

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

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

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

sudo vi /etc/graylog/server/server.conf

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

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

rest_transport_uri = http://127.0.0.1:12900/

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

elasticsearch_shards = 1

После этого укажите в параметре elasticsearch_cluster_name имя кластера – graylog-development (это имя должно совпадать с cluster.name в настройках Elasticsearch).

elasticsearch_cluster_name = graylog-development

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

elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

Запустите сервер Graylog:

sudo start graylog-server

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

Чтобы установить интерфейс Graylog, введите:

sudo apt-get install graylog-web

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

SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /etc/graylog/web/web.conf

Откройте конфигурации веб-интерфейса:

sudo vi /etc/graylog/web/web.conf

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

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

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

Теперь интерфейс Graylog настроен и готов к работе:

sudo start graylog-web

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

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

http://graylog_public_IP:9000/

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

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

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

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

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

Title: syslog
Port: 8514
Bind address: graylog_private_IP

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

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

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

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

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

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

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

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

$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @graylog_private_IP:8514;GRAYLOGRFC5424

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

sudo service rsyslog restart

Ресурсы Graylog

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

http://graylog_public_IP:9000/

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

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

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

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

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

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

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

Заключение

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

Tags: , , , ,

Добавить комментарий