Введение

FreeIPA Health Check – инструмент ipa-healthcheck, предназначенный для диагностики состояния серверов FreeIPA. Используется администраторами доменов.

Запуск инструмента производится на настроенном контроллере ЕПП FreeIPA. Порядок установки и настройки контроллера см. в статье Контроллер ЕПП FreeIPA в Astra Linux.

Также инструмент может проверять корректность работы:

В таблице перечислены все специальные термины и аббревиатуры, применяемые в статье, с их пояснениями.

ТерминПояснение 
Источник (source)

Модуль или пространство имён для сбора данных (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA

Проверка (check)

Конкретная проверка в рамках источника (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA

CLI

Аббревиатура от Command Line Interface.
Текстовый интерфейс для взаимодействия с операционной системой или программой через ввод команд в консоли, без использования графических элементов.

CS

Аббревиатура от Certificate System.
В контексте DogTag это подсистема, отвечающая за работу центра сертификации и связанных сервисов.

CA

Аббревиатура от Certificate Authority.
В контексте DogTag это подсистема, отвечающая за выпуск, подпись и отзыв цифровых сертификатов, а также публикацию списков отозванных сертификатов (CRL) и работу OCSP-ответчика.

CRL

Аббревиатура от Certificate Revocation List
Периодически публикуемый центром сертификации (CA) файл, содержащий список отозванных цифровых сертификатов, срок доверия к которым прекращён.

KRA

Аббревиатура от Key Recovery Authority.
В контексте DogTag это подсистема, обеспечивающая архивирование и восстановление закрытых ключей пользователей: при запросе сертификата приватный ключ шифруется и сохраняется в KRA, что позволяет восстановить доступ к данным, если оригинальный ключ утерян.

CS.cfg

Главный файл конфигурации подсистемы DogTag CS.
Создается при инициализации контроллера ЕПП FreeIPA с центром сертификации DogTag (см. FreeIPA: Подключение центра сертификации DogTag в Astra Linux Common Edition).

В DogTag подсистемы запускаются независимо, каждая со своим CS.cfg:

  • /etc/pki/pki-tomcat/ca/CS.cfg настраивает CA,

  • /etc/pki/pki-tomcat/kra/CS.cfg настраивает KRA.

DNS

Аббревиатура от Domain Name System.
Иерархическая распределённая система, преобразующая доменные имена в IP-адреса и обратно в Интернете.

LDAP

Аббревиатура от Lightweight Directory Access Protocol.
Протокол прикладного уровня для доступа и управления распределённой каталоговой службой, широко используется для хранения и поиска информации об учётных записях, группах и политиках в сетях.

NSS

Аббревиатура от Network Security Services
Набор библиотек защитного преобразования, используемых приложениями и сервисами для работы с сертификатами, ключами и безопасными соединениями.

DS

Аббревиатура от Directory Server
LDAP-сервер, реализованный на основе проекта 389 Directory Server, обеспечивающий хранение, поиск и модификацию данных каталоговой службы (учётные записи, группы, политики).

RUV

Аббревиатура от Replica Update Vector.
Набор счётчиков состояния репликации в DS, хранящийся на каждом узле; позволяет определить, какие изменения между всеми участниками топологии уже переданы, а какие ещё нужно синхронизировать.

TLS/SSL

Аббревиатура от Transport Layer Security (TLS) и Secure Sockets Layer (SSL).
Протоколы, обеспечивающие защитное преобразование и аутентификацию сетевых соединений в интернете и приложениях.

certmonger

Служба для автоматического управления жизненным циклом сертификатов: генерирует запросы, отслеживает их, обновляет истекающие сертификаты и взаимодействует с центром сертификации для их продления.

FQDN

Аббревиатура от Fully Qualified Domain Name.
Полное доменное имя узла, включающее все уровни DNS-иерархии (например, host.example.com).

KDC 

Аббревиатура от Key Distribution Center.
Компонент Kerberos, отвечающий за аутентификацию клиентов и выдачу Ticket Granting Tickets и сервисных билетов (TGS)

TGT

Аббревиатура от Ticket Granting Ticket.
В Kerberos-системе билет, выдаваемый KDC после аутентификации, позволяющий без повторного ввода пароля запрашивать сервисные билеты.

DNA

Аббревиатура от Distributed Numeric Assignment
Плагин 389 Directory Server, который автоматически распределяет диапазоны POSIX UID/GID между серверами — выделяет каждому мастеру и реплике поддиапазон из общего пространства идентификаторов, обеспечивая их уникальность и отказоустойчивость при создании новых учётных записей и групп

keytab

Файл “key table” Kerberos, хранящий длинно-срочные ключи одного или нескольких принципалов. Используется сервисами для автоматической аутентификации без ввода пароля.

AJP

Аббревиатура от Apache JServ Protocol.
Бинарный сетевой протокол для проксирования HTTP-запросов от веб-сервера к серверу приложений (например, Tomcat).

Топология репликации

Схема взаимосвязей и соглашений репликации между IPA-серверами.

AD

Аббревиатура от Active Directory
Cлужба каталогов Microsoft для управления объектами Windows-домена (пользователи, компьютеры, политики). Использует LDAP, Kerberos и DNS для централизованной аутентификации и авторизации.

RID/SID

RID (Аббревиатура от Relative Identifier)
Относительный идентификатор, присваиваемый объектам при создании и становящийся частью SID.

SID (Аббревиатура от Security Identifier)
Уникальный идентификатор безопасности в Windows AD, состоящий из доменного S-идентификатора и RID

IPA

Аббревиатура от Identity, Policy, Audit.
Интегрированное решение для централизованного управления удостоверениями, политиками аутентификации и аудита на Linux/UNIX. Основано на LDAP, Kerberos, Dogtag и BIND.

Установка пакета

Инструмент ipa-healthcheck предоставляется пакетом freeipa-healthcheck. Пакет входит в расширенный репозиторий. Установить пакет можно используя Графический менеджер пакетов synaptic, или из командной строки:

sudo apt install freeipa-healthcheck

После установки будут созданы:

Конфигурация и интеграция

Файл конфигурации разделён как минимум на две секции:

Параметры в секции [default]

Значения параметров задаются строками вида <имя_параметра> = <значение>.

  • cert_expiration_days:
    Задает порог в днях до истечения срока действия сертификата, после которого начинает выдаваться предупреждение (например, если установить значение 7, то предупреждение появится за 7 дней до истечения). Значение по умолчанию: 28.
  • timeout:
    Устанавливает максимальное время (в секундах) для выполнения каждой проверки. Если проверка выполняется дольше указанного времени, она считается прерванной с ошибкой. Значение по умолчанию: 10.
  • output_type:
    Определяет формат вывода результатов. Допустимые значения:
    – json (по умолчанию, машиночитаемый формат),
    – human (удобочитаемый формат для пользователей),
    – prometheus (формат для экспозиции метрик Prometheus).
  • output_file:
    Указывает путь к файлу, в который будет записываться вывод вместо стандартного вывода (stdout).
  • indent:
    При использовании JSON-вывода задаёт уровень отступов для форматирования результата.
  • verbose:
    Активирует подробное логирование для получения дополнительной информации о работе инструмента. Эта опция полезна для диагностики, однако при автоматических запусках она может создавать избыточный вывод.
  • debug:
    Активирует режим отладки, при котором в выводе появляются дополнительные подробности, что полезно для диагностики проблем.
  • severity:
    Позволяет фильтровать вывод по уровню серьезности, чтобы отображались только результаты с заданными уровнями. Допустимые значения:
    – SUCCESS (успешно),
    – WARNING (предупреждение),
    – ERROR (ошибка),
    – CRITICAL (критическая ошибка).
  • source:
    Исполняет проверки только из указанного источника или пространства имен (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA
  • check:
    Позволяет запустить конкретную проверку внутри выбранного источника, этот параметр используется совместно с source (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA

Параметры в секции [excludes]

Пример готовой конфигурации может выглядеть так:

[default] 
cert_expiration_days = 7
timeout = 25
output_type = json
output_file = /var/log/ipa-health.log
indent = 2
verbose = True
severity = ERROR CRITICAL
debug = False

[excludes]
source = ipahealthcheck.ipa.certs
check = IPADNSSystemRecordsCheck

Аргументы при запуске из командной строки

Также все параметры конфигурации поддерживаются в виде аргументов при запуске из командой строки.

Доступные параметры CLI:

  • --list-sources:
    Выводит список доступных источников и проверок, что помогает определить, какие группы тестов доступны в вашей установке.
  • --config=FILE:
    Задает файл конфигурации, который будет использоваться при запуске. Если указать пустую строку, то файл конфигурации не загружается. По умолчанию используется файл /etc/ipahealthcheck/ipahealthcheck.conf.
  • --source=SOURCE:
    Исполняет проверки только из указанного источника или пространства имен (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA
  • --check=CHECK:
    Позволяет запустить конкретную проверку внутри выбранного источника, этот параметр используется совместно с --source (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA
  • --output-type=TYPE:
    Определяет формат вывода результатов. Допустимые значения:
    – json (по умолчанию, машиночитаемый формат),
    – human (удобочитаемый формат для пользователей),
    – prometheus (формат для экспозиции метрик Prometheus).
  • --failures-only:
    При активном использовании этого параметра в вывод будут включены только проверки, завершившиеся предупреждениями, ошибками или критическими сбоями (WARNING, ERROR, CRITICAL). Если вывод идёт в терминал, флаг включается автоматически; при выводе в файл — выключен
  • --all:
    Выводит все результаты проверок, независимо от их уровня. Этот параметр отменяет действие --failures-only.
  • --severity=SEVERITY:
    Позволяет фильтровать вывод по уровню серьезности, чтобы отображались только результаты с заданными уровнями. Допустимые значения:
    – SUCCESS
    – WARNING
    – ERROR
    – CRITICAL
  • --verbose:
    Активирует подробное логирование для получения дополнительной информации о работе инструмента. Эта опция полезна для диагностики, однако при автоматических запусках она может создавать избыточный вывод.
  • --debug:
    Активирует режим отладки, при котором в выводе появляются дополнительные подробности, что полезно для диагностики проблем.
  • --output-file=FILENAME:
    Указывает путь к файлу, в который будет записываться вывод вместо стандартного вывода (stdout).
  • --input-file=FILENAME:
    Позволяет прочитать результаты предыдущего запуска (обычно в формате JSON) и отобразить их в другом формате или просто повторно показать сохранённые данные.
  • --indent=INDENT:
    При использовании JSON-вывода задаёт уровень отступов для форматирования результата.
  • --metric-prefix=PREFIX:
    При использовании формата вывода prometheus задает префикс, который будет добавляться к именам метрик.

Пример готовых команд:

Возможные варианты вывода варьируются от значения параметра output-type. См. Конфигурация и интеграция

  • human
    $ sudo ipa-healthcheck --output-type=human
    ERROR: ipahealthcheck.ipa.certs.IPACertTracking.cert-file=/var/lib/ipa/certs/kdc.crt, key-file=/var/lib/ipa/certs/kdc.key, ca-name=None, cert-postsave-command=/usr/lib/ipa/certmonger/renew_kdc_cert: Expected certmonger tracking is missing for cert-file=/var/lib/ipa/certs/kdc.crt, key-file=/var/lib/ipa/certs/kdc.key, ca-name=None, cert-postsave-command=/usr/lib/ipa/certmonger/renew_kdc_cert. Automated renewal will not happen for this certificate
  • json
    $ sudo ipa-healthcheck --output-type=json
    [
      {
        "source": "ipahealthcheck.ipa.certs",
        "check": "IPACertTracking",
        "result": "ERROR",
        "uuid": "37a2d931-44a5-4ceb-84c1-1da1ac4663f8",
        "when": "20250421043329Z",
        "duration": "0.071436",
        "kw": {
          "key": "cert-file=/var/lib/ipa/certs/kdc.crt, key-file=/var/lib/ipa/certs/kdc.key, ca-name=None, cert-postsave-command=/usr/lib/ipa/certmonger/renew_kdc_cert",
          "msg": "Expected certmonger tracking is missing for {key}. Automated renewal will not happen for this certificate"
        }
      }
    ]
  • prometheus 
    $ sudo ipa-healthcheck --output-type=prometheus
    ipa_healthcheck{result="ERROR"} 1.0

При запуске инструмент сначала загружает параметры из файла конфигурации, затем применяются параметры командной строки. Действуют следующие правила:

  • Любой параметр, указанный в конфигурационном файле, считается уже установленным и не может быть переопределён параметром командной строки.

  • Только те параметры, которых нет в конфигурационном файле, будут считаться и применены из командной строки.

  • Исключение: если загружен другой конфигурационный файл (например, --config=myconf.conf) или отключена загрузка конфигурационного файла совсем (--config=""), тогда логика «первым пришёл» пересчитывается относительно нового (или отсутствующего) файла, и параметры командной строки смогут вступить в силу.

Интеграция ipa‑healthcheck с systemd

При установке пакета создаются два системных юнита:

Порядок настройки таймеров в Astra Linux см. в статье Использование таймеров systemd вместо заданий cron.

Запуск таймера в системе производится так:

sudo systemctl enable ipa-healthcheck.timer 
sudo systemctl start ipa-healthcheck.timer

Эта команда включает автоматический запуск таймера при старте системы и инициирует его немедленный старт.

В файле /usr/libexec/ipa/ipa-healthcheck.sh можно указать, с какими параметрами командной строки будет запускаться служба ipa-healthcheck.service:

Файл /usr/libexec/ipa/ipa-healthcheck.sh создается при установке пакета freeipa-healthcheck.

#!/bin/sh

LOGDIR=/var/log/ipa/healthcheck

/usr/bin/ipa-healthcheck --output-file $LOGDIR/healthcheck.log --source=ipahealthcheck.ipa.certs --check=IPACertExpirationCheck --severity=ERROR --severity=CRITICAL

Запуск службы ipa‑healthcheck.service может завершиться ошибкой (failed) если какая-либо тестовая проверка не выполнена. В этом случае для диагностики следует просмотреть журнал службы с помощью команды:

sudo journalctl -u ipa-healthcheck.service

Обзор источников и проверок для диагностики и мониторинга FreeIPA

Инструмент поддерживает следующие источники и входящие в них проверки:

С полным списком доступных источников и проверок можно также ознакомиться при помощи команды:

sudo ipa-healthcheck --list-sources

Любой из источников и/или проверок может быть указан в виде аргументов для запуска из командной строки и/или при использовании файла конфигурации. См. Конфигурация и интеграция