Установка Graylog2 и централизация логов в Ubuntu 14.04
Ubuntu | Комментировать запись
Graylog2 – это инструмент для управления и анализа логов; его можно использовать как для мониторинга SSH-подключений, так и для отслеживания необычной активности на сервере для отладки приложений. Инструмент Graylog основан на Elasticsearch, Scala, Java и MongoDB.
При помощи Graylog можно собирать и отслеживать множество логов, но данное руководство ограничивается системными логами.
Данный мануал научит вас устанавливать Graylog2 (v0.20.2) и настроить централизованный сбор системных логов.
Примечание: Все компоненты в данном руководстве устанавливаются на один сервер.
Компоненты Graylog
Graylog2 состоит из четырех основных компонентов:
- Ноды сервера Graylog: рабочий процесс, который получает и обрабатывает сообщения и взаимодействует с клиентскими компонентами; работа этого компонента зависит от CPU.
- Ноды Elasticsearch: хранят все логи и сообщения. Зависит от RAM и I/O.
- MongoDB: хранит метаданные; как правило, не получает большой нагрузки.
- Веб-интерфейс: пользовательский интеерфейс.
Данное руководство поможет выполнить базовую установку Graylog2; при этом все компоненты будут установлены на один сервер. В среде производства рекомендуется устанавливать компоненты на разных машинах.
Требования
- Сервер 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://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Обновите индекс пакетов:
sudo apt-get update
Установите последнюю стабильную версию MongoDB:
sudo apt-get install mongodb-org
БД MongoDB готова к работе.
Установка Java 7
Elasticsearch требует Java 7. Установите Oracle Java 7 (эту версию рекомендуют разработчики Elasticsearch). В целом, OpenJDK тоже подойдёт.
Добавьте PPA-репозиторий для Oracle Java:
sudo add-apt-repository ppa:webupd8team/java
Обновите индекс пакетов:
sudo apt-get update
Установите последнюю стабильную версию Oracle Java 7 и примите условия лицензии:
sudo apt-get install oracle-java7-installer
Установка Elasticsearch
Graylog2 v0.20.2 работает только с версией Elasticsearch v.0.90.10. Загрузите и установите ее с помощью следующих команд:
cd ~; wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.deb
sudo dpkg -i elasticsearch-0.90.10.deb
Теперь нужно изменить параметр clusters.name. Откройте конфигурационный файл Elasticsearch:
sudo vi /etc/elasticsearch/elasticsearch.yml
Найдите раздел, в котором указан параметр cluster.name. Раскомментируйте его и замените значение по умолчанию на graylog2, это выглядит следующим образом:
cluster.name: graylog2
Также нужно ограничить внешний доступ к экземпляру Elasticsearch (порт 9200), чтобы посторонние не могли прочитать данные или отключить кластер Elasticseach через HTTP API. Найдите строку network.bind_host и раскомментируйте ее, чтобы она выглядела следующим образом:
network.bind_host: localhost
Затем добавьте в файл следующую строку, чтобы отключить динамические скрипты.
script.disable_dynamic: true
Сохраните и закройте файл. Перезапустите Elasticsearch:
sudo service elasticsearch restart
Через несколько секунд запустите следующую команду, чтобы убедиться, что Elasticsearch работает правильно:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Теперь можно приступать к установке сервера Graylog.
Установка сервера Graylog2
Загрузите архив Graylog2 в каталог /opt:
cd /opt; sudo wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.2/graylog2-server-0.20.2.tgz
Распакуйте архив:
sudo tar xvf graylog2-server-0.20.2.tgz
Создайте символическую ссылку на новый каталог, чтобы упростить имя каталога:
sudo ln -s graylog2-server-0.20.2 graylog2-server
Скопируйте образец конфигурационного файла в /etc:
sudo cp /opt/graylog2-server/graylog2.conf.example /etc/graylog2.conf
Затем установите программу pwgen, при помощи которой можно генерировать пароли и закрытые ключи:
sudo apt-get install pwgen
После этого нужно создать пароль и закрытый ключ администратора. Закрытый ключ указывается в graylog2.conf при помощи параметра password_secret. Сгенерируйте случайный ключ и вставьте его в конфигурацию Graylog2:
SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog2.conf
Пароль администратора можно задать, внеся shasum необходимого пароля в параметр root_password_sha2 в конфигурационном файле Graylog2. Создайте shasum необходимого пароля, указав вместо password свой пароль; команда sed добавит полученное значение в настройки Graylog2.
PASSWORD=$(echo -n password | shasum -a 256 | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog2.conf
Итак, пароль администратора установлен. Теперь откройте конфигурационный файл Graylog2, чтобы внести в него несколько изменений.
sudo vi /etc/graylog2.conf
Обратите внимание на параметры password_secret и root_password_sha2, которые теперь имеют случайные значения.
Настройте параметр rest_transport_uri (он отвечает за взаимодействие интерфейса Graylog2 с сервером). Поскольку все компоненты установлены на одном сервере, нужно указать 127.0.0.1 или localhost. Найдите параметр rest_transport_uri и измените его следующим образом:
rest_transport_uri = http://127.0.0.1:12900/
Поскольку Elasticsearch на данный момент использует только один шард, нужно изменить значение параметра elasticsearch_shards на 1:
elasticsearch_shards = 1
Сохраните и закройте файл. Сервер Graylog2 настроен и готов к запуску.
Если вы хотите протестировать сервер, запустите следующую команду:
sudo java -jar /opt/graylog2-server/graylog2-server.jar --debug
Она вернет объемный вывод. Если вы видите подобные строки, значит, сервер Graylog2 настроен правильно:
2014-06-06 14:16:13,420 INFO : org.graylog2.Core - Started REST API at <http://127.0.0.1:12900/>
2014-06-06 14:16:13,421 INFO : org.graylog2.Main - Graylog2 up and running.
Нажмите CTRL-C, чтобы остановить команду и вернуться в оболочку.
Теперь установите сценарий инициализации Graylog2. Скопируйте graylog2ctl в /etc/init.d:
sudo cp /opt/graylog2-server/bin/graylog2ctl /etc/init.d/graylog2
Обновите сценарий: переместите логи Graylog2 в /var/log и посмотрите файл JAR сервера Graylog2 в /opt/graylog2-server, выполнив следующие две команды sed:
sudo sed -i -e 's/GRAYLOG2_SERVER_JAR=\${GRAYLOG2_SERVER_JAR:=graylog2-server.jar}/GRAYLOG2_SERVER_JAR=\${GRAYLOG2_SERVER_JAR:=\/opt\/graylog2-server\/graylog2-server.jar}/' /etc/init.d/graylog2
sudo sed -i -e 's/LOG_FILE=\${LOG_FILE:=log\/graylog2-server.log}/LOG_FILE=\${LOG_FILE:=\/var\/log\/graylog2-server.log}/' /etc/init.d/graylog2
Установите сценарий:
sudo update-rc.d graylog2 defaults
Теперь можно запустить сервер Graylog2:
sudo service graylog2 start
Установка интерфейса Graylog2
Чтобы установить интерфейс Graylog2 v.0.20.2 в /opt, введите:
cd /opt; sudo wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.2/graylog2-web-interface-0.20.2.tgz
sudo tar xvf graylog2-web-interface-0.20.2.tgz
Создайте символическую ссылку на новый каталог, чтобы упростить имя каталога:
sudo ln -s graylog2-web-interface-0.20.2 graylog2-web-interface
После этого нужно настроить закрытый ключ интерфейса (параметр application.secret в файле graylog2-web-interface.conf). Сгенерируйте ключ и добавьте его в файл при помощи sed:
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /opt/graylog2-web-interface/conf/graylog2-web-interface.conf
Теперь откройте конфигурационный файл веб-интерфейса с помощью этой команды:
sudo vi /opt/graylog2-web-interface/conf/graylog2-web-interface.conf
Обновите настройки веб-интерфейса. Укажите новое значение параметра graylog2-server.uris; это разделённый запятыми список REST URI сервера.
Поскольку в данной установке есть только нода сервера Graylog2, это значение должно совпадать с параметром rest_listen_uri в настройках Graylog2 (например, http://127.0.0.1:12900/).
graylog2-server.uris="http://127.0.0.1:12900/"
Веб-интерфейс Graylog2 настроен.
Запустите его:
sudo /opt/graylog2-web-interface-0.20.2/bin/graylog2-web-interface
Если вы видите эти две строки, веб-интерфейс работает правильно:
[info] play - Application started (Prod)
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
Нажмите CTRL-C, чтобы остановить веб-интерфейс. Теперь нужно установить сценарий запуска. Вы можете создать свой собственный сценарий или загрузить сценарий из этого мануала. Чтобы загрузить сценарий в домашний каталог, используйте следующую команду:
cd ~; wget https://assets.digitalocean.com/articles/graylog2/graylog2-web
Скопируйте сценарий в /etc/init.d и передайте права на него пользователю root:
sudo cp ~/graylog2-web /etc/init.d/
sudo chown root:root /etc/init.d/graylog2-web
sudo chmod 755 /etc/init.d/graylog2-web
Установите сценарий:
sudo update-rc.d graylog2-web defaults
Запустите интерфейс Graylog2:
sudo service graylog2-web start
Настройка сбора системных логов
Откройте интерфейс Graylog, он доступен по ссылке:
http://gl2_public_IP:9000/
На экране появится форма входа. Введите имя пользователя admin и установленный ранее пароль администратора. После этого вы получите доступ к панели.
В верхней панели указано количество извещений, оно выделено красным. При первом запуске интерфейса программа сообщит, что у вас есть нода без каких-либо входных данных. Добавьте данные для приема сообщений через UDP.
Входные данные UDP
Чтобы получать сообщения системных логов, откройте выпадающее меню System в верхней панели. В меню выберите Inputs и Syslog UDP, а затем Launch new input.
На экране появится окно Launch a new input: Syslog UDP. Введите следующую инфомацию:
- Title: syslog
- Port: 514
- Bind address: gl2_private_IP
Затем кликните Launch.
Теперь в разделе Local inputs появятся данные syslog (их состояние должно быть running).
Теперь сервер Graylog сможет принимать сообщения системных логов на порт 514.
Настройка rsyslog для передачи сообщений логов в Graylog2
Примечание: Данный раздел нужно выполнить на всех клиентских серверах.
Создайте конфигурационный файл rsyslog в каталоге /etc/rsyslog.d (в руководстве он называется 90-graylog2.conf):
sudo vi /etc/rsyslog.d/90-graylog2.conf
В этот файл нужно добавить следующие строки (замените gl2_private_IP внутренним IP-адресом сервера Graylog2).
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @gl2_private_IP:514;GRAYLOGRFC5424
Сохраните и закройте файл. Теперь этот файл будет загружаться вместе с другими настройками rsyslog. Перезапустите rsyslog:
sudo service rsyslog restart
Ресурсы Graylog
Откройте в браузере ссылку:
http://gl2_public_IP:9000/
В верхней панели выберите Sources. На экране появится список всех серверов, на которых настроен rsyslog.
Имя хоста указано слева, справа отображается количество сообщений от логов.
Поиск данных Graylog2
Теперь Graylog2 может выполнять поиск по сообщениям. Для примера попробуйте найти sshd, чтобы просмотреть активность SSH. В результате можно посмотреть логи sshd различных серверов и узнать о неудачных попытках входа.
Graylog2 может искать логи конкретного хоста за конкретный период времени.
Поиск данных Graylog2 позволяет просмотреть логи сервера или нескольких серверов после атаки. Централизованное ведение логов позволяет быстрее реагировать на атаки злоумышленников, потому что вам не нужно входить на несколько серверов, чтобы просмотреть текущие события.
Больше о поиске можно найти в официальной документации.
Заключение
Теперь инструмент мониторинга логов Graylog2 установлен на сервер. Можно добавить в настройки другие логи, структурировать или переформатировать логи при помощи logstash или расширить среду Graylog2, переместив его компоненты на разные серверы.
Читайте также: Управление логами с помощью Graylog 2 в Ubuntu 16.04
Tags: ElasticSearch, Graylog, Graylog 2, MongoDB, Oracle Java 7, Ubuntu 14.04