Вступление
В этом руководстве мы расскажем, как установить Graylog v1.3.x (иногда называемый Graylog2) в Ubuntu 14.04 и настроить его для сбора системных журналов ваших систем в централизованном месте. 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, в которой все компоненты установлены на одном сервере. Для большей производственной настройки рекомендуется установить компоненты на отдельных серверах из соображений производительности.
Предпосылки
Для установки, описанной в этом руководстве, требуется сервер Ubuntu 14.04 с как минимум 2 ГБ ОЗУ. Вам также нужен root-доступ (шаги 1-4 из Initial Setup Server с Ubuntu 14.04).
Если вы используете VPS с менее чем 2 ГБ ОЗУ, вы не сможете запустить все компоненты Graylog.
Давайте начнем установку программного обеспечения!
Установить 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.
Установить Java
Elasticsearch требует Java, поэтому мы установим его сейчас. Мы установим Oracle Java 8, потому что это то, что рекомендует Elastic. Однако он должен хорошо работать с OpenJDK, если вы решите пойти по этому пути.
Добавьте Oracle Java PPA в apt:
sudo add-apt-repository ppa:webupd8team/java
Обновите базу данных пакетов apt:
sudo apt-get update
Установите последнюю стабильную версию Oracle Java 8 с помощью этой команды (и примите появившееся лицензионное соглашение):
sudo apt-get install oracle-java8-installer
Теперь, когда Java установлена, давайте установим Elasticsearch.
Установить Elasticsearch
Graylog 1.x работает только с версиями Elasticsearch до 2.0, поэтому мы установим Elasticsearch 1.7.x. Elasticsearch можно установить с помощью менеджера пакетов, добавив список источников пакетов Elastic.
Выполните следующую команду, чтобы импортировать открытый ключ GPG Elasticsearch в apt:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Если ваша подсказка просто висит там, она, вероятно, ожидает пароль вашего пользователя (для авторизации команды + sudo +
). Если это так, введите свой пароль.
Создайте список источников 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», чтобы оно выглядело следующим образом:
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 service elasticsearch restart
Затем выполните следующую команду, чтобы запустить Elasticsearch при загрузке:
sudo update-rc.d elasticsearch defaults 95 10
Через несколько секунд выполните следующую команду, чтобы проверить правильность работы Elasticsearch:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Теперь, когда Elasticsearch запущен и работает, давайте установим сервер Graylog.
Установить сервер Graylog
Теперь, когда мы установили другое необходимое программное обеспечение, давайте установим серверный компонент Graylog, + graylog-server +
.
Сначала загрузите пакет Graylog Debian в свой домашний каталог с помощью следующих команд:
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
Теперь мы должны настроить пароль и секретный ключ 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 | 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 +
и измените его значение так, чтобы оно выглядело следующим образом:
/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 start graylog-server
Следующим шагом является установка веб-интерфейса Graylog. Давайте сделаем это сейчас!
Установить Graylog Web
Установите Graylog Web с помощью следующих команд:
sudo apt-get 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 start 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 service rsyslog restart
После завершения настройки 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, разделив компоненты и добавив избыточность для повышения производительности и доступности.
Удачи!