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

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

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

Введение

FreeIPA Health Check – утилита для диагностики работоспособности сервера FreeIPA.
Её основное назначение – автоматическая проверка корректности настроек, безопасности, доступности репликации и работы сервисов FreeIPA.
Программа предназначена для администраторов, требующих быстрой диагностики и своевременного обнаружения неисправностей.

Описание стенда

Запуск утилиты производится на настроенном контроллере ЕПП FreeIPA. Порядок установки см. в статье:

Также утилита может проверять корректность работы реплик, доверительных отношений, центра сертификации. Порядок установки см. в статьях:

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

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

shell
sudo apt install freeipa-healthcheck

После установки будут созданы конфигурационный файл /etc/ipahealthcheck/ipahealthcheck.conf и службы ipa-healthcheck.service и ipa-healthcheck.timer в systemd.

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

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

  • Раздел [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).
  • check:
    Позволяет запустить конкретную проверку внутри выбранного источника, этот параметр используется совместно с source. (например, IPADNSSystemRecordsCheck).

Параметры в разделе [excludes]

  • source:
    Позволяет подавлять результаты, поступающие из определённого источника (например, ipahealthcheck.ipa.certs).

  • check:
    Позволяет подавлять конкретные имена проверок (например, IPADNSSystemRecordsCheck).

  • key:
    Позволяет подавлять результаты по конкретному ключу (обычно это уникальный идентификатор, например, ID запроса на сертификат).

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

/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

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

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

  • --list-sources:
    Выводит список доступных источников (sources) и проверок (checks), что помогает определить, какие группы тестов доступны в вашей установке.
  • --config=FILE:
    Задает файл конфигурации, который будет использоваться при запуске. Если указать пустую строку, то файл конфигурации не загружается. По умолчанию используется /etc/ipahealthcheck/ipahealthcheck.conf.
  • --source=SOURCE:
    Исполняет проверки только из указанного источника или пространства имен. (например, ipahealthcheck.ipa.certs).
  • --check=CHECK:
    Позволяет запустить конкретную проверку внутри выбранного источника, этот параметр используется совместно с --source. (например, IPADNSSystemRecordsCheck).
  • --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 задает префикс, который будет добавляться к именам метрик.

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

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

Важно!

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

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

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

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

Порядок настройки таймеров в Astra Linux см. в статье:

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

shell
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
#!/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 можно задать и в конфигурационном файле. См. Конфигурация и интеграция

Важно!

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

shell
sudo journalctl -u ipa-healthcheck.service

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

