Подробный гайд по проверке статуса службы krb5kdc (Kerberos Key Distribution Center) в Linux

Проверка статуса службы krb5kdc в Linux. Команды systemctl, journalctl, диагностика портов 88 и логов Kerberos KDC. Решение проблем аутентификации и настройка.

2026.05.26                  


Подробный гайд по проверке статуса службы krb5kdc (Kerberos Key Distribution Center) в LinuxПодробный гайд по проверке статуса службы krb5kdc (Kerberos Key Distribution Center) в Linux

Важное примечание про имя службы

В зависимости от дистрибутива служба может называться по-разному:

  • RHEL / CentOS / Rocky / AlmaLinux / Fedora: krb5kdc
  • Debian / Ubuntu / Linux Mint: krb5-kdc

В примерах ниже используется krb5kdc. Если ваша система вернёт Unit krb5kdc.service not found, замените на krb5-kdc.


1. Быстрая проверка статуса (systemd)

Современные дистрибутивы используют systemd.

Выполните от имени root или с sudo:

sudo systemctl status krb5kdc
# или для Debian/Ubuntu:
sudo systemctl status krb5-kdc

Что смотреть в выводе:

  • Active: active (running) → служба работает штатно.
  • Active: inactive (dead) → служба остановлена.
  • Active: failed → служба упала, ниже будут строки с ошибками.
  • Main PID: → ID процесса, можно проверить через ps -p <PID>.

Дополнительные флаги:

sudo systemctl is-active krb5kdc      # выведет только active/inactive/failed
sudo systemctl is-enabled krb5kdc     # выведет enabled/disabled (автозапуск)
sudo systemctl show krb5kdc --property=LoadState,ActiveState,SubState

2. Проверка через legacy-утилиту service (для старых систем)

sudo service krb5kdc status
# или
sudo /etc/init.d/krb5-kdc status

Примечание: в современных системах эта команда является обёрткой над systemctl.


3. Проверка процесса и сетевых портов

Если systemctl показывает active, но аутентификация не работает, проверьте "физическое" наличие процесса и слушателя:

# 1. Процесс
pgrep -a krb5kdc
# или
ps aux | grep '[k]rb5kdc'

# 2. Порты (Kerberos использует 88 TCP/UDP, kadmind — 749 TCP)
sudo ss -tulnp | grep -E ':88|:749'
# или
sudo netstat -tulnp | grep -E ':88|:749'

Ожидается:

процесс /usr/sbin/krb5kdc и слушатель на *:88.


4. Анализ логов

Логи — главный источник информации при проблемах.

Через journalctl (systemd):

sudo journalctl -u krb5kdc -n 100 --no-pager -f
# -f для live-просмотра, -n 100 последние 100 строк

Прямые файлы логов (зависит от настройки kdc.conf и syslog):

sudo tail -f /var/log/krb5kdc.log
sudo tail -f /var/log/kadmind.log   # если используется kadmin

Ключевые сообщения об ошибках:

  • Database must not exist → БД Kerberos не создана/повреждена.
  • Cannot resolve server / No credentials cache found → проблемы с DNS/клиентом.
  • Clock skew too great → рассинхронизация времени (>5 мин).
  • Permission denied → проблемы с правами на /var/kerberos/krb5kdc/ или SELinux/AppArmor.

5. Функциональная проверка (клиентский тест)

Статус active не гарантирует, что KDC отвечает корректно.

Протестируйте получение тикета:

# Получение TGT (замените REALM на ваш домен, например EXAMPLE.COM)
kinit admin@EXAMPLE.COM

# Проверка кэша тикетов
klist

# Проверка доступности KDC по сети
nc -zv <IP_KDC> 88
nc -zvu <IP_KDC> 88

Если kinit возвращает Cannot contact any KDC for realm...:

  1. Проверьте /etc/krb5.conf (секции [realms], [domain_realm]).
  2. Убедитесь, что файрвол не блокирует 88/tcp и 88/udp.
  3. Проверьте резолв имени хоста KDC.

Управление службой

sudo systemctl start krb5kdc      # запуск
sudo systemctl restart krb5kdc    # перезапуск (после правки конфига)
sudo systemctl stop krb5kdc       # остановка
sudo systemctl enable krb5kdc     # автозапуск при загрузке
sudo systemctl disable krb5kdc    # отключение автозапуска

Важно:

После изменения /etc/krb5.conf или /var/kerberos/krb5kdc/kdc.conf всегда выполняйте restart, а не reload (KDC не перечитывает конфигурацию на лету).


Типичные проблемы и решения

Симптом Вероятная причина Решение
Failed to start Kerberos KDC Отсутствует БД или неверные права kdb5_util create -r REALM -s (только при чистой установке!)
Active: failed (Result: exit-code) Ошибка в kdc.conf или krb5.conf Проверьте синтаксис: krb5kdc -d (запуск в фоне отладки)
Clock skew too great Время на клиенте и KDC различается >5 мин Настройте chronyd/ntpd на всех узлах
Port 88 already in use Другая служба занимает порт или предыдущий процесс "завис" sudo fuser -k 88/tcp 88/udp, затем restart
SELinux блокирует запуск Audit log показывает denied sudo ausearch -m avc -ts recent | audit2allow -M krb5fixsemodule -i krb5fix.pp

Чек-лист быстрой диагностики

  1. systemctl status krb5kdcactive (running)?
  2. sudo ss -tulnp | grep :88 → порты слушаются?
  3. sudo journalctl -u krb5kdc -n 20 → нет error/failed?
  4. kinit user@REALM → тикет получен без ошибок?
  5. chronyc tracking или ntpq -p → время синхронизировано (offset < 1 сек)?

Рекомендации по эксплуатации

  • Включите ротацию логов через logrotate (обычно уже настроена в пакете krb5-kdc).
  • Никогда не запускайте krb5kdc -d в production надолго: выводит всё в stdout, забивает логи, снижает производительность.
  • Регулярно делайте бэкап /var/kerberos/krb5kdc/ (файлы principal, principal.kadm5, stash).
  • Используйте kprop или репликацию KDC для отказоустойчивости в крупных средах.

Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.