Подробный гайд по развёртыванию и настройке Kerberos 5 (MIT) в ALT Linux

Пошаговая настройка Kerberos 5 в ALT Linux: установка KDC, конфигурация клиентов, управление принципалами, интеграция с PAM/SSSD

2026.05.26                  


Подробный гайд по развёртыванию и настройке Kerberos 5 (MIT) в ALT LinuxПодробный гайд по развёртыванию и настройке Kerberos 5 (MIT) в ALT Linux

1. Архитектура и базовые понятия

Компонент Описание
KDC (Key Distribution Center) Сервер аутентификации (AS + TGS). Включает krb5-kdc и krb5-kadmin
Realm Логическая область аутентификации (обычно DOMAIN.COM, заглавными буквами)
Principal Учётная запись в Kerberos (пользователь, хост, служба)
Keytab Файл с зашифрованными ключами принципала для служб
Ticket Временный маркер доступа (TGT → Service Ticket)

2. Подготовка системы

2.1. Сетевые требования

# Статический IP, корректное FQDN
hostnamectl set-hostname kdc.example.com
echo "192.168.1.10 kdc.example.com kdc" >> /etc/hosts

DNS обязателен:

  • A/AAAA запись: kdc.example.com → 192.168.1.10
  • PTR запись: 192.168.1.10 → kdc.example.com

2.2. Синхронизация времени (критично для Kerberos)

apt-get install chrony
systemctl enable --now chronyd
chronyc tracking
# Разница с NTP-сервером не должна превышать ±1 минуту

2.3. Открытие портов

# firewall-cmd (если используется firewalld)
firewall-cmd --permanent --add-port={88/tcp,88/udp,749/tcp,749/udp,464/tcp,464/udp}
firewall-cmd --reload

3. Установка пакетов (KDC + утилиты)

apt-get update
apt-get install krb5-kdc krb5-kadmin krb5-workstation krb5-libs
# Для интеграции с PAM/SSSD (позже):
# apt-get install sssd sssd-krb5 pam_krb5

4. Настройка KDC (сервер)

Все конфиги находятся в /etc/ или /var/kerberos/. Пути стандартные для MIT Kerberos.

4.1. /etc/krb5.conf (общий клиентский/серверный конфиг)

[libdefaults]
    default_realm = EXAMPLE.COM
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false

[realms]
    EXAMPLE.COM = {
        kdc = kdc.example.com:88
        admin_server = kdc.example.com:749
        default_domain = example.com
    }

[domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM

Замените EXAMPLE.COM на ваш домен (всегда ЗАГЛАВНЫМИ).


4.2. /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
    kdc_ports = 88
    kdc_tcp_ports = 88

[realms]
    EXAMPLE.COM = {
        database_name = /var/kerberos/krb5kdc/principal
        admin_keytab = FILE:/var/kerberos/krb5kdc/kadm5.keytab
        acl_file = /var/kerberos/krb5kdc/kadm5.acl
        key_stash_file = /var/kerberos/krb5kdc/.k5.EXAMPLE.COM
        max_life = 24h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        supported_enctypes = aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal
    }

4.3. /var/kerberos/krb5kdc/kadm5.acl

*/admin@EXAMPLE.COM *

Разрешает любым принципалам с суффиксом /admin полный доступ через kadmin.


4.4. Создание базы данных и запуск

# Создание БД (запросит master password)
kdb5_util create -s

# Права на файлы KDC
chown -R krb5:krb5 /var/kerberos/krb5kdc/
chmod 600 /var/kerberos/krb5kdc/.k5.EXAMPLE.COM

# Запуск служб
systemctl enable --now krb5-kdc krb5-kadmin
systemctl status krb5-kdc krb5-kadmin

5. Настройка клиента

На клиентских машинах достаточно /etc/krb5.conf (тот же, что выше) и пакета krb5-workstation.

# Тест аутентификации
kinit admin/admin@EXAMPLE.COM
# Введите пароль
klist
# Должен отобразиться TGT

6. Управление принципалами

Входите в kadmin.local только на сервере KDC (без пароля):

kadmin.local
Команда Описание
addprinc user1@EXAMPLE.COM Создать пользователя
addprinc -randkey host/kdc.example.com@EXAMPLE.COM Служебный принципал для хоста
ktadd -k /etc/krb5.keytab host/kdc.example.com@EXAMPLE.COM Экспорт в keytab
modprinc -maxlife 8h user1@EXAMPLE.COM Изменить время жизни билета
deleteprinc user1@EXAMPLE.COM Удалить принципал
quit Выход

Важно:

kadmin (удалённый) требует аутентификации через /admin. Используйте его на клиентах.


7. Интеграция с системой (PAM/SSSD)

7.1. Установка SSSD + Kerberos

apt-get install sssd sssd-krb5 pam_krb5

7.2. /etc/sssd/sssd.conf

[sssd]
services = nss, pam
config_file_version = 2
domains = EXAMPLE.COM

[domain/EXAMPLE.COM]
id_provider = files
auth_provider = krb5
krb5_realm = EXAMPLE.COM
krb5_server = kdc.example.com
krb5_kpasswd = kdc.example.com
chmod 600 /etc/sssd/sssd.conf
systemctl enable --now sssd

7.3. Включение Kerberos в PAM

В ALT Linux рекомендуется использовать pam-config или ручную правку /etc/pam.d/system-auth:

pam-config --add --krb5
# Или вручную добавить в system-auth:
# auth    sufficient  pam_krb5.so use_first_pass
# account sufficient  pam_krb5.so
# session optional    pam_krb5.so

8. Безопасность и рекомендации

Аспект Рекомендация
Мастер-пароль KDC Храните в сейфе, не используйте его для daily-операций
Шифрование Отключите des-cbc-md5 и rc4-hmac в kdc.conf
Логи /var/log/krb5kdc.log, /var/log/kadmind.log (создайте и дайте права krb5)
Резервное копирование kdb5_util dump /backup/krb5.dump
Сеть Ограничьте доступ к портам 88/749 только доверенным подсетям

9. Диагностика и типовые ошибки

Симптом Причина Решение
kinit: Clock skew too great Рассинхронизация времени chronyc makestep или настройка chrony.conf
kinit: Cannot contact any KDC DNS/сеть/фаервол dig kdc.example.com, ss -tulnp | grep :88
kinit: Preauthentication failed Неверный пароль/принципал kadmin.local: getprinc user1@REALM
kadmin: GSS-API error Нет прав или time sync Проверьте /kadm5.acl, время, DNS
SSSD не аутентифицирует Конфиг/права/SELinux journalctl -u sssd -f, sssd_debug_level = 0xFFF0

Полезные команды:

klist -e          # Показать билеты с типами шифрования
kvno host/kdc.example.com@EXAMPLE.COM  # Проверить ключ службы
systemctl status krb5-kdc -l
journalctl -u krb5-kdc --since "1 hour ago"

10. Дальнейшие шаги

  • Интеграция с LDAP/FreeIPA для централизованного управления пользователями
  • Настройка SPNEGO для веб-серверов (Apache/Nginx)
  • Настройка GSSAPI для SSH (GSSAPIAuthentication yes)
  • Развёртывание вторичного KDC для отказоустойчивости

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