Данная статья применима к:

  • 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 <FQDN_имя_сервера>
nslookup <IP_адрес_сервера>
Для использования команды nslookup следует установить пакет dnsutils:
sudo apt install dnsutils
Для проверки доступности компьютеров можно использовать команду ping:
ping kerberos.astradomain.ru

Синхронизация времени

Протокол Kerberos требует соответствия показаний часов всех клиентов и серверов, и при рассинхронизации часов аутентификация становится невозможной.
Простой и стандартный путь обеспечения синхронизации - использование сервиса Network Time Protocol (NTP).

Настройка сервера

Установка пакетов

Пакеты сервиса Kerberos входят в стандартные дистрибутивы Astra Linux, и могут быть установлены с помощью графического менеджера пакетов,
или из командной строки командой

sudo apt install krb5-kdc krb5-admin-server krb5-user
При установке выдаётся предупреждение о том, что пакет не настроен, которое пока можно проигнорировать.

После установки сервис автоматически не запускается, и должен быть настроен для запуска.

Настройка

При установке пакета будет создан файл конфигурации сервиса /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:

*/admin@ASTRADOMAIN.RU *

И создадим новую область Kerberos командой:

krb5_newrealm
При выполнении команды нужно будет ввести и подтвердить пароль администратора, после чего будут автоматически созданы нужные базы данных.

Далее, для выполнения задач по администрированию сервиса Kerberos нужно создать принципала с правами администратора.
Для этого используем инструмент командной строки kadmin.local, предназначенный для администрирования Kerberos на локальном компьютере.

При использовании инструмента kadmin.local подразумевается, что этот инструмент вызывается с защищенного сервера Kerberos,
поэтому инструмент не требует логинов и паролей, и автоматически получает все полномочия для администрирования сервиса Kerberos.

Инструмент вызывается из командной строки командой 

kadmin.local

После вызова инструмента можно ввести символ "вопросительный знак", в ответ на это будет выдана подсказка по списку команд.

Добавим нового принципала admin/admin командой addprinc:

kadmin.local: addprinc admin/admin

После ввода команды будет запрошен пароль для создаваемого принципала.

Выход из инструмента kadmin.local осуществляется командой quit.

После создания принципала admin/admin его можно использовать для администрирования сервера Kerberos с удалённых компьютеров с помощью инструмента командной строки  kadmin.
Этот инструмент аналогичен инструменту kadmin.local, однако рассчитан на удалённое подключение, и требует авторизации пользователя через указание принципала и ввод пароля:

kadmin -p admin/admin

Настройка DNS для автоматизации подключения клиентов

Для автоматического получения клиентами адреса сервера Kerberos можно использовать специальные настройки сервера DNS: служебные записи (SRV-записи).
Пример таких записей для службы Kerberos см. в статье про сервер DNS

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

Установка пакетов

Клиентский пакет Kerberos krb5-user входит в дистрибутивы Astra Linux, но по умолчанию не устанавливается. Пакет может быть установлен с помощью графического менеджера пакетов, или из командной строки командой

sudo apt install krb5-user
При установке пакета krb5-user, кроме самого пакета, автоматически будет установлен пакет krb5-config для настройки клиента

Настройка

Если Kerberos предполагается использовать с контроллером домена Samba AD DC,
для настройки клиентов следует использовать копию конфигурационного файла /var/lib/samba/krb5.conf, 
автоматически создаваемого при процедуре назначения Samba
Кроме того, в сети должны быть правильно настроены и работать службы DNS и DHCP (см. DHCP: служба isc-dhcp-server и DHCP: служба kea).

Настройка клиента Kerberos выполняется командой

sudo dpkg-reconfigure krb5-config
При этом команда

  • Попросит указать имя домена (в нашем примере - ASTRADOMAIN.RU);
  • Задаст вопрос о необходимости указать сервер(ы) Kerberos в файле конфигурации клиента /etc/krb5.conf.
    Если ответить "да", то программа попросит ввести имена сервера (серверов) Kerberos 
    Если DNS уже настроен (см "Настройка DNS для автоматизации подключения клиентов"), можно просто ответить "нет".

После завершения работы программы настройки результат настройки можно проверить получением принципала. Команда kinit должна выполняться без ошибок:

kinit admin/admin
Проверить содержимое полученного принципала можно командой
klist

Настройка аутентификации клиентов через Kerberos

Для обеспечения возможности аутентификации пользователей через Kerberos требуется дополнительно установить пакет libpam-krb5:

sudo apt install libpam-krb5
После установки пакета необходимые модули аутентификации будут автоматически добавлены в стек авторизации PAM.


  • No labels