Сервер журналирования

Общие сведения

Централизованный сервер журналирования может помочь с анализом событий на компьютерах в ИТ-инфраструктуре, объединенной в систему. Настроить их сбор с журналов можно с помощью journald.

В ОС РОСА "ХРОМ" используется сервис journald. Journald входит в состав systemd.

В systemd предусмотрены специальные компоненты для решения задачи логирования: systemd-journal-remote, systemd-journal-upload и systemd-journal-gatewayd.

Установка сервера

Для работы нужно установить пакет systemd-journal-gateway на всех трех хостах, перечисленных ниже, командой:

dnf install systemd-journal-gateway

В качестве примера в п. Сервер журналирования будет использовано три разных хоста:

  • rosaserver – сервер логирования journald;
  • rosaserver1 – первый клиент (сервер/десктоп);
  • rosaserver2 – второй клиент (сервер/десктоп).

Настройка сервера

Настройка состоит из двух частей. В первой части настраивается сам сервер с именем хоста rosaserver.

Во второй части настраиваются два клиента (сервера/десктопа) c именами хостов/IP: rosaserver1/192.168.1.111 и rosaserver2/192.168.1.232.

В первую очередь осуществляется настройка systemd-journal-remote на сервере. В ходе настройки необходимо совершить несколько шагов:

  1. прописать в файле /etc/hosts клиентов:
192.168.1.111 rosaserver1
192.168.1.232 rosaserver2
  1. создать директорию /var/log/journal/remote, в которой будут храниться все журналы с клиентов:
mkdir -p /var/log/journal/remote
  1. предоставить права на эту директорию:
chown systemd-journal-remote:systemd-journal-remote /var/log/journal/remote

Для дальнейшей настройки сервера следует выполнить следующие действия:

  1. создать директорию для сертификата:
mkdir /etc/pki/tls/ca
ln -s /etc/pki/tls/ca /etc/ssl/ca

Остальные директории /etc/ssl/certs и /etc/ssl/private уже созданы.

  1. сгенерировать ключ сервера:
openssl req -newkey rsa:2048 -days 3650 -x509 -nodes -out /etc/ssl/ca/caserver.pem -keyout /etc/ssl/ca/caserver.key -subj '/CN=Certificate authority/'
  1. сгенерировать сертификаты для сервера (опция CN-SERVER должна совпадать с именем хоста сервера; в данном случае /CN=rosaserver):
openssl req -newkey rsa:2048 -nodes -out /etc/ssl/certs/rosaserver.csr -keyout /etc/ssl/certs/rosaserver.key -subj "/CN=rosaserver/"
openssl x509 -req -in /etc/ssl/certs/rosaserver.csr -CA /etc/ssl/ca/caserver.pem -CAkey /etc/ssl/ca/caserver.key -out /etc/ssl/private/rosaserver.pem
  1. сгенерировать сертификаты для первого клиента (опция CN- CLIENT должна совпадать с именем хоста клиента, в данном случае /CN=rosaserver1):
openssl req -newkey rsa:2048 -nodes -out /etc/ssl/certs/rosaserver1.csr -keyout /etc/ssl/certs/rosaserver1.key -subj "/CN=rosaserver1/"
openssl x509 -req -in /etc/ssl/certs/rosaserver1.csr -CA /etc/ssl/ca/caserver.pem -CAkey /etc/ssl/ca/caserver.key -out /etc/ssl/private/rosaserver1.pem
  1. генерировать сертификаты для второго клиента (опция CN-CLIENT должна совпадать с именем хоста клиента, в данном случае /CN=rosaserver2):
openssl req -newkey rsa:2048 -nodes -out /etc/ssl/certs/rosaserver2.csr -keyout /etc/ssl/certs/rosaserver2.key -subj "/CN=rosaserver2/"
openssl x509 -req -in /etc/ssl/certs/rosaserver2.csr -CA /etc/ssl/ca/caserver.pem -CAkey /etc/ssl/ca/caserver.key -out /etc/ssl/private/rosaserver2.pem
  1. сгенерированные ключи и сертификаты для сервера уже размещены в нужно месте; требуется скопировать ключи и сертификаты для клиентов.
  2. на сервере выдать нужные права:
