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

Ключ

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

...

  • ipahealthcheck.ds.backends
    Контролирует работоспособность backend‑модулей, которые отвечают за хранение данных (например, в LDAP‑хранилище)
    Раскрыть

    BackendsCheck

    Выполняет автоматическую lint‑проверку настройки backend‑инстанций Directory Server и генерирующий DSBLE‑коды при обнаружении нарушений конфигурации или работы БД.


    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ds.backends",
      "check": "BackendsCheck",
      "result": "WARNING",
      "uuid": "875db8e3-029c-46f7-87e5-bf9a216d9637",
      "when": "20240426184431Z",
      "duration": "0.031642",
      "kw": {
        "key": "DSBLE0005",
        "items": [
          "nsslapd-dbcachesize",
          "nsslapd-db-logdirectory",
          "nsslapd-db-transaction-wait",
          "nsslapd-db-checkpoint-interval",
          "nsslapd-db-compactdb-interval",
          "nsslapd-db-compactdb-time",
          "nsslapd-db-transaction-batch-val",
          "nsslapd-db-transaction-batch-min-wait",
          "nsslapd-db-transaction-batch-max-wait",
          "nsslapd-db-logbuf-size",
          "nsslapd-db-page-size",
          "nsslapd-db-locks",
          "nsslapd-db-locks-monitoring-enabled",
          "nsslapd-db-locks-monitoring-threshold",
          "nsslapd-db-locks-monitoring-pause",
          "nsslapd-db-private-import-mem",
          "nsslapd-db-deadlock-policy"
        ],
        "msg": "Found configuration attributes that are not applicable for the configured backend type."
    }
  • ipahealthcheck.ds.config
    Проводит анализ конфигурационных настроек LDAP‑сервера и сопутствующих компонентов, чтобы удостовериться, что все параметры установлены корректно.
    Раскрыть

    ConfigCheck

    Выполняет автоматическую lint‑проверку конфигурации Directory Server. Ищет устаревшие, отсутствующие или некорректные параметры (например, небезопасные схемы хранения пароля, неподходящие диапазоны значений, дублирование опций), преобразуя результаты в стандартизированные DSBLE/DSCLE‑коды

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ds.config",
      "check": "ConfigCheck",
      "result": "CRITICAL",
      "uuid": "52ce6b03-5f42-4565-9e04-59f15136ff95",
      "when": "20250421043110Z",
      "duration": "0.027578",
      "kw": {
        "key": "DSCLE0002",
        "items": [
          "cn=config"
        ],
        "msg": "Password storage schemes in Directory Server define how passwords are hashed via a\none-way mathematical function for storage. Knowing the hash it is difficult to gain\nthe input, but knowing the input you can easily compare the hash.\n\nMany hashes are well known for cryptograhpic verification properties, but are\ndesigned to be *fast* to validate. This is the opposite of what we desire for password\nstorage. In the unlikely event of a disclosure, you want hashes to be *difficult* to\nverify, as this adds a cost of work to an attacker.\n\nIn Directory Server, we offer one hash suitable for this (PBKDF2-SHA512) and one hash\nfor \"legacy\" support (SSHA512).\n\nYour configuration does not use these for password storage or the root password storage\nscheme.\n"
      }
    }

