Kerberos — сетевая служба аутентификации, основанная на одноименном протоколе аутентификации, Аутентификация через Kerberos является фактическим стандартом аутентификации доменных пользователей, и применяется в Windows Active Directiry, Samba AD DC, FreeIPA, Astra Linux Directory (ALD). В Linux-системах существуют две основные реализаций Kerberos - MIT и Heimdal. В ОС Astra Linux (и далее в примерах этой статьи) используется MIT Kerberos. При описании работы Kerberos применяются некоторые специфические термины:
|
Все серверы и клиенты, участвующие в работе Kerberos, должны иметь возможность коммуницировать друг с другом, и иметь точные показания системных часов.
Далее в примере используются
В терминологии Kerberos домену соответствует область (realm), которая обозначается заглавными буквами. Для домена astradomain.ru это будет область ASTRADOMAIN.RU
Сервис Kerberos следует устанавливать в сети, в которой уже настроена служба DNS. Каждому серверу, входящему в область Kerberos, должно быть присвоено Полное Квалифицированное Доменное Имя (Fully Qualified Domain Name, FQDN).
Настроенный DNS-сервис должен обеспечивать прямое и обратное (реверсивное) разрешение FQDN (для отключения реверсивного разрешения можно в файле конфигурации клиента krb5.conf установить переменной rdns начение false)
Проверить настройку прямого и обратного разрешения имён можно командами:
nslookup <FQDN_имя_сервера> |
(для использования команды nslookup следует установить пакет dnsutils: apt install dnsutils)
Для проверки доступности компьютеров можно использовать команду ping:
ping kerberos.astradomain.ru |
Протокол Kerberos требует соответствия показаний часов всех клиентов и серверов, и при рассинхронизации часов аутентификация становится невозможной.
Простой и стандартный путь обеспечения синхронизации - использование сервиса Network Time Protocol (NTP).
Пакеты сервиса Kerberos входят в стандартные дистрибутивы ОС ОН Орёл и ОС СН Смоленск, и могут быть установлены с помощью графического менеджера пакетов,
или из командной строки командой
apt install krb5-kdc krb5-admin-server krb5-user |
При установке выдаётся предупреждение о том, что пакет не настроен, которое пока можно проигнорировать.
После установки сервис автоматически не запускается, и должен быть настроен для запуска.
При установке пакета будет создан файл конфигурации сервиса /etc/krb5kdc/kdc.conf со стандартным содержимым, в котором автоматически будет указано имя области Kerberos, полученное из FQDN сервера, на котором выполняется установка:
[kdcdefaults] [realms] |
Kerberos использует для контроля доступа к администрированию сервиса Списки Управления Доступом (Access Control List, ACL) .
По умолчанию, список располагается в файле /etc/krb5kdc/kadm5.acl.
Для примера, создадим файл /etc/krb5kdc/kadm5.acl, дающий неограниченные права любому принципалу, чьё имя заканчивается на /admin:
*/admin@ASTRADOMAIN.RU * |
И создадим новую область Kerberos командой:
krb5_newrealm |
При выполнении команды нужно будет ввести и подтвердить пароль администратора, после чего будут автоматически созданы нужные базы данных.
Далее, для выполнения задач по администрированию сервиса Kerberos нужно создать принципала с правами администратора.
Для этого используем инструмент командной строки kadmin.local, предназначенный для администрировния Kerberos на локальном компьютере.
При использовании инструмента kadmin.local подразумевается, что этот инструмент вызывается с защищенного сервера Kerberos, |
Инструмент вызывается из командной строки командой
kadmin.local |
После вызова инструмента можно ввести симовл "вопросительный знак", в ответ на это будет выдана подсказка по списку команд.
Добавим нового принципала admin/admin командой addprinc:
kadmin.local: addprinc admin/admin |
После ввода команды будет запрошен пароль для создаваемого принципала.
Выход из инструмента kadmin.local осуществляется командой quit.
После создания принципала admin/admin его можно использовать для администрирования сервера Kerberos с удалённых компьютеров с помощью инструмента командной строки kadmin.
Этот инструмент аналогичен инстрменту kadmin.local, однако рассчитан на удалённое подключение, и требует авторизации пользователя через указание принципала и ввод пароля:
kadmin -p admin/admin |
Для автоматического получения клиентами адреса сервера Kerberos можно использовать специальные настройки сервера DNS: служебные записи (SRV-записи).
Пример таких записей для службы Kerberos см. в статье про сервер DNS
Клиентский пакет Kerberos krb5-user входит в дистрибутивы ОС ОН Орёл и ОС СН Смоленск, но по умолчанию не устанавливается. Пакет может быть установлен с помощью графического менеджера пакетов,
или из командной строки командой
apt install krb5-user |
При установке пакета krb5-user, кроме самого пакета, автоматически будет установлен пакет krb5-config для настройки клиента
Настройка клиентов
Если Kerberos предполагается использовать с контроллером домена Samba AD DC, |
Настройка клиента Kerberos выполняется командой
dpkg-reconfigure krb5-config |
При этом команда
После завершения работы программы настройки результат настройки можно проверить получением принципала.
Команда kinit должна выполняться без ошибок:
kinit admin/admin |
Проверить содержимое полученного принципала можно командой
klist |
Для обеспечения возможности авторизации пользователей через Kerberos требуется дополнительно установить пакет libpam-krb5:
apt install libpam-krb5 |
После установки пакета необходимые модули авторизации будут автоматически добавлены в стек авторизации PAM.