Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 92 Следующий »

Введение

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, что позволяет восстановить доступ к данным, если оригинальный ключ утерян.

DSBLE, DSCLE, DSDSLE и т.д.

Аббревиатуры от Directory Server <сокращенное название проверки> Lint Error.
Это специальный тип ошибки, который используется в механизме проверок 389-DS для описания несоответствий конфигурации и ACI (Access Control Instructions) в LDAP-сервере. Он возникает при выполнении команды dsctl <instance> healthcheck, служит для структурированного представления найденных проблем (код ошибки, уровень серьёзности, описание и контекст) для последующего ручного или автоматического их устранения.

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

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

Отслеживаемый сертификат

Справка

Команда getcert list опрашивает службу certmonger и выводит список сертификатов, которые он отслеживает (MONITORING) или по которым он пытается получить подписанный ответ от CA.

Сертификат, для которого служба certmonger ведёт слежение по его параметрам и состоянию. В выводе команды getcert list такие сертификаты имеют статус MONITORING, что указывает на активное наблюдение за их сроком действия.

При использовании DogTag (см. FreeIPA: Подключение центра сертификации DogTag в Astra Linux Common Edition) служба certmonger по умолчанию отслеживает все сертификаты, выданные центром сертификации DogTag. Запускает их продление за 28 дней до окончания срока действия.

Если DogTag не используется, по умолчанию служба certmoner не отслеживает сертификаты. Поэтому сертификаты пользовательские, выданные внешним CA или вручную загруженные необходимо запустить под наблюдение используя следующую команду (на примере сертификата службы KDC):

sudo ipa-getcert start-tracking -f /var/lib/ipa/certs/kdc.crt -k /var/lib/ipa/certs/kdc.key -C /usr/lib/ipa/certmonger/renew_kdc_cert
  • -f /path/to.crt указывает путь к файлу сертификата в формате PEM, который уже установлен на диске.
  • -k /path/to.key указывает путь к файлу приватного ключа в PEM-формате.
  • -C /path/to/hlp указывает путь к скрипту для продления сертификата.

Важно!

При ручном добавлении сертификата в отслеживание, certmonger лишь начинает за ним наблюдать, но автоматическое обновление происходит только через CA, сконфигурированный в certmonger. Если в системе нет ни одного CA (внутреннего DogTag или внешнего, зарегистрированного через getcert add-scep-ca или ipa-getcert), то при приближении срока истечения certmonger попытается продлить сертификат, но получит ошибку CA_UNREACHABLE и не обновит его автоматически.

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

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

  • конфигурационный файл /etc/ipahealthcheck/ipahealthcheck.conf,
  • служба-юнит ipa-healthcheck.service в systemd,
  • служба-таймер ipa-healthcheck.timer в systemd,
  • файл для автономного запуска службы ipa-healthcheck.service /usr/libexec/ipa/ipa-healthcheck.sh.

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

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

  • Секция [default]. В этой секции задаются значения параметров, влияющих на работу инструмента проверки состояния.
  • Секция [excludes]. Эта секция используется для фильтрации или подавления определённых результатов по имени источника, имени проверки или конкретному ключу результата. Это особенно полезно для игнорирования известных незначительных проблем в окружении.

Параметры в секции [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]

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

