Введение
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. |
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 не отслеживает сертификаты. Поэтому сертификаты пользовательские, выданные внешним CA или вручную загруженные необходимо запустить под наблюдение используя следующую команду (на примере сертификата службы KDC): sudo ipa-getcert start-tracking -f /var/lib/ipa/certs/kdc.crt -k /var/lib/ipa/certs/kdc.key -C /usr/lib/ipa/certmonger/renew_kdc_cert
Важно! При ручном добавлении сертификата в отслеживание, certmonger лишь начинает за ним наблюдать, но автоматическое обновление происходит только через CA, сконфигурированный в certmonger. Если в системе нет ни одного CA (внутреннего DogTag или внешнего, зарегистрированного через getcert add-scep-ca или ipa-getcert), то при приближении срока истечения certmonger попытается продлить сертификат, но получит ошибку CA_UNREACHABLE и не обновит его автоматически. |
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
Любой из источников и/или проверок может быть указан в виде аргументов для запуска из командной строки и/или при использовании файла конфигурации. См. Конфигурация и интеграция