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

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

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

Введение

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

Цели использования:

  • Обеспечение устойчивости работы серверов FreeIPA.

  • Выявление потенциальных ошибок в настройке.

  • Контроль состояния репликации и конфигурации Kerberos.

  • Своевременное оповещение о сбоях и нарушениях в системе.

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

Запуск утилиты производится на настроенном контроллере ЕПП 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‑хранилище)


  • ipahealthcheck.ds.config
    Проводит анализ конфигурационных настроек LDAP‑сервера и сопутствующих компонентов, чтобы удостовериться, что все параметры установлены корректно.


  • ipahealthcheck.ds.disk_space
    Проверяет состояние свободного места на дисках, особенно на критичных разделах, таких как каталоги логов или резервных копий, чтобы предупредить о риске переполнения.


  • ipahealthcheck.ds.dse
    Осуществляет диагностику DSE (Directory Server Engine) — базовой части LDAP‑сервера, которая отвечает за хранение и обработку данных.


  • ipahealthcheck.ds.encryption
    Анализирует настройки шифрования и криптографические параметры, что обеспечивает безопасную передачу и хранение данных.


  • ipahealthcheck.ds.fs_checks
    Выполняет проверки файловой системы, включая права доступа, целостность и корректность разрешений на важных файлах и каталогах.


  • ipahealthcheck.ds.nss_ssl
    Проверяет настройки NSS‑базы, которая используется для хранения сертификатов и ключей, а также тестирует соответствующие SSL‑настройки.


  • ipahealthcheck.ds.ds_plugins
    Отвечает за проверку дополнительных плагинов LDAP‑сервера, которые могут расширять его функциональность или влиять на безопасность.


  • ipahealthcheck.ds.replication
    Контролирует репликацию данных между серверами, проверяя синхронизацию данных и анализируя журналы изменений (changelogs) для обнаружения ошибок.

    ReplicationConflictCheck

    Ищет записи в LDAP, соответствующие фильтру (&(!(objectclass=nstombstone))(nsds5ReplConflict=*))

    json
    {
      "source": "ipahealthcheck.ds.replication",
      "check": "ReplicationConflictCheck",
      "result": "ERROR",
      "kw": {
        "key": "nsuniqueid=66446001-1dd211b2+uid=bjenkins,cn=users,cn=accounts,dc=example,dc=test",
        "conflict": "namingConflict",
        "msg": "Replication conflict"
      }
    }
  • ipahealthcheck.ds.ruv
    Следит за корректностью записей RUV (Replication Update Values), необходимых для правильной работы репликации.


  • 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"
      }
    }
  • 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.


  • 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

    Выполняет команду: kinit -kt /etc/krb5.keytab для проверки, что keytab хоста действителен.

  • ipahealthcheck.ipa.kdc
    Следит за состоянием рабочих процессов KDC (Kerberos Distribution Center), необходимых для работы аутентификации.


  • ipahealthcheck.ipa.meta
    Собирает общую информацию о сервере FreeIPA (например, FQDN, версии продукта), предоставляя обзор состояния системы.


  • ipahealthcheck.ipa.nss
    Проверяет корректность работы NSS‑подсистемы, например, правильное членство пользователей в группах, связанные с NSS‑базой.


  • ipahealthcheck.ipa.proxy
    Контролирует настройки IPA Proxy, включая проверку корректности секретного ключа, используемого для безопасной коммуникации.


  • 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
      }
    }
  • 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."
      }
    }
  • 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_dnskeysyncd
    • ipa_otpd
    • kadmin
    • krb5kdc
    • named
    • pki_tomcatd
    • sssd

    Значение поля 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

  • Нет меток