Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Special Edition РУСБ.10015-16 исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
- Astra Linux Common Edition 2.12
Kerberos — сетевая служба аутентификации, основанная на одноименном протоколе аутентификации,
предлагающем механизм взаимной аутентификации клиента и сервера перед установлением связи между ними с учётом того факта,
что начальный обмен информацией происходит в незащищенной среде, а передаваемые пакеты могут быть перехвачены и модифицированы.
Аутентификация через Kerberos является фактическим стандартом аутентификации доменных пользователей, и применяется в Windows Active Directory, Samba AD DC, FreeIPA, Astra Linux Directory (ALD).
В Linux-системах существуют две основные реализаций Kerberos - MIT и Heimdal. В ОС Astra Linux (и далее в примерах этой статьи) используется MIT Kerberos (см. также Samba с поддержкой Heimdal Kerberos в Astra Linux Special Edition 1.6).
При описании работы Kerberos применяются некоторые специфические термины:
- Область (realm) - область (области), обслуживаемые сервисом. Примерно соответствует термину "домен";
- Принципал - учетная запись Kerberos, с соответствующим набором прав. Примерно соответствует термину "пользователь". Но, при этом, пользователь может получать разные наборы прав от Kerberos (разные принципалы).
Подготовка к установке
Все серверы и клиенты, участвующие в работе Kerberos, должны иметь возможность коммуницировать друг с другом, и иметь точные показания системных часов.
Далее в примере используются
- условное имя домена astradomain.ru;
- условное имя сервера kdc.astradomain.ru.
В терминологии Kerberos домену соответствует область (realm), которая обозначается заглавными буквами. Для домена astradomain.ru это будет область ASTRADOMAIN.RU
Имена и доступность компьютеров
Сервис Kerberos следует устанавливать в сети, в которой уже настроена служба DNS. Каждому серверу, входящему в область Kerberos, должно быть присвоено Полное Квалифицированное Доменное Имя (Fully Qualified Domain Name, FQDN).
Настроенный DNS-сервис должен обеспечивать прямое и обратное (реверсивное) разрешение FQDN (для отключения реверсивного разрешения можно в файле конфигурации клиента krb5.conf установить переменной rdns значение false)
Проверить настройку прямого и обратного разрешения имён можно командами:
nslookup <IP_адрес_сервера>
Синхронизация времени
Протокол Kerberos требует соответствия показаний часов всех клиентов и серверов, и при рассинхронизации часов аутентификация становится невозможной.
Простой и стандартный путь обеспечения синхронизации - использование сервиса Network Time Protocol (NTP).
Настройка сервера
Установка пакетов
Пакеты сервиса Kerberos входят в стандартные дистрибутивы Astra Linux, и могут быть установлены с помощью графического менеджера пакетов,
или из командной строки командой
После установки сервис автоматически не запускается, и должен быть настроен для запуска.
Настройка
При установке пакета будет создан файл конфигурации сервиса /etc/krb5kdc/kdc.conf со стандартным содержимым, в котором автоматически будет указано имя области Kerberos, полученное из FQDN сервера, на котором выполняется установка:
[kdcdefaults]
kdc_ports = 750,88
[realms]
ASTRADOMAIN.RU = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
kdc_ports = 750,88
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = des3-hmac-sha1
#supported_enctypes = aes256-cts:normal aes128-cts:normal
default_principal_flags = +preauth
}
Kerberos использует для контроля доступа к администрированию сервиса Списки Управления Доступом (Access Control List, ACL) .
По умолчанию, список располагается в файле /etc/krb5kdc/kadm5.acl.
Для примера, создадим файл /etc/krb5kdc/kadm5.acl, дающий неограниченные права любому принципалу, чьё имя заканчивается на /admin:
И создадим новую область Kerberos командой:
Далее, для выполнения задач по администрированию сервиса Kerberos нужно создать принципала с правами администратора.
Для этого используем инструмент командной строки kadmin.local, предназначенный для администрирования Kerberos на локальном компьютере.
При использовании инструмента kadmin.local подразумевается, что этот инструмент вызывается с защищенного сервера Kerberos,
поэтому инструмент не требует логинов и паролей, и автоматически получает все полномочия для администрирования сервиса Kerberos.
Инструмент вызывается из командной строки командой
kadmin.local
После вызова инструмента можно ввести символ "вопросительный знак", в ответ на это будет выдана подсказка по списку команд.
Добавим нового принципала admin/admin командой addprinc:
После ввода команды будет запрошен пароль для создаваемого принципала.
Выход из инструмента kadmin.local осуществляется командой quit.
После создания принципала admin/admin его можно использовать для администрирования сервера Kerberos с удалённых компьютеров с помощью инструмента командной строки kadmin.
Этот инструмент аналогичен инструменту kadmin.local, однако рассчитан на удалённое подключение, и требует авторизации пользователя через указание принципала и ввод пароля:
Настройка DNS для автоматизации подключения клиентов
Для автоматического получения клиентами адреса сервера Kerberos можно использовать специальные настройки сервера DNS: служебные записи (SRV-записи).
Пример таких записей для службы Kerberos см. в статье про сервер DNS
Настройка клиентов
Установка пакетов
Клиентский пакет Kerberos krb5-user входит в дистрибутивы Astra Linux, но по умолчанию не устанавливается. Пакет может быть установлен с помощью графического менеджера пакетов, или из командной строки командой
Настройка
Если Kerberos предполагается использовать с контроллером домена Samba AD DC,
для настройки клиентов следует использовать копию конфигурационного файла /var/lib/samba/krb5.conf,
автоматически создаваемого при процедуре назначения Samba
Кроме того, в сети должны быть правильно настроены и работать службы DNS и DHCP (см. DHCP: служба isc-dhcp-server и DHCP: служба kea).
Настройка клиента Kerberos выполняется командой
- Попросит указать имя домена (в нашем примере - ASTRADOMAIN.RU);
- Задаст вопрос о необходимости указать сервер(ы) Kerberos в файле конфигурации клиента /etc/krb5.conf.
Если ответить "да", то программа попросит ввести имена сервера (серверов) Kerberos
Если DNS уже настроен (см "Настройка DNS для автоматизации подключения клиентов"), можно просто ответить "нет".
После завершения работы программы настройки результат настройки можно проверить получением принципала. Команда kinit должна выполняться без ошибок:
Настройка аутентификации клиентов через Kerberos
Для обеспечения возможности аутентификации пользователей через Kerberos требуется дополнительно установить пакет libpam-krb5: