Подробный гайд по развёртыванию и настройке 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.10PTRзапись: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 для отказоустойчивости
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.