Установка Graylog 1.x в CentOS 7

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

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

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

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

Компоненты Graylog

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

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

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

Требования

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

Установка MongoDB

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

sudo rpm --import https://www.mongodb.org/static/pgp/server-3.2.asc

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

echo '[mongodb-org-3.2] name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1' | sudo tee /etc/yum.repos.d/mongodb-org-3.2.repo

Установите последнюю доступную версию СУБД:

sudo yum install -y mongodb-org

Запустите MongoDB:

sudo systemctl restart mongod

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

Установка Java

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

Откройте домашний каталог и загрузите в него Oracle Java 8 JDK RPM:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"

Установите RPM при помощи следующей команды:

sudo yum -y localinstall jdk-8u73-linux-x64.rpm

Примечание: Если вы загрузили другой релиз, укажите его название в команде.

Теперь программа установлена в каталоге /usr/java/jdk1.8.0_73/jre/bin/java и связана с /usr/bin/java.

Можно удалить архив:

rm ~/jdk-8u*-linux-x64.rpm

Установка Elasticsearch

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

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

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Создайте новый репозиторий yum для Elasticsearch:

echo '[elasticsearch-1.7] name=Elasticsearch repository for 1.7.x packages
baseurl=http://packages.elastic.co/elasticsearch/1.7/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1' | sudo tee /etc/yum.repos.d/elasticsearch.repo

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

sudo yum -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 systemctl restart elasticsearch

Затем запустите команду, которая настроит автозапуск Elasticsearch:

sudo systemctl enable elasticsearch

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

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

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

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

Загрузите RPM-пакет Graylog:

sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-1.3-repository-el7_latest.rpm

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

sudo yum -y install graylog-server

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

sudo yum -y install epel-release
sudo yum -y 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 | sha256sum | 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 yum -y 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 systemctl restart 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 systemctl restart rsyslog

Ресурсы Graylog

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

http://graylog_public_IP:9000/

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

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

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

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

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

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

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

Заключение

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

Tags: , , , , ,

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