...
| Раскрыть | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В таблице перечислены все специальные термины и аббревиатуры, применяемые в статье, с их пояснениями.
|
Установка пакета
Инструмент ipa-healthcheck предоставляется пакетом freeipa-healthcheck. Пакет входит в расширенный репозиторий. Установить пакет можно используяГрафический менеджер пакетов synaptic, или из командной строки:
...
Инструмент поддерживает следующие источники и входящие в них проверки:
- ipahealthcheck.dogtag.ca
Отвечает за диагностику служб центра сертификации DogTag (если DogTag используется). Диагностируются службы CA и KRA.Раскрыть title Проверки в источнике ipahealthcheck.dogtag.ca DogtagCertsConfigCheck
Сравнивает значение сертификатов центра сертификации (а также KRA, если установлен) с значением, найденным в файле CS.cfg. Если значения не совпадают, то, вероятно, CS не сможет запуститься.
Блок кода title json { "source": "ipahealthcheck.dogtag.ca", "check": "DogtagCertsConfigCheck", "result": "ERROR", "kw": { "key": "ocspSigningCert cert-pki-ca", "directive": "ca.ocsp_signing.cert", "configfile": "/var/lib/pki/pki-tomcat/conf/ca/CS.cfg", "msg": "Certificate 'ocspSigningCert cert-pki-ca' does not match the value of ca.ocsp_signing.cert in /var/lib/pki/pki-tomcat/conf/ca/CS.cfg" } }DogtagCertsConnectivityCheck
Информация title Справка Команда
ipa cert-show— отображает полную информацию о сертификате из IPA-CA по его серийному номеру: метаданные и сам сертификат в PEM-формате.Выполняет эквивалент команды
ipa cert-show 1для проверки базовой доступности.Блок кода title json { "source": "ipahealthcheck.dogtag.ca", "check": "DogtagCertsConnectivityCheck", "result": "ERROR", "kw": { "msg": "Request for certificate failed, Certificate operation cannot be completed: Unable to communicate with CMS (503)" } }
- ipahealthcheck.ds.backends
Контролирует работоспособность backend‑модулей, которые отвечают за хранение данных (например, в LDAP‑хранилище)Раскрыть title Проверки в источнике ipahealthcheck.ds.backends BackendsCheck
Выполняет автоматическую lint‑проверку настройки backend‑инстанций Directory Server DS и генерирующий DSBLE‑коды при обнаружении нарушений конфигурации или работы БДбазы данных.
Блок кода title json { "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‑сервера и сопутствующих компонентов, чтобы удостовериться, что все параметры установлены корректно.Раскрыть title Проверки в источнике ipahealthcheck.ds.config ConfigCheck
Выполняет автоматическую lint‑проверку конфигурации Directory ServerDS. Ищет устаревшие, отсутствующие или некорректные параметры (например, небезопасные схемы хранения пароля, неподходящие диапазоны значений, дублирование опций), преобразуя результаты в стандартизированные DSBLE/DSCLE‑коды
Блок кода title json { "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.disk_space
Проверяет состояние свободного места на дисках, особенно на критичных разделах, таких как каталоги логов или резервных копий, чтобы предупредить о риске переполнения.Раскрыть title Проверки в источнике ipahealthcheck.ds.disk_space DiskSpaceCheck
Проверяет свободное место на ключевых томах Directory Server и выдаёт ERROR или CRITICAL, если свободный объём опускается ниже абсолютного порога (свободного объёма меньше 1 024 МБ ) или процент свободного пространства оказывается ниже 20%или свободного пространства менее 20 %, и CRITICAL, если свободного пространства остаётся менее 10 %.
Блок кода title json { "source": "ipahealthcheck.ds.disk_space", "check": "DiskSpaceCheck", "result": "CRITICAL", "uuid": "908d8cb4-988a-4c82-a00e-38716987ae16", "when": "20250421070353Z", "duration": "0.016273", "kw": { "key": "DSDSLE0001", "items": [ "Server", "cn=config" ], "msg": "The disk partition used by the server (/), either for the database, the\nconfiguration files, or the logs is over 90% full. If the partition becomes\ncompletely filled serious problems can occur with the database or the server's\nstability." } }
- ipahealthcheck.ds.dse
Осуществляет диагностику DSE — базовой части LDAP‑сервера, которая отвечает за хранение и обработку данныхПроверяет рассинхронизацию времени между репликами DS.Раскрыть title Проверки в источнике ipahealthcheck.ds.dse DSECheck
Контролирует рассинхронизацию времени между репликами Directory ServerDS, считывая атрибут атрибут
nsStateизdse.ldif; выдаёт ERROR, если расхождение превышает 12 часов, и CRITICAL, когда оно выходит за предел 24 часов.Блок кода title json { "source": "ipahealthcheck.ds.dse", "check": "DSECheck", "result": "CRITICAL", "uuid": "ecc2c131-b86a-4851-a156-c304d77ebb0b", "when": "20230822183329Z", "duration": "0.012828", "kw": { "key": "DSSKEWLE0003", "items": [ "Replication", "dc=DOMAIN,dc=DOMAIN,dc=DOMAIN", "Time Skew", "Skew: 30145 days, 2 hours, 20 minutes, 16 seconds" ], "msg": "The time skew is over 24 hours. Setting nsslapd-ignore-time-skew\nto "on" on each replica will allow replication to continue, but if the\ntime skew continues to increase other serious replication problems can\noccur." }
...
- ipahealthcheck.ipa.certs
Содержит набор проверок, связанных с сертификатами FreeIPA: от контроля срока контролирует срок действия сертификатов, проверки цепочки доверия до сравнения сертификатовпроверяет целостность и корректность цепочки доверия, сверяет сертификаты в NSS-базах и PEM-файлах, а также отслеживания их состояния с помощью certmonger.их соответствие записям в LDAPРаскрыть title Проверки в источнике ipahealthcheck.ipa.certs IPACertmongerExpirationCheck
Перебирает все ожидаемые запросы certmonger и проверяет срок действия сертификата, основываясь на информации, которой располагает certmonger. Если сертификат истекает в пределах cert_expiration_days (по умолчанию 28 дней), выдается предупреждение.
Истекший сертификат:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertmongerExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "expiration_date": "20160101001704Z", "msg": "Request id 1234 expired on 20160101001704Z" } }Сертификат, истекающий скоро:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertmongerExpirationCheck", "result": "WARNING", "kw": { "key": 1234, "expiration_date": "20160101001704Z", "days": 9, "msg": "Request id 1234 expires in 9 days" } }IPACertfileExpirationCheck
Похожа на IPACertmongerExpirationCheck, но сертификат извлекается из PEM-файла или базы NSS и повторно проверяется. Это используется в случае, если сведения certmonger устарели по сравнению с сертификатом, находящимся на диске.
Если файл сертификата не может быть открыт:
Блок кода title json { "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-база не может быть открыта:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "dbdir": "/path/to/nssdb", "error": [error], "msg": "Unable to open NSS database '/path/to/nssdb': [error]" } }Если отслеживаемый никнейм не найден в NSS-базе:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "dbdir": "/path/to/nssdb", "nickname": [nickname], "error": [error], "msg": "Unable to retrieve cert '[nickname]' from '/path/to/nssdb': [error]" } }Истекший сертификат:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "expiration_date", "20160101001704Z", "msg": "Request id 1234 expired on 20160101001704Z" } }Сертификат, истекающий скоро:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "WARNING", "kw": { "key": 1234, "expiration_date", "20160101001704Z", "days": 9, "msg": "Request id 1234 expires in 9 days" } }IPACAChainExpirationCheck
Загружает цепочку сертификатов из файла /etc/ipa/ca.crt и проверяет срок действия каждого сертификата в цепочке. Это тест, предназначенный для подтверждения валидности всей цепочки доверия (включая случаи, когда сертификаты веб-сервера или LDAP были заменены, а цепочка находится в /etc/ipa/ca.crt).
Сертификат, истекающий скоро:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACAChainExpirationCheck", "result": "WARNING", "kw": { "path": "/etc/ipa/ca.crt", "key": "CN=Certificate Authority,O=EXAMPLE.TEST", "days": 2, "msg": "CA '{key}' is expiring in {days} days." } }Истекший сертификат:
Блок кода { "source": "ipahealthcheck.ipa.certs", "check": "IPACAChainExpirationCheck", "result": "WARNING", "kw": { "path": "/etc/ipa/ca.crt", "key": "CN=Certificate Authority,O=EXAMPLE.TEST", "days": 2, "msg": "CA '{key}' is expiring in {days} days." } }IPACertTracking
Сравнивает информацию отслеживания (tracking) сертификатов, полученную от certmonger, с ожидаемыми значениями. Результат показывает ошибку, если какая-либо часть отслеживания отсутствует или отличается от ожидаемой.
Если отслеживание отсутствует:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertTracking", "result": "ERROR", "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" "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" } }Если отслеживается неизвестный сертификат:
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertTracking", "result": "WARNING", "kw": { "key": 1234, "msg": "Unknown certmonger id 1234' } }IPACertNSSTrust
Сравнивает настройки доверия для сертификатов, хранящихся в NSS-базе, с известным корректным состоянием.
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertNSSTrust", "result": "ERROR", "kw": { "key": "auditSigningCert cert-pki-ca", "expected": "u,u,Pu", "got": "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" } }IPACertMatchCheck
Удостоверяется, что записи сертификата CA в LDAP совпадают с данными, полученными из NSS-базы (или файла).
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertMatchCheck", "result": "ERROR", "kw": { "msg": "CA Certificate from /etc/ipa/nssdb does not match /etc/ipa/ca.crt" } }IPADogtagCertsMatchCheck
Проверяет, совпадают ли сертификаты DogTag, присутствующие как в NSS-базе, так и в LDAP.
Блок кода title json { "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].Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPANSSChainValidation", "result": "ERROR", "kw": { "key": "/etc/dirsrv/slapd-EXAMPLE-TEST:Server-Cert", "nickname": "Server-Cert", "dbdir": [path to 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.Блок кода title json { "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" } }IPARAAgent
Проверяет соответствие описания и значения атрибута userCertificate для RA-агента в LDAP.
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPARAAgent", "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": "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.
Блок кода title json { "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
Подтверждает, что сертификаты IPA не отозваны, используя отслеживание certmonger для определения списка сертификатов, подлежащих проверке.
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertRevocation", "result": "ERROR", "kw": { "key": 1234, "revocation_reason": "superseded", "msg": "Certificate is revoked, superseded" } }IPACertmongerCA
Проверяет корректность конфигурации CA в certmonger, анализируя настройки dogtag-ipa-ca-renew-agent и dogtag-ipa-ca-renew-agent-reuse.
Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertmongerCA", "result": "ERROR", "kw": { "key": "dogtag-ipa-ca-renew-agent", "msg": "Certmonger CA 'dogtag-ipa-ca-renew-agent' missing" } }IPACertDNSSAN
Проверяет, что во всех действующих заявках certmonger на серверные сертификаты профиля
caIPAserviceCertдля CA присутствует DNS‑Subject Alt Name, совпадающий с FQDN текущего хоста.Блок кода title json { "source": "ipahealthcheck.ipa.certs", "check": "IPACertDNSSAN", "result": "ERROR", "uuid": "431c42c0-9396-4593-ad2b-09b40298ba1f", "when": "20240416115958Z", "duration": "0.904624", "kw": { "key": "20240318110910", "hostname": "ipa-ca.example.com", "san": [ "ipa02.example.com" ], "ca": "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, и оповещает об «застрявших» запросах.
Блок кода title json { "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.host
Выполняет проверку, связанную с аутентификацией текущего хоста, включая проверку корректности файла keytab для различных служб (LDAP, HTTP, DNS и др.).Раскрыть title Проверки в источнике ipahealthcheck.ipa.host IPAHostKeytab
Обеспечивает, что keytab для службы host (обычно
/etc/krb5.keytab) существует на сервере и позволяет получить Ticket‑Granting Ticket ( TGT ) через GSSAPI.Блок кода title json { "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) существует и позволяет получить билет.Блок кода title json { "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 ) для аутентификации веб‑сервера.Блок кода title json { "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проверка пропускается.Блок кода title json { "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проверка пропускается.Блок кода title json { "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." } }
...