Сервер логирования Journald

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Сервер логирования Journald

Централизованный сервер логов может помочь с анализом событий на компьютерах в вашей инфраструктуре. Настроить их сбор с журналов можно разными способами, проверенный способ через rsyslog и новый сопособ с помощью journald. Journald входит в состав systemd.

Мы разберем использование journald. В качестве сервера и клиентов могут выступать различные системы на базе Linux.

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

Установка сервера логирования Journald

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

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

Для работы потребуется пакет systemd-journal-gateway. Устанавливаем его на все 3 наших хоста.

dnf install systemd-journal-gateway

Настройка сервера логирования Journald

Разделим настройку на 2 части. В первой части настраивать будем сам сервер с именем хоста: rosaserver

Во второй части настроим 2 наших клиента (сервера/десктопа) c именами хостов/ip: rosaserver1/192.168.1.111 и rosaserver2/192.168.1.232

Настройка systemd-jourunal-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

Генерируем сертификаты для клиента 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

Генерируем сертификаты для клиента 2. 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

Записываем его и выходим.

Настройка systemd-journal-upload на клиентах

Пропишем в /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-gatewayd.service
systemctl start systemd-journal-remote.service

На обеих клиентах:

systemctl start systemd-journal-gatewayd.service
systemctl start systemd-journal-upload.service

Проверка работы сервера логов Journald

Для чтения собственных логов самого сервера:

journalctl

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

journalctl -D /var/log/journal/remote

Для проверик лога с удаленного сервера сделаем следующее. Зайдем на клента 2, т.е. на rosaserver2 и дадим команду:

logger -p syslog.debug "### TEST-2 MESSAGE from client rosaserver2 ###"

Journald-2.png

Зайдем на наш сервер и посмотрим, как данная запись с удаленного клиента rosaserver2 отразилась в журнале на нашем сервере:

Journald-3.png

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

Journald-1.png