Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

FreeIPA Health Check – утилита для диагностики работоспособности сервера FreeIPA.
Её основное назначение – автоматическая проверка корректности настроек, безопасности, доступности репликации и работы сервисов FreeIPA.
Программа предназначена для администраторов, требующих быстрой диагностики и своевременного обнаружения неисправностей.

Цели использования:

  • Обеспечение устойчивости работы серверов FreeIPA.

  • Выявление потенциальных ошибок в настройке.

  • Контроль состояния репликации и конфигурации Kerberos.

  • Своевременное оповещение о сбоях и нарушениях в системе.

Описание стенда

Запуск утилиты производится на настроенном контроллере ЕПП FreeIPA. Порядок установки см. в статье:

...

Также утилита может проверять корректность работы реплик и , доверительных отношений, центра сертификации. Порядок установки см. в статьях:

Установка пакета

Пакет freeipa-healthcheck входит в репозитории Astra Linux. Установить необходимый пакет можно используяГрафический менеджер пакетов synaptic, или из командной строки:

...

Раскрыть
titleПодробное описание параметров конфигурации...

Параметры в разделе [default]

  • cert_expiration_days:
    Задает порог в днях до истечения срока действия сертификата, после которого начинает выдаваться предупреждение (например, если установить значение 7, то предупреждение появится за 7 дней до истечения). Значение по умолчанию: 28.
  • timeout:
    Устанавливает максимальное время (в секундах) для выполнения каждой проверки. Если проверка выполняется дольше указанного времени, она считается прерванной с ошибкой. Значение по умолчанию: 10.
  • output_type:
    Определяет формат вывода результатов. Допустимые значения:
    – json (по умолчанию, машиночитаемый формат),
    – human (удобочитаемый формат для пользователей),
    – prometheus (формат для экспозиции метрик Prometheus).
  • output_file:
    Указывает путь к файлу, в который будет записываться вывод вместо стандартного вывода (stdout).
  • indent:
    При использовании JSON-вывода задаёт уровень отступов для форматирования результата.
  • verbose:
    Активирует подробное логирование для получения дополнительной информации о работе инструмента. Эта опция полезна для диагностики, однако при автоматических запусках она может создавать избыточный вывод.
  • debug:
    Активирует режим отладки, при котором в выводе появляются дополнительные подробности, что полезно для диагностики проблем.
  • severity:
    Позволяет фильтровать вывод по уровню серьезности, чтобы отображались только результаты с заданными уровнями. Допустимые значения:
    – SUCCESS (успешно),
    – WARNING (предупреждение),
    – ERROR (ошибка),
    – CRITICAL (критическая ошибка).
  • source:
    Исполняет проверки только из указанного источника или пространства имен. (например, ipahealthcheck.ipa.certs).
  • check:
    Позволяет запустить конкретную проверку внутри выбранного источника, этот параметр используется совместно с source. (например, IPADNSSystemRecordsCheck).

Параметры в разделе [excludes]

  • source:
    Позволяет подавлять результаты, поступающие из определённого источника (например, ipahealthcheck.ipa.certs).

  • check:
    Позволяет подавлять конкретные имена проверок (например, IPADNSSystemRecordsCheck).

  • key:
    Позволяет подавлять результаты по конкретному ключу (обычно это уникальный идентификатор, например, ID запроса на сертификат).

...

Также все параметры конфигурации поддерживаются в виде аргументов при запуске из командой строки.

Раскрыть
titleПодробное описание аргументов при запуске из командной строки...

