Аннотация

В ОС Astra Linux Special Edition 1.7 включена служба журналирования syslog-ng, обладающая возможностью гибкой настройки под различные нужды.

Для эксплуатации сервера Termidesk, особенно в распределенном или высоконагруженном варианте, настоятельно рекомендуется использовать внешний syslog-сервер.

В данной инструкции приведена последовательность действий по обеспечению передачи сообщений с сервера Termidesk на внешний syslog-сервер по протоколу TLS:

  • настройка центра сертификации;
  • настройка сервера журналирования syslog-ng;
  • настройка сервера Termidesk;
  • настройка ротации журналов.

Настройка центра сертификации

Для создания центра сертификации на целевом узле нужно:

  • загрузить и установить скрипты для упрощенной настройки инфраструктуры открытых ключей (PKI):
:~$ sudo apt install easy-rsa
BASH
  • перейти в каталог /usr/share/easy-rsa:
:~$ cd /usr/share/easy-rsa
BASH
  • инициализировать PKI:
:~$ sudo ./easyrsa init-pki
BASH
  • по умолчанию хранилище сертификатов будет создано в каталоге /usr/share/easy-rsa/pki;
  • создать корневой сертификат:
:~$ sudo ./easyrsa build-ca
BASH

Сертификат — артефакт, содержащий информацию о владельце ключа и подтверждающий принадлежность ключа владельцу.

  • сгенерировать ключ Диффи-Хеллмана:
:~$ sudo ./easyrsa gen-dh
BASH

Ключ — последовательность псевдослучайных чисел, сгенерированная особым образом.

  • создать сертификат для узла, на котором будет работать сервер журналирования syslog-ng:
:~$ sudo ./easyrsa build-serverClient-full <FQDN_сервера_журналирования_syslog-ng>
BASH
  • скопировать файл ca.crt с сервера центра сертификации на syslog-сервер:
:~$ sudo scp /usr/share/easy-rsa/pki/ca.crt localuser@<IP-адрес_сервера_журналирования_syslog-ng>:ca.crt 
BASH

В примере был задан параметр:

«localuser» — локальная учетная запись с полномочиями на управление на syslog-сервером.

  • скопировать файлы сертификата и закрытого ключа с сервера центра сертификации на syslog-сервер:
:~$ sudo scp /usr/share/easy-rsa/pki/issued/<FQDN_сервера_журналирования_syslog-ng>.crt localuser@<IP-адрес_сервера_журналирования_syslog-ng>:<FQDN_сервера_журналирования_syslog-ng>.crt
:~$ sudo scp /usr/share/easy-rsa/pki/private/<FQDN_сервера_журналирования_syslog-ng>.key localuser@<IP-адрес_сервера_журналирования_syslog-ng>:<FQDN_сервера_журналирования_syslog-ng>.key
BASH

В результате выполнения команды файлы сертификата и закрытого ключа будут скопированы в домашний каталог пользователя syslog-сервера.

  • скопировать файл ca.crt с сервера центра сертификации на сервер Termidesk:
:~$ sudo scp /usr/share/easy-rsa/pki/ca.crt localuser@<IP-адрес_сервера_termidesk>:ca.crt
BASH

Настройка сервера журналирования syslog-ng

Для настройки сервера журналирования syslog-ng нужно:

  • присвоить файлу ca.crt название вида <имя_домена>.ca.crt для идентификации имен корневых сертификатов;
  • скопировать файл <имя_домена>.ca.crt в каталог /usr/share/ca-certificates:
:~$ sudo cp <имя_домена>.ca.crt /usr/share/ca-certificates
BASH
  • добавить корневой сертификат в хранилище сертификатов одним из подходящих способов: 
  • перенастроить системные сертификаты:
:~$ sudo dpkg-reconfigure ca-certificates
BASH
  • добавить в файл /etc/ca-certificates.conf строку с именем файла корневого сертификата:
:~$ sudo sh -c "echo '<имя_домена>.ca.crt' >> /etc/ca-certificates.conf"
BASH
  • обновить список сертификатов:
