Установка Graylog 1.x на сервер Ubuntu 14.04
Linux, Ubuntu | Комментировать запись
Данное руководство поможет установить Graylog v1.3.х (иногда эта версия называется Graylog2) и настроить централизованный сбор системных логов.
Graylog – это мощный инструмент для управления и анализа логов; его можно использовать как для мониторинга SSH-подключений, так и для отслеживания необычной активности на сервере для отладки приложений. Инструмент Graylog основан на Elasticsearch, Java и MongoDB.
При помощи Graylog можно собирать и отслеживать множество логов, но данное руководство ограничивается системными логами.
Примечание: данное руководство охватывает только основы работы с Graylog, а потому все компоненты устанавливаются на один сервер.
Компоненты Graylog
Graylog состоит из четырех основных компонентов:
- Ноды сервера Graylog: рабочий процесс, который получает и обрабатывает сообщения и взаимодействует с клиентскими компонентами; работа этого компонента зависит от CPU.
- Ноды Elasticsearch: хранят все логи и сообщения. Зависит от RAM и I/O.
- MongoDB: хранит метаданные; как правило, не получает большой нагрузки.
- Веб-интерфейс: пользовательский интеерфейс.
Данное руководство поможет выполнить базовую установку Graylog; все компоненты будут установлены на один сервер. В среде производства рекомендуется устанавливать компоненты на разных машинах.
Требования
- Сервер 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://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
Elasticsearch требует Java. Установите Oracle Java 8 (эту версию рекомендуют разработчики Elasticsearch). В целом OpenJDK тоже подойдёт.
Добавьте PPA-репозиторий для Oracle Java:
sudo add-apt-repository ppa:webupd8team/java
Обновите БД apt:
sudo apt-get update
Установите последнюю стабильную версию Oracle Java 8 и примите условия лицензии:
sudo apt-get install oracle-java8-installer
Установка Elasticsearch
Graylog 1.x работает только с Elasticsearch до версии 2.0. Потому рекомендуется установить версию 1.7.х. Elasticsearch можно установить при помощи пакетного менеджера.
Импортируйте открытый GPG-ключ Elasticsearch:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Если командная строка на этом этапе зависла, вероятно, она ожидает пароль.
Создайте исходный список 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:
cluster.name: graylog-development
После этого нужно ограничить доступ к Elasticsearch (порт 9200), чтобы посторонние не смогли получить доступ к данным или отключить кластер через интерфейс HTTP. Найдите строку network.host и укажите в ней localhost.
network.host: localhost
Сохраните и закройте файл.
Запустите Elasticsearch:
sudo service elasticsearch restart
Подождите пару минут и проверьте работу Elasticsearch:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Теперь можно приступать к установке сервера Graylog.
Установка сервера Graylog
Загрузите пакет Graylog в домашний каталог:
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
После этого нужно создать пароль и закрытый ключ администратора. Закрытый ключ указывается в 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 | 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и измените его следующим образом:
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 apt-get 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 start 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 service rsyslog restart
Ресурсы Graylog
Откройте в браузере ссылку:
http://graylog_public_IP:9000/
В верхней панели выберите Sources. На экране появится список всех серверов, на которых настроен rsyslog.
Имя хоста указано слева, справа отображается количество сообщений от логов.
Поиск данных Graylog
Теперь Graylog может выполнять поиск по сообщениям. Для примера попробуйте найти sshd, чтобы просмотреть активность SSH. В результате можно посмотреть логи sshd различных серверов и узнать о неудачных попытках входа.
Graylog может искать логи конкретного хоста за конкретный период времени.
Поиск данных Graylog позволяет просмотреть логи сервера или нескольких серверов после атаки. Централизованное ведение логов позволяет быстрее реагировать на атаки злоумышленников, потому что вам не нужно входить на несколько серверов, чтобы просмотреть текущие события.
Больше о поиске можно найти в официальной документации.
Заключение
Теперь инструмент мониторинга логов Graylog установлен на сервер. Можно добавить в настройки другие логи, структурировать или переформатировать логи при помощи logstash или расширить среду Graylog, переместив его компоненты на разные серверы.
Tags: ElasticSearch, Graylog, MongoDB, Oracle Java 8, Ubuntu 14.04