Программа поддерживает следующие проверки:

  • ipahealthcheck.dogtag.ca
    Отвечает за проверки, связанные с сервером Dogtag (служба CA).

    DogtagCertsConfigCheck

    Сравнивает значение сертификатов центра сертификации (а также KRA, если установлен) с значением, найденным в файле 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 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‑модулей, которые отвечают за хранение данных (например, в LDAP‑хранилище)

    BackendsCheck

    Выполняет автоматическую lint‑проверку настройки backend‑инстанций Directory Server и генерирующий 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
    Проводит анализ конфигурационных настроек LDAP‑сервера и сопутствующих компонентов, чтобы удостовериться, что все параметры установлены корректно.

    ConfigCheck

    Выполняет автоматическую lint‑проверку конфигурации Directory Server. Ищет устаревшие, отсутствующие или некорректные параметры (например, небезопасные схемы хранения пароля, неподходящие диапазоны значений, дублирование опций), преобразуя результаты в стандартизированные DSBLE/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

    Проверяет свободное место на ключевых томах Directory Server и выдаёт ERROR или CRITICAL, если свободный объём опускается ниже абсолютного порога (1 024 МБ) или процент свободного пространства оказывается ниже 20%

    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
    Осуществляет диагностику DSE (Directory Server Engine) — базовой части LDAP‑сервера, которая отвечает за хранение и обработку данных.

    DSECheck

    Контролирует рассинхронизацию времени между репликами Directory Server, считывая атрибут 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 задаёт минимальную версию TLS не ниже 1.2; если версия ниже порога, возвращает ERROR, а при отсутствии раздела или невозможности подключиться к экземпляру Directory Server — 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.fs_checks
    Выполняет проверки файловой системы, включая права доступа, целостность и корректность разрешений на важных файлах и каталогах.

    FSCheck

    Проверяет права доступа к ключевым файлам Directory Server: /etc/resolv.conf (должно быть 0644) и файлам pin.txt / pwdfile.txt в каталоге сертификатов Directory Server (должны быть 0400 или 0600); при несоответствии формирует отчёты DSPERMLE0001 или DSPERMLE0002 соответственно.

    json
    {
      "source": "ipahealthcheck.ds.fs_checks",
      "check": "FSCheck",
      "result": "ERROR",
      "uuid": "e45bb50a-39b1-4b32-bb2f-38ca6523dbc0",
      "when": "20250422155540Z",
      "duration": "0.024143",
      "kw": {
        "key": "DSPERMLE0001",
        "items": [
          "File Permissions",
          "/etc/resolv.conf"
        ],
        "msg": "The file \"/etc/resolv.conf\" does not have the expected permissions (644).  This\ncan cause issues with replication and chaining."
      }
    }
  • ipahealthcheck.ds.nss_ssl
    Проверяет настройки NSS‑базы, которая используется для хранения сертификатов и ключей, а также тестирует соответствующие SSL‑настройки.

    NssCheck

    Проверяет NSS‑базу экземпляра Directory Server: ищет сертификаты, срок действия которых истекает менее чем через 30 дней (код DSCERTLE0001, результат ERROR) или которые уже просрочены (код DSCERTLE0002, результат CRITICAL)

    json
    {
      "source": "ipahealthcheck.ds.nss_ssl",
      "check":  "NssCheck",
      "result": "ERROR",
      "uuid":   "1a2798fd-7fa5-4132-a288-7975f2c32b60",
      "when":   "20200813211503Z",
      "duration": "0.000150",
      "kw": {
        "key":   "DSCERTLE0001",
        "items": [
    	   "Expiring Certificate"
    	],
        "msg": "The certificate (Server-Cert) will expire in less than 30 days"
      }
    }
  • ipahealthcheck.ds.ds_plugins
    Отвечает за проверку дополнительных плагинов LDAP‑сервера, которые могут расширять его функциональность или влиять на безопасность.

    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
    Контролирует репликацию данных между серверами, проверяя синхронизацию данных и анализируя журналы изменений (changelogs) для обнаружения ошибок.

    ReplicationCheck

    Проверяет все объекты nsDS5ReplicationAgreement во всех репликационных репозиториях Directory Server: убеждается, что состояние соглашения (nsds5replicaEnabled=on, nsds5replicaLastUpdateStatus=0) и канал связи к удалённому хосту исправны, что счётчик отставания (RUV) синхронизирован и нет поломанных либо отключённых соглашений. Также проверяет репликацию на конфликты.

    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‑changelogmaxagensslapd‑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
    Следит за корректностью записей RUV (Replica Update Vector), необходимых для правильной работы репликации.

    RUVCheck

    Извлекает текущий (локальный) RUV для основного LDAP‑суффикса и для суффикса 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: от контроля срока действия, проверки цепочки доверия до сравнения сертификатов, а также отслеживания их состояния с помощью certmonger.

    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]"
      }
    }

    Если NSS-база не может быть открыта:

    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]"
      }
    }

    Если отслеживаемый никнейм не найден в NSS-базе:

    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

    Сравнивает информацию отслеживания (tracking) сертификатов, полученную от certmonger, с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой.

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

    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

    Сравнивает настройки доверия для сертификатов, хранящихся в NSS-базе, с известным корректным состоянием.

    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 совпадают с данными, полученными из NSS-базы (или файла).

    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, присутствующие как в NSS-базе, так и в LDAP.

    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

    Проверяет цепочку сертификатов, полученных из NSS-базы. Выполняется команда 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. Выполняется команда 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-агента в LDAP.

    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 для KRA-агента в LDAP.

    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 в certmonger, анализируя настройки 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 присутствует DNS‑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

    Ищет заявки certmonger, у которых статус 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.dna
    Отвечает за проверку диапазона DNA (Domain Number Allocation), который используется для распределения идентификаторов в системе, чтобы избежать конфликтов.

    IPADNARangeCheck

    Это выводит настроенный диапазон DNA, если таковой имеется. Предполагается, что эта информация будет использоваться в сочетании с другими данными для дальнейшего анализа.

    json
    {
      "source": "ipahealthcheck.ipa.dna",
      "check": "IPADNARangeCheck",
      "result": "SUCCESS",
      "kw": {
        "range_start": 1000,
        "range_max": 199999,
        "next_start": 0,
        "next_max": 0,
      }
    }
  • ipahealthcheck.ipa.idns
    Производит диагностику системных DNS‑записей, необходимых для корректной работы инфраструктуры FreeIPA.

    IPADNSSystemRecordsCheck

    Проверяет, что все обязательные системные DNS‑записи (SRV, URI, TXT и A/AAAA ipa‑ca), перечисленные командой ipa dns‑update‑system‑records --dry‑run, действительно расширяются через первый указанный в /etc/resolv.conf сервер и содержат ровно те значения, которых ожидает FreeIPA.

    json
    {
      "source": "ipahealthcheck.ipa.idns",
      "check": "IPADNSSystemRecordsCheck",
      "result": "SUCCESS",
      "uuid": "eb7a3b68-f6b2-4631-af01-798cac0eb018",
      "when": "20200415143339Z",
      "duration": "0.210471",
      "kw": {
        "key": "_ldap._tcp.idm.example.com.:server1.idm.example.com."
      }
    },
    {
      "source": "ipahealthcheck.ipa.idns",
      "check": "IPADNSSystemRecordsCheck",
      "result": "WARNING",
      "uuid": "8332068e-f76f-419c-a376-ddd87541ec28",
      "when": "20221209024056Z",
      "duration": "0.676441",
      "kw": {
        "msg": "Expected URI record missing",
        "key": "_kerberos.example.com.:krb5srv:m:tcp:idm.example.com."
      }
    }
  • ipahealthcheck.ipa.files
    Проверяет разрешения, владельцев и целостность основных файлов, используемых FreeIPA, таких как конфигурационные файлы и файлы NSS‑базы.

    IPAFileNSSDBCheck

    IPAFileCheck

    TomcatFileCheck

    Эти проверки проверяют владельца и режим файлов, установленных или настроенных IPA. Существует множество вариантов прав доступа к файлам и владельцев, которые могут быть допустимыми и продолжать работать. Здесь приведены ожидаемые значения для чистой установки IPA. Отклонения фиксируются на уровне 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"
      }
    }
  • ipahealthcheck.ipa.host
    Выполняет проверку, связанную с аутентификацией текущего хоста, включая проверку корректности файла keytab для различных служб (LDAP, HTTP, DNS и др.).

    IPAHostKeytab

    Обеспечивает, что keytab для службы host (обычно /etc/krb5.keytab) существует на сервере и позволяет получить Ticket‑Granting Ticket (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) существует и позволяет получить Ticket‑Granting Ticket (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) существует и может получитьTicket‑Granting Ticket (TGT), но только если на хосте настроен DNS‑сервер IPA. При отсутствии записи в 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) существует и позволяет получить Ticket‑Granting Ticket (TGT), но только если хост настроен как DNS‑сервер IPA. При отсутствии записи в 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
    Следит за состоянием рабочих процессов KDC (Kerberos Distribution Center), необходимых для работы аутентификации.

    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 для получения списка всех зарегистрированных IPA‑серверов и возвращает их метаданные простым массивом имён мастеров. Если при вызове возникает любое исключение, генерируется ошибка с кодом 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
    Проверяет корректность работы NSS‑подсистемы, например, правильное членство пользователей в группах, связанные с NSS‑базой.

    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

    Проверяет, что секреты AJP (Apache JServ Protocol) коннектора 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 (CA renewal master) и проверяет, установлена ли на нём служба KRA (Key Recovery Authority).

    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

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

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

    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
    Отвечает за диагностику доверительных отношений (trust) с Active Directory, проверяя настройки trust-агентов, списки доверенных доменов, корректность конфигураций principal, членство в группах и наличие необходимых пакетов.

    Проверка общих проблем конфигурации доверительных отношений AD.
    Проверки вернут статус 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

    Проверяет, что домен 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

    Проверка, разрешающая имя пользователя AD, например, 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

    Проверяет, что для 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»: читает секцию домена для текущего IPA‑домена в файле /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: выполняет LDAP‑запрос к записи 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.core
    Собирает основную информацию о FreeIPA-сервере, которая используется для формирования общего отчёта о состоянии системы.

    MetaCheck

    Предоставляет базовую информацию о самом IPA-мастере. Вывод включает FQDN и версию IPA.

    json
    {
      "source": "ipahealthcheck.meta.core",
      "check": "MetaCheck",
      "result": "SUCCESS",
      "kw": {
        "fqdn": "ipa.example.test",
        "ipa_version": "4.8.0",
        "ipa_api_version": "2.233"
      }
    }
  • ipahealthcheck.meta.services
    Контролирует состояние основных служб FreeIPA (таких как certmonger, dirsrv, httpd, sssd и др.) и сигнализирует о сбоях или остановке их работы.

    Возвращает статус состояния необходимых IPA-служб

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

    • 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 соответствует имени IPA-сервиса. Обратите внимание, что в именах службы дефисы заменяются на символы подчеркивания.

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

    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
      }
    }

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

shell
sudo ipa-healthcheck --list-sources









1111

  • Нет меток