:~$ sudo update-ca-certificates
BASH
  • скопировать созданные ключи и сертификат сервера в каталог с пользовательскими сертификатами /etc/ssl:
:~$ sudo cp /home/localuser/<FQDN_сервера_журналирования_syslog-ng>.crt /etc/ssl/certs/
:~$ sudo cp /home/localuser/<FQDN_сервера_журналирования_syslog-ng>.key /etc/ssl/private/
BASH
  • преобразовать ключ в файле с расширением .key:
:~$ sudo openssl rsa -in /etc/ssl/private/<FQDN_сервера_журналирования_syslog-ng>.key -out /etc/ssl/private/<FQDN_сервера_журналирования_syslog-ng>.key
BASH

Данная команда получает значение ключа из файла. Результат операции будет записан в этот же файл.

  • создать файл tls-syslog.conf в каталоге /etc/syslog-ng/conf.d/:
:~$ sudo touch /etc/syslog-ng/conf.d/tls-syslog.conf
BASH
  • добавить в файл tls-syslog.conf строки:
source s_tlstermidesk {
       network (
                port(6514)
                transport("tls")
# максимальное количество подключений. Подбирать эмпирическим путём.
                max-connections(1000)
                tls (
# путь к файлам ключа и сертификата сервера
                        cert-file("/etc/ssl/certs/<FQDN_сервера_журналирования_syslog-ng>.crt")
                        key-file("/etc/ssl/private/<FQDN_сервера_журналирования_syslog-ng>.key")
                        peer-verify(optional-untrusted)
                )
        );
};

destination d_tlstermidesk { file("/var/log/tls-termidesk.log"); };
log { source(s_tlstermidesk); destination(d_tlstermidesk); };
BASH
  • перезапустить службу syslog-ng;
:~$ sudo systemctl restart syslog-ng
BASH

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

Для работы сервера Termidesk с сервером журналирования syslog-ng нужно:

  • присвоить файлу ca.crt название вида <имя_домена>.ca.crt для идентификации имен корневых сертификатов;
  • скопировать файл <имя_домена>.ca.crt в каталог /usr/share/ca-certificates:
:~$ sudo cp <имя_домена>.ca.crt /usr/share/ca-certificates
BASH
  • добавить корневой сертификат в хранилище сертификатов одним из подходящих способов:
  • перенастроить системные сертификаты:
:~$ sudo dpkg-reconfigure ca-certificates
BASH
  • добавить в файл /etc/ca-certificates.conf строку с именем файла корневого сертификата:
:~$ sudo sh -c "echo '<имя_домена>.ca.crt' >> /etc/ca-certificates.conf"
BASH
  • обновить список сертификатов:
:~$ sudo update-ca-certificates
BASH

В графическом интерфейсе управления Termidesk перейти «Настройки — Системные параметры — Мониторинг» и задать соответствующие параметры.

Параметры журналирования Termidesk

В примере были заданы параметры:

  • «Логирование Syslog»: «Да» — включено журналирование на syslog-сервере;
  • «Хост 1»: «syslog-ng.local:6514» — FQDN сервера журналирования в формате host:port;
  • «Протокол»: «TLS» — выбрать данный тип протокола для журналирования;
  • «Категория сообщения» — рекомендуется выбрать тип сообщений в соответствии с задачами журналирования;
  • «Уровень логирования» — рекомендуется выбрать степень детализации служебных сообщений в соответствии с задачами логирования.

После задания параметров журналирования следует нажать экранную кнопку [Сохранить].

После сохранения параметров перезапуск служб не требуется.

Настройка ротации журналов

Для устранения возможности переполнения диска записями в журнале /var/log/termidesk.log стоит настроить регулярную ротацию при помощи утилиты logrotate. Для этого создать файл /etc/logrotate.d/termidesk-syslog-ng следующего содержания:

/var/log/termidesk.log
{
        rotate 4
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d syslog-ng reload > /dev/null
        endscript
}
BASH