...

  • ipahealthcheck.ds.replication
    Контролирует репликацию данных между серверами, проверяя синхронизацию данных и анализируя журналы изменений (changelogs) для обнаружения ошибок.
    Раскрыть

    ReplicationCheck

    Проверяет все объекты nsDS5ReplicationAgreement во всех репликационных репозиториях Directory Server: убеждается, что состояние соглашения (nsds5replicaEnabled=on, nsds5replicaLastUpdateStatus=0) и канал связи к удалённому хосту исправны, что счётчик отставания (RUV) синхронизирован и нет поломанных либо отключённых соглашений. Также проверяет репликацию на конфликты.

    ReplicationConflictCheck

    Ищет записи в LDAP, соответствующие фильтру (&(!(objectclass=nstombstone))(nsds5ReplConflict=*))

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ds.replication",
      "check": "ReplicationConflictCheckReplicationCheck",
      "result": "ERRORCRITICAL",
      "kwuuid": {
     "4e0472b9-bc3a-495e-a15a-55c5788e665d",
       "keywhen": "nsuniqueid=66446001-1dd211b2+uid=bjenkins,cn=users,cn=accounts,dc=example,dc=test20250422165825Z",
        "conflictduration": "namingConflict0.204692",
        "msg"kw": "Replication conflict"
      }
    }
    ipahealthcheck.ds.ruv
    Следит за корректностью записей RUV (Replica Update Vector), необходимых для правильной работы репликации.
    Раскрыть

    RUVCheck

    Извлекает текущий (локальный) RUV для основного LDAP‑суффикса и для суффикса Dogtag CA и возвращает их как единичные значения.

    Блок кода
    titlejson
    { 
      "source": "ipahealthcheck.ds.ruv{
        "key": "DSREPLLE0001",
        "checkitems": "RUVCheck[
          "Replication",
          "result": "SUCCESS"Agreement"
        ],
        "uuidmsg": "9875d929-c813-4a91-b757-57798fc5aaff",
      "when": "20250421034249Z",
      "duration": "0.002770The replication agreement (metoipacln.testdomain.test) under \"dc=testdomain,dc=test\" is not in synchronization."
      }
    }

    ReplicationChangelogCheck

    Проверяет, что у журнала репликации cn=changelog5,cn=config включен trimming (задан хотя бы один из параметров nsslapd‑changelogmaxagensslapd‑changelogmaxentries или nsslapd‑changelogtrim‑interval); при отсутствии trimming выдаёт отчёт DSCLLE0001.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ds.replication",
      "kwcheck": {
       "ReplicationChangelogCheck",
      "keyresult": "dc=testdomain,dc=testWARNING",
        "ruv": "4"
      }
    }

    KnownRUVCheck

    Сканирует записи из tombstone, содержащие атрибут nsds50ruv, извлекает из них все известные RUV для каждого суффикса и возвращает список кортежей (host, replicaID), что помогает выявить устаревшие записи репликации.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ds.ruv",
      "check": "KnownRUVCheck",
      "result": "SUCCESS",             
      "uuid":   "95da5759c7f7a268-5e7d2c1b-42604d7b-9d799e5a-01fa9d591b256133ff4b0c1e",
      "when":   "20250421034249Z20250422T103259Z",        
      "duration": "0.002467000214",
      "kw": {
        "key": "ruvs_dc=testdomain,dc=test",  "DSCLLE0001",
        "suffixitems": [
    	  "dc=testdomain,dc=test"cn=changelog5,
        "ruvs": [
          [cn=config"
            "ipasrv.testdomain.test"],
            "4msg"
    : "The replication changelog does not ],
    have any kind of trimming configured. ["
            "ipacln.testdomain.test",
       "This will cause the changelog "3"
    to grow indefinitely, potentially exhausting disk ]
        ]space. "
      }
    }
  • ipahealthcheck.ipads.certs
    Содержит набор проверок, связанных с сертификатами FreeIPA: от контроля срока действия, проверки цепочки доверия до сравнения сертификатов, а также отслеживания их состояния с помощью certmongerruv
    Следит за корректностью записей RUV (Replica Update Vector), необходимых для правильной работы репликации.
    Раскрыть

    RUVCheck

    Извлекает текущий (локальный) RUV для основного LDAP‑суффикса и для суффикса Dogtag CA и возвращает их как единичные значения.

    IPACertmongerExpirationCheck

    Перебирает все ожидаемые запросы certmonger и проверяет срок действия сертификата, основываясь на информации, которой располагает certmonger. Если сертификат истекает в пределах cert_expiration_days (по умолчанию 28 дней), выдается предупреждение.

    Истекший сертификат:

    Блок кода
    titlejson
    { 
      "source": "ipahealthcheck.ipads.certsruv",
      "check": "IPACertmongerExpirationCheckRUVCheck",
      "result": "ERRORSUCCESS",
      "kwuuid": {"9875d929-c813-4a91-b757-57798fc5aaff",
        "keywhen": 1234"20250421034249Z",
        "expiration_dateduration": "20160101001704Z0.002770",
      "kw": {
        "msgkey": "Request id 1234 expired on 20160101001704Z"dc=testdomain,dc=test",
        "ruv": "4"
      }
    }

    KnownRUVCheck

    Сканирует записи из tombstone, содержащие атрибут nsds50ruv, извлекает из них все известные RUV для каждого суффикса и возвращает список кортежей (host, replicaID), что помогает выявить устаревшие записи репликации.Сертификат, истекающий скоро:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipads.certsruv",
      "check": "IPACertmongerExpirationCheckKnownRUVCheck",
      "result": "WARNINGSUCCESS",
      "kwuuid": {
     "95da5759-5e7d-4260-9d79-01fa9d591b25",
       "keywhen": 1234"20250421034249Z",
        "expiration_date"duration": "20160101001704Z0.002467",
        "dayskw": 9,{
        "msgkey": "Request id 1234 expires in 9 days"
      }
    }ruvs_dc=testdomain,dc=test",
        "suffix": "dc=testdomain,dc=test",
        "ruvs": [
          [
            "ipasrv.testdomain.test",
            "4"
          ],
          [
            "ipacln.testdomain.test",
            "3"
          ]
        ]
      }
    }
  • ipahealthcheck.ipa.certs
    Содержит набор проверок, связанных с сертификатами FreeIPA: от контроля срока действия, проверки цепочки доверия до сравнения сертификатов, а также отслеживания их состояния с помощью certmonger.
    Раскрыть

    IPACertmongerExpirationCheck

    Перебирает все ожидаемые запросы certmonger и проверяет срок действия сертификата, основываясь на информации, которой располагает certmonger. Если сертификат истекает в пределах cert_expiration_days (по умолчанию 28 дней), выдается предупреждение.

    Истекший сертификат:

    IPACertfileExpirationCheck

    Похожа на IPACertmongerExpirationCheck, но сертификат извлекается из PEM-файла или базы NSS и повторно проверяется. Это используется в случае, если сведения certmonger устарели по сравнению с сертификатом, находящимся на диске.

    Если файл сертификата не может быть открыт:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "certfile": "/path/to/cert.pem",
        "error": [error],
        "msg": "Unable to open cert file '/path/to/cert.pem': [error]"
      }
    }

    Если NSS-база не может быть открыта:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheckIPACertmongerExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "dbdirexpiration_date": "/path/to/nssdb20160101001704Z",
        "errormsg": [error],
        "msg": "Unable to open NSS database '/path/to/nssdb': [error]"
      }
    }"Request id 1234 expired on 20160101001704Z"
      }
    }

    Сертификат, истекающий скороЕсли отслеживаемый никнейм не найден в NSS-базе:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheckIPACertmongerExpirationCheck",
      "result": "ERRORWARNING",
      "kw": {
        "key": 1234,
        "dbdirexpiration_date": "/path/to/nssdb20160101001704Z",
        "nicknamedays": [nickname]9,
        "error": [error],
        "msg": "UnableRequest toid retrieve1234 cert '[nickname]' from '/path/to/nssdb': [error]expires in 9 days"
      }
    }

    Истекший сертификат:

    IPACertfileExpirationCheck

    Похожа на IPACertmongerExpirationCheck, но сертификат извлекается из PEM-файла или базы NSS и повторно проверяется. Это используется в случае, если сведения certmonger устарели по сравнению с сертификатом, находящимся на диске.

    Если файл сертификата не может быть открыт:

    Блок кода
    titlejson
    {
     
    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "ERROR",
      "kw": {
        "key": 1234,
        "expiration_date"certfile": "/path/to/cert.pem",
        "20160101001704Zerror": [error],
        "msg": "RequestUnable to idopen 1234cert expired on 20160101001704Zfile '/path/to/cert.pem': [error]"
      }
    }

    Сертификат, истекающий скороЕсли NSS-база не может быть открыта:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertfileExpirationCheck",
      "result": "WARNINGERROR",
      "kw": {
        "key": 1234,
        "expiration_datedbdir",: "20160101001704Z",/path/to/nssdb",
        "dayserror": 9[error],
        "msg": "RequestUnable idto 1234open expiresNSS in 9 daysdatabase '/path/to/nssdb': [error]"
      }
    }

    IPACAChainExpirationCheck

    Загружает цепочку сертификатов из файла /etc/ipa/ca.crt и проверяет срок действия каждого сертификата в цепочке. Это тест, предназначенный для подтверждения валидности всей цепочки доверия (включая случаи, когда сертификаты веб-сервера или LDAP были заменены, а цепочка находится в /etc/ipa/ca.crt).

    Сертификат, истекающий скороЕсли отслеживаемый никнейм не найден в NSS-базе:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACAChainExpirationCheckIPACertfileExpirationCheck",
      "result": "WARNINGERROR",
      "kw": {
        "pathkey": "/etc/ipa/ca.crt1234,
        "dbdir": "/path/to/nssdb",
        "keynickname": "CN=Certificate Authority,O=EXAMPLE.TEST",[nickname],
        "dayserror": 2[error],
        "msg": "CAUnable to retrieve cert '{key}[nickname]' is expiring in {days} days.from '/path/to/nssdb': [error]"
      }
    }

    Истекший сертификат:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACAChainExpirationCheckIPACertfileExpirationCheck",
      "result": "WARNINGERROR",
      "kw": {
        "pathkey": "/etc/ipa/ca.crt"1234,
        "keyexpiration_date":, "CN=Certificate Authority,O=EXAMPLE.TEST20160101001704Z",
        "daysmsg": 2,
    "Request id 1234 expired "msg":on "CA '{key}' is expiring in {days} days."20160101001704Z"
      }
    }

    IPACertTracking

    Сравнивает информацию отслеживания (tracking) сертификатов, полученную от certmonger, с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой.

    Если отслеживание отсутствуетСертификат, истекающий скоро:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertTrackingIPACertfileExpirationCheck",
      "result": "ERRORWARNING",
      "kw": {
        "key": "cert-file=/var/lib/ipa/ra-agent.pem, key-file=/var/lib/ipa/ra-agent.key, ca-name=dogtag-ipa-ca-renew-agent, cert-storage=FILE, cert-presave-command=/usr/libexec/ipa/certmonger/renew_ra_cert_pre,  cert-postsave-command=/usr/libexec/ipa/certmonger/renew_ra_cert" 1234,
        "expiration_date", "20160101001704Z",
        "days": 9,
        "msg": "Missing tracking for cert-file=/var/lib/ipa/ra-agent.pem, key-file=/var/lib/ipa/ra-agent.key, ca-name=dogtag-ipa-ca-renew-agent, cert-storage=FILE, cert-presave-command=/usr/libexec/ipa/certmonger/renew_ra_cert_pre,  cert-postsave-command=/usr/libexec/ipa/certmonger/renew_ra_cert"
      }
    }Request id 1234 expires in 9 days"
      }
    }

    IPACAChainExpirationCheck

    Загружает цепочку сертификатов из файла /etc/ipa/ca.crt и проверяет срок действия каждого сертификата в цепочке. Это тест, предназначенный для подтверждения валидности всей цепочки доверия (включая случаи, когда сертификаты веб-сервера или LDAP были заменены, а цепочка находится в /etc/ipa/ca.crt).

    Сертификат, истекающий скороЕсли отслеживается неизвестный сертификат:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertTrackingIPACAChainExpirationCheck",
      "result": "WARNING",
      "kw": {
        "path": "/etc/ipa/ca.crt",
        "key": "CN=Certificate Authority,O=EXAMPLE.TEST",
        "days": 12342,
        "msg": "Unknown certmonger id 1234'CA '{key}' is expiring in {days} days."
      }
    }

    IPACertNSSTrust

    Сравнивает настройки доверия для сертификатов, хранящихся в NSS-базе, с известным корректным состоянием.

    Истекший сертификат:

    Блок кода
    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertNSSTrustIPACAChainExpirationCheck",
      "result": "ERRORWARNING",
      "kw": {
        "keypath": "auditSigningCert cert-pki-ca/etc/ipa/ca.crt",
        "expectedkey": "u,u,PuCN=Certificate Authority,O=EXAMPLE.TEST",
        "gotdays": "u,u,u",2,
        "nicknamemsg": "auditSigningCert cert-pki-ca",
        "dbdir": "/etc/pki/pki-tomcat/alias",
        "msg": "Incorrect NSS trust for auditSigningCert cert-pki-ca. Got u,u,u expected u,u,Pu"
      }
    }

    IPACertMatchCheck

    Удостоверяется, что записи сертификата CA в LDAP совпадают с данными, полученными из NSS-базы (или файла).

    CA '{key}' is expiring in {days} days."
      }
    }

    IPACertTracking

    Сравнивает информацию отслеживания (tracking) сертификатов, полученную от certmonger, с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой.

    Если отслеживание отсутствует:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertTracking",
      "
    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertMatchCheck",
      "result": "ERROR",
      "kw": {
        "msgkey": "CA Certificate from /etccert-file=/var/lib/ipa/nssdb does not match /etc/ipa/ca.crt"
      }
    }

    IPADogtagCertsMatchCheck

    Проверяет, совпадают ли сертификаты Dogtag, присутствующие как в NSS-базе, так и в LDAP.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPADogtagCertsMatchCheck",
      "result": "ERROR",
      "kw": {
        "msg": "'subsystemCert cert-pki-ca' certificate in NSS DB does not match entry in LDAP"
      }
    }

    IPANSSChainValidation

    Проверяет цепочку сертификатов, полученных из NSS-базы. Выполняется команда certutil -V -u V -e -d [dbdir] -n [nickname].

    ra-agent.pem, key-file=/var/lib/ipa/ra-agent.key, ca-name=dogtag-ipa-ca-renew-agent, cert-storage=FILE, cert-presave-command=/usr/libexec/ipa/certmonger/renew_ra_cert_pre,  cert-postsave-command=/usr/libexec/ipa/certmonger/renew_ra_cert"
        "msg": "Missing tracking for cert-file=/var/lib/ipa/ra-agent.pem, key-file=/var/lib/ipa/ra-agent.key, ca-name=dogtag-ipa-ca-renew-agent, cert-storage=FILE, cert-presave-command=/usr/libexec/ipa/certmonger/renew_ra_cert_pre,  cert-postsave-command=/usr/libexec/ipa/certmonger/renew_ra_cert"
      }
    }

    Если отслеживается неизвестный сертификат:

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPANSSChainValidationIPACertTracking",
      "result": "ERRORWARNING",
      "kw": {
        "key": "/etc/dirsrv/slapd-EXAMPLE-TEST:Server-Cert"1234,
        "nicknamemsg": "Server-Cert",
        "dbdir": [path to NSS database],
        "reason": "certutil: certificate is invalid: Peer's Certificate issuer is not recognized.\n: Unknown certmonger id 1234'
      }
    }

    IPACertNSSTrust

    Сравнивает настройки доверия для сертификатов, хранящихся в NSS-базе, с известным корректным состоянием.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertNSSTrust",
      "result": "ERROR",
      "kw": {
        "key": "auditSigningCert cert-pki-ca",
        "expected": "u,u,Pu",
        "msggot": ""Validation of Server-Cert in /etc/dirsrv/slapd-EXAMPLE-TEST/ failed: certutil: certificate is invalid: Peer's Certificate issuer is not recognized.\n u,u,u",
        "nickname": "auditSigningCert cert-pki-ca",
        "dbdir": "/etc/pki/pki-tomcat/alias",
        "msg": "Incorrect NSS trust for auditSigningCert cert-pki-ca. Got u,u,u expected u,u,Pu"
      }
    }

    IPAOpenSSLChainValidation

    Проверяет цепочку сертификатов для файлов OpenSSL. Выполняется команда openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt /path/to/cert.pem.

    IPACertMatchCheck

    Удостоверяется, что записи сертификата CA в LDAP совпадают с данными, полученными из NSS-базы (или файла).

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPAOpenSSLChainValidationIPACertMatchCheck",
      "result": "ERROR",
      "kw": {
        "keymsg": "/var/libCA Certificate from /etc/ipa/nssdb does not match /etc/ipa/ra-agentca.pemcrt",
      }
    }

    IPADogtagCertsMatchCheck

    Проверяет, совпадают ли сертификаты Dogtag, присутствующие как в NSS-базе, так и в LDAP.

    Блок кода
    titlejson
    {
      "reasonsource": "O = EXAMPLE.TEST, CN = IPA RA\nerror 20 at 0 depth lookup: unable to get local issuer certificate\n",ipahealthcheck.ipa.certs",
      "check": "IPADogtagCertsMatchCheck",
      "result": "ERROR",
      "kw": {
        "msg": "Certificate validation for /var/lib/ipa/ra-agent.pem failed: O = EXAMPLE.TEST, CN = IPA RA\nerror 20 at 0 depth lookup: unable to get local issuer certificate\n'subsystemCert cert-pki-ca' certificate in NSS DB does not match entry in LDAP"
      }
    }

    IPARAAgentIPANSSChainValidation

    Проверяет соответствие описания и значения атрибута userCertificate для RA-агента в LDAP.цепочку сертификатов, полученных из NSS-базы. Выполняется команда certutil -V -u V -e -d [dbdir] -n [nickname].

    Блок кодаcode
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPARAAgentIPANSSChainValidation",
      "result": "ERROR",
      "kw": {
        "expectedkey": "2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST/etc/dirsrv/slapd-EXAMPLE-TEST:Server-Cert",
        "gotnickname": "2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TESTServer-Cert",
        "msgdbdir": [path "RAto agent description does not match. Found 2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST in LDAP and expected 2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST"
      }
    }

    IPAKRAAgent

    Проверяет соответствие описания и значения атрибута userCertificate для KRA-агента в LDAP.

    NSS database],
        "reason": "certutil: certificate is invalid: Peer's Certificate issuer is not recognized.\n: ",
        "msg": ""Validation of Server-Cert in /etc/dirsrv/slapd-EXAMPLE-TEST/ failed: certutil: certificate is invalid: Peer's Certificate issuer is not recognized.\n "
      }
    }

    IPAOpenSSLChainValidation

    Проверяет цепочку сертификатов для файлов OpenSSL. Выполняется команда openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt /path/to/cert.pem.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPAOpenSSLChainValidation",
      "result": "ERROR",
      "kw": {
        "key": "/var/lib/ipa/ra-agent.pem",
        "reason": "O = EXAMPLE.TEST, CN = IPA RA\nerror 20 at 0 depth lookup: unable to get local issuer certificate\n",
        "msg": "Certificate validation for /var/lib/ipa/ra-agent.pem failed: O = EXAMPLE.TEST, CN = IPA RA\nerror 20 at 0 depth lookup: unable to get local issuer certificate\n
    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPAKRAAgent",
      "result": "ERROR",
      "kw": {
        "expected": "2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "got": "2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "msg": "KRA agent description does not match. Found 2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST in LDAP and expected 2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST"
      }
    }

    IPACertRevocation

    IPARAAgent

    Проверяет соответствие описания и значения атрибута userCertificate для RA-агента в LDAPПодтверждает, что сертификаты IPA не отозваны, используя отслеживание certmonger для определения списка сертификатов, подлежащих проверке.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertRevocationIPARAAgent",
      "result": "ERROR",
      "kw": {
        "keyexpected": 1234 "2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "revocation_reasongot": "superseded2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "msg": "Certificate is revoked, superseded"
      }
    }

    IPACertmongerCA

    RA agent description does not match. Found 2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST in LDAP and expected 2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST"
      }
    }

    IPAKRAAgent

    Проверяет соответствие описания и значения атрибута userCertificate для KRA-агента в LDAPПроверяет корректность конфигурации CA в certmonger, анализируя настройки dogtag-ipa-ca-renew-agent и dogtag-ipa-ca-renew-agent-reuse.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "IPACertmongerCAIPAKRAAgent",
      "result": "ERROR",
      "kw": {
        "keyexpected": "dogtag-ipa-ca-renew-agent2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "msggot": "Certmonger CA 'dogtag-ipa-ca-renew-agent' missing"
      }
    }
    ipahealthcheck.ipa.dna
    Отвечает за проверку диапазона DNA (Domain Number Allocation), который используется для распределения идентификаторов в системе, чтобы избежать конфликтов.
    Раскрыть

    IPADNARangeCheck

    Это выводит настроенный диапазон DNA, если таковой имеется. Предполагается, что эта информация будет использоваться в сочетании с другими данными для дальнейшего анализа.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.dna",
      "check": "IPADNARangeCheck",
      "result": "SUCCESS",
      "kw": {
        "range_start": 1000,
        "range_max": 199999,
        "next_start": 0,
        "next_max": 0,2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST",
        "msg": "KRA agent description does not match. Found 2;7;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST in LDAP and expected 2;125;CN=Certificate Authority,O=EXAMPLE.TEST;CN=IPA RA,O=EXAMPLE.TEST"
      }
    }
    ipahealthcheck.ipa.idns
    Производит диагностику системных DNS‑записей, необходимых для корректной работы инфраструктуры FreeIPA.

    IPACertRevocation

    Подтверждает, что сертификаты IPA не отозваны, используя отслеживание certmonger для определения списка сертификатов, подлежащих проверке

    Раскрытьipahealthcheck.ipa.files
    Проверяет разрешения, владельцев и целостность основных файлов, используемых FreeIPA, таких как конфигурационные файлы и файлы NSS‑базы.
    Раскрыть

    IPAFileNSSDBCheck

    IPAFileCheck

    TomcatFileCheck

    Эти проверки проверяют владельца и режим файлов, установленных или настроенных IPA. Существует множество вариантов прав доступа к файлам и владельцев, которые могут быть допустимыми и продолжать работать. Здесь приведены ожидаемые значения для чистой установки IPA. Отклонения фиксируются на уровне WARNING

    .

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.filescerts",
      "check": "IPAFileCheckIPACertRevocation",
      "result": "WARNINGERROR",
      "kw": {
        "key": 1234,
        "_etc_ipa_ca.crt_moderevocation_reason": "superseded",
        "pathmsg": "/etc/ipa/ca.crt",
        "type": "modeCertificate is revoked, superseded"
      }
    }

    IPACertmongerCA

    Проверяет корректность конфигурации CA в certmonger, анализируя настройки dogtag-ipa-ca-renew-agent и dogtag-ipa-ca-renew-agent-reuse.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
        "expectedcheck": "0644IPACertmongerCA",
        "gotresult": "0444ERROR",
      "kw": {
        "msgkey": "Permissions of /etc/ipa/ca.crt are 0444 and should be 0644dogtag-ipa-ca-renew-agent",
        "msg": "Certmonger CA 'dogtag-ipa-ca-renew-agent' missing"
      }
    }

    IPACertDNSSAN

    Проверяет, что во всех действующих заявках certmonger на серверные сертификаты профиля caIPAserviceCert для CA присутствует DNS‑Subject Alt Name, совпадающий с FQDN текущего хоста.

    Блок кода
    titlejson
    
    
    {
      "source": "ipahealthcheck.ipa.filescerts",
      "check": "IPAFileNSSDBCheckIPACertDNSSAN",
      "result": "WARNINGERROR",
      "kwuuid": {
      "431c42c0-9396-4593-ad2b-09b40298ba1f",
      "keywhen": "_etc_dirsrv_slapd-EXAMPLE-TEST_pkcs11.txt_mode20240416115958Z",
        "pathduration": "/etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt0.904624",
      "kw": {
        "typekey": "mode20240318110910",
        "expectedhostname": "0640ipa-ca.example.com",
        "gotsan": [
          "0666"ipa02.example.com"
        ],
        "msgca": "Permissions of /etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt are 0666 and should be 0640"
      }
    }
  • ipahealthcheck.ipa.host
    Выполняет проверку, связанную с аутентификацией текущего хоста, включая проверку корректности файла keytab для различных служб (LDAP, HTTP, DNS и др.).
    Раскрыть

    IPAHostKeytab

    Выполняет команду: kinit -kt /etc/krb5.keytab для проверки, что keytab хоста действителен.

  • IPA",
        "profile": "caIPAserviceCert",
        "msg": "Certificate request id {key} with profile {profile} for CA {ca} does not have a DNS SAN {san} matching name {hostname}"
      }
    }

    CertmongerStuckCheck

    Ищет заявки certmonger, у которых статус stuck = true, и оповещает об «застрявших» запросах.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.certs",
      "check": "CertmongerStuckCheck",
      "result": "WARNING",
      "uuid": "d32781d5-09e7-4d52-89f1-57eca541e9e4",
      "when": "20230407120255Z",
      "duration": "0.019584",
      "kw": {
        "key": "20230407091205",
        "msg": "certmonger request {key} is in the stuck state"
      }
    }
  • ipahealthcheck.ipa.dna
    Отвечает за проверку диапазона DNA (Domain Number Allocation), который используется для распределения идентификаторов в системе, чтобы избежать конфликтов.
    Раскрыть

    IPADNARangeCheck

    Это выводит настроенный диапазон DNA, если таковой имеется. Предполагается, что эта информация будет использоваться в сочетании с другими данными для дальнейшего анализа.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.dna",
      "check": "IPADNARangeCheck",
      "result": "SUCCESS",
      "kw": {
        "range_start": 1000,
        "range_max": 199999,
        "next_start": 0,
        "next_max": 0,
      }
    }
  • ipahealthcheck.ipa.idns
    Производит диагностику системных DNS‑записей, необходимых для корректной работы инфраструктуры FreeIPA.
    Раскрыть

    IPADNSSystemRecordsCheck

    Проверяет, что все обязательные системные DNS‑записи (SRV, URI, TXT и A/AAAA ipa‑ca), перечисленные командой ipa dns‑update‑system‑records --dry‑run, действительно расширяются через первый указанный в /etc/resolv.conf сервер и содержат ровно те значения, которых ожидает FreeIPA.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.idns",
      "check": "IPADNSSystemRecordsCheck",
      "result": "SUCCESS",
      "uuid": "eb7a3b68-f6b2-4631-af01-798cac0eb018",
      "when": "20200415143339Z",
      "duration": "0.210471",
      "kw": {
        "key": "_ldap._tcp.idm.example.com.:server1.idm.example.com."
      }
    },
    {
      "source": "ipahealthcheck.ipa.idns",
      "check": "IPADNSSystemRecordsCheck",
      "result": "WARNING",
      "uuid": "8332068e-f76f-419c-a376-ddd87541ec28",
      "when": "20221209024056Z",
      "duration": "0.676441",
      "kw": {
        "msg": "Expected URI record missing",
        "key": "_kerberos.example.com.:krb5srv:m:tcp:idm.example.com."
      }
    }
  • ipahealthcheck.ipa.files
    Проверяет разрешения, владельцев и целостность основных файлов, используемых FreeIPA, таких как конфигурационные файлы и файлы NSS‑базы.
    Раскрыть

    IPAFileNSSDBCheck

    IPAFileCheck

    TomcatFileCheck

    Эти проверки проверяют владельца и режим файлов, установленных или настроенных IPA. Существует множество вариантов прав доступа к файлам и владельцев, которые могут быть допустимыми и продолжать работать. Здесь приведены ожидаемые значения для чистой установки IPA. Отклонения фиксируются на уровне WARNING.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.files",
      "check": "IPAFileCheck",
      "result": "WARNING",
      "kw": {
        "key": "_etc_ipa_ca.crt_mode",
        "path": "/etc/ipa/ca.crt",
        "type": "mode",
        "expected": "0644",
        "got": "0444",
        "msg": "Permissions of /etc/ipa/ca.crt are 0444 and should be 0644"
      }
    }
    
    {
      "source": "ipahealthcheck.ipa.files",
      "check": "IPAFileNSSDBCheck",
      "result": "WARNING",
      "kw": {
        "key": "_etc_dirsrv_slapd-EXAMPLE-TEST_pkcs11.txt_mode",
        "path": "/etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt",
        "type": "mode",
        "expected": "0640",
        "got": "0666",
        "msg": "Permissions of /etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt are 0666 and should be 0640"
      }
    }
  • ipahealthcheck.ipa.host
    Выполняет проверку, связанную с аутентификацией текущего хоста, включая проверку корректности файла keytab для различных служб (LDAP, HTTP, DNS и др.).
    Раскрыть

    IPAHostKeytab

    Обеспечивает, что keytab для службы host (обычно /etc/krb5.keytab) существует на сервере и позволяет получить Ticket‑Granting Ticket (TGT) через GSSAPI.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "IPAHostKeytab",
      "severity": 2,
      "uuid": "123e4567-e89b-12d3-a456-426614174000",
      "when": "20250422T102030Z",
      "duration": 0.015,
      "kw": {
        "service": "host",
        "path": "/etc/krb5.keytab",
        "msg": "Service host keytab /etc/krb5.keytab does not exist."
      }
    }

    DSKeytab

    Обеспечивает, что keytab для службы ldap (обычно /etc/dirsrv/ds.keytab) существует и позволяет получить билет.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "DSKeytab",
      "result": "ERROR",
      "uuid": "5ba452bb-f460-489e-adf6-bce7ccd529e3",
      "when": "20250422214408Z",
      "duration": "0.000053",
      "kw": {
        "service": "ldap",
        "path": "/etc/dirsrv/ds.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }

    HTTPKeytab

    Обеспечивает, что keytab для службы HTTP (обычно /var/lib/ipa/gssproxy/http.keytab) существует и позволяет получить Ticket‑Granting Ticket (TGT) для аутентификации веб‑сервера.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "HTTPKeytab",
      "result": "ERROR",
      "uuid": "75320965-ac11-41ed-8375-fb96f0dfd636",
      "when": "20250422215025Z",
      "duration": "0.000071",
      "kw": {
        "service": "HTTP",
        "path": "/var/lib/ipa/gssproxy/http.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }

    DNSKeytab

    Проверяет, что keytab для службы DNS (обычно /etc/bind/krb5.keytab) существует и может получитьTicket‑Granting Ticket (TGT), но только если на хосте настроен DNS‑сервер IPA. При отсутствии записи в dns_server_server проверка пропускается.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "DNSKeytab",
      "result": "ERROR",
      "uuid": "01a7db34-4567-4126-b761-93030e5a61ff",
      "when": "20250422215654Z",
      "duration": "0.000171",
      "kw": {
        "service": "DNS",
        "path": "/etc/bind/krb5.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }

    DNS_keysyncKeytab 

    Проверяет, что keytab для службы ipa-dnskeysyncd (обычно /etc/ipa/dnssec/ipa-dnskeysyncd.keytab) существует и позволяет получить Ticket‑Granting Ticket (TGT), но только если хост настроен как DNS‑сервер IPA. При отсутствии записи в dns_server_server проверка пропускается.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.host",
      "check": "DNS_keysyncKeytab",
      "result": "ERROR",
      "uuid": "7c6f7fcf-a35f-45c5-ad57-dbc2f273973e",
      "when": "20250422215025Z",
      "duration": "0.000095",
      "kw": {
        "service": "ipa-dnskeysyncd",
        "path": "/etc/ipa/dnssec/ipa-dnskeysyncd.keytab",
        "msg": "Service {service} keytab {path} does not exist."
      }
    }
  • ipahealthcheck.ipa.kdc
    Следит за состоянием рабочих процессов KDC (Kerberos Distribution Center), необходимых для работы аутентификации.
    Раскрыть

    KDCWorkersCheck

    Проверяет, что в файле /etc/default/krb5-kdc в параметре KRB5KDC_ARGS указано число рабочих процессов (-w N), совпадающее с количеством онлайн‑ядер CPU на хосте. Если -w не задан и ядер больше одного, выдается предупреждение; если KRB5KDC_ARGS не найден, тоже — предупреждение.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.kdc",
      "check": "KDCWorkersCheck",
      "result": "WARNING",
      "uuid": "e2e667d0-83ac-41f7-8e71-8c5bc6a1397c",
      "when": "20250422221706Z",
      "duration": "0.000664",
      "kw": {
        "key": "workers",
        "cpus": 2,
        "workers": 4,
        "sysconfig": "/etc/default/krb5-kdc",
        "msg": "The number of CPUs {cpus} does not match the number of workers {workers} in {sysconfig}"
      }
    }
  • ipahealthcheck.ipa.meta
    Собирает общую информацию о сервере FreeIPA.
    Раскрыть

    IPAMetaCheck

    Вызывает внутренний API FreeIPA для получения списка всех зарегистрированных IPA‑серверов и возвращает их метаданные простым массивом имён мастеров. Если при вызове возникает любое исключение, генерируется ошибка с кодом ERROR

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.meta",
      "check": "IPAMetaCheck",
      "result": "SUCCESS",
      "uuid": "0923fc34-6c27-4cfd-8cd0-04f30b8ec74e",
      "when": "20250422222216Z",
      "duration": "0.015272",
      "kw": {
        "masters": [
          "ipacln.testdomain.test",
          "ipasrv.testdomain.test"
        ]
      }
    }
  • ipahealthcheck.ipa.nss
    Проверяет корректность работы NSS‑подсистемы, например, правильное членство пользователей в группах, связанные с NSS‑базой.
    Раскрыть

    IPAGroupMemberCheck

    Проверяет, что указанные системные POSIX‑группы содержат ожидаемых пользователей. В FreeIPA это нужно для разделения привилегий: например, чтобы веб‑сервер мог читать кэши учетных данных, создаваемые от имени ipaapi‑пользователя.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.nss",
      "check": "IPAGroupMemberCheck",
      "result": "SUCCESS",
      "uuid": "f04bff38-5382-4794-856c-1e7d193c9dfa",
      "when": "20250422223036Z",
      "duration": "0.000543",
      "kw": {
        "key": "ipaapi",
        "member": "www-data"
      }
    }
  • ipahealthcheck.ipa.proxy
    Контролирует настройки IPA Proxy, включая проверку корректности секретного ключа, используемого для безопасной коммуникации.
    Раскрыть

    Проверяет, что секреты AJP (Apache JServ Protocol) коннектора Tomcat совпадают со значениями из ProxyPassMatch в конфиге Apache (ipa-pki-proxy.conf), и что между secret и requiredSecret нет противоречий.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.proxy",
      "check": "IPAProxySecretCheck",
      "result": "CRITICAL",
      "uuid": "6820b5b3-08a9-4632-a834-a71d1ae0d84b",
      "when": "20220708144958Z",
      "duration": "0.000894",
      "kw": {
        "key": "proxy_secrets",
    	"proxy_conf": "/etc/apache2/conf-enabled/ipa-pki-proxy.conf",
    	"msg": "No ProxyPassMatch secrets found in {proxy_conf}"
      }
    }
    ipahealthcheck.ipa.kdc
    Следит за состоянием рабочих процессов KDC (Kerberos Distribution Center), необходимых для работы аутентификации. Раскрытьipahealthcheck.ipa.meta
    Собирает общую информацию о сервере FreeIPA (например, FQDN, версии продукта), предоставляя обзор состояния системы. Раскрытьipahealthcheck.ipa.nss
    Проверяет корректность работы NSS‑подсистемы, например, правильное членство пользователей в группах, связанные с NSS‑базой. Раскрытьipahealthcheck.ipa.proxy
    Контролирует настройки IPA Proxy, включая проверку корректности секретного ключа, используемого для безопасной коммуникации.expand
  • ipahealthcheck.ipa.roles
    Выполняет проверки, связанные с ролями сервера в инфраструктуре FreeIPA — определяет, является ли сервер мастером обновления сертификатов, CRL-менеджером, и проверяет связанные с этим параметры.
    Раскрыть

    IPACRLManagerCheck

    IPARenewalMasterCheck

    Набор информационных проверок для определения, является ли текущий мастер генератором CRL и/или мастером обновления.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.roles",
      "check": "IPACRLManagerCheck",
      "result": "SUCCESS",
      "kw": {
        "key": "crl_manager",
        "crlgen_enabled": true
      }
    }
    {
      "source": "ipahealthcheck.ipa.roles",
      "check": "IPARenewalMasterCheck",
      "result": "SUCCESS",
      "kw": {
        "key": "renewal_master",
        "master": true
      }
    }
  • ipahealthcheck.ipa.topology
    Проводит проверки топологии репликации и сетевой конфигурации, убеждаясь, что все серверы правильно настроены и данные синхронизируются корректно.
    Раскрыть

    Проверки топологии для проверки соответствия как рекомендациям, так и выявления ошибок.

    IPATopologyDomainCheck

    Предоставляет эквивалент команды: ipa topologysuffix-verify

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

    При успешном выполнении возвращаются настроенные домены.

    Блок кода
    titlejson
    {
      "source": "ipahealthcheck.ipa.topology",
      "check": "IPATopologyDomainCheck",
      "result": "SUCCESS",
      "kw": {
        "suffix": "domain"
      }
    },
    {
      "source": "ipahealthcheck.ipa.topology",
      "check": "IPATopologyDomainCheck",
      "result": "SUCCESS",
      "kw": {
        "suffix": "ca"
      }
    }

...