FreeIPA Health Check – инструмент ipa-healthcheck, предназначенный для диагностики состояния серверов FreeIPA. Используется администраторами доменов.
Запуск инструмента производится на настроенном контроллере ЕПП FreeIPA. Порядок установки и настройки контроллера см. в статье Контроллер ЕПП FreeIPA в Astra Linux.
Также инструмент может проверять корректность работы:
В таблице перечислены все специальные термины и аббревиатуры, применяемые в статье, с их пояснениями.
|
Инструмент ipa-healthcheck предоставляется пакетом freeipa-healthcheck. Пакет входит в расширенный репозиторий. Установить пакет можно используя Графический менеджер пакетов synaptic, или из командной строки:
sudo apt install freeipa-healthcheck |
После установки будут созданы:
Файл конфигурации разделён как минимум на две секции:
Параметры в секции [default]
Параметры в секции [excludes]
|
Пример готовой конфигурации может выглядеть так:
[default] cert_expiration_days = 7 timeout = 25 output_type = json output_file = /var/log/ipa-health.log indent = 2 verbose = True severity = ERROR CRITICAL debug = False [excludes] source = ipahealthcheck.ipa.certs check = IPADNSSystemRecordsCheck |
Также все параметры конфигурации поддерживаются в виде аргументов при запуске из командой строки.
Доступные параметры CLI:
|
Пример готовых команд:
sudo ipa-healthcheck --source=ipahealthcheck.ipa.certs --check=IPACertExpirationCheck --severity=ERROR --severity=CRITICAL --failures-only --output-type=human |
sudo ipa-healthcheck --config=/etc/ipahealthcheck/myconfig.conf --output-file=/var/log/ipa/healthcheck/healthcheck.log --indent=4 --verbose --debug |
sudo ipa-healthcheck --source=ipahealthcheck.ipa.topology --check=IPATopologyDomainCheck --output-type=prometheus --metric-prefix=ipa_health |
Возможные варианты вывода варьируются от значения параметра output-type. См. Конфигурация и интеграция
|
При запуске инструмент сначала загружает параметры из файла конфигурации, затем применяются параметры командной строки. Действуют следующие правила:
|
При установке пакета создаются два системных юнита:
По умолчанию ipa-healthcheck.timer при установке пакета уже активируется и начинает свою работу. Если же по какой-то причине таймер не был включён, нужно выполнить два действия:
sudo systemctl enable ipa-healthcheck.timer |
sudo systemctl start ipa-healthcheck.timer |
Подробнее про таймеры systemd см. статью Использование таймеров systemd вместо заданий cron.
В файле /usr/libexec/ipa/ipa-healthcheck.sh можно указать, с какими параметрами командной строки будет запускаться служба ipa-healthcheck.service:
#!/bin/sh LOGDIR=/var/log/ipa/healthcheck /usr/bin/ipa-healthcheck --output-file $LOGDIR/healthcheck.log --source=ipahealthcheck.ipa.certs --check=IPACertExpirationCheck --severity=ERROR --severity=CRITICAL |
Файл /usr/libexec/ipa/ipa-healthcheck.sh перезаписывается при обновлении или переустановке пакета freeipa-healthcheck. Рекомендуется сделать резервную копию:
После обновления или переустановки пакета freeipa-healthcheck заменить автоматически созданный /usr/libexec/ipa/ipa-healthcheck.sh:
|
Запуск службы ipa‑healthcheck.service может завершиться ошибкой (failed) если какая-либо тестовая проверка не выполнена. В этом случае для диагностики следует просмотреть журнал службы с помощью команды:
|
Инструмент поддерживает следующие источники и входящие в них проверки:
DogtagCertsConfigCheck Сравнивает значение сертификатов центра сертификации (а также FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], если установлен) с значением, найденным в файле CS.cfg. Если значения не совпадают, то, вероятно, CS не сможет запуститься.
DogtagCertsConnectivityCheck
Выполняет эквивалент команды "ipa cert-show 1" для проверки базовой доступности.
|
BackendsCheck Выполняет проверку настройки backend‑инстанций DS и генерирующий DSBLE‑коды при обнаружении нарушений конфигурации или работы базы данных.
|
ConfigCheck Выполняет проверку конфигурации FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. Ищет устаревшие, отсутствующие или некорректные параметры (например, небезопасные схемы хранения пароля, неподходящие диапазоны значений, дублирование опций), преобразуя результаты в стандартизированные DSCLE‑коды
|
DiskSpaceCheck Проверяет свободное место на ключевых томах DS и выдаёт ERROR, если свободного объёма меньше 1 024 МБ или свободного пространства менее 20%, и CRITICAL, если свободного пространства остаётся менее 10%.
|
DSECheck Контролирует рассинхронизацию времени между репликами FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], считывая атрибут nsState из dse.ldif; выдаёт ERROR, если расхождение превышает 12 часов, и CRITICAL, когда оно выходит за предел 24 часов.
|
EncryptionCheck Проверяет, что в разделе cn=encryption,cn=config атрибут sslVersionMin задаёт минимальную версию FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК] не ниже 1.2; если версия ниже порога, возвращает ERROR, а при отсутствии раздела или невозможности подключиться к экземпляру FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК] — CRITICAL.
|
FSCheck Проверяет права доступа к ключевым файлам FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]: /etc/resolv.conf (должно быть 0644) и файлам pin.txt / pwdfile.txt в каталоге сертификатов FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК] (должны быть 0400 или 0600); при несоответствии формирует отчёты DSPERMLE0001 или DSPERMLE0002 соответственно.
|
NssCheck Проверяет FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑базу экземпляра DS: ищет сертификаты, срок действия которых истекает менее чем через 30 дней (код DSCERTLE0001, результат ERROR) или которые уже просрочены (код DSCERTLE0002, результат CRITICAL)
|
RIPluginCheck Проверяет, что у плагина Referential Integrity параметр nsslapd‑referint‑update‑delay равен 0 (синхронный режим) и что для каждого атрибута из referint‑membership‑attr во всех пользовательских базах данных существует индекс равенства (nsIndexType=eq).
|
ReplicationCheck Проверяет все объекты nsDS5ReplicationAgreement во всех репликационных репозиториях FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]: убеждается, что состояние соглашения (nsds5replicaEnabled=on, nsds5replicaLastUpdateStatus=0) и канал связи к удалённому хосту исправны, что счётчик отставания (FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]) синхронизирован и нет поломанных либо отключённых соглашений. Также проверяет репликацию на конфликты.
ReplicationChangelogCheck Проверяет, что у журнала репликации cn=changelog5,cn=config включен trimming (задан хотя бы один из параметров nsslapd‑changelogmaxage, nsslapd‑changelogmaxentries или nsslapd‑changelogtrim‑interval); при отсутствии trimming выдаёт отчёт DSCLLE0001.
|
RUVCheck Извлекает текущий (локальный) RUV для основного FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑суффикса и для суффикса Dogtag CA и возвращает их как единичные значения.
KnownRUVCheck Сканирует записи из tombstone, содержащие атрибут nsds50ruv, извлекает из них все известные RUV для каждого суффикса и возвращает список кортежей
|
IPACertmongerExpirationCheck Перебирает все ожидаемые запросы certmonger и проверяет срок действия сертификата, основываясь на информации, которой располагает certmonger. Если сертификат истекает в пределах cert_expiration_days (по умолчанию 28 дней), выдается предупреждение. Истекший сертификат:
Сертификат, истекающий скоро:
IPACertfileExpirationCheck Похожа на IPACertmongerExpirationCheck, но сертификат извлекается из PEM-файла или базы NSS и повторно проверяется. Это используется в случае, если сведения certmonger устарели по сравнению с сертификатом, находящимся на диске. Если файл сертификата не может быть открыт:
Если FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-база не может быть открыта:
Если отслеживаемый никнейм не найден в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базе:
Истекший сертификат:
Сертификат, истекающий скоро:
IPACAChainExpirationCheck Загружает цепочку сертификатов из файла /etc/ipa/ca.crt и проверяет срок действия каждого сертификата в цепочке. Это тест, предназначенный для подтверждения валидности всей цепочки доверия (включая случаи, когда сертификаты веб-сервера или LDAP были заменены, а цепочка находится в /etc/ipa/ca.crt). Сертификат, истекающий скоро:
Истекший сертификат:
IPACertTracking Сравнивает информацию отслеживания (tracking) сертификатов, полученную от FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой. Если отслеживание отсутствует:
Если отслеживается неизвестный сертификат:
IPACertNSSTrust Сравнивает настройки доверия для сертификатов, хранящихся в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базе, с известным корректным состоянием.
IPACertMatchCheck Удостоверяется, что записи сертификата CA в LDAP совпадают с данными, полученными из FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базы (или файла).
IPADogtagCertsMatchCheck Проверяет, совпадают ли сертификаты DogTag, присутствующие как в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базе, так и в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
IPANSSChainValidation
Проверяет цепочку сертификатов, полученных из FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базы. Выполняется команда "certutil -V -u V -e -d [dbdir] -n [nickname]".
IPAOpenSSLChainValidation
Проверяет цепочку сертификатов для файлов OpenSSL. Выполняется команда "openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt /path/to/cert.pem".
IPARAAgent Проверяет соответствие описания и значения атрибута userCertificate для RA-агента в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
IPAKRAAgent Проверяет соответствие описания и значения атрибута userCertificate для FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-агента в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
IPACertRevocation Подтверждает, что сертификаты IPA не отозваны, используя отслеживание certmonger для определения списка сертификатов, подлежащих проверке.
IPACertmongerCA Проверяет корректность конфигурации CA в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], анализируя настройки dogtag-ipa-ca-renew-agent и dogtag-ipa-ca-renew-agent-reuse.
IPACertDNSSAN Проверяет, что во всех действующих заявках certmonger на серверные сертификаты профиля caIPAserviceCert для CA присутствует FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑Subject Alt Name, совпадающий с FQDN текущего хоста.
CertmongerStuckCheck Ищет заявки FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], у которых статус stuck = true, и оповещает об «застрявших» запросах.
|
IPADNARangeCheck Это выводит настроенный диапазон FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], если таковой имеется. Предполагается, что эта информация будет использоваться в сочетании с другими данными для дальнейшего анализа.
|
IPADNSSystemRecordsCheck
Проверяет, что все обязательные системные FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑записи (SRV, URI, TXT и A/AAAA
|
IPAFileNSSDBCheck IPAFileCheck TomcatFileCheck Эти проверки проверяют владельца и режим файлов, установленных или настроенных FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. Существует множество вариантов прав доступа к файлам и владельцев, которые могут быть допустимыми и продолжать работать. Здесь приведены ожидаемые значения для чистой установки FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. Отклонения фиксируются на уровне WARNING.
|
IPAHostKeytab Обеспечивает, что keytab для службы host (обычно /etc/krb5.keytab) существует на сервере и позволяет получить TGT через GSSAPI.
DSKeytab Обеспечивает, что keytab для службы ldap (обычно /etc/dirsrv/ds.keytab) существует и позволяет получить билет.
HTTPKeytab Обеспечивает, что keytab для службы HTTP (обычно /var/lib/ipa/gssproxy/http.keytab) существует и позволяет получить TGT для аутентификации веб‑сервера.
DNSKeytab Проверяет, что keytab для службы DNS (обычно /etc/bind/krb5.keytab) существует и может получить FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], но только если на хосте настроен FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервер FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. При отсутствии записи в dns_server_server проверка пропускается.
DNS_keysyncKeytab Проверяет, что keytab для службы ipa-dnskeysyncd (обычно /etc/ipa/dnssec/ipa-dnskeysyncd.keytab) существует и позволяет получить FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], но только если хост настроен как FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервер FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. При отсутствии записи в dns_server_server проверка пропускается.
|
KDCWorkersCheck Проверяет, что в файле /etc/default/krb5-kdc
|
IPAMetaCheck Вызывает внутренний API FreeIPA для получения списка всех зарегистрированных FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑серверов и возвращает их метаданные простым массивом имён мастеров. Если при вызове возникает любое исключение, генерируется ошибка с кодом ERROR.
|
IPAGroupMemberCheck Проверяет, что указанные системные POSIX‑группы содержат ожидаемых пользователей. В FreeIPA это нужно для разделения привилегий: например, чтобы веб‑сервер мог читать кэши учетных данных, создаваемые от имени ipaapi‑пользователя.
|
IPAProxySecretCheck Проверяет, что секреты FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-коннектора Tomcat совпадают со значениями из ProxyPassMatch в конфиге Apache (ipa-pki-proxy.conf), и что между secret и requiredSecret нет противоречий.
|
IPACRLManagerCheck IPARenewalMasterCheck Набор информационных проверок для определения, является ли текущий мастер генератором CRL и/или мастером обновления.
IPARenewalMasterHasKRACheck Определяет, является ли текущий узел сервером обновления сертификатов CA и проверяет, установлена ли на нём служба FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
|
Проверки топологии для проверки соответствия как рекомендациям, так и выявления ошибок. IPATopologyDomainCheck
Предоставляет эквивалент команды: "ipa topologysuffix-verify [suffix]". При сбое возвращает обнаруженные ошибки, такие как ошибки подключения или слишком большое количество репликационных соглашений. При успешном выполнении возвращаются настроенные домены.
|
Проверка общих проблем конфигурации доверительных отношений FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]. IPATrustAgentCheck Проверка конфигурации SSSD, когда машина настроена в качестве агента доверия. Параметр provider должен иметь значение ipa, а ipa_server_mode – быть установлен в true.
IPATrustDomainsCheck
Проверяет, что домен IPA присутствует в выводе команды "sssctl domain-list", а домены доверия совпадают с доменами, указанными в SSSD. Если списки доменов не совпадают:
IPATrustCatalogCheck
Проверка, разрешающая имя пользователя FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], например, Administrator@REALM. Эта операция заполняет значения глобального каталога AD и контроллера домена AD в выводе команды "sssctl domain-status".
IPAsidgenpluginCheck Проверяет, что плагин sidgen включен в экземпляре IPA 389-ds.
IPATrustAgentMemberCheck Проверяет, что текущий хост является членом группы cn=adtrust agents,cn=sysaccounts,cn=etc,SUFFIX.
IPATrustControllerPrincipalCheck Проверяет, что основной cifs-принципал текущего хоста является членом группы cn=adtrust agents,cn=sysaccounts,cn=etc,SUFFIX.
IPATrustControllerServiceCheck Проверяет, что на текущем хосте запущена служба ADTRUST в рамках ipactl.
IPATrustControllerConfCheck
Проверяет, что для backend passdb в выводе команды "net conf list" включён ldapi.
IPATrustControllerGroupSIDCheck Проверяет, что SID группы администраторов заканчивается на 512 (RID для Domain Admins).
IPATrustPackageCheck Если система не является контроллером доверия и доверительные отношения AD включены, проверяется наличие установленного пакета trust‑ad.
IPADomainCheck Проверяет, что провайдер домена IPA в SSSD настроен на использование «ipa»: читает секцию домена для текущего FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑домена в файле /etc/sssd/sssd.conf, убеждается, что в ней присутствуют опции id_provider, auth_provider, chpass_provider и access_provider, и что их значение равно
IPATrustControllerAdminSIDCheck Проверяет, что SID учётной записи admin в доверенном контроллере завершается на 500: выполняет FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑запрос к записи uid=admin, атрибуту ipantsecurityidentifier, и возвращает ERROR, если идентификатор отсутствует или не оканчивается на 500 (с ключом ipantsecurityidentifier и полем rid), иначе — SUCCESS.
|
MetaCheck Предоставляет базовую информацию о самом FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-мастере. Вывод включает FQDN и версию FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
|
Возвращает статус состояния необходимых FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-служб Следующие службы отслеживаются:
Значение поля check соответствует имени FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-сервиса. Обратите внимание, что в именах службы дефисы заменяются на символы подчеркивания. Пример остановленного сервиса:
|
Проверка доступного дискового пространства. FileSystemSpaceCheck Проверяются как процентное, так и абсолютное минимальное значение свободного места. В зависимости от точек монтирования возможно некоторое пересечение проверок. Минимальное свободное пространство составляет 20% и в настоящее время задано жёстко. Проверяются следующие пути: /var/lib/dirsrv/ – 1024 МБ свободного места /var/lib/ipa/backup/ – 512 МБ свободного места /var/log/ – 1024 МБ свободного места /var/log/audit/ – 512 МБ свободного места /var/tmp/ – 512 МБ свободного места /tmp/ – 512 МБ свободного места Например, полностью заполненный /tmp/ будет отображаться следующим образом:
|
С полным списком доступных источников и входящих в них проверок можно также ознакомиться при помощи команды:
sudo ipa-healthcheck --list-sources |
Любой из источников и/или проверок может быть указан в виде аргументов для запуска из командной строки и/или при использовании файла конфигурации. См. Конфигурация и интеграция