Сервер журналирования
Общие сведения
Централизованный сервер журналирования может помочь с анализом событий на компьютерах в ИТ-инфраструктуре, объединенной в систему. Настроить их сбор с журналов можно с помощью 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 на сервере. В ходе настройки необходимо совершить несколько шагов:
- прописать в файле
/etc/hostsклиентов:
192.168.1.111 rosaserver1
192.168.1.232 rosaserver2
- создать директорию
/var/log/journal/remote, в которой будут храниться все журналы с клиентов:
mkdir -p /var/log/journal/remote
- предоставить права на эту директорию:
chown systemd-journal-remote:systemd-journal-remote /var/log/journal/remote
Для дальнейшей настройки сервера следует выполнить следующие действия:
- создать директорию для сертификата:
mkdir /etc/pki/tls/ca
ln -s /etc/pki/tls/ca /etc/ssl/ca
Остальные директории /etc/ssl/certs и /etc/ssl/private уже созданы.
- сгенерировать ключ сервера:
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/'
- сгенерировать сертификаты для сервера (опция
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
- сгенерировать сертификаты для первого клиента (опция
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
- генерировать сертификаты для второго клиента (опция
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
- сгенерированные ключи и сертификаты для сервера уже размещены в нужно месте; требуется скопировать ключи и сертификаты для клиентов.
- на сервере выдать нужные права:
chmod 644 /etc/ssl/certs/rosaserver.key
chmod 644 /etc/ssl/private/rosaserver.pem
- отредактировать файл конфигурации
/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
- сохранить файл и выйти.
Настройка клиента
Для настройки клиентов нужно выполнить следующие действия:
- прописать сервер в файле
/etc/hostsна каждом из клиентов:
192.168.1.15 rosaserver
- создать директорию для сертификата:
mkdir /etc/pki/tls/ca
ln -s /etc/pki/tls/ca /etc/ssl/ca
Остальные директории и ссылки /etc/ssl/certs и /etc/ssl/private уже созданы.
- войти на сервер и скопировать ключи и сертификаты для первого клиента по 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/
- скопировать ключи и сертификаты для второго клиента по 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/
- предоставить нужные права на первом клиенте:
chmod 644 /etc/ssl/certs/rosaserver1.key
chmod 644 /etc/ssl/private/rosaserver1.pem
- предоставить нужные права на втором клиенте:
chmod 644 /etc/ssl/certs/rosaserver2.key
chmod 644 /etc/ssl/private/rosaserver2.pem
- привести файл конфигурации первого клиента к виду:
[Upload]
URL=https://rosaserver:19532
ServerKeyFile=/etc/ssl/certs/rosaserver1.key
ServerCertificateFile=/etc/ssl/private/rosaserver1.pem
TrustedCertificateFile=/etc/ssl/ca/caserver.pem
- привести файл конфигурации второго клиента к виду:
[Upload]
URL=https://rosaserver:19532
ServerKeyFile=/etc/ssl/certs/rosaserver2.key
ServerCertificateFile=/etc/ssl/private/rosaserver2.pem
TrustedCertificateFile=/etc/ssl/ca/caserver.pem
Запуск логирования journald
Для запуска логирования нужно выполнить запуск:
- на сервере:
systemctl start systemd-journal-gateway.service
systemctl start systemd-journal-remote.service
- на всех клиентах:
systemctl start systemd-journal-gateway.service
systemctl start systemd-journal-upload.service
Проверка работоспособности
Для чтения собственных логов самого сервера используется команда:
journalctl
Для чтения логов с удаленных клиентов используется команда:
journalctl -D /var/log/journal/remote
Для проверки лога с удаленного сервера необходимо выполнить следующие шаги:
- войти на второй клиент, т.е. на
rosaserver2, и выполнить команду:
logger -p syslog.debug "### TEST-2 MESSAGE from client rosaserver2 ###"
- войти на сервер и посмотреть, как данная запись с удаленного клиента
rosaserver2отразилась в журнале на сервере, с помощью команды:
journalctl -D /var/log/journal/remote/ | grep TEST
Примерный результат приведен ниже (Рисунок 15).

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

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