/etc/ipahealthcheck/ipahealthcheck.conf
[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 задает префикс, который будет добавляться к именам метрик.

Примеры команд

  • Выполнение конкретной проверки сертификатов с фильтрацией по уровню серьезности и показом только ошибок:
    sudo ipa-healthcheck --source=ipahealthcheck.ipa.certs --check=IPACertExpirationCheck --severity=ERROR --severity=CRITICAL --failures-only --output-type=human
  • Запуск с использованием собственного файла конфигурации, сохранением результата в файл, режимами подробного логирования и отладки:
    sudo ipa-healthcheck --config=/etc/ipahealthcheck/myconfig.conf --output-file=/var/log/ipa/healthcheck/healthcheck.log --indent=4 --verbose --debug
  • Запуск проверки топологии с выводом в формате Prometheus и заданным префиксом для метрик:
    sudo ipa-healthcheck --source=ipahealthcheck.ipa.topology --check=IPATopologyDomainCheck --output-type=prometheus --metric-prefix=ipa_health

Возможные варианты вывода варьируются от значения параметра 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

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

  • ipa-healthcheck.service - основной юнит-служба, который запускает инструмент ipa‑healthcheck, выполняет проверки состояния установки FreeIPA и формирует отчёт об обнаруженных проблемах.
  • ipa-healthcheck.timer - юнит-таймер, инициирующий запуск юнита-службы (ipa‑healthcheck.service) через заданные интервалы времени. Позволяет автоматизировать регулярное выполнение проверок для постоянного мониторинга системы.

По умолчанию ipa-healthcheck.timer при установке пакета уже активируется и начинает свою работу. Если же по какой-то причине таймер не был включён, нужно выполнить два действия:

  • Зарегистрировать таймер для автоматического старта при загрузке системы. Следующая команда создаёт в systemd символьную ссылку на файл ipa-healthcheck.timer, чтобы этот таймер автоматически запускался при каждой загрузке операционной системы:
    sudo systemctl enable ipa-healthcheck.timer
  • Запустить таймер немедленно. Следующая команда немедленно активирует и запускает таймер в текущем сеансе, не дожидаясь перезагрузки:
    sudo systemctl start ipa-healthcheck.timer

Подробнее про таймеры systemd см. статью Использование таймеров systemd вместо заданий cron.

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

/usr/libexec/ipa/ipa-healthcheck.sh
#!/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

Важно!

Файл /usr/libexec/ipa/ipa-healthcheck.sh перезаписывается при обновлении или переустановке пакета freeipa-healthcheck. Рекомендуется сделать резервную копию:

sudo mv /usr/libexec/ipa/ipa-healthcheck.sh /usr/libexec/ipa/ipa-healthcheck.sh.bak

После обновления или переустановки пакета freeipa-healthcheck заменить автоматически созданный /usr/libexec/ipa/ipa-healthcheck.sh:

sudo mv /usr/libexec/ipa/ipa-healthcheck.sh.bak /usr/libexec/ipa/ipa-healthcheck.sh

Важно!

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

sudo journalctl -u ipa-healthcheck.service

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

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

  • ipahealthcheck.dogtag.ca
    Отвечает за диагностику служб центра сертификации DogTag (если DogTag используется). Диагностируются службы CA и FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    DogtagCertsConfigCheck

    Сравнивает значение сертификатов центра сертификации (а также FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], если установлен) с значением, найденным в файле CS.cfg. Если значения не совпадают, то, вероятно, CS не сможет запуститься.

    json
    {
      "source": "ipahealthcheck.dogtag.ca",
      "check": "DogtagCertsConfigCheck",
      "result": "ERROR",
      "kw": {
        "key": "ocspSigningCert cert-pki-ca",
        "directive": "ca.ocsp_signing.cert",
        "configfile": "/var/lib/pki/pki-tomcat/conf/ca/CS.cfg",
        "msg": "Certificate 'ocspSigningCert cert-pki-ca' does not match the value of ca.ocsp_signing.cert in /var/lib/pki/pki-tomcat/conf/ca/CS.cfg"
        }
    }

    DogtagCertsConnectivityCheck

    Справка

    Команда ipa cert-show отображает полную информацию о сертификате из IPA-CA по его серийному номеру: метаданные и сам сертификат в PEM-формате.

    Выполняет эквивалент команды "ipa cert-show 1" для проверки базовой доступности.

    json
    {
      "source": "ipahealthcheck.dogtag.ca",
      "check": "DogtagCertsConnectivityCheck",
      "result": "ERROR",
      "kw": {
        "msg": "Request for certificate failed, Certificate operation cannot be completed: Unable to communicate with CMS (503)"
      }
    }
  • ipahealthcheck.ds.backends
    Контролирует работоспособность backend‑модулей, которые отвечают за хранение данных (например, в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑хранилище)

    BackendsCheck

    Выполняет проверку настройки backend‑инстанций DS и генерирующий DSBLE‑коды при обнаружении нарушений конфигурации или работы базы данных.

    json
    {
      "source": "ipahealthcheck.ds.backends",
      "check": "BackendsCheck",
      "result": "WARNING",
      "uuid": "875db8e3-029c-46f7-87e5-bf9a216d9637",
      "when": "20240426184431Z",
      "duration": "0.031642",
      "kw": {
        "key": "DSBLE0005",
        "items": [
          "nsslapd-dbcachesize",
          "nsslapd-db-logdirectory",
          "nsslapd-db-transaction-wait",
          "nsslapd-db-checkpoint-interval",
          "nsslapd-db-compactdb-interval",
          "nsslapd-db-compactdb-time",
          "nsslapd-db-transaction-batch-val",
          "nsslapd-db-transaction-batch-min-wait",
          "nsslapd-db-transaction-batch-max-wait",
          "nsslapd-db-logbuf-size",
          "nsslapd-db-page-size",
          "nsslapd-db-locks",
          "nsslapd-db-locks-monitoring-enabled",
          "nsslapd-db-locks-monitoring-threshold",
          "nsslapd-db-locks-monitoring-pause",
          "nsslapd-db-private-import-mem",
          "nsslapd-db-deadlock-policy"
        ],
        "msg": "Found configuration attributes that are not applicable for the configured backend type."
    }
  • ipahealthcheck.ds.config
    Проводит анализ конфигурационных настроек FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервера и сопутствующих компонентов, чтобы удостовериться, что все параметры установлены корректно.

    ConfigCheck

    Выполняет проверку конфигурации FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. Ищет устаревшие, отсутствующие или некорректные параметры (например, небезопасные схемы хранения пароля, неподходящие диапазоны значений, дублирование опций), преобразуя результаты в стандартизированные DSCLE‑коды

    json
    {
      "source": "ipahealthcheck.ds.config",
      "check": "ConfigCheck",
      "result": "CRITICAL",
      "uuid": "52ce6b03-5f42-4565-9e04-59f15136ff95",
      "when": "20250421043110Z",
      "duration": "0.027578",
      "kw": {
        "key": "DSCLE0002",
        "items": [
          "cn=config"
        ],
        "msg": "Password storage schemes in Directory Server define how passwords are hashed via a\none-way mathematical function for storage. Knowing the hash it is difficult to gain\nthe input, but knowing the input you can easily compare the hash.\n\nMany hashes are well known for cryptograhpic verification properties, but are\ndesigned to be *fast* to validate. This is the opposite of what we desire for password\nstorage. In the unlikely event of a disclosure, you want hashes to be *difficult* to\nverify, as this adds a cost of work to an attacker.\n\nIn Directory Server, we offer one hash suitable for this (PBKDF2-SHA512) and one hash\nfor \"legacy\" support (SSHA512).\n\nYour configuration does not use these for password storage or the root password storage\nscheme.\n"
      }
    }
  • ipahealthcheck.ds.disk_space
    Проверяет состояние свободного места на дисках, особенно на критичных разделах, таких как каталоги логов или резервных копий, чтобы предупредить о риске переполнения.

    DiskSpaceCheck

    Проверяет свободное место на ключевых томах DS и выдаёт ERROR, если свободного объёма меньше 1 024 МБ или свободного пространства менее 20%, и CRITICAL, если свободного пространства остаётся менее 10%.

    json
    {
      "source": "ipahealthcheck.ds.disk_space",
      "check": "DiskSpaceCheck",
      "result": "CRITICAL",
      "uuid": "908d8cb4-988a-4c82-a00e-38716987ae16",
      "when": "20250421070353Z",
      "duration": "0.016273",
      "kw": {
        "key": "DSDSLE0001",
        "items": [
          "Server",
          "cn=config"
        ],
        "msg": "The disk partition used by the server (/), either for the database, the\nconfiguration files, or the logs is over 90% full.  If the partition becomes\ncompletely filled serious problems can occur with the database or the server's\nstability."
      }
    }
    
  • ipahealthcheck.ds.dse
    Проверяет рассинхронизацию времени между репликами FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    DSECheck

    Контролирует рассинхронизацию времени между репликами FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], считывая атрибут nsState из dse.ldif; выдаёт ERROR, если расхождение превышает 12 часов, и CRITICAL, когда оно выходит за предел 24 часов.

    json
    {
      "source": "ipahealthcheck.ds.dse",
      "check": "DSECheck",
      "result": "CRITICAL",
      "uuid": "ecc2c131-b86a-4851-a156-c304d77ebb0b",
      "when": "20230822183329Z",
      "duration": "0.012828",
      "kw": {
        "key": "DSSKEWLE0003",
        "items": [
          "Replication",
          "dc=DOMAIN,dc=DOMAIN,dc=DOMAIN",
          "Time Skew",
          "Skew: 30145 days, 2 hours, 20 minutes, 16 seconds"
        ],
        "msg": "The time skew is over 24 hours.  Setting nsslapd-ignore-time-skew\nto "on" on each replica will allow replication to continue, but if the\ntime skew continues to increase other serious replication problems can\noccur."
    }
  • ipahealthcheck.ds.encryption
    Анализирует настройки защитных преобразований.

    EncryptionCheck

    Проверяет, что в разделе cn=encryption,cn=config атрибут sslVersionMin задаёт минимальную версию FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК] не ниже 1.2; если версия ниже порога, возвращает ERROR, а при отсутствии раздела или невозможности подключиться к экземпляру FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]CRITICAL.

    json
    {
      "source": "ipahealthcheck.ds.encryption",
      "check": "EncryptionCheck",
      "result": "ERROR",
      "uuid": "d96da377-9133-4fc4-ab4e-e30d7c4ea41b",
      "when": "20250422154500Z",
      "duration": "0.017686",
      "kw": {
        "key": "DSELE0001",
        "items": [
          "cn=encryption,cn=config"
        ],
        "msg": "This Directory Server may not be using strong TLS protocol versions. TLS1.0 is known to\nhave a number of issues with the protocol. Please see:\n\nhttps://tools.ietf.org/html/rfc7457\n\nIt is advised you set this value to the maximum possible."
      }
    }
  • ipahealthcheck.ds.ds_plugins
    Отвечает за проверку дополнительных плагинов FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервера.

    RIPluginCheck

    Проверяет, что у плагина Referential Integrity параметр nsslapd‑referint‑update‑delay равен 0 (синхронный режим) и что для каждого атрибута из referint‑membership‑attr во всех пользовательских базах данных существует индекс равенства (nsIndexType=eq).

    json
    {
      "source": "ipahealthcheck.ds.ds_plugins",
      "check": "RIPluginCheck",
      "result": "WARNING",
      "uuid": "85048bc3-bdc7-4423-9577-fedb9fb5b04a",
      "when": "20210328044440Z",
      "duration": "0.192629",
      "kw": {
        "key": "DSRILE0001",
        "items": [
          "cn=referential integrity postoperation,cn=plugins,cn=config"
        ],
        "msg": "The referential integrity plugin has an asynchronous processing mode.\nThis is controlled by the update-delay flag.  When this value is 0, referential\nintegrity plugin processes these changes inside of the operation that modified\nthe entry - ie these are synchronous.\n\nHowever, when this is > 0, these are performed asynchronously.\n\nThis leads to only having referint enabled on one supplier in MMR to prevent replication conflicts and loops.\nAdditionally, because these are performed in the background these updates may cause spurious update\ndelays to your server by batching changes rather than smaller updates during sync processing.\n\nWe advise that you set this value to 0, and enable referint on all suppliers as it provides a more predictable behaviour.\n"
      }
    }
  • ipahealthcheck.ds.replication
    Контролирует репликацию данных между серверами, проверяя синхронизацию данных и анализируя журналы изменений.

    ReplicationCheck

    Проверяет все объекты nsDS5ReplicationAgreement во всех репликационных репозиториях FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]: убеждается, что состояние соглашения (nsds5replicaEnabled=on, nsds5replicaLastUpdateStatus=0) и канал связи к удалённому хосту исправны, что счётчик отставания (FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]) синхронизирован и нет поломанных либо отключённых соглашений. Также проверяет репликацию на конфликты.

    json
    {
      "source": "ipahealthcheck.ds.replication",
      "check": "ReplicationCheck",
      "result": "CRITICAL",
      "uuid": "4e0472b9-bc3a-495e-a15a-55c5788e665d",
      "when": "20250422165825Z",
      "duration": "0.204692",
      "kw": {
        "key": "DSREPLLE0001",
        "items": [
          "Replication",
          "Agreement"
        ],
        "msg": "The replication agreement (metoipacln.testdomain.test) under \"dc=testdomain,dc=test\" is not in synchronization."
      }
    }

    ReplicationChangelogCheck

    Проверяет, что у журнала репликации cn=changelog5,cn=config включен trimming (задан хотя бы один из параметров nsslapd‑changelogmaxage, nsslapd‑changelogmaxentries или nsslapd‑changelogtrim‑interval); при отсутствии trimming выдаёт отчёт DSCLLE0001.

    json
    {
      "source": "ipahealthcheck.ds.replication",
      "check":  "ReplicationChangelogCheck",
      "result": "WARNING",                 
      "uuid":   "c7f7a268-2c1b-4d7b-9e5a-6133ff4b0c1e",
      "when":   "20250422T103259Z",        
      "duration": "0.000214",
      "kw": {
        "key":   "DSCLLE0001",
        "items": [
    	  "cn=changelog5,
           cn=config"
        ],
        "msg": "The replication changelog does not have any kind of trimming configured. "
               "This will cause the changelog to grow indefinitely, potentially exhausting disk space. "
      }
    }
  • ipahealthcheck.ds.ruv
    Следит за корректностью записей FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], необходимых для правильной работы репликации.

    RUVCheck

    Извлекает текущий (локальный) RUV для основного FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑суффикса и для суффикса Dogtag CA и возвращает их как единичные значения.

    json
    { 
      "source": "ipahealthcheck.ds.ruv",
      "check": "RUVCheck",
      "result": "SUCCESS",
      "uuid": "9875d929-c813-4a91-b757-57798fc5aaff",
      "when": "20250421034249Z",
      "duration": "0.002770",
      "kw": {
        "key": "dc=testdomain,dc=test",
        "ruv": "4"
      }
    }

    KnownRUVCheck

    Сканирует записи из tombstone, содержащие атрибут nsds50ruv, извлекает из них все известные RUV для каждого суффикса и возвращает список кортежей (host, replicaID), что помогает выявить устаревшие записи репликации.

    json
    {
      "source": "ipahealthcheck.ds.ruv",
      "check": "KnownRUVCheck",
      "result": "SUCCESS",
      "uuid": "95da5759-5e7d-4260-9d79-01fa9d591b25",
      "when": "20250421034249Z",
      "duration": "0.002467",
      "kw": {
        "key": "ruvs_dc=testdomain,dc=test",
        "suffix": "dc=testdomain,dc=test",
        "ruvs": [
          [
            "ipasrv.testdomain.test",
            "4"
          ],
          [
            "ipacln.testdomain.test",
            "3"
          ]
        ]
      }
    }
  • ipahealthcheck.ipa.certs
    Содержит набор проверок, связанных с сертификатами FreeIPA: контролирует срок действия сертификатов, проверяет целостность и корректность цепочки доверия, сверяет сертификаты в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базах и PEM-файлах, а также их соответствие записям в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    IPACertmongerExpirationCheck

    Перебирает все ожидаемые запросы certmonger и проверяет срок действия сертификата, основываясь на информации, которой располагает certmonger. Если сертификат истекает в пределах cert_expiration_days (по умолчанию 28 дней), выдается предупреждение.

    Истекший сертификат:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertmongerExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "expiration_date": "20160101001704Z",
        "msg": "Request id 1234 expired on 20160101001704Z"
      }
    }

    Сертификат, истекающий скоро:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertmongerExpirationCheck",
      "result": "WARNING",
      "kw": {
        "key": 1234,
        "expiration_date": "20160101001704Z",
        "days": 9,
        "msg": "Request id 1234 expires in 9 days"
      }
    }

    IPACertfileExpirationCheck

    Похожа на IPACertmongerExpirationCheck, но сертификат извлекается из PEM-файла или базы NSS и повторно проверяется. Это используется в случае, если сведения certmonger устарели по сравнению с сертификатом, находящимся на диске.

    Если файл сертификата не может быть открыт:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "certfile": "/path/to/cert.pem",
        "error": [error],
        "msg": "Unable to open cert file '/path/to/cert.pem': [error]"
      }
    }

    Если FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-база не может быть открыта:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "dbdir": "/path/to/nssdb",
        "error": [error],
        "msg": "Unable to open NSS database '/path/to/nssdb': [error]"
      }
    }

    Если отслеживаемый никнейм не найден в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базе:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "dbdir": "/path/to/nssdb",
        "nickname": [nickname],
        "error": [error],
        "msg": "Unable to retrieve cert '[nickname]' from '/path/to/nssdb': [error]"
      }
    }

    Истекший сертификат:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "expiration_date", "20160101001704Z",
        "msg": "Request id 1234 expired on 20160101001704Z"
      }
    }

    Сертификат, истекающий скоро:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "WARNING",
      "kw": {
        "key": 1234,
        "expiration_date", "20160101001704Z",
        "days": 9,
        "msg": "Request id 1234 expires in 9 days"
      }
    }

    IPACAChainExpirationCheck

    Загружает цепочку сертификатов из файла /etc/ipa/ca.crt и проверяет срок действия каждого сертификата в цепочке. Это тест, предназначенный для подтверждения валидности всей цепочки доверия (включая случаи, когда сертификаты веб-сервера или LDAP были заменены, а цепочка находится в /etc/ipa/ca.crt).

    Сертификат, истекающий скоро:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACAChainExpirationCheck",
      "result": "WARNING",
      "kw": {
        "path": "/etc/ipa/ca.crt",
        "key": "CN=Certificate Authority,O=EXAMPLE.TEST",
        "days": 2,
        "msg": "CA '{key}' is expiring in {days} days."
      }
    }

    Истекший сертификат:

    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACAChainExpirationCheck",
      "result": "WARNING",
      "kw": {
        "path": "/etc/ipa/ca.crt",
        "key": "CN=Certificate Authority,O=EXAMPLE.TEST",
        "days": 2,
        "msg": "CA '{key}' is expiring in {days} days."
      }
    }

    IPACertTracking

    Сравнивает информацию отслеживания сертификатов, полученную от FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой.

    Важно!

    По умолчанию FreeIPA на Astra Linux развёртывается без полноценного CA — генерируются только самоподписные сертификаты.
    Поскольку в системе отсутствует как внутренний (DogTag), так и внешний CA, проверка IPACertTracking всегда будет завершаться с ERROR. Для исправления нужно начать отслеживать сертификат вручную, подробнее см. Отслеживаемый сертификат.

    Если отслеживание отсутствует:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertTracking",
      "result": "ERROR",
      "kw": {
        "key": "cert-file=/var/lib/ipa/ra-agent.pem, key-file=/var/lib/ipa/ra-agent.key, ca-name=dogtag-ipa-ca-renew-agent, cert-storage=FILE, cert-presave-command=/usr/libexec/ipa/certmonger/renew_ra_cert_pre,  cert-postsave-command=/usr/libexec/ipa/certmonger/renew_ra_cert"
        "msg": "Missing tracking for cert-file=/var/lib/ipa/ra-agent.pem, key-file=/var/lib/ipa/ra-agent.key, ca-name=dogtag-ipa-ca-renew-agent, cert-storage=FILE, cert-presave-command=/usr/libexec/ipa/certmonger/renew_ra_cert_pre,  cert-postsave-command=/usr/libexec/ipa/certmonger/renew_ra_cert"
      }
    }

    Если отслеживается неизвестный сертификат:

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertTracking",
      "result": "WARNING",
      "kw": {
        "key": 1234,
        "msg": "Unknown certmonger id 1234'
      }
    }

    IPACertNSSTrust

    Сравнивает настройки доверия для сертификатов, хранящихся в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базе, с известным корректным состоянием.

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertNSSTrust",
      "result": "ERROR",
      "kw": {
        "key": "auditSigningCert cert-pki-ca",
        "expected": "u,u,Pu",
        "got": "u,u,u",
        "nickname": "auditSigningCert cert-pki-ca",
        "dbdir": "/etc/pki/pki-tomcat/alias",
        "msg": "Incorrect NSS trust for auditSigningCert cert-pki-ca. Got u,u,u expected u,u,Pu"
      }
    }

    IPACertMatchCheck

    Удостоверяется, что записи сертификата CA в LDAP совпадают с данными, полученными из FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базы (или файла).

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertMatchCheck",
      "result": "ERROR",
      "kw": {
        "msg": "CA Certificate from /etc/ipa/nssdb does not match /etc/ipa/ca.crt"
      }
    }

    IPADogtagCertsMatchCheck

    Проверяет, совпадают ли сертификаты DogTag, присутствующие как в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базе, так и в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPADogtagCertsMatchCheck",
      "result": "ERROR",
      "kw": {
        "msg": "'subsystemCert cert-pki-ca' certificate in NSS DB does not match entry in LDAP"
      }
    }

    IPANSSChainValidation

    Справка

    Команда "certutil -V -u V -e -d [dbdir] -n [nickname]" проверяет указанный сертификат на валидность цепочки доверия и корректность подписи из NSS-базы.

    -d [dbdir] и -n [nickname] — путь к базе и её псевдоним.
    -V -u V -e — валидация по дате/флагам доверия и проверка подписи.

    Проверяет цепочку сертификатов, полученных из FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базы. Выполняется команда "certutil -V -u V -e -d [dbdir] -n [nickname]".

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPANSSChainValidation",
      "result": "ERROR",
      "kw": {
        "key": "/etc/dirsrv/slapd-EXAMPLE-TEST:Server-Cert",
        "nickname": "Server-Cert",
        "dbdir": [path to NSS database],
        "reason": "certutil: certificate is invalid: Peer's Certificate issuer is not recognized.\n: ",
        "msg": ""Validation of Server-Cert in /etc/dirsrv/slapd-EXAMPLE-TEST/ failed: certutil: certificate is invalid: Peer's Certificate issuer is not recognized.\n "
      }
    }

    IPAOpenSSLChainValidation

    Справка

    Команда "openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt /path/to/cert.pem" проверяет цепочку доверия для сертификата /path/to/cert.pem, используя доверенный FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-файл /etc/ipa/ca.crt.

    Проверяет цепочку сертификатов для файлов OpenSSL. Выполняется команда "openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt /path/to/cert.pem".

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPAOpenSSLChainValidation",
      "result": "ERROR",
      "kw": {
        "key": "/var/lib/ipa/ra-agent.pem",
        "reason": "O = EXAMPLE.TEST, CN = IPA RA\nerror 20 at 0 depth lookup: unable to get local issuer certificate\n",
        "msg": "Certificate validation for /var/lib/ipa/ra-agent.pem failed: O = EXAMPLE.TEST, CN = IPA RA\nerror 20 at 0 depth lookup: unable to get local issuer certificate\n"
      }
    }

    IPARAAgent

    Проверяет соответствие описания и значения атрибута userCertificate для RA-агента в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPARAAgent",
      "result": "ERROR",
      "kw": {
        "expected": "2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "got": "2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "msg": "RA agent description does not match. Found 2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST in LDAP and expected 2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST"
      }
    }

    IPAKRAAgent

    Проверяет соответствие описания и значения атрибута userCertificate для FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-агента в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPAKRAAgent",
      "result": "ERROR",
      "kw": {
        "expected": "2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "got": "2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "msg": "KRA agent description does not match. Found 2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST in LDAP and expected 2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST"
      }
    }

    IPACertRevocation

    Подтверждает, что сертификаты IPA не отозваны, используя отслеживание certmonger для определения списка сертификатов, подлежащих проверке.

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertRevocation",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "revocation_reason": "superseded",
        "msg": "Certificate is revoked, superseded"
      }
    }

    IPACertmongerCA

    Проверяет корректность конфигурации CA в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], анализируя настройки dogtag-ipa-ca-renew-agent и dogtag-ipa-ca-renew-agent-reuse.

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertmongerCA",
      "result": "ERROR",
      "kw": {
        "key": "dogtag-ipa-ca-renew-agent",
        "msg": "Certmonger CA 'dogtag-ipa-ca-renew-agent' missing"
      }
    }

    IPACertDNSSAN

    Проверяет, что во всех действующих заявках certmonger на серверные сертификаты профиля caIPAserviceCert для CA присутствует FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑Subject Alt Name, совпадающий с FQDN текущего хоста.

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertDNSSAN",
      "result": "ERROR",
      "uuid": "431c42c0-9396-4593-ad2b-09b40298ba1f",
      "when": "20240416115958Z",
      "duration": "0.904624",
      "kw": {
        "key": "20240318110910",
        "hostname": "ipa-ca.example.com",
        "san": [
          "ipa02.example.com"
        ],
        "ca": "IPA",
        "profile": "caIPAserviceCert",
        "msg": "Certificate request id {key} with profile {profile} for CA {ca} does not have a DNS SAN {san} matching name {hostname}"
      }
    }

    CertmongerStuckCheck

    Ищет заявки FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], у которых статус stuck = true, и оповещает об «застрявших» запросах.

    json
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "CertmongerStuckCheck",
      "result": "WARNING",
      "uuid": "d32781d5-09e7-4d52-89f1-57eca541e9e4",
      "when": "20230407120255Z",
      "duration": "0.019584",
      "kw": {
        "key": "20230407091205",
        "msg": "certmonger request {key} is in the stuck state"
      }
    }
  • ipahealthcheck.ipa.files
    Проверяет разрешения, владельцев и целостность основных файлов, используемых FreeIPA, таких как конфигурационные файлы и файлы FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑базы.

    IPAFileNSSDBCheck

    IPAFileCheck

    TomcatFileCheck

    Эти проверки проверяют владельца и режим файлов, установленных или настроенных FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. Существует множество вариантов прав доступа к файлам и владельцев, которые могут быть допустимыми и продолжать работать. Здесь приведены ожидаемые значения для чистой установки FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. Отклонения фиксируются на уровне WARNING.

    json
    {
      "source": "ipahealthcheck.ipa.files",
      "check": "IPAFileCheck",
      "result": "WARNING",
      "kw": {
        "key": "_etc_ipa_ca.crt_mode",
        "path": "/etc/ipa/ca.crt",
        "type": "mode",
        "expected": "0644",
        "got": "0444",
        "msg": "Permissions of /etc/ipa/ca.crt are 0444 and should be 0644"
      }
    }
    
    {
      "source": "ipahealthcheck.ipa.files",
      "check": "IPAFileNSSDBCheck",
      "result": "WARNING",
      "kw": {
        "key": "_etc_dirsrv_slapd-EXAMPLE-TEST_pkcs11.txt_mode",
        "path": "/etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt",
        "type": "mode",
        "expected": "0640",
        "got": "0666",
        "msg": "Permissions of /etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt are 0666 and should be 0640"
      }
    }
    
    {
      "source": "ipahealthcheck.ipa.files",
      "check": "IPAFileCheck",
      "result": "WARNING",
      "uuid": "148fd972-76b5-45ce-b87b-b7069ba017f5",
      "when": "20350403134616Z",
      "duration": "0.002585",
      "kw": {
        "key": "_var_log_apache2_error.log_owner",
        "path": "/var/log/apache2/error.log",
        "type": "owner",
        "expected": "root",
        "got": "user",
        "msg": "Ownership of /var/log/apache2/error.log is user and should be root"
      }
    }
    
    {
      "source": "ipahealthcheck.ipa.files",
      "check": "IPAFileCheck",
      "result": "WARNING",
      "uuid": "3caf9c40-fd40-4ad6-8ccf-6188daa93873",
      "when": "20350403134616Z",
      "duration": "0.002660",
      "kw": {
        "key": "_var_log_apache2_error.log_group",
        "path": "/var/log/apache2/error.log",
        "type": "group",
        "expected": "adm",
        "got": "user",
        "msg": "Group of /var/log/apache2/error.log is user and should be adm"
      }
    }
  • ipahealthcheck.ipa.host
    Выполняет проверку, связанную с аутентификацией текущего хоста, включая проверку корректности файла keytab для различных служб.

    IPAHostKeytab

    Обеспечивает, что keytab для службы host (обычно /etc/krb5.keytab) существует на сервере и позволяет получить TGT через GSSAPI.

    json
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "IPAHostKeytab",
      "severity": 2,
      "uuid": "123e4567-e89b-12d3-a456-426614174000",
      "when": "20250422T102030Z",
      "duration": 0.015,
      "kw": {
        "service": "host",
        "path": "/etc/krb5.keytab",
        "msg": "Service host keytab /etc/krb5.keytab does not exist."
      }
    }

    DSKeytab

    Обеспечивает, что keytab для службы ldap (обычно /etc/dirsrv/ds.keytab) существует и позволяет получить билет.

    json
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "DSKeytab",
      "result": "ERROR",
      "uuid": "5ba452bb-f460-489e-adf6-bce7ccd529e3",
      "when": "20250422214408Z",
      "duration": "0.000053",
      "kw": {
        "service": "ldap",
        "path": "/etc/dirsrv/ds.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }

    HTTPKeytab

    Обеспечивает, что keytab для службы HTTP (обычно /var/lib/ipa/gssproxy/http.keytab) существует и позволяет получить TGT для аутентификации веб‑сервера.

    json
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "HTTPKeytab",
      "result": "ERROR",
      "uuid": "75320965-ac11-41ed-8375-fb96f0dfd636",
      "when": "20250422215025Z",
      "duration": "0.000071",
      "kw": {
        "service": "HTTP",
        "path": "/var/lib/ipa/gssproxy/http.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }

    DNSKeytab

    Проверяет, что keytab для службы DNS (обычно /etc/bind/krb5.keytab) существует и может получить FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], но только если на хосте настроен FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервер FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. При отсутствии записи в dns_server_server проверка пропускается.

    json
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "DNSKeytab",
      "result": "ERROR",
      "uuid": "01a7db34-4567-4126-b761-93030e5a61ff",
      "when": "20250422215654Z",
      "duration": "0.000171",
      "kw": {
        "service": "DNS",
        "path": "/etc/bind/krb5.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }

    DNS_keysyncKeytab

    Проверяет, что keytab для службы ipa-dnskeysyncd (обычно /etc/ipa/dnssec/ipa-dnskeysyncd.keytab) существует и позволяет получить FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], но только если хост настроен как FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервер FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. При отсутствии записи в dns_server_server проверка пропускается.

    json
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "DNS_keysyncKeytab",
      "result": "ERROR",
      "uuid": "7c6f7fcf-a35f-45c5-ad57-dbc2f273973e",
      "when": "20250422215025Z",
      "duration": "0.000095",
      "kw": {
        "service": "ipa-dnskeysyncd",
        "path": "/etc/ipa/dnssec/ipa-dnskeysyncd.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }
  • ipahealthcheck.ipa.kdc
    Следит за состоянием рабочих процессов FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], необходимых для работы аутентификации.

    KDCWorkersCheck

    Проверяет, что в файле /etc/default/krb5-kdc в параметре KRB5KDC_ARGS указано число рабочих процессов (-w N), совпадающее с количеством онлайн‑ядер CPU на хосте. Если -w не задан и ядер больше одного, выдается предупреждение; если KRB5KDC_ARGS не найден, тоже предупреждение.

    json
    {
      "source": "ipahealthcheck.ipa.kdc",
      "check": "KDCWorkersCheck",
      "result": "WARNING",
      "uuid": "e2e667d0-83ac-41f7-8e71-8c5bc6a1397c",
      "when": "20250422221706Z",
      "duration": "0.000664",
      "kw": {
        "key": "workers",
        "cpus": 2,
        "workers": 4,
        "sysconfig": "/etc/default/krb5-kdc",
        "msg": "The number of CPUs {cpus} does not match the number of workers {workers} in {sysconfig}"
      }
    }
  • ipahealthcheck.ipa.meta
    Собирает общую информацию о сервере FreeIPA.

    IPAMetaCheck

    Вызывает внутренний API FreeIPA для получения списка всех зарегистрированных FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑серверов и возвращает их метаданные простым массивом имён мастеров. Если при вызове возникает любое исключение, генерируется ошибка с кодом ERROR.

    json
    {
      "source": "ipahealthcheck.ipa.meta",
      "check": "IPAMetaCheck",
      "result": "SUCCESS",
      "uuid": "0923fc34-6c27-4cfd-8cd0-04f30b8ec74e",
      "when": "20250422222216Z",
      "duration": "0.015272",
      "kw": {
        "masters": [
          "ipacln.testdomain.test",
          "ipasrv.testdomain.test"
        ]
      }
    }
  • ipahealthcheck.ipa.nss
    Проверяет корректность работы FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑подсистемы.

    IPAGroupMemberCheck

    Проверяет, что указанные системные POSIX‑группы содержат ожидаемых пользователей. В FreeIPA это нужно для разделения привилегий: например, чтобы веб‑сервер мог читать кэши учетных данных, создаваемые от имени ipaapi‑пользователя.

    json
    {
      "source": "ipahealthcheck.ipa.nss",
      "check": "IPAGroupMemberCheck",
      "result": "SUCCESS",
      "uuid": "f04bff38-5382-4794-856c-1e7d193c9dfa",
      "when": "20250422223036Z",
      "duration": "0.000543",
      "kw": {
        "key": "ipaapi",
        "member": "www-data"
      }
    }
  • ipahealthcheck.ipa.proxy
    Контролирует настройки IPA Proxy, включая проверку корректности секретного ключа.
    IPAProxySecretCheck

    Проверяет, что секреты FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-коннектора Tomcat совпадают со значениями из ProxyPassMatch в конфиге Apache (ipa-pki-proxy.conf), и что между secret и requiredSecret нет противоречий.

    json
    {
      "source": "ipahealthcheck.ipa.proxy",
      "check": "IPAProxySecretCheck",
      "result": "CRITICAL",
      "uuid": "6820b5b3-08a9-4632-a834-a71d1ae0d84b",
      "when": "20220708144958Z",
      "duration": "0.000894",
      "kw": {
        "key": "proxy_secrets",
    	"proxy_conf": "/etc/apache2/conf-enabled/ipa-pki-proxy.conf",
    	"msg": "No ProxyPassMatch secrets found in {proxy_conf}"
      }
    }
  • ipahealthcheck.ipa.roles
    Выполняет проверки, связанные с ролями сервера в инфраструктуре FreeIPA — определяет, является ли сервер мастером обновления сертификатов, CRL-менеджером, и проверяет связанные с этим параметры.

    IPACRLManagerCheck

    IPARenewalMasterCheck

    Набор информационных проверок для определения, является ли текущий мастер генератором CRL и/или мастером обновления.

    json
    {
      "source": "ipahealthcheck.ipa.roles",
      "check": "IPACRLManagerCheck",
      "result": "SUCCESS",
      "kw": {
        "key": "crl_manager",
        "crlgen_enabled": true
      }
    }
    {
      "source": "ipahealthcheck.ipa.roles",
      "check": "IPARenewalMasterCheck",
      "result": "SUCCESS",
      "kw": {
        "key": "renewal_master",
        "master": true
      }
    }

    IPARenewalMasterHasKRACheck

    Определяет, является ли текущий узел сервером обновления сертификатов CA и проверяет, установлена ли на нём служба FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].

    json
    {
      "source": "ipahealthcheck.ipa.roles",
      "check": "IPARenewalMasterHasKRACheck",
      "result": "CRITICAL",
      "uuid": "3f2d4a6b-7c8e-4d9f-8b2a-1e5f6c7d8e9f",
      "when": "20250422091500Z",
      "duration": "0.023456",
      "kw": {
        "key": "kra_renewal_master",
        "msg": "There are KRA(s) in the topology but not on the renewal server. The KRA service certificates will not be renewed."
      }
    }
  • ipahealthcheck.ipa.topology
    Проводит проверки топологии репликации и сетевой конфигурации.

    Проверки топологии для проверки соответствия как рекомендациям, так и выявления ошибок.

    IPATopologyDomainCheck

    Справка

    Команда "ipa topologysuffix-verify [suffix]" проверяет целостность топологии репликации для указанного суффикса.

    Предоставляет эквивалент команды: "ipa topologysuffix-verify [suffix]".

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

    При успешном выполнении возвращаются настроенные домены.

    json
    {
      "source": "ipahealthcheck.ipa.topology",
      "check": "IPATopologyDomainCheck",
      "result": "SUCCESS",
      "kw": {
        "suffix": "domain"
      }
    },
    {
      "source": "ipahealthcheck.ipa.topology",
      "check": "IPATopologyDomainCheck",
      "result": "SUCCESS",
      "kw": {
        "suffix": "ca"
      }
    }
  • ipahealthcheck.ipa.trust
    Отвечает за диагностику доверительных отношений с FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], проверяя настройки доверительных-агентов, списки доверенных доменов, корректность конфигураций принципалов, членство в группах и наличие необходимых пакетов.

    Проверка общих проблем конфигурации доверительных отношений FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
    Проверки вернут статус SUCCESS, если система не настроена как агент доверия или контроллер.

    IPATrustAgentCheck

    Проверка конфигурации SSSD, когда машина настроена в качестве агента доверия.

    Параметр provider должен иметь значение ipa, а ipa_server_mode – быть установлен в true.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustAgentCheck",
      "severity": ERROR,
      "kw": {
        "key": "ipa_server_mode_false",
        "attr": "ipa_server_mode",
        "sssd_config": "/etc/sssd/sssd.conf",
        "domain": "ipa.example.com",
        "msg": "{attr} is not True in {sssd_config} in the domain {domain}"
      }
    }

    IPATrustDomainsCheck

    Справка

    Команда "sssctl domain-list" выводит список всех доменов, к которым SSSD подключён, включая доверенные домены.

    Проверяет, что домен IPA присутствует в выводе команды "sssctl domain-list", а домены доверия совпадают с доменами, указанными в SSSD.

    Если списки доменов не совпадают:

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustDomainsCheck",
      "result": "ERROR",
      "kw": {
        "key": "domain-list",
        "sslctl": "/usr/sbin/sssctl",
        "sssd_domains": "ad.vm",
        "trust_domains": "",
        "msg": "{sslctl} {key} reports mismatch: sssd domains {sssd_domains} trust domains {trust_domains}"
      }
    }

    IPATrustCatalogCheck

    Справка

    Команда "sssctl domain-status" проверяет доступность и состояние указанного домена SSSD на клиенте.

    Проверка, разрешающая имя пользователя FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], например, Administrator@REALM. Эта операция заполняет значения глобального каталога AD и контроллера домена AD в выводе команды "sssctl domain-status".

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustCatalogCheck",
      "result": "ERROR",
      "kw": {
        "key": "AD Global Catalog",
        "output": "Active servers:\nAD Domain Controller: root-dc.ad.vm\nIPA: ipa.example.com",
        "sssctl": "/usr/sbin/sssctl",
        "domain": "ad.vm",
        "msg": "{key} not found in {sssctl} 'domain-status' output: {output}"
      }
    }

    IPAsidgenpluginCheck

    Проверяет, что плагин sidgen включен в экземпляре IPA 389-ds.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPAsidgenpluginCheck",
      "result": "ERROR",
      "kw": {
        "key": "IPA SIDGEN",
        "error": "no such entry",
        "msg": "Error retrieving 389-ds plugin {key}: {error}"
      }
    }

    IPATrustAgentMemberCheck

    Проверяет, что текущий хост является членом группы cn=adtrust agents,cn=sysaccounts,cn=etc,SUFFIX.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustAgentMemberCheck",
      "result": "ERROR",
      "kw": {
        "key": "ipa.example.com",
        "group": "adtrust agents",
        "msg": "{key} не является членом {group}"
      }
    }

    IPATrustControllerPrincipalCheck

    Проверяет, что основной cifs-принципал текущего хоста является членом группы cn=adtrust agents,cn=sysaccounts,cn=etc,SUFFIX.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerPrincipalCheck",
      "result": "ERROR",
      "kw": {
        "key": "cifs/ipa.example.com@EXAMPLE.COM",
        "group": "adtrust agents",
        "msg": "{key} is not a member of {group}"
      }
    }

    IPATrustControllerServiceCheck

    Проверяет, что на текущем хосте запущена служба ADTRUST в рамках ipactl.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerServiceCheck",
      "result": "ERROR",
      "kw": {
        "key": "ADTRUST",
        "msg": "{key} service is not enabled"
      }
    }

    IPATrustControllerConfCheck

    Справка

    Команда "net conf list" выводит все параметры конфигурации Samba, хранящиеся в реестре, в формате, похожем на smb.conf.

    Проверяет, что для backend passdb в выводе команды "net conf list" включён ldapi.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerConfCheck",
      "result": "ERROR",
      "kw": {
        "key": "net conf list",
        "got": "",
        "expected": "ipasam:ldapi://%2fvar%2frun%2fslapd-EXAMPLE-COM.socket",
        "option": "passdb backend",
        "msg": "{key} option {option} value {got} doesn't match expected value {expected}"
      }
    }

    IPATrustControllerGroupSIDCheck

    Проверяет, что SID группы администраторов заканчивается на 512 (RID для Domain Admins).

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerGroupSIDCheck",
      "result": "ERROR",
      "kw": {
        "key": "ipantsecurityidentifier",
        "rid": "S-1-5-21-1078564529-1875285547-1976041503-513",
        "msg": "{key} is not a Domain Admins RID"
      }
    }

    IPATrustPackageCheck

    Если система не является контроллером доверия и доверительные отношения AD включены, проверяется наличие установленного пакета trust‑ad.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustPackageCheck",
      "result": "WARNING",
      "kw": {
        "key": "adtrustpackage",
        "msg": "trust-ad sub-package is not installed. Administration will be limited."
      }
    }

    IPADomainCheck

    Проверяет, что провайдер домена IPA в SSSD настроен на использование «ipa»: читает секцию домена для текущего FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑домена в файле /etc/sssd/sssd.conf, убеждается, что в ней присутствуют опции id_provider, auth_provider, chpass_provider и access_provider, и что их значение равно "ipa"; в противном случае возвращает ERROR, а при успешной проверке — SUCCESS.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPADomainCheck",
      "result": "SUCCESS",
      "uuid": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
      "when": "20220427190310Z",
      "duration": "0.012345",
      "kw": {
        "key": "domain-check"
      }
    }

    IPATrustControllerAdminSIDCheck

    Проверяет, что SID учётной записи admin в доверенном контроллере завершает­ся на 500: выполняет FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑запрос к записи uid=admin, атрибуту ipantsecurityidentifier, и возвращает ERROR, если идентификатор отсутствует или не оканчивается на 500 (с ключом ipantsecurityidentifier и полем rid), иначе — SUCCESS.

    json
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerAdminSIDCheck",
      "result": "ERROR",
      "uuid": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90",
      "when": "20250422101530Z",
      "duration": "0.018234",
      "kw": {
        "key": "ipantsecurityidentifier",
        "rid": "S-1-5-21-123456789-123456789-123456789-501",
        "msg": "ipantsecurityidentifier is not a Domain Admin RID"
      }
    }
  • ipahealthcheck.meta.services
    Контролирует состояние основных служб FreeIPA (таких как certmonger, dirsrv, httpd, sssd и др.) и сигнализирует о сбоях или остановке их работы.

    Возвращает статус состояния необходимых FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-служб

    Следующие службы отслеживаются:

    • certmonger
    • dirsrv
    • gssproxy
    • httpd
    • ipa_custodia
    • ipa_otpd
    • kadmin
    • krb5kdc
    • named
    • ods_enforcerd
    • ipa_ods_exporter
    • ipa_dnskeysyncd
    • pki_tomcatd
    • sssd
    • chronyd
    • smb
    • winbind

    Значение поля check соответствует имени FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-сервиса. Обратите внимание, что в именах службы дефисы заменяются на символы подчеркивания.

    Пример остановленного сервиса:

    json
    {
      "source": "ipahealthcheck.meta.services",
      "check": "httpd",
      "result": "ERROR",
      "kw": {
        "status": false,
        "msg": "httpd: not running"
      }
    }
  • ipahealthcheck.system.filesystemspace
    Анализирует свободное место на дисковых разделах, ключевых для работы системы FreeIPA, предупреждая о риске нехватки пространства.

    Проверка доступного дискового пространства.
    Низкий уровень свободного места может вызвать проблемы с логированием, выполнением операций и резервным копированием.

    FileSystemSpaceCheck

    Проверяются как процентное, так и абсолютное минимальное значение свободного места. В зависимости от точек монтирования возможно некоторое пересечение проверок. Минимальное свободное пространство составляет 20% и в настоящее время задано жёстко.

    Проверяются следующие пути:

    /var/lib/dirsrv/ – 1024 МБ свободного места

    /var/lib/ipa/backup/ – 512 МБ свободного места

    /var/log/ – 1024 МБ свободного места

    /var/log/audit/ – 512 МБ свободного места

    /var/tmp/ – 512 МБ свободного места

    /tmp/ – 512 МБ свободного места

    Например, полностью заполненный /tmp/ будет отображаться следующим образом:

    json
    {
      "source": "ipahealthcheck.system.filesystemspace",
      "check": "FileSystemSpaceCheck",
      "result": "ERROR",
      "kw": {
        "msg": "/tmp: free space percentage under threshold: 0% < 20%",
        "store": "/tmp",
        "percent_free": 0,
        "threshold": 20
      }
    },
    {
      "source": "ipahealthcheck.system.filesystemspace",
      "check": "FileSystemSpaceCheck",
      "result": "ERROR",
      "kw": {
        "msg": "/tmp: free space under threshold: 0 MiB < 512 MiB",
        "store": "/tmp",
        "free_space": 0,
        "threshold": 512
      }
    }

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

sudo ipa-healthcheck --list-sources

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

  • Нет меток