Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Ссылки по теме

О Kerberos

Kerberos - это протокол аутентификации, который использует комбинацию криптографии и третьей доверенной стороны для безопасной аутетификации по сети через недоверенный канал передачи данных. Дополнительная информация о протоколе Kerberos доступна на сайте MIT's Kerberos site. Статья Designing an Authentication System представляет собой оипсание принципов, лежащих в основе схеме аутентификации Kerberos.

Эта статья предназначена для системных администраторов, которые хотят настроить Kerberos-аутентификацию с использованием токенов Рутокен.

Существует несколько имплементаций Kerberos. Эта статья предлагает инструкцию по настройке MIT версии, которая есть в репозиториях большинства современных дистрибутивов Linux. Настройке Heimdal версии похожа по принципам, но отличается синтаксисом некоторых команд.

Microsoft's Active Directory - это одна из закрытых реализаций Kerberos аутентификации. Данная инструкция содержит несколько советов по конфигурации интеграции с Active Directory. В среде Active, KDC это обычно один из сервисов предоставляемы Domain Controller (DC). Если вы хотите настроить интеграцию с Active Directory Domain, то вы можете переходить к разделу Настройка клиента.

Перед установкой

Центральной частью схемы аутентификации Kerberos является третья доверенная сторона - Key Distribution Center (KDC), которая является централизованным хранилище информации о пользователях. Перед разворачиванием Kerberos, должен быть выбран сервер, который будет выполнять роль KDC. Физическая и сетевая безопасность критичны для этого сервера, так как его компрометация ведет к компрометации всего realm.   

Выбор хорошего имени для realm так же важен. По правилам, имя realm это доменное имя сайта в верхнем регистре. Например, для сайта или доменной зоны example.com рекомендуется выбрать EXAMPLE.COM в качестве имени realm.

Параметры стенда

Данная инструкция была протестирована для сервера и клиента работающих под управлением Astra Linux 1.4.

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

В случае возникновения проблем при настройке - обращайтесь в службу технической поддержки.

  • <username> = testuser
  • <realm> = AKTIV-TEST.RU
  • <server> = server.aktiv-test.ru
  • <client> = client.aktiv-test.ru

Предварительные требования

Все серверы и клиенты, которые входят в realm Kerberos должны иметь возможность взаимодействовать между собой. Время между устройствами в realm должно быть синхронизовано. Далее описано как этого добиться.

Host Names

Каждый сервер внутри Kerberos realm должен иметь Fully Qualified Domain Name (FQDN).   

Kerberos так же ожидает, что FQDN сервера является reverse-resolvable. Если выяснение доменного имени по IP недостпно, то установите значение переменной rdns в значение false на клиентах в файле krb5.conf

Note

Active Directory сильно зависит от DNS, поэтому весьма вероятно что ваш Active Directory Domain Controller уже имеет роль DNS. В этом случае убедитесь в том, что каждый сервер имеет свое FQDN перед выполнением тестов, описанных ниже в этом разделе.

Если сервер уже имеет назначенное FQDN, проверьте коректность обнаружение forward и reverse выполнив на клиенте следующие команды:   

 

Code Block
languagebash
$ nslookup server.example.com
 
$ nslookup <server ip address>

  

Note

Если вы используете Astra Linux (или другой дистрибутив), то для установки программы nslookup, вам необходимо установить пакет dnsutils.

Вы можете воспользоваться Synaptic Package Manager или выполнить из командной строки  $ apt-get install dnsutils

Вывод первой команды должен содержать IP адрес сервера. Вывод второй команды должен содержать FQDN сервера.   

Если у сервера нет назначенного FQDN и сервис DNS не доступен, то вы можете отредактировать локальные файлы hosts (обычно они находятся в /etc) на каждом сервере и клиенте добавив туда следующую строку: 

 127.0.0.1 linuxwork.example.com localhost linuxwork

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

Наличие соединения

