Как установить Graylog 1.x на CentOS 7

Вступление

В этом руководстве мы расскажем, как установить Graylog v1.3.x (иногда называемый Graylog2) в CentOS 7 и настроить его для сбора системных журналов в централизованном месте. Graylog - это мощный инструмент для управления и анализа журналов, который имеет множество вариантов использования, от мониторинга входов в SSH и необычной активности до отладки приложений. Он основан на Elasticsearch, Java и MongoDB.

Можно использовать Graylog для сбора и мониторинга большого количества журналов, но мы ограничим область применения этого руководства сбором системного журнала. Кроме того, поскольку мы демонстрируем основы Graylog, мы будем устанавливать все компоненты на одном сервере.

О компонентах Graylog

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

  • * Узлы Graylog Server *: Служит рабочим, который получает и обрабатывает сообщения, а также взаимодействует со всеми другими несерверными компонентами. Его производительность зависит от процессора

  • * Elasticsearch узлы *: хранит все журналы / сообщения. Его производительность зависит от оперативной памяти и дискового ввода-вывода

  • * MongoDB *: хранит метаданные и не испытывает большой нагрузки

  • * Веб-интерфейс *: пользовательский интерфейс

Вот схема компонентов Graylog (обратите внимание, что сообщения отправляются с других ваших серверов):

изображение: https: //assets.digitalocean.com/articles/graylog2/graylog_simple_setup_v2.png [Основная настройка Graylog]

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

Предпосылки

Для установки, описанной в этом руководстве, требуется сервер CentOS 7 с как минимум 2 ГБ ОЗУ. Вам также необходим доступ с правами суперпользователя (шаги 1-4 из Initial Server Setup с CentOS 7).

Если вы используете VPS с менее чем 2 ГБ ОЗУ, вы не сможете запустить все компоненты Graylog.

Давайте начнем установку программного обеспечения!

Установить 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

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

sudo yum install -y mongodb-org

Теперь запустите MongoDB:

sudo systemctl restart mongod

MongoDB должен быть запущен сейчас. Давайте перейдем к установке Java.

Установить Java

Elasticsearch и Logstash требуют Java, поэтому мы установим это сейчас. Мы установим последнюю версию Oracle Java 8, потому что именно это рекомендует Elasticsearch. Однако он должен хорошо работать с OpenJDK, если вы решите пойти по этому пути. Выполнение шагов в этом разделе означает, что вы принимаете Бинарное лицензионное соглашение Oracle для Java SE.

Перейдите в свой домашний каталог и загрузите JDK RPM Oracle Java 8 (обновление 73, самое позднее на момент написания этой статьи) с помощью следующих команд:

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 с помощью этой команды yum (если вы скачали другую версию, замените имя файла здесь):

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

Теперь Java должна быть установлена ​​в + / usr / java / jdk1.8.0_73 / jre / bin / java + и связана с + / usr / bin / java +.

Вы можете удалить архивный файл, который вы скачали ранее:

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

Теперь, когда Java установлена, давайте установим Elasticsearch.

Установить Elasticsearch

Graylog 1.x работает только с версиями Elasticsearch до 2.0, поэтому мы установим Elasticsearch 1.7.x. Elasticsearch можно установить с помощью менеджера пакетов, добавив список источников пакетов Elastic.

Выполните следующую команду, чтобы импортировать открытый ключ GPG Elasticsearch в rpm:

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», чтобы оно выглядело следующим образом:

asticsearch.yml - 1 из 2

cluster.name: graylog-development

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

asticsearch.yml - 2 из 2

network.host: localhost

Сохраните и выйдите из +asticsearch.yml +.

Теперь запустите Elasticsearch:

sudo systemctl restart elasticsearch

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

sudo systemctl enable elasticsearch

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

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

Теперь, когда Elasticsearch запущен и работает, давайте установим сервер Graylog.

Установить сервер Graylog

Теперь, когда мы установили другое необходимое программное обеспечение, давайте установим серверный компонент Graylog, + graylog-server +.

Сначала загрузите 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

Теперь мы должны настроить пароль и секретный ключ admin. Секретный ключ пароля настраивается в 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

Пароль admin назначается путем создания + shasum + требуемого пароля и назначения его параметру + root_password_sha2 + в файле конфигурации Graylog. Создайте shasum вашего желаемого пароля с помощью следующей команды, заменив выделенный «пароль» своим собственным. Команда sed вставляет его в конфигурацию Graylog для вас:

PASSWORD=$(echo -n  | 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 + и измените его значение так, чтобы оно выглядело следующим образом:

/etc/graylog/server/server.conf - 1 из 4

rest_transport_uri = http://127.0.0.1:12900/

Далее, поскольку у нас есть только один осколок Elasticsearch (который работает на этом сервере), мы изменим значение +asticsearch_shards + на 1:

/etc/graylog/server/server.conf - 2 из 4

elasticsearch_shards =

Затем измените значение +asticsearch_cluster_name + на «graylog-development» (аналогично Elasticsearch + cluster.name +):

/etc/graylog/server/server.conf - 3 из 4

elasticsearch_cluster_name = graylog-development

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

/etc/graylog/server/server.conf - 4 из 4

elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

Сохранить и выйти. Теперь + graylog-server + настроен и готов к запуску.

Запустите сервер Graylog с помощью служебной команды:

sudo systemctl start graylog-server

Следующим шагом является установка веб-интерфейса Graylog. Давайте сделаем это сейчас!

Установить Graylog Web

Установите Graylog Web с помощью этой команды:

sudo yum -y install graylog-web

Далее мы хотим настроить секретный ключ веб-интерфейса, параметр + application.secret в * web.conf *. Мы сгенерируем другой ключ, как мы это сделали с конфигурацией сервера Graylog, и вставим его с помощью 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/%22[http://127.0.0.1:12900/»]).

/etc/graylog/web/web.conf выдержка

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

Веб-интерфейс Graylog настроен. Запустите веб-интерфейс Graylog:

sudo systemctl restart graylog-web

Теперь мы можем использовать веб-интерфейс Graylog. Давайте сделаем это сейчас.

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

Войдите в веб-интерфейс Graylog

В вашем любимом веб-браузере перейдите на порт «+ 9000 +» публичного IP-адреса вашего сервера:

In a web browser:http://:9000/

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

После входа вы увидите что-то вроде следующего:

изображение: https: //assets.digitalocean.com/articles/graylog/getting_started.png [Graylog Dashboard]

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

Создать вход Syslog UDP

Чтобы добавить вход для получения сообщений системного журнала, щелкните раскрывающийся список * System * в верхнем меню.

Теперь из выпадающего меню выберите * Inputs *.

Выберите * Syslog UDP * из выпадающего меню и нажмите кнопку * Launch new input *.

Появится модальное окно «Запустить новый вход: Syslog UDP». Введите следующую информацию (замените частный IP-адрес вашего сервера адресом привязки):

  • * Заголовок: * + syslog +

  • * Порт: * + 8514 +

  • * Адрес привязки: * + graylog_private_IP +

Затем нажмите * Launch *.

Теперь вы должны увидеть вход с именем «syslog» в разделе * Local input * (рядом с ним должно быть зеленое поле с надписью «running»), например, так:

изображение: https: //assets.digitalocean.com/articles/graylog/inputs.png [вход в системный журнал Graylog]

Теперь наш сервер Graylog готов принимать сообщения системного журнала на порт + 8514 + с ваших серверов. Давайте настроим ваши серверы для отправки их сообщений системного журнала в Graylog сейчас.

Настройте Rsyslog для отправки системных журналов на сервер Graylog

На всех ваших * клиентских серверах *, серверах, которым вы хотите отправлять сообщения системного журнала в Graylog, выполните следующие действия.

Создайте файл конфигурации rsyslog в /etc/rsyslog.d. Мы назовем наш + 90-graylog.conf +:

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

В этом файле добавьте следующие строки, чтобы настроить rsyslog для отправки сообщений syslog на ваш сервер Graylog (замените + graylog_private_IP + на частный IP-адрес вашего сервера Graylog):

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

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

Сохранить и выйти. Этот файл будет загружен как часть вашей конфигурации rsyslog. Теперь вам нужно перезапустить rsyslog, чтобы изменения вступили в силу.

sudo systemctl restart rsyslog

После завершения настройки rsyslog на всех серверах, которые вы хотите отслеживать, вернитесь в веб-интерфейс Graylog.

Просмотр источников Graylog

В вашем любимом веб-браузере перейдите на порт «+ 9000 +» публичного IP-адреса вашего сервера:

In a web browser:http://:9000/

Нажмите * Источники * в верхней панели. Вы увидите список всех серверов, на которых вы настроили rsyslog.

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

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

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

изображение: https: //assets.digitalocean.com/articles/graylog/search_sshd.png [Пример поиска Graylog]

Как видите, результаты нашего примера поиска показали журналы sshd для различных серверов и множество неудачных попыток входа в систему. Ваши результаты могут отличаться, но это может помочь вам определить многие проблемы, в том числе то, как неавторизованные пользователи пытаются получить доступ к вашим серверам.

В дополнение к основным функциям поиска во всех ваших источниках вы можете выполнять поиск в журналах определенного хоста или в течение определенного периода времени.

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

Для получения дополнительной информации о том, как работает панель поиска, ознакомьтесь с официальной документацией: Graylog Searching

Заключение

Теперь, когда вы настроили Graylog, не стесняйтесь исследовать другие функции, которые он предлагает. Вы можете отправлять журналы других типов в Graylog и настраивать экстракторы (или переформатировать журналы с помощью программного обеспечения, такого как logstash), чтобы сделать журналы более структурированными и доступными для поиска. Вы также можете изучить возможности расширения среды Graylog, разделив компоненты и добавив избыточность для повышения производительности и доступности.

Удачи!

Related