FreeIPA Health Check – инструмент для диагностики серверов FreeIPA.
Инструмент предназначен для администраторов доменов.
Запуск инструмента производится на настроенном контроллере ЕПП FreeIPA. Порядок установки см. в статье:
Также утилита может проверять корректность работы реплик, доверительных отношений, центра сертификации. Порядок установки см. в статьях:
Пакет freeipa-healthcheck входит в расширенный репозиторий Astra Linux. Установить пакет можно используя Графический менеджер пакетов synaptic, или из командной строки:
sudo apt install freeipa-healthcheck |
После установки будут созданы конфигурационный файл /etc/ipahealthcheck/ipahealthcheck.conf и службы ipa-healthcheck.service и ipa-healthcheck.timer в systemd.
freiipa |
Файл конфигурации разделён как минимум на два раздела:
Параметры в разделе [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 |
Также все параметры конфигурации поддерживаются в виде аргументов при запуске из командой строки.
Аргументы при запуске из командной строки
|
Пример готовых команд может выглядеть так:
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. См. Конфигурация и интеграция
|
При запуске инструмент сначала загружает опции из файла конфигурации, затем применяются опции командной строки. Действуют следующие правила:
|
После установки пакета в systemd появятся два системных юнита:
Порядок настройки таймеров в Astra Linux см. в статье:
Запуск таймера в системе производится так:
sudo systemctl enable ipa-healthcheck.timer sudo systemctl start ipa-healthcheck.timer |
Эта команда включает автоматический запуск таймера при старте системы и инициирует его немедленный старт.
В файле /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 |
Кроме передачи опций через командную строку, параметры работы ipa‑healthcheck можно задать и в конфигурационном файле. См. Конфигурация и интеграция
Запуск службы ipa‑healthcheck.service через systemd может завершиться статусом failed, если какая-либо тестовая проверка не выполнена. В этом случае утилита возвращает ненулевой код, а для диагностики стоит просмотреть журнал службы с помощью команды:
|
Программа поддерживает следующие источники и проверки:
DogtagCertsConfigCheck Сравнивает значение сертификатов центра сертификации (а также KRA, если установлен) с значением, найденным в файле CS.cfg. Если значения не совпадают, то, вероятно, CS не сможет запуститься.
DogtagCertsConnectivityCheck Выполняет эквивалент команды
|
BackendsCheck Выполняет автоматическую lint‑проверку настройки backend‑инстанций Directory Server и генерирующий DSBLE‑коды при обнаружении нарушений конфигурации или работы БД.
|
ConfigCheck Выполняет автоматическую lint‑проверку конфигурации Directory Server. Ищет устаревшие, отсутствующие или некорректные параметры (например, небезопасные схемы хранения пароля, неподходящие диапазоны значений, дублирование опций), преобразуя результаты в стандартизированные DSBLE/DSCLE‑коды
|
DiskSpaceCheck Проверяет свободное место на ключевых томах Directory Server и выдаёт ERROR или CRITICAL, если свободный объём опускается ниже абсолютного порога (1 024 МБ) или процент свободного пространства оказывается ниже 20%
|
DSECheck Контролирует рассинхронизацию времени между репликами Directory Server, считывая атрибут
|
EncryptionCheck Проверяет, что в разделе
|
FSCheck Проверяет права доступа к ключевым файлам Directory Server:
|
NssCheck Проверяет NSS‑базу экземпляра Directory Server: ищет сертификаты, срок действия которых истекает менее чем через 30 дней (код DSCERTLE0001, результат ERROR) или которые уже просрочены (код DSCERTLE0002, результат CRITICAL)
|
RIPluginCheck Проверяет, что у плагина Referential Integrity параметр
|
ReplicationCheck Проверяет все объекты
ReplicationChangelogCheck Проверяет, что у журнала репликации
|
RUVCheck Извлекает текущий (локальный) RUV для основного LDAP‑суффикса и для суффикса Dogtag CA и возвращает их как единичные значения.
KnownRUVCheck Сканирует записи из tombstone, содержащие атрибут
|
IPACertmongerExpirationCheck Перебирает все ожидаемые запросы certmonger и проверяет срок действия сертификата, основываясь на информации, которой располагает certmonger. Если сертификат истекает в пределах cert_expiration_days (по умолчанию 28 дней), выдается предупреждение. Истекший сертификат:
Сертификат, истекающий скоро:
IPACertfileExpirationCheck Похожа на IPACertmongerExpirationCheck, но сертификат извлекается из PEM-файла или базы NSS и повторно проверяется. Это используется в случае, если сведения certmonger устарели по сравнению с сертификатом, находящимся на диске. Если файл сертификата не может быть открыт:
Если NSS-база не может быть открыта:
Если отслеживаемый никнейм не найден в NSS-базе:
Истекший сертификат:
Сертификат, истекающий скоро:
IPACAChainExpirationCheck Загружает цепочку сертификатов из файла /etc/ipa/ca.crt и проверяет срок действия каждого сертификата в цепочке. Это тест, предназначенный для подтверждения валидности всей цепочки доверия (включая случаи, когда сертификаты веб-сервера или LDAP были заменены, а цепочка находится в /etc/ipa/ca.crt). Сертификат, истекающий скоро:
Истекший сертификат:
IPACertTracking Сравнивает информацию отслеживания (tracking) сертификатов, полученную от certmonger, с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой. Если отслеживание отсутствует:
Если отслеживается неизвестный сертификат:
IPACertNSSTrust Сравнивает настройки доверия для сертификатов, хранящихся в NSS-базе, с известным корректным состоянием.
IPACertMatchCheck Удостоверяется, что записи сертификата CA в LDAP совпадают с данными, полученными из NSS-базы (или файла).
IPADogtagCertsMatchCheck Проверяет, совпадают ли сертификаты Dogtag, присутствующие как в NSS-базе, так и в LDAP.
IPANSSChainValidation Проверяет цепочку сертификатов, полученных из NSS-базы. Выполняется команда 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-агента в LDAP.
IPAKRAAgent Проверяет соответствие описания и значения атрибута userCertificate для KRA-агента в LDAP.
IPACertRevocation Подтверждает, что сертификаты IPA не отозваны, используя отслеживание certmonger для определения списка сертификатов, подлежащих проверке.
IPACertmongerCA Проверяет корректность конфигурации CA в certmonger, анализируя настройки dogtag-ipa-ca-renew-agent и dogtag-ipa-ca-renew-agent-reuse.
IPACertDNSSAN Проверяет, что во всех действующих заявках certmonger на серверные сертификаты профиля
CertmongerStuckCheck Ищет заявки certmonger, у которых статус stuck = true, и оповещает об «застрявших» запросах.
|
IPADNARangeCheck Это выводит настроенный диапазон DNA, если таковой имеется. Предполагается, что эта информация будет использоваться в сочетании с другими данными для дальнейшего анализа.
|
IPADNSSystemRecordsCheck Проверяет, что все обязательные системные DNS‑записи (SRV, URI, TXT и A/AAAA
|
IPAFileNSSDBCheck IPAFileCheck TomcatFileCheck Эти проверки проверяют владельца и режим файлов, установленных или настроенных IPA. Существует множество вариантов прав доступа к файлам и владельцев, которые могут быть допустимыми и продолжать работать. Здесь приведены ожидаемые значения для чистой установки IPA. Отклонения фиксируются на уровне WARNING.
|
IPAHostKeytab Обеспечивает, что keytab для службы host (обычно
DSKeytab Обеспечивает, что keytab для службы ldap (обычно
HTTPKeytab Обеспечивает, что keytab для службы HTTP (обычно
DNSKeytab Проверяет, что keytab для службы DNS (обычно
DNS_keysyncKeytab Проверяет, что keytab для службы ipa-dnskeysyncd (обычно
|
KDCWorkersCheck Проверяет, что в файле
|
IPAMetaCheck Вызывает внутренний API FreeIPA для получения списка всех зарегистрированных IPA‑серверов и возвращает их метаданные простым массивом имён мастеров. Если при вызове возникает любое исключение, генерируется ошибка с кодом
|
IPAGroupMemberCheck Проверяет, что указанные системные POSIX‑группы содержат ожидаемых пользователей. В FreeIPA это нужно для разделения привилегий: например, чтобы веб‑сервер мог читать кэши учетных данных, создаваемые от имени ipaapi‑пользователя.
|
IPAProxySecretCheck Проверяет, что секреты AJP (Apache JServ Protocol) коннектора Tomcat совпадают со значениями из
|
IPACRLManagerCheck IPARenewalMasterCheck Набор информационных проверок для определения, является ли текущий мастер генератором CRL и/или мастером обновления.
IPARenewalMasterHasKRACheck Определяет, является ли текущий узел сервером обновления сертификатов CA (CA renewal master) и проверяет, установлена ли на нём служба KRA (Key Recovery Authority).
|
Проверки топологии для проверки соответствия как рекомендациям, так и выявления ошибок. IPATopologyDomainCheck Предоставляет эквивалент команды: ipa topologysuffix-verify При сбое возвращает обнаруженные ошибки, такие как ошибки подключения или слишком большое количество репликационных соглашений. При успешном выполнении возвращаются настроенные домены.
|
Проверка общих проблем конфигурации доверительных отношений AD. IPATrustAgentCheck Проверка конфигурации sssd, когда машина настроена в качестве агента доверия. Параметр provider должен иметь значение ipa, а ipa_server_mode – быть установлен в true.
IPATrustDomainsCheck Проверяет, что домен IPA присутствует в выводе команды sssctl domain-list, а домены доверия совпадают с доменами, указанными в sssd. Если списки доменов не совпадают:
IPATrustCatalogCheck Проверка, разрешающая имя пользователя AD, например, 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»: читает секцию домена для текущего IPA‑домена в файле
IPATrustControllerAdminSIDCheck Проверяет, что SID учётной записи
|
MetaCheck Предоставляет базовую информацию о самом IPA-мастере. Вывод включает FQDN и версию IPA.
|
Возвращает статус состояния необходимых IPA-служб Следующие службы отслеживаются:
Значение поля check соответствует имени IPA-сервиса. Обратите внимание, что в именах службы дефисы заменяются на символы подчеркивания. Пример остановленного сервиса:
|
Проверка доступного дискового пространства. 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 |
Любой из источников и/или проверок может быть указан в виде аргументов для запуска из командной строки и/или при использовании файла конфигурации. См. Конфигурация и интеграция