Для проверки соединения между хостави выполните ping для каждого хоста по его FQDN:  

Code Block
languagebash
$ ping kerberos.example.com
 
PING kerberos.example.com (10.0.0.1) 56(84) bytes of data.
64 bytes from kerberos.example.com (10.0.0.1): icmp_seq=1 ttl=128 time=0.176ms

Вывод комнады ping показывает успешное определение IP адреса по FQDN, и простой ответ от сервера. Ответ от сервера является подтверждением того, что между хостом и сервером есть соединение.   

Проблемы при работе ping указывают на проблемы настройки сервера или клиента.

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

Протокол Kerberos требует синхронизации времени сервера и клиента: если системные часы клиентов и сревера расходятся, то аутентификация не будет выполнена. Простейший способ синхронизировать системные часы - использование Network Time Protocol (NTP) сервера. Astra Linux 1.4 по-умолчанию синхронизует время с российскими NTP-серверами. Для настройки собственного NTP-сервера смотрите документацию на ваш дистрибутив (например, UbuntuTime для Ubuntu).   

Note
Active Directory Domain Controllers обычно так же являются NTP серверами.

Брандмауэры

Так же как и все остальные сетевые службы, Kerberos должен иметь возможность проходить через любые брандмауеры между хостами. Инструкция Kerberos System Administration Manual имеет детальное описание портов, которые необходимо открыть при настройке брандмауэров.

Установка KDC

Setup

Для установки KDC выполните следующие команды на сервере

 
Code Block
languagebash
$ sudo apt-get install krb5-kdc krb5-admin-server

Эти пакеты доступны в основном репозитории.  

Конфигурационный файл KDC по-умолчанию находится в /etc/krb5kdc/kdc.conf.
Важные настройки - локальные файлы KDC и настройки времени, в течении которого тикеты являются валидными. Вы должны настроить имя realm. Остальные параметры должны изменяться только пользователями, которые понимают на что они влияют.  

Here is an example configuration file:                    

 

Ниже представлен пример конфигурационного файла /etc/krb5kdc/kdc.conf для нашего случая: 

Code Block
languagebash
 [kdcdefaults]
 
         kdc_ports = 750,88
 
         default_realm = 
EXAMPLE
AKTIV-TEST.
COM
RU
 
 
 

 [realms]
 EXAMPLE.COM
 AKTIV-TEST.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 = des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm
 
     default_principal_flags = +preauth
 }

  

Kerberos uses an
 }
 [logging]
     kdc = FILE:/var/local/krb5kdc/kdc.log
     admin_server = FILE:/var/local/krb5kdc/kadmin.log

Если вы используете настройки для логирования, показанные выше, то вам необходимо выполнить

Code Block
languagebash
$ sudo mkdir /var/local/krb5kdc

для создания каталога, в который будут сохраняться логи.

Note
Мы настоятельно рекомендуем настроить пути для логирования. Это поможет вам диагностировать проблемы и ошибки при настройке и работе Kerberos


Kerberos использует Access Control List (ACL) to specify the per-principal access rights to the для определения прав доступа к Kerberos admin daemon. This file's default location is По-умолчанию этот файл находится в /etc/krb5kdc/kadm5.acl. The default as shown below is sufficient for most realms, but additional ACLs may be necessary depending on the network configurationСодержание файла по-умолчанию подходит для большинства realm, однако вам могут понадобится дополнительные записи в этом файле, в зависимости от конфигурации сети.  

 
 # This file is the access control list for krb5 administration.
 # When this file is edited run /etc/init.d/krb5-admin-server restart to activate
 # One common way to set up Kerberos administration is to allow any principal
 # ending in /admin  is given full administrative rights.
 # To enable this, uncomment the following line:
 */admin@EXAMPLE.COM    *

  

Create the Kerberos database with the following commandСоздайте базу данных Kerberos используя команду:    

 

 $ krb5_newrealm

toc 

maxLevel4

 

Table of Contents
maxLevel4