Сервер логирования Journald
Содержание
Сервер логирования 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-gateway.service systemctl start systemd-journal-remote.service
На обеих клиентах:
systemctl start systemd-journal-gateway.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 ###"
Зайдем на наш сервер и посмотрим, как данная запись с удаленного клиента rosaserver2 отразилась в журнале на нашем сервере:
Логи с удаленных серверов будет хранится в /var/log/journal/remote по имени хоста: