Введение
FreeIPA Health Check – инструмент ipa-healthcheck, предназначенный для диагностики состояния серверов FreeIPA. Используется администраторами доменов.
Запуск инструмента производится на настроенном контроллере ЕПП FreeIPA. Порядок установки и настройки контроллера см. в статье Контроллер ЕПП FreeIPA в Astra Linux.
Инструмент может проверять корректность работы:
- доверительных отношений (см. Настройка доверительных отношений FreeIPA - Active Directory),
- репликации (см. FreeIPA: настройка репликации),
- центра сертификации DogTag (см. FreeIPA: Подключение центра сертификации DogTag в Astra Linux Common Edition).
Термины
| Термин | Пояснение |
|---|---|
| Источник (source) | Модуль или пространство имён для сбора данных (например, ipahealthcheck.ipa.certs). Полный список источников см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. |
| Проверка (check) | Конкретная проверка в рамках источника (например, IPADNSSystemRecordsCheck). Полный список проверок см. Обзор источников и проверок для диагностики и мониторинга FreeIPA. |
CLI | Аббревиатура от Command Line Interface. |
DogTag | Сокращенное название проекта Dogtag Certificate System. |
CS | Аббревиатура от Certificate System. |
CA | Аббревиатура от Certificate Authority. |
CRL | Аббревиатура от Certificate Revocation List. |
KRA | Аббревиатура от Key Recovery Authority. |
DSBLE, DSCLE, DSDSLE и т.д. | Аббревиатуры от Directory Server <сокращенное название проверки> Lint Error. |
CS.cfg | Главный файл конфигурации подсистемы DogTag CS. В DogTag подсистемы запускаются независимо, каждая со своим CS.cfg:
|
DNS | Аббревиатура от Domain Name System. |
LDAP | Аббревиатура от Lightweight Directory Access Protocol. |
NSS | Аббревиатура от Network Security Services. |
DS | Аббревиатура от Directory Server |
RUV | Аббревиатура от Replica Update Vector. |
TLS/SSL | Аббревиатура от Transport Layer Security (TLS) и Secure Sockets Layer (SSL). |
certmonger | Служба для автоматического управления жизненным циклом сертификатов: генерирует запросы, отслеживает их, обновляет истекающие сертификаты и взаимодействует с центром сертификации для их продления. |
Отслеживаемый сертификат | Справка Команда getcert list опрашивает службу certmonger и выводит список сертификатов, которые он отслеживает (MONITORING) или по которым он пытается получить подписанный ответ от CA. Сертификат, для которого служба certmonger ведёт слежение по его параметрам и состоянию. В выводе команды getcert list такие сертификаты имеют статус MONITORING, что указывает на активное наблюдение за их сроком действия. При использовании DogTag (см. FreeIPA: Подключение центра сертификации DogTag в Astra Linux Common Edition) служба certmonger по умолчанию отслеживает все сертификаты, выданные центром сертификации DogTag и выполняет их продление за 28 дней до окончания срока действия. Если DogTag не используется, то по умолчанию служба certmoner не отслеживает и не продлевает сертификаты. Для ручного добавления сертификата в отслеживаемые см. Порядок включения сертификатов в отслеживаемые. |
FQDN | Аббревиатура от Fully Qualified Domain Name. |
KDC | Аббревиатура от Key Distribution Center. |
TGT | Аббревиатура от Ticket Granting Ticket. |
DNA | Аббревиатура от Distributed Numeric Assignment. |
keytab | Файл “key table” Kerberos, хранящий длинно-срочные ключи одного или нескольких принципалов. Используется сервисами для автоматической аутентификации без ввода пароля. |
AJP | Аббревиатура от Apache JServ Protocol. |
Топология репликации | Схема взаимосвязей и соглашений репликации между IPA-серверами. |
AD | Аббревиатура от Active Directory. |
RID/SID | RID (Аббревиатура от Relative Identifier) SID (Аббревиатура от Security Identifier) |
IPA | Аббревиатура от Identity, Policy, Audit. |
Установка пакета
Инструмент ipa-healthcheck предоставляется пакетом freeipa-healthcheck. Пакет входит в расширенный репозиторий. Установить пакет можно используя Графический менеджер пакетов synaptic, или из командной строки:
sudo apt install freeipa-healthcheck
После установки будут созданы:
- конфигурационный файл /etc/ipahealthcheck/ipahealthcheck.conf,
- служба-юнит ipa-healthcheck.service в systemd,
- служба-таймер ipa-healthcheck.timer в systemd,
- файл для автономного запуска службы ipa-healthcheck.service /usr/libexec/ipa/ipa-healthcheck.sh.
Конфигурация и интеграция
Файл конфигурации разделён как минимум на две секции:
- Секция [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
- Запуск проверки топологии с выводом в формате Prometheus и заданным префиксом для метрик:
sudo ipa-healthcheck --source=ipahealthcheck.ipa.topology --check=IPATopologyDomainCheck --output-type=prometheus --metric-prefix=ipa_health
Важно!
При запуске инструмент сначала загружает параметры из файла конфигурации, затем применяются параметры командной строки. Действуют следующие правила:
Любой параметр, указанный в конфигурационном файле, считается уже установленным и не может быть переопределён параметром командной строки.
Только те параметры, которых нет в конфигурационном файле, будут считаться и применены из командной строки.
Исключение: если загружен другой конфигурационный файл (например, --config=myconf.conf) или отключена загрузка конфигурационного файла совсем (--config=""), тогда логика «первым пришёл» пересчитывается относительно нового (или отсутствующего) файла, и параметры командной строки смогут вступить в силу.
Интеграция ipa‑healthcheck с systemd
При установке пакета создаются два системных юнита:
- ipa-healthcheck.service - основной юнит-служба, который запускает инструмент ipa‑healthcheck, выполняет проверки состояния установки FreeIPA и формирует отчёт об обнаруженных проблемах.
- ipa-healthcheck.timer - юнит-таймер, инициирующий запуск юнита-службы (ipa‑healthcheck.service) через заданные интервалы времени. Позволяет автоматизировать регулярное выполнение проверок для постоянного мониторинга системы.
По умолчанию ipa-healthcheck.timer при установке пакета уже активируется и начинает свою работу. Если же по какой-то причине таймер не был включён, нужно выполнить два действия:
- Зарегистрировать таймер для автоматического старта при загрузке системы. Следующая команда создаёт в systemd символьную ссылку на файл 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. Рекомендуется сделать резервную копию:
sudo mv /usr/libexec/ipa/ipa-healthcheck.sh /usr/libexec/ipa/ipa-healthcheck.sh.bak
После обновления или переустановки пакета freeipa-healthcheck заменить автоматически созданный /usr/libexec/ipa/ipa-healthcheck.sh:
sudo mv /usr/libexec/ipa/ipa-healthcheck.sh.bak /usr/libexec/ipa/ipa-healthcheck.sh
Важно!
Запуск службы ipa‑healthcheck.service может завершиться ошибкой (failed) если какая-либо тестовая проверка не выполнена. В этом случае для диагностики следует просмотреть журнал службы с помощью команды:
sudo journalctl -u ipa-healthcheck.service
Обзор источников и проверок для диагностики и мониторинга FreeIPA
Инструмент поддерживает следующие источники и входящие в них проверки:
- ipahealthcheck.dogtag.ca
Отвечает за диагностику служб центра сертификации DogTag (если DogTag используется). Диагностируются службы CA и FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
- ipahealthcheck.ds.backends
Контролирует работоспособность backend‑модулей, которые отвечают за хранение данных (например, в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑хранилище)
- ipahealthcheck.ds.config
Проводит анализ конфигурационных настроек FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервера и сопутствующих компонентов, чтобы удостовериться, что все параметры установлены корректно.
- ipahealthcheck.ds.disk_space
Проверяет состояние свободного места на дисках, особенно на критичных разделах, таких как каталоги логов или резервных копий, чтобы предупредить о риске переполнения.
- ipahealthcheck.ds.dse
Проверяет рассинхронизацию времени между репликами FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
- ipahealthcheck.ds.encryption
Анализирует настройки защитных преобразований.
- ipahealthcheck.ds.fs_checks
Выполняет проверку прав доступа к ключевым файлам FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
- ipahealthcheck.ds.nss_ssl
Проверяет сертификаты FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑базы экземпляра DS.
- ipahealthcheck.ds.ds_plugins
Отвечает за проверку дополнительных плагинов FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑сервера.
- ipahealthcheck.ds.replication
Контролирует репликацию данных между серверами, проверяя синхронизацию данных и анализируя журналы изменений.
- ipahealthcheck.ds.ruv
Следит за корректностью записей FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], необходимых для правильной работы репликации.
- ipahealthcheck.ipa.certs
Содержит набор проверок, связанных с сертификатами FreeIPA: контролирует срок действия сертификатов, проверяет целостность и корректность цепочки доверия, сверяет сертификаты в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]-базах и PEM-файлах, а также их соответствие записям в FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК].
- ipahealthcheck.ipa.dna
Отвечает за проверку диапазона FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], который используется для распределения идентификаторов в системе, чтобы избежать конфликтов.
- ipahealthcheck.ipa.idns
Производит диагностику системных FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑записей, необходимых для корректной работы инфраструктуры FreeIPA.
- ipahealthcheck.ipa.files
Проверяет разрешения, владельцев и целостность основных файлов, используемых FreeIPA, таких как конфигурационные файлы и файлы FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑базы.
- ipahealthcheck.ipa.host
Выполняет проверку, связанную с аутентификацией текущего хоста, включая проверку корректности файла keytab для различных служб.
- ipahealthcheck.ipa.kdc
Следит за состоянием рабочих процессов FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], необходимых для работы аутентификации.
- ipahealthcheck.ipa.meta
Собирает общую информацию о сервере FreeIPA.
- ipahealthcheck.ipa.nss
Проверяет корректность работы FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК]‑подсистемы.
- ipahealthcheck.ipa.proxy
Контролирует настройки IPA Proxy, включая проверку корректности секретного ключа.
- ipahealthcheck.ipa.roles
Выполняет проверки, связанные с ролями сервера в инфраструктуре FreeIPA — определяет, является ли сервер мастером обновления сертификатов, CRL-менеджером, и проверяет связанные с этим параметры.
- ipahealthcheck.ipa.topology
Проводит проверки топологии репликации и сетевой конфигурации.
- ipahealthcheck.ipa.trust
Отвечает за диагностику доверительных отношений с FreeIPA Health Check. Обзор функциональных возможностей. [ЧЕРНОВИК], проверяя настройки доверительных-агентов, списки доверенных доменов, корректность конфигураций принципалов, членство в группах и наличие необходимых пакетов.
- ipahealthcheck.meta.core
Собирает основную информацию о FreeIPA-сервере, которая используется для формирования общего отчёта о состоянии системы.
- ipahealthcheck.meta.services
Контролирует состояние основных служб FreeIPA (таких как certmonger, dirsrv, httpd, sssd и др.) и сигнализирует о сбоях или остановке их работы.
- ipahealthcheck.system.filesystemspace
Анализирует свободное место на дисковых разделах, ключевых для работы системы FreeIPA, предупреждая о риске нехватки пространства.
С полным списком доступных источников и входящих в них проверок можно также ознакомиться при помощи команды:
sudo ipa-healthcheck --list-sources
Любой из источников и/или проверок может быть указан в виде аргументов для запуска из командной строки и/или при использовании файла конфигурации. См. Конфигурация и интеграция
Порядок включения сертификатов в отслеживаемые
Сертификаты пользовательские, выданные внешним CA или вручную загруженные необходимо сделать отслеживаемыми используя следующую команду (на примере сертификата службы KDC):
- -f /path/to.crt указывает путь к файлу сертификата в формате PEM, который уже установлен на диске.
- -k /path/to.key указывает путь к файлу приватного ключа в PEM-формате.
- -C /path/to/hlp указывает путь к скрипту для продления сертификата.
Важно!
При ручном добавлении сертификата в отслеживание, служба certmonger лишь начинает за ним наблюдать, но автоматическое обновление происходит только через CA, сконфигурированный в certmonger. Если в системе нет ни одного CA (внутреннего DogTag или внешнего, зарегистрированного через getcert add-scep-ca или ipa-getcert), то при приближении срока истечения служба certmonger попытается продлить сертификат, но получит ошибку CA_UNREACHABLE и не обновит его автоматически.
При приближении срока истечения отслеживаемого сертификата инструмент ipa-healthcheck будет выводить в своём отчёте предупреждения следующего вида:
{
"source": "ipahealthcheck.ipa.certs",
"check": "IPACertfileExpirationCheck",
"result": "WARNING",
"uuid": "4e4aaa12-f193-4af2-b9b1-dccd2eac18a2",
"when": "20350402213105Z",
"duration": "0.009759",
"kw": {
"key": "20250425091326",
"expiration_date": "20350423085816Z",
"days": 20,
"msg": "Request id {key} expires in {days} days. certmonger should renew this automatically. Watch the status withgetcert list -i {key}."
}
}
Важно!
Обратите внимание, что в инструменте ipa-healthcheck порог, при достижении которого генерируется предупреждение об истечении отслеживаемого сертификата, задаётся параметром cert_expiration_days. Для дополнительной информации см. Конфигурация и интеграция.
Справка
Журнал службы certmonger для дальнейшей диагностики можно просмотреть с помощью команды:
В свою очередь certmonger записывает в журнал службы предупреждение следующего вида:
апр 29 16:00:50 ipasrv.ipadomain.loc certmonger[2754]: Certificate in file "/var/lib/ipa/certs/kdc.crt" will not be valid after 2035-04-23 11:58:16 MSK.