chmod 644 /etc/ssl/certs/rosaserver.key
chmod 644 /etc/ssl/private/rosaserver.pem
  1. отредактировать файл конфигурации /etc/systemd/journal-remote.conf к следующему виду:
[Remote]
Seal=false
SplitMode=host
ServerKeyFile=/etc/ssl/certs/rosaserver.key
ServerCertificateFile=/etc/ssl/private/rosaserver.pem
TrustedCertificateFile=/etc/ssl/ca/caserver.pem
  1. сохранить файл и выйти.

Настройка клиента

Для настройки клиентов нужно выполнить следующие действия:

  1. прописать сервер в файле /etc/hosts на каждом из клиентов:
192.168.1.15 rosaserver
  1. создать директорию для сертификата:
mkdir /etc/pki/tls/ca
ln -s /etc/pki/tls/ca /etc/ssl/ca

Остальные директории и ссылки /etc/ssl/certs и /etc/ssl/private уже созданы.

  1. войти на сервер и скопировать ключи и сертификаты для первого клиента по SSH:
scp /etc/ssl/ca/caserver.pem root@192.168.1.111:/etc/ssl/ca/
scp /etc/ssl/private/rosaserver1.pem root@192.168.1.111:/etc/ssl/private/
scp /etc/ssl/certs/rosaserver1.key root@192.168.1.111:/etc/ssl/certs/
  1. скопировать ключи и сертификаты для второго клиента по ssh:
scp /etc/ssl/ca/caserver.pem root@192.168.1.232:/etc/ssl/ca/
scp /etc/ssl/private/rosaserver2.pem root@192.168.1.232:/etc/ssl/private/
scp /etc/ssl/certs/rosaserver2.key root@192.168.1.232:/etc/ssl/certs/
  1. предоставить нужные права на первом клиенте:
chmod 644 /etc/ssl/certs/rosaserver1.key
chmod 644 /etc/ssl/private/rosaserver1.pem
  1. предоставить нужные права на втором клиенте:
chmod 644 /etc/ssl/certs/rosaserver2.key
chmod 644 /etc/ssl/private/rosaserver2.pem
  1. привести файл конфигурации первого клиента к виду:
[Upload]
URL=https://rosaserver:19532
ServerKeyFile=/etc/ssl/certs/rosaserver1.key
ServerCertificateFile=/etc/ssl/private/rosaserver1.pem
TrustedCertificateFile=/etc/ssl/ca/caserver.pem
  1. привести файл конфигурации второго клиента к виду:
[Upload]
URL=https://rosaserver:19532
ServerKeyFile=/etc/ssl/certs/rosaserver2.key
ServerCertificateFile=/etc/ssl/private/rosaserver2.pem
TrustedCertificateFile=/etc/ssl/ca/caserver.pem

Запуск логирования journald

Для запуска логирования нужно выполнить запуск:

  1. на сервере:
systemctl start systemd-journal-gateway.service
systemctl start systemd-journal-remote.service
  1. на всех клиентах:
systemctl start systemd-journal-gateway.service
systemctl start systemd-journal-upload.service

Проверка работоспособности

Для чтения собственных логов самого сервера используется команда:

journalctl

Для чтения логов с удаленных клиентов используется команда:

journalctl -D /var/log/journal/remote

Для проверки лога с удаленного сервера необходимо выполнить следующие шаги:

  1. войти на второй клиент, т.е. на rosaserver2, и выполнить команду:
logger -p syslog.debug "### TEST-2 MESSAGE from client rosaserver2 ###"
  1. войти на сервер и посмотреть, как данная запись с удаленного клиента rosaserver2 отразилась в журнале на сервере, с помощью команды:
journalctl -D /var/log/journal/remote/ | grep TEST

Примерный результат приведен ниже (Рисунок 15).

Рисунок 15 - Проверка отображения записи с сервера

Логи с удаленных серверов будут храниться в директории /var/log/journal/remote по имени хоста (Рисунок 16):

Рисунок 16 - Хранение логов удаленных серверов