Сервер журналирования
Общие сведения
Централизованный сервер журналирования может помочь с анализом событий на компьютерах в ИТ-инфраструктуре, объединенной в систему. Настроить их сбор с журналов можно с помощью journald.
В ОС используется сервис journald. Journald входит в состав systemd.
В systemd предусмотрены специальные компоненты для решения задачи логирования: systemd-journal-remote, systemd-journal-upload и systemd-journal-gatewayd.
Установка сервера
Для работы нужно установить пакет systemd-journal-gateway на всех трех хостах, перечисленных ниже, командой:
sudo 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
Для дальнейшей настройки сервера следует выполнить следующие действия:
- Создать директорию для сертификата:
sudo mkdir /etc/pki/tls/ca
sudo 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
- Создать директорию для сертификата:
sudo mkdir /etc/pki/tls/ca
sudo 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
Для запуска логирования нужно выполнить запуск:
- На сервере:
sudo systemctl start systemd-journal-gateway.service
sudo systemctl start systemd-journal-remote.service
- На всех клиентах:
sudo systemctl start systemd-journal-gateway.service
sudo systemctl start systemd-journal-upload.service
Проверка работоспособности
Для чтения собственных логов самого сервера используется команда:
journalctl
Для чтения логов с удаленных клиентов используется команда:
sudo journalctl -D /var/log/journal/remote
Для проверки лога с удаленного сервера необходимо выполнить следующие шаги:
- Войти на второй клиент, т.е. на
rosaserver2, и выполнить команду:
logger -p syslog.debug "### TEST-2 MESSAGE from client rosaserver2 ###"
- Войти на сервер и посмотреть, как данная запись с удаленного клиента
rosaserver2отразилась в журнале на сервере, с помощью команды:
sudo journalctl -D /var/log/journal/remote/ | grep TEST
Примерный результат приведен ниже (рисунок 25).

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

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