Вступление
В этом руководстве мы расскажем, как установить 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, разделив компоненты и добавив избыточность для повышения производительности и доступности.
Удачи!