FreeIPA Health Check – инструмент ipa-healthcheck, предназначенный для диагностики состояния серверов FreeIPA. Используется администраторами доменов.
Запуск инструмента производится на настроенном контроллере ЕПП FreeIPA. Порядок установки и настройки контроллера см. в статье Контроллер ЕПП FreeIPA в Astra Linux.
Инструмент может проверять корректность работы:
В таблице перечислены все специальные термины и аббревиатуры, применяемые в статье, с их пояснениями.
|
| Термин | Пояснение | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Источник (source) | Модуль или пространство имён для сбора данных (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. | ||||||||
| Проверка (check) | Конкретная проверка в рамках источника (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. | ||||||||
CLI | Аббревиатура от Command Line Interface. | ||||||||
| Аббревиатура от Certificate System. | ||||||||
| Аббревиатура от Certificate Authority. | ||||||||
| Аббревиатура от Certificate Revocation List. | ||||||||
| Аббревиатура от Key Recovery Authority. | ||||||||
| Аббревиатуры от Directory Server <сокращенное название проверки> Lint Error. | ||||||||
| Главный файл конфигурации подсистемы DogTag CS. В DogTag подсистемы запускаются независимо, каждая со своим CS.cfg:
| ||||||||
| Аббревиатура от Domain Name System. | ||||||||
| Аббревиатура от Lightweight Directory Access Protocol. | ||||||||
| Аббревиатура от Network Security Services. | ||||||||
| Аббревиатура от Directory Server | ||||||||
| Аббревиатура от Replica Update Vector. | ||||||||
| Аббревиатура от Transport Layer Security (TLS) и Secure Sockets Layer (SSL). | ||||||||
| Служба для автоматического управления жизненным циклом сертификатов: генерирует запросы, отслеживает их, обновляет истекающие сертификаты и взаимодействует с центром сертификации для их продления. | ||||||||
|
Сертификат, для которого служба certmonger ведёт слежение по его параметрам и состоянию. В выводе команды getcert list такие сертификаты имеют статус MONITORING, что указывает на активное наблюдение за их сроком действия. При использовании DogTag (см. FreeIPA: Подключение центра сертификации DogTag в Astra Linux Common Edition) служба certmonger по умолчанию отслеживает все сертификаты, выданные центром сертификации DogTag. Запускает их продление за 28 дней до окончания срока действия. Если DogTag не используется, по умолчанию служба certmoner не отслеживает сертификаты. Поэтому сертификаты пользовательские, выданные внешним CA или вручную загруженные необходимо запустить под наблюдение используя следующую команду (на примере сертификата службы KDC):
При приближении срока истечения отслеживаемого сертификата инструмент ipa-healthcheck будет выводить в своём отчёте предупреждения следующего вида:
В свою очередь certmonger записывает в журнал службы предупреждение следующего вида:
| ||||||||
| Аббревиатура от Fully Qualified Domain Name. | ||||||||
| Аббревиатура от Key Distribution Center. | ||||||||
| Аббревиатура от Ticket Granting Ticket. | ||||||||
| Аббревиатура от Distributed Numeric Assignment. | ||||||||
| Файл “key table” Kerberos, хранящий длинно-срочные ключи одного или нескольких принципалов. Используется сервисами для автоматической аутентификации без ввода пароля. | ||||||||
| Аббревиатура от Apache JServ Protocol. | ||||||||
| Схема взаимосвязей и соглашений репликации между IPA-серверами. | ||||||||
| Аббревиатура от Active Directory. | ||||||||
| RID (Аббревиатура от Relative Identifier) SID (Аббревиатура от Security Identifier) | ||||||||
| Аббревиатура от Identity, Policy, Audit. |
Инструмент 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 Сравнивает информацию отслеживания сертификатов, полученную от 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 |
Любой из источников и/или проверок может быть указан в виде аргументов для запуска из командной строки и/или при использовании файла конфигурации. См. Конфигурация и интеграция