Аргументы командной строки

  • --list-sources:
    Выводит список доступных источников (sources) и проверок (checks), что помогает определить, какие группы тестов доступны в вашей установке.
  • --config=FILE:
    Задает файл конфигурации, который будет использоваться при запуске. Если указать пустую строку, то файл конфигурации не загружается. По умолчанию используется /etc/ipahealthcheck/ipahealthcheck.conf.
  • --source=SOURCE:
    Исполняет проверки только из указанного источника или пространства имен. (например, ipahealthcheck.ipa.certs).
  • --check=CHECK:
    Позволяет запустить конкретную проверку внутри выбранного источника, этот параметр используется совместно с --source. (например, IPADNSSystemRecordsCheck).
  • --output-type=TYPE:
    Определяет формат вывода результатов. Допустимые значения:
    – json (по умолчанию, машиночитаемый формат),
    – human (удобочитаемый формат для пользователей),
    – prometheus (формат для экспозиции метрик Prometheus).
  • --failures-only:
    При активном использовании этого параметра в вывод будут включены только проверки, завершившиеся предупреждениями, ошибками или критическими сбоями (WARNING, ERROR, CRITICAL). По умолчанию включена.Если вывод идёт в терминал, флаг включается автоматически; при выводе в файл — выключен
  • --all:
    Выводит все результаты проверок, независимо от их уровня. Этот параметр отменяет действие --failures-only.
  • --severity=SEVERITY:
    Позволяет фильтровать вывод по уровню серьезности, чтобы отображались только результаты с заданными уровнями. Допустимые значения:
    – SUCCESS
    – WARNING
    – ERROR
    – CRITICAL
  • --verbose:
    Активирует подробное логирование для получения дополнительной информации о работе инструмента. Эта опция полезна для диагностики, однако при автоматических запусках она может создавать избыточный вывод.
  • --debug:
    Активирует режим отладки, при котором в выводе появляются дополнительные подробности, что полезно для диагностики проблем.
  • --output-file=FILENAME:
    Указывает путь к файлу, в который будет записываться вывод вместо стандартного вывода (stdout).
  • --input-file=FILENAME:
    Позволяет прочитать результаты предыдущего запуска (обычно в формате JSON) и отобразить их в другом формате или просто повторно показать сохранённые данные.
  • --indent=INDENT:
    При использовании JSON-вывода задаёт уровень отступов для форматирования результата.
  • --metric-prefix=PREFIX:
    При использовании формата вывода prometheus задает префикс, который будет добавляться к именам метрик.

...

Блок кода
titleshell
sudo systemctl enable ipa-healthcheck.timer && 
sudo systemctl start ipa-healthcheck.timer

...

Предупреждение
titleВажно!

Запуск службы ipa‑healthcheck.service через systemd может завершиться статусом failed, если какая-либо тестовая проверка не выполнена. В этом случае утилита возвращает ненулевой код, а для диагностики стоит просмотреть логи журнал службы с помощью команды:

Блок кода
titleshell
sudo journalctl -u ipa-healthcheck.service

...

  • ipahealthcheck.ipa.trust
    Отвечает за диагностику доверительных отношений (trust) с Active Directory, проверяя настройки trust-агентов, списки доверенных доменов, корректность конфигураций principal, членство в группах и наличие необходимых пакетов.
    Раскрыть

    Проверка общих проблем конфигурации доверительных отношений AD.
    Проверки вернут статус SUCCESS, если система не настроена как агент доверия или контроллер.

    IPATrustAgentCheck

    Проверка конфигурации sssd, когда машина настроена в качестве агента доверия.

    Параметр provider должен иметь значение ipa, а ipa_server_mode – быть установлен в true.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustAgentCheck",
      "severity": ERROR,
      "kw": {
        "key": "ipa_server_mode_false",
        "attr": "ipa_server_mode",
        "sssd_config": "/etc/sssd/sssd.conf",
        "domain": "ipa.example.com",
        "msg": "{attr} is not True in {sssd_config} in the domain {domain}"
      }
    }

    IPATrustDomainsCheck

    Проверяет, что домен IPA присутствует в выводе команды sssctl domain-list, а домены доверия совпадают с доменами, указанными в sssd.

    Если списки доменов не совпадают:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustDomainsCheck",
      "result": "ERROR",
      "kw": {
        "key": "domain-list",
        "sslctl": "/usr/sbin/sssctl",
        "sssd_domains": "ad.vm",
        "trust_domains": "",
        "msg": "{sslctl} {key} reports mismatch: sssd domains {sssd_domains} trust domains {trust_domains}"
      }
    }

    IPATrustCatalogCheck

    Проверка, разрешающая имя пользователя AD, например, Administrator@REALM. Эта операция заполняет значения глобального каталога AD и контроллера домена AD в выводе команды sssctl domain-status.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustCatalogCheck",
      "result": "ERROR",
      "kw": {
        "key": "AD Global Catalog",
        "output": "Active servers:\nAD Domain Controller: root-dc.ad.vm\nIPA: ipa.example.com",
        "sssctl": "/usr/sbin/sssctl",
        "domain": "ad.vm",
        "msg": "{key} not found in {sssctl} 'domain-status' output: {output}"
      }
    }

    IPAsidgenpluginCheck

    Проверяет, что плагин sidgen включен в экземпляре IPA 389-ds.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPAsidgenpluginCheck",
      "result": "ERROR",
      "kw": {
        "key": "IPA SIDGEN",
        "error": "no such entry",
        "msg": "Error retrieving 389-ds plugin {key}: {error}"
      }
    }

    IPATrustAgentMemberCheck

    Проверяет, что текущий хост является членом группы cn=adtrust agents,cn=sysaccounts,cn=etc,SUFFIX.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustAgentMemberCheck",
      "result": "ERROR",
      "kw": {
        "key": "ipa.example.com",
        "group": "adtrust agents",
        "msg": "{key} не является членом {group}"
      }
    }

    IPATrustControllerPrincipalCheck

    Проверяет, что основной cifs-принципал текущего хоста является членом группы cn=adtrust agents,cn=sysaccounts,cn=etc,SUFFIX.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerPrincipalCheck",
      "result": "ERROR",
      "kw": {
        "key": "cifs/ipa.example.com@EXAMPLE.COM",
        "group": "adtrust agents",
        "msg": "{key} is not a member of {group}"
      }
    }

    IPATrustControllerServiceCheck

    Проверяет, что на текущем хосте запущена служба ADTRUST в рамках ipactl.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerServiceCheck",
      "result": "ERROR",
      "kw": {
        "key": "ADTRUST",
        "msg": "{key} service is not enabled"
      }
    }

    IPATrustControllerConfCheck

    Проверяет, что для backend passdb в выводе команды net conf list включён ldapi.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerConfCheck",
      "result": "ERROR",
      "kw": {
        "key": "net conf list",
        "got": "",
        "expected": "ipasam:ldapi://%2fvar%2frun%2fslapd-EXAMPLE-COM.socket",
        "option": "passdb backend",
        "msg": "{key} option {option} value {got} doesn't match expected value {expected}"
      }
    }

    IPATrustControllerGroupSIDCheck

    Проверяет, что SID группы администраторов заканчивается на 512 (RID для Domain Admins).

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerGroupSIDCheck",
      "result": "ERROR",
      "kw": {
        "key": "ipantsecurityidentifier",
        "rid": "S-1-5-21-1078564529-1875285547-1976041503-513",
        "msg": "{key} is not a Domain Admins RID"
      }
    }

    IPATrustPackageCheck

    Если система не является контроллером доверия и доверительные отношения AD включены, проверяется наличие установленного пакета trust‑ad.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustPackageCheck",
      "result": "WARNING",
      "kw": {
        "key": "adtrustpackage",
        "msg": "trust-ad sub-package is not installed. Administration will be limited."
      }
    }

    IPADomainCheck

    Проверяет, что провайдер домена IPA в SSSD настроен на использование «ipa»: читает секцию домена для текущего IPA‑домена в файле /etc/sssd/sssd.conf, убеждается, что в ней присутствуют опции id_provider, auth_provider, chpass_provider и access_provider, и что их значение равно "ipa"; в противном случае возвращает ERROR, а при успешной проверке — SUCCESS.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPADomainCheck",
      "result": "SUCCESS",
      "uuid": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
      "when": "20220427190310Z",
      "duration": "0.012345",
      "kw": {
        "key": "domain-check"
      }
    }

    IPATrustControllerAdminSIDCheck

    Проверяет, что SID учётной записи admin в доверенном контроллере завершает­ся на 500: выполняет LDAP‑запрос к записи uid=admin, атрибуту ipantsecurityidentifier, и возвращает ERROR, если идентификатор отсутствует или не оканчивается на 500 (с ключом ipantsecurityidentifier и полем rid), иначе — SUCCESS.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.trust",
      "check": "IPATrustControllerAdminSIDCheck",
      "result": "ERROR",
      "uuid": "d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90",
      "when": "20250422101530Z",
      "duration": "0.018234",
      "kw": {
        "key": "ipantsecurityidentifier",
        "rid": "S-1-5-21-123456789-123456789-123456789-501",
        "msg": "ipantsecurityidentifier is not a Domain Admin RID"
      }
    }
  • ipahealthcheck.meta.corcore
    Собирает основную информацию о FreeIPA-сервере, которая используется для формирования общего отчёта о состоянии системы.
    Раскрыть

    MetaCheck

    Предоставляет базовую информацию о самом IPA-мастере. Вывод включает FQDN и версию IPA.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.meta.core",
      "check": "MetaCheck",
      "result": "SUCCESS",
      "kw": {
        "fqdn": "ipa.example.test",
        "ipa_version": "4.8.0",
        "ipa_api_version": "2.233"
      }
    }

...