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

Обновлено: 21.11.2024

Как установить и настроить сервер и клиент Kerberos в Linux?

В этом посте мы рассмотрим, как установить и настроить сервер и клиент Kerberos в Linux.

Kerberos — это система аутентификации с открытым исходным кодом, разработанная в Массачусетском технологическом институте. Многие системы больших данных используют Kerberos в сетевой безопасности для обмена данными между серверами. Он работает в системе на основе билетов, чтобы снизить вероятность перехвата или кражи паролей.

Давайте посмотрим, как мы можем установить, настроить и настроить Kereros в кластере. Мы установим сервер Kerberos на одну машину. И клиент Kerberos на остальных машинах.

Шаг 1. Установите клиент Kerberos

Нам нужно установить клиент Kerberos на все узлы или машины в кластере

Шаг 2. Установите сервер Kerberos

Сервер Kerberos может быть установлен на главном узле. Но это не строгое правило. Кроме того, его можно установить на любой сервер в кластере.

Шаг 3. Настройка Kerberos

В рамках настройки нам потребуется внести изменения в два файла —

3.1 kdc.conf Изменения:

В выделенном используйте собственное имя Realm. В нашем примере мы выбираем имя Realm как TESTREALM.LOCAL

3.2 krb5.conf Изменения:

Значения, которые нужно изменить, отмечены цифрами 1, 2, 3 и 4 (см. ниже).

1,2 говорят сами за себя

3, 4 говорит о том, какие машины являются частью нашего Царства. например, любая машина с именем хоста g1.testdomain.local , abc.testdomain.local , gk.testdomain.local , а также testdomain.local сопоставляется с TESTREALM.LOCAL .

Шаг 4. Создание базы данных Kerberos KDC:

На этом шаге мы создадим базу данных KDC — центра распространения ключей. Эта база данных используется сервером Kerberos. Так что это важный момент в наших этапах установки.

Попросится установить мастер-пароль. Следуйте инструкциям и запишите пароль. Этот пароль необходим для любых действий, связанных с базой данных KDC, таких как перезапуск или любые последующие изменения базы данных и т. д.

Kerberos – это протокол аутентификации, использующий комбинацию криптографии с секретным ключом и доверенных третьих сторон для обеспечения безопасной аутентификации сетевых служб в ненадежных сетях. Дополнительную информацию о протоколе Kerberos можно найти на сайте Kerberos Массачусетского технологического института. «Проектирование системы аутентификации» — доступное введение в принципы схемы аутентификации Kerberos.

Это руководство призвано дополнить документацию, доступную в официальной документации Ubuntu, путем более подробного повторения некоторых ключевых понятий и предоставления информации о конфигурации сетевых служб. Он предназначен для системных администраторов, которым необходимо дополнить свое понимание Kerberos и его расширенной настройки.

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

Active Directory от Microsoft — это обычная реализация области проверки подлинности Kerberos с закрытым исходным кодом. Следующее руководство содержит несколько примечаний, в которых содержится конкретная информация о конфигурации Active Directory. В среде Active Directory KDC обычно является одной из служб, предоставляемых контроллером домена (DC). Читатели, желающие интегрироваться с доменом Active Directory, могут сразу перейти к разделу «Конфигурация клиента».

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

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

Имена хостов

Каждому серверу в области проверки подлинности Kerberos должно быть присвоено полное доменное имя (FQDN), допускающее прямое разрешение.

Кроме того, Kerberos предполагает обратное разрешение полного доменного имени сервера. Если обратное разрешение имени домена недоступно, установите для переменной rdns значение false в клиентском krb5.conf

Примечание. Active Directory сильно зависит от DNS, поэтому вполне вероятно, что на контроллере домена Active Directory также работает пакет DNS-сервера Microsoft. В этом случае убедитесь, что каждому серверу назначено полное доменное имя, прежде чем выполнять тесты, описанные в этом разделе.

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

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

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

Проверьте разрешение локального DNS-имени с помощью метода nslookup, описанного в начале раздела.

Связь

Чтобы проверить подключение между хостами, отправьте эхо-запрос на полное доменное имя каждого хоста:

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

Сбои подключения при эхо-тестировании полного доменного имени KDC обычно указывают на ошибки конфигурации DNS-сервера или клиента. Информацию о правильных сетевых настройках см. в разделе «Конфигурация сети».

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

Протокол Kerberos требует, чтобы время клиента и сервера совпадало: если системные часы клиента не совпадают с часами сервера, аутентификация завершится ошибкой. Самый простой способ синхронизировать системные часы — использовать сервер протокола сетевого времени (NTP). Подробности смотрите в UbuntuTime.

Примечание. Контроллеры домена Active Directory обычно также являются серверами NTP.

Брандмауэры

Как и всем сетевым службам, протоколу Kerberos должно быть разрешено проходить через любые брандмауэры между хостами. В Руководстве по системному администрированию Kerberos есть подробный раздел по этой теме.

Эти пакеты доступны в основном репозитории. Дополнительные сведения об установке программного обеспечения, репозиториях и управлении пакетами см. в разделе Установка программного обеспечения.

  • отключить режим совместимости с Kerberos 4
  • не запускайте krb524d (демон для преобразования билетов Kerberos между версиями)
  • для остальных параметров допустимы значения по умолчанию

По умолчанию файл конфигурации KDC находится в /etc/krb5kdc/kdc.conf. Важными параметрами являются расположение файлов данных KDC и параметры по умолчанию для продолжительности действия билетов. Имя области должно быть настроено; другие параметры конфигурации должны изменяться только опытными пользователями.

Вот пример файла конфигурации:

Kerberos использует список управления доступом (ACL) для указания прав доступа каждого участника к демону администрирования Kerberos. Расположение этого файла по умолчанию — /etc/krb5kdc/kadm5.acl. По умолчанию, как показано ниже, достаточно для большинства областей, но в зависимости от конфигурации сети могут потребоваться дополнительные ACL.

Создайте базу данных Kerberos с помощью следующей команды:

Руководители

Субъекты — это записи в базе данных Kerberos, представляющие пользователей или службы в сети. У каждого пользователя или службы, участвующих в области проверки подлинности Kerberos, должен быть участник, определенный в базе данных Kerberos.

Имена участников чувствительны к регистру.

Администрация области: kadmin

Область Kerberos администрируется с помощью утилиты kadmin. Утилита kadmin представляет собой интерактивный интерфейс, который позволяет администратору создавать, извлекать, обновлять и удалять участников области. kadmin можно запустить на любом компьютере, входящем в сферу Kerberos, при условии, что у пользователя есть соответствующие учетные данные. Однако из соображений безопасности лучше всего запускать kadmin на KDC.

Также доступна альтернативная программа kadmin.local. Запуск kadmin.local от имени пользователя root на KDC позволяет администратору пройти аутентификацию без существующего принципала. Обычно в правильно настроенной среде это не требуется.

Чтобы запустить утилиту kadmin, введите следующую команду:

с допустимым основным именем. По умолчанию участник admin/admin имеет административные права на область, поэтому для запуска kadmin в качестве администратора области используйте:

Введите ? и нажмите Enter в приглашении kadmin, чтобы просмотреть список допустимых команд.

Обычные задачи

Публикация информации о сфере через DNS

Настройку клиента можно упростить, опубликовав информацию о сфере Kerberos через DNS. Это достигается путем добавления записей SRV, указывающих на Kerberos KDC.

См. BIND9ServerHowto для получения информации о настройке служб DNS с помощью BIND.

При такой конфигурации DNS нет необходимости добавлять информацию в файл /etc/krb5.conf на клиентских компьютерах: программное обеспечение Kerberos должно получать всю необходимую информацию о сфере с DNS-сервера. Однако для утилиты kadmin по-прежнему требуются сопоставления [domain_realm].

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

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

Эти пакеты доступны в основном репозитории. Дополнительные сведения об установке программного обеспечения, репозиториях и управлении пакетами см. в разделе Установка программного обеспечения.

Конфигурация

krb5-config

Процесс установки krb5-config настраивает файл /etc/krb5.conf. Укажите имя вашей области, когда будет предложено ввести область по умолчанию. Если записи Kerberos SRV недоступны через DNS, в процессе установки будет запрошена основная информация о сфере Kerberos:

Замените полное доменное имя KDC на примеры ответов.

Ручная настройка: /etc/krb5.conf

Клиента Kerberos также можно настроить вручную, отредактировав /etc/krb5.conf. Этот подход позволяет лучше настраивать файл, но ему не хватает автоматизации пакета krb5-config. Конечный результат тот же. Ниже приведен пример конфигурации.

Чтобы проверить работу Kerberos, запросите билет на предоставление билетов (TGT) с помощью команды kinit, как показано ниже. Любой действительный участник Kerberos может быть заменен на «Администратор». Не указывайте имя области в команде, если директива default_realm правильно указана в файле /etc/krb5.conf или в записях DNS SRV.

Примечание. В названии области учитывается регистр символов.

Используйте команду klist, чтобы убедиться, что TGT действителен:

Если приведенные выше тесты работают, поздравляем! Вы успешно получили билет Kerberos. Этот билет можно использовать для доступа к сетевым службам, которые используют Kerberos для аутентификации.

Программа kinit попытается получить TGT для принципала @REALM.NAME, если она запущена без аргумента '-p', где указано имя локального пользователя и REALM. ИМЯ — это имя области по умолчанию, настроенное в /etc/krb5.conf

Освободите тестовый билет, введя команду kdestroy.

Kerberos часто используется в качестве источника для локальной аутентификации через модуль pam-krb5. Добавление этого модуля в стек PAM хоста позволяет пользователям проходить аутентификацию на локальном хосте, используя свой пароль Kerberos. Получив имя пользователя и пароль, pam-krb5 сверит предоставленный пароль с паролем для принципала @REALM.NAME. Модуль pam-krb5 сообщит локальной системе об успешной аутентификации пользователя, если предоставленный пароль совпадает с паролем принципала.

Модуль также создает кэш учетных данных, когда пользователь успешно прошел аутентификацию, что позволяет пользователю использовать сетевые службы, поддерживающие протокол Kerberos, без повторного ввода учетных данных.

Установка

Примечание. Перед развертыванием проверки подлинности Kerberized PAM убедитесь, что у каждого пользователя есть действующая учетная запись либо на локальном хосте (через adduser или подобное), либо через общий источник, например LDAP.

Чтобы установить модуль PAM pam-krb5, введите в командной строке следующую команду:

Конфигурация

В версии Ubuntu 9.04 (Jaunty Jackalope) и более поздних версиях настройка PAM выполняется с помощью утилиты pam-auth-update. Чтобы включить или отключить аутентификацию Kerberos, запустите pam-auth-update из командной строки. Более подробная информация о pam-auth-update доступна в его документации.

Для выпусков, предшествующих Jaunty, базовую конфигурацию можно реализовать, добавив следующую строку в начало стека в /etc/pam.d/common-auth:

PAM — это настраиваемая платформа. обратитесь к документации PAM для получения дополнительной информации о дополнительных параметрах конфигурации, таких как отказ от локальных служб паролей.

Кэширование учетных данных

Для перемещаемых хостов, таких как ноутбуки, которые не всегда могут иметь доступ к KDC, полезно кэшировать учетные данные с помощью пакета libpam-ccreds. Установка проста:

После того как пользователь получил TGT с помощью kinit, он может использовать его для подтверждения своей личности в сетевой службе, такой как обмен файлами или печать. Этот процесс аутентификации является автоматическим: для доступа к сетевым службам пароль не требуется, пока TGT пользователя действителен (в целях безопасности билеты истекают через определенный период времени и должны быть обновлены).

Службы используют файлы, называемые таблицами ключей, которые содержат секрет, известный только службе и KDC. Пользователь аутентифицирует себя в KDC, а затем запрашивает у KDC информацию, зашифрованную с использованием общего секрета службы. Это зашифрованное сообщение отправляется клиенту, который отправляет его службе. Если служба может расшифровать и прочитать сообщение (и пользователь проходит другие проверки безопасности), служба принимает личность пользователя.

Создание ключевых таблиц

Имя области является необязательным, если субъект является частью области Kerberos по умолчанию, настроенной в krb5.conf.

После создания принципала создайте или добавьте в keytab команду ktadd в интерфейсе kadmin. Чтобы создать вкладку для службы FTP из предыдущего примера, команда будет выглядеть следующим образом:

Примечание: пользователь, запускающий kadmin, должен иметь права на запись по пути, указанному аргументом -k.

Как и прежде, имя области является необязательным для принципалов в области по умолчанию. Путь к ключевой таблице также может быть разным, хотя обычно ключевая таблица находится в каталоге хоста /etc.

Необязательно создавать таблицу ключей на хосте, для которого она предназначена. Например, можно просто сгенерировать keytab, как указано в KDC, сохранить его во временном месте и безопасно перенести (зашифрованным транспортом, таким как scp, или физически через флэш-накопитель) на предполагаемый хост.

Безопасность

Безопасность таблицы ключей имеет жизненно важное значение: злоумышленники, имеющие доступ к таблицам ключей, могут выдавать себя за сетевые службы. Чтобы избежать этого, защитите права доступа к файлу keytab с помощью chmod (это системная команда, а не команда kadmin). В примере с FTP команда выглядит следующим образом:

Возможность также изменить владельца файла, чтобы разрешить доступ демону FTP.

Конфигурация службы

После создания таблицы ключей необходимо настроить службу для ее использования. Обратитесь к документации пакета программного обеспечения для получения подробной информации об этом процессе настройки.

Удаленный вход

Апач

Apache поддерживает аутентификацию Kerberos через mod_auth_kerb. Базовая конфигурация использует базовый механизм аутентификации Apache. Шифрование на транспортном уровне (т. е. SSL/TLS) должно быть развернуто, если используется базовая конфигурация; механизм Basic Auth не шифрует учетные данные для входа во время передачи. 1

Также можно настроить веб-браузеры на использование существующего кэша учетных данных (вместо того, чтобы требовать от пользователя повторного ввода имени пользователя и пароля Kerberos), включив GSSAPI SPNEGO. Шифрование транспортного уровня не требуется, если используется SPNEGO, но браузер клиента должен быть правильно настроен.

Сервер

  1. В Kerberos KDC создайте участника и сгенерируйте таблицу ключей для веб-сервера:
  2. Надежно перенесите таблицу ключей на веб-сервер
  3. На веб-сервере задайте разрешения и права собственности на вкладку ключей:
  4. Установите mod_auth_kerb:

Браузер

Интеграция с SASL

Несколько популярных программных пакетов с открытым исходным кодом (в первую очередь OpenLDAPServer) используют Kerberos в качестве источника аутентификации через подключаемую инфраструктуру аутентификации SASL. В следующем разделе описывается, как установить и настроить SASL, а также проверить правильность использования Kerberos. Детали настройки службы для использования SASL зависят от пакета; подробности см. в документации службы.

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

Нам потребуется подключаемая платформа аутентификации SASL и модуль GSSAPI для используемой реализации Kerberos. Здесь используется реализация MIT. Выполните следующую команду на сервере:

Настройка

  1. Создайте субъект-службу Kerberos. Следуйте соглашениям об именах, изложенным в разделе "Основные принципы".
  2. Создайте таблицу ключей для субъекта-службы и безопасно перенесите ее на сервер, на котором запущена служба. При необходимости ограничьте права доступа к файлу keytab.

Настроил службу для доступа к правильной таблице ключей. Многие сервисы будут использовать системную таблицу ключей (/etc/krb5.keytab) по умолчанию. Если таблица ключей для субъекта-службы не хранится в системной таблице ключей, служба должна быть настроена на чтение правильной таблицы ключей. Обычно это делается путем установки переменной среды KRB5_KTNAME:

Тестирование и устранение неполадок

  1. Убедитесь, что у пользователя, работающего с образцом сервера, есть разрешение на доступ к соответствующей таблице ключей. Если keytab для субъекта-службы хранится в файле, отличном от системного субъекта по умолчанию (/etc/krb5.keytab), вам потребуется установить переменную среды KRB5_KTNAME:
  2. Запустите образец сервера SASL на сервере с механизмом GSSAPI и указанной службой:

Отслеживание журналов KDC при попытке выполнения операции также может быть очень информативным. Следующие строки в /etc/krb5kdc/kdc.conf включают ведение журнала KDC:

Если вам пришлось отредактировать kdc.conf, чтобы включить ведение журнала, перезапустите KDC, чтобы изменения вступили в силу:

После того, как ведение журнала включено, вы можете следить за журналом при попытке выполнения операции:

Чтобы сделать резервную копию базы данных Kerberos:

Части этого документа взяты из документации SingleSignOn и Samba/Kerberos. Большое спасибо авторам обоих документов.

Kerberos (последним удаленным пользователем просвещённый-деспот 2021-03-07 05:40:04)

Материалы этой вики доступны по бесплатной лицензии, подробности см. в разделе Авторские права / Лицензия
Вы можете внести свой вклад в эту вики, подробности см. в Руководстве по вики

Kerberos — это система сетевой аутентификации, основанная на принципе доверенной третьей стороны. Двумя другими сторонами являются пользователь и служба, в которой пользователь хочет пройти аутентификацию. Не все службы и приложения могут использовать Kerberos, но для тех, кто может, он на один шаг приближает сетевую среду к системе единого входа (SSO).

В этом разделе описывается установка и настройка сервера Kerberos, а также некоторые примеры конфигураций клиентов.

Обзор

Если вы новичок в Kerberos, есть несколько терминов, которые полезно понять перед настройкой сервера Kerberos. Большинство терминов будут относиться к вещам, с которыми вы можете быть знакомы в других средах:

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

Экземпляры используются для субъектов-служб и специальных административных субъектов.

Центр распространения ключей (KDC) состоит из трех частей: базы данных всех принципалов, сервера проверки подлинности и сервера выдачи билетов. Для каждой области должен быть хотя бы один KDC.

Билет на предоставление билетов: выдаваемый сервером аутентификации (AS), билет на предоставление билетов (TGT) шифруется в пароле пользователя, который известен только пользователю и KDC.

Сервер предоставления билетов: (TGS) выдает служебные билеты клиентам по запросу.

Билеты: подтвердите личность двух участников. Один принципал является пользователем, а другой — службой, запрошенной пользователем. Билеты устанавливают ключ шифрования, используемый для безопасной связи во время аутентифицированного сеанса.

Файлы Keytab: — это файлы, извлеченные из основной базы данных KDC и содержащие ключ шифрования для службы или хоста.

Чтобы сложить все воедино, Realm имеет по крайней мере один KDC, желательно больше для избыточности, который содержит базу данных Принципалов. Когда участник-пользователь входит на рабочую станцию, настроенную для проверки подлинности Kerberos, KDC выдает билет на предоставление билетов (TGT). Если предоставленные пользователем учетные данные совпадают, пользователь проходит проверку подлинности и может затем запрашивать билеты для служб Kerberized с сервера предоставления билетов (TGS). Билеты службы позволяют пользователю аутентифицироваться в службе без ввода другого имени пользователя и пароля.

Сервер Kerberos

Установка

Для этого обсуждения мы создадим домен MIT Kerberos со следующими функциями (измените их в соответствии с вашими потребностями):

Основной пользователь: ubuntu

Принцип администратора: ubuntu/admin

Примечание

настоятельно рекомендуется, чтобы идентификаторы пользователей, прошедших сетевую проверку, находились в другом диапазоне (например, начиная с 5000), чем у ваших локальных пользователей.

Кроме того, протокол Kerberos чувствителен ко времени. Таким образом, если локальное системное время между клиентской машиной и сервером отличается более чем на пять минут (по умолчанию), рабочая станция не сможет пройти аутентификацию. Чтобы решить эту проблему, время на всех хостах должно быть синхронизировано с использованием одного и того же сервера Network Time Protocol (NTP). Дополнительные сведения см. в главе NTP.

Первым шагом в создании области Kerberos является установка пакетов krb5-kdc и krb5-admin-server. В терминале введите:

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

Примечание

По умолчанию область создается из доменного имени KDC.

Затем создайте новую область с помощью утилиты kdb5_newrealm:

Он запросит у вас мастер-пароль базы данных, который используется для шифрования локальной базы данных. Выберите безопасный пароль: его надежность не проверяется для вас.

Конфигурация

Вопросы, заданные во время установки, используются для настройки файлов /etc/krb5.conf и /etc/krb5kdc/kdc.conf. Первый используется библиотеками Kerberos 5, а второй настраивает KDC. Если вам нужно настроить параметры Центра распространения ключей (KDC), просто отредактируйте файл и перезапустите демон krb5-kdc. Если вам нужно перенастроить Kerberos с нуля, возможно, чтобы изменить имя области, вы можете сделать это, набрав

Примечание

Справочная страница для krb5.conf находится в пакете krb5-doc.

После правильной работы KDC необходим пользователь-администратор — администратор-принципал. Рекомендуется использовать имя пользователя, отличное от вашего обычного имени пользователя. С помощью утилиты kadmin.local в терминале введите:

Далее новый пользователь-администратор должен иметь соответствующие разрешения списка управления доступом (ACL). Разрешения настраиваются в файле /etc/krb5kdc/kadm5.acl:

Эта запись предоставляет ubuntu/admin возможность выполнять любые операции со всеми субъектами в области. Вы можете настроить участников с более строгими привилегиями, что удобно, если вам нужен участник администратора, который младшие сотрудники могут использовать в клиентах Kerberos. Дополнительные сведения см. на справочной странице kadm5.acl.

Примечание

Привилегия extract не включена в привилегию подстановочного знака; он должен быть назначен явно. его привилегия позволяет пользователю извлекать ключи из базы данных, и с ней следует обращаться очень осторожно, чтобы избежать раскрытия важных ключей, таких как ключи участников kadmin/* или krbtgt/*. Подробности смотрите на справочной странице kadm5.acl.

Теперь перезапустите krb5-admin-server, чтобы новый ACL вступил в силу:

Новый субъект пользователя можно протестировать с помощью утилиты kinit:

После ввода пароля используйте утилиту klist для просмотра информации о билете на предоставление билетов (TGT):

Где имя файла кеша krb5cc_1000 состоит из префикса krb5cc_ и идентификатора пользователя (uid), который в данном случае равен 1000 .

Подробные инструкции по настройке DNS см. в главе DNS.

Теперь ваша новая область Kerberos готова для аутентификации клиентов.

Дополнительный ЦОД

Если в вашей сети есть один центр распространения ключей (KDC), рекомендуется иметь дополнительный KDC на случай, если основной станет недоступен. Кроме того, если у вас есть клиенты Kerberos, которые находятся в разных сетях (возможно, разделенных маршрутизаторами, использующими NAT), целесообразно разместить дополнительный KDC в каждой из этих сетей.

Примечание

Объясняемый здесь собственный механизм репликации основан на cronjob и, по сути, создает дамп БД на первичном сервере и загружает его резервную копию на вторичном. Возможно, вы захотите взглянуть на использование серверной части kldap, которая может использовать механизм репликации OpenLDAP. Это объясняется ниже.

Сначала установите пакеты и при запросе имен серверов Kerberos и Admin введите имя основного KDC:

После установки пакетов создайте участников хоста для обоих KDC. В командной строке терминала введите:

Убедитесь, что используемый вами участник имеет дополнительные права извлечения ключей в файле kdc01 /etc/krb5kdc/kadm5.acl. Что-то вроде этого:

Где "*" означает все привилегии (кроме extract-keys ), а e означает именно Extract-keys .

Извлеките файл keytab:

Теперь в текущем каталоге должен быть keytab.kdc02, переместите файл в /etc/krb5.keytab :

Примечание

Если путь к файлу keytab.kdc02 отличается, исправьте его соответствующим образом.

Кроме того, вы можете перечислить участников в файле Keytab, который может быть полезен при устранении неполадок, с помощью утилиты klist:

Опция -k указывает, что файл является файлом keytab.

Далее на каждом KDC должен быть файл kpropd.acl, в котором перечислены все KDC для Realm. Например, на первичном и вторичном KDC создайте файл /etc/krb5kdc/kpropd.acl :

Создайте пустую базу данных на дополнительном KDC:

Теперь установите демон kpropd, который прослушивает соединения утилиты kprop с основного kdc:

Служба будет запущена сразу после установки.

С терминала на основном KDC создайте файл дампа основной базы данных:

Оставаясь на основном KDC, извлеките его файл keytab и скопируйте его в /etc/krb5.keytab :

Примечание

Теперь вы можете удалить привилегию извлечения ключей из этого принципала в файле kdc01 /etc/krb5kdc/kadm5.acl

На основном KDC запустите утилиту kprop, чтобы отправить созданный ранее дамп базы данных на дополнительный KDC:

Обратите внимание на сообщение SUCCEEDED, означающее, что распространение сработало. Если есть сообщение об ошибке, проверьте /var/log/syslog на вторичном KDC для получения дополнительной информации.

Вы также можете создать задание cron для периодического обновления базы данных на вторичном KDC. Например, следующий код будет отправлять базу данных каждый час:

Вернувшись на вторичный KDC, создайте файл stash для хранения главного ключа Kerberos:

Наконец, запустите демон krb5-kdc на вторичном KDC:

Примечание

На Вторичном KDC не работает сервер администратора, так как это копия только для чтения

Вторичный KDC теперь должен иметь возможность выдавать билеты для Realm. Вы можете проверить это, остановив демон krb5-kdc на основном KDC, а затем используя kinit для запроса билета. Если все пойдет хорошо, вы должны получить билет от вторичного KDC. В противном случае проверьте /var/log/syslog и /var/log/auth.log во вторичном KDC.

Клиент Kerberos для Linux

В этом разделе описывается настройка системы Linux в качестве клиента Kerberos. Это позволит получить доступ к любым службам с поддержкой Kerberos после того, как пользователь успешно войдет в систему.

Обратите внимание, что одного лишь Kerberos недостаточно для существования пользователя в системе Linux. Это означает, что мы не можем просто направить систему на сервер kerberos и ожидать, что все участники kerberos смогут входить в систему linux просто потому, что эти пользователи не существуют локально. . Kerberos обеспечивает только аутентификацию: он не знает о группах пользователей, uid и gid Linux, домашних каталогах и т. д. Обычно для получения этой информации используется другой сетевой источник, например сервер LDAP или Windows, а в старые времена — NIS. также использовался для этого.

Установка

Если у вас есть локальные пользователи, соответствующие субъектам в области Kerberos, и вы просто хотите переключить аутентификацию с локальной на удаленную с помощью Kerberos, вы можете следовать этому разделу. Это не совсем обычный сценарий, но он служит для выделения разделения между аутентификацией пользователя и информацией о пользователе (полное имя, uid, gid, домашний каталог, группы и т. д.). Если вы просто хотите получить билеты и использовать их, достаточно установить krb5-user и запустить kinit .

Мы собираемся использовать sssd с хитростью, чтобы он извлекал информацию о пользователе из локальных системных файлов, а не из удаленного источника, как это обычно бывает.

Чтобы установить пакеты, введите в терминале следующее:

Примечание

Если вы добавили соответствующие записи SRV в DNS, ни один из этих запросов не требует ответа.

Конфигурация

Если вы пропустили вопросы ранее, вы можете перенастроить пакет, чтобы заполнить их снова: sudo dpkg-reconfigure krb5-config .

Вы можете протестировать конфигурацию Kerberos, запросив билет с помощью утилиты kinit. Например:

Примечание

kinit не обязательно, чтобы принципал существовал как локальный пользователь в системе. На самом деле, вы можете кинить любого принципала, которого хотите. Если вы его не укажете, инструмент будет использовать имя пользователя того, кто запускает kinit .

Раз мы уже на этом, давайте также создадим участника без прав администратора для Ubuntu:

Теперь осталась только конфигурация для sssd. Создайте файл /etc/sssd/sssd.conf со следующим содержимым:

Приведенная выше конфигурация будет использовать kerberos для аутентификации ( auth_provider ), но будет использовать пользователей локальной системы для информации о пользователях и группах ( id_provider ).

Настройте права доступа к файлу конфигурации и запустите sssd:

Просто установив sssd и его зависимости, PAM уже будет настроен на использование sssd с откатом к локальной аутентификации пользователя. Чтобы попробовать, если это рабочая станция, просто переключите пользователей (в графическом интерфейсе), или откройте терминал входа в систему (CTRL-ALT-), или создайте оболочку входа с помощью sudo login и попробуйте войти в систему, используя имя принципал керберос. Помните, что этот пользователь уже должен существовать в локальной системе:

И у вас будет билет Kerberos сразу после входа в систему.

Ресурсы

Дополнительную информацию о версии Kerberos от Массачусетского технологического института см. на сайте MIT Kerberos.

Дополнительная информация содержится на странице Ubuntu Wiki Kerberos.

O’Reilly’s Kerberos: The Definitive Guide — отличный справочник по настройке Kerberos.

В сети есть одна машина, которая действует как сервер для проверки подлинности Kerberos, а остальные машины действуют как клиенты. На серверной машине мы установим административный сервер Kerberos и базу данных для Kerberos. На клиентских машинах мы установим клиент Kerberos. Итак, сначала мы настроим сервер Kerberos.

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

Выполните приведенную ниже команду, чтобы установить сервер администрирования Kerberos и KDE (центр распространения ключей).

Он последовательно спросит вас о следующих трех вещах

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

Он попросит вас ввести пароль для создания базы данных, после чего запустит процессы kadmind серверов администрирования Kerberos KDC krb5kdc и Kerberos.

Откройте файл /etc/krb5kdc/kadm5.acl в вашем любимом текстовом редакторе и раскомментируйте последнюю строку, чтобы файл выглядел так.

Ваш сервер Kerberos настроен.

Если вы хотите добавить принципала, выполните

а затем запустите команду addprinc внутри kadmin.local

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

Добавьте запись о машине сервера Kerberos в файл /etc/hosts вашей клиентской машины. Допустим, имя хоста машины, на которой вы только что установили сервер Kerberos, — «host1», а IP — «192.168.1.10», затем добавьте эту строку в /etc/hosts

Выполните приведенную ниже команду, чтобы установить и настроить клиент Kerberos.

Одно за другим будет запрашиваться 3 вещи:
область - MYREALM
имя хоста - хост1
сервер администратора - хост1

Вот и все. Теперь для проверки запустите команду

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

Обновление: однажды мне пришлось настроить клиент kerberos на моем компьютере, а kdc — это MIT kdc. Затем я устанавливаю клиент на своем компьютере, используя описанный выше процесс. После этого столкнулся с проблемами в java при аутентификации и авторизации по kerberos. После долгой отладки я обнаружил, что в моей системе типы шифрования в файле /etc/krb5.conf отличаются от /etc/krb5.conf сервера kerberos. Поэтому я заменил системный файл /etc/krb5.conf серверным, после чего мой Java-код заработал нормально.

Я начинаю возвращаться к Ansible и хочу настроить аутентификацию AD с управляющего узла (Ubuntu 20.04) на свой домен Windows 2019. Виртуальная машина Ubuntu имеет IP-адрес DHCP от контроллера домена, и разрешение DNS работает правильно:

Я прочитал пару статей о том, как это сделать, но не смог заставить работать аутентификацию. Наконец-то я увидел свою ошибку и решил задокументировать ее здесь.

Установите пакет Kerberos в Ubuntu

Первое, что нужно сделать, это установить пакет для включения проверки подлинности Kerberos:

Затем я проверил, попытавшись пройти аутентификацию с помощью команды kinit и передав свои учетные данные администратора:

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

Конфигурация Kerberos

Затем я обнаружил файл конфигурации для установки Kerberos, который называется krb5.conf . Я провел небольшое исследование, используя ссылки, например, чтобы узнать, не упустил ли я что-то:

Открыв этот файл, я увидел в разделе [libdefaults] имя домена, которое я ввел выше:

Затем я начал просматривать параметры раздела [libdefaults] и остановился на этом:

Что означают эти параметры?

  • default_realm — это то, что было введено на первом этапе установки пакета Kerberos. Это домен Active Directory
  • Значение dns_lookup_realm равно false указывает, что записи DNS TXT не должны использоваться для определения домена хоста.
  • ticket_lifetime – это время, в течение которого действителен билет (или аутентификация).
  • renew_lifetime — это возобновляемый срок действия билета аутентификации.
  • forwardable позволяет пересылать билет аутентификации
  • rdns предотвращает использование обратного разрешения DNS при преобразовании имен хостов в имена субъектов-служб (более безопасно)

Я не специалист по Kerberos, но варианты кажутся разумными, поэтому я их использовал. Более подробная информация о каждом варианте находится по ссылкам выше, если вы хотите углубиться. Я снова попытался получить билет Kerberos:

Все та же проблема.

Решение

Итак, после долгих поисков в Google и внесения изменений в файл конфигурации я наткнулся на этот пост: Linux: аутентификация Kerberos в Windows Active Directory. Майкл Альберт. Я заметил свою роковую ошибку:

Если возникает ошибка «Ответ KDC не соответствует ожиданиям при получении исходных учетных данных», проверьте файл /etc/krb5.conf. Убедитесь, что все имена Realm написаны заглавными буквами.

Я изменил раздел [libdefaults] файла конфигурации на этот:

а затем снова попытался пройти аутентификацию:

Нет сообщения об ошибке, но ничего не возвращено. Я добился успеха или нет? Существует команда klist, которая может показать ваши текущие токены:

Это выглядело хорошо для меня. Однако я хотел проверить, чтобы убедиться, что аутентификация работает так, как я надеялся. В сообщении Майклса он показывает, как подключиться к серверу Windows, если у вас есть билет Kerberos с помощью пакета под названием rpcclient :

Подведение итогов

В свою защиту я разбираюсь в Windows и поэтому не особо беспокоюсь о чувствительности к регистру. Однако при использовании Linux я просто делаю все в нижнем регистре, чтобы оставаться согласованным. На этот раз это было моим падением!

Надеюсь, это поможет кому-то еще, столкнувшемуся с такой же проблемой.

Категории: Майкрософт

Обновлено: 18 мая 2021 г.

Вам также может понравиться

Драйверы Windows Server vmxnet3 и удаление инструментов VMware

16 марта 2022 г. Чтение – 2 минуты

Каковы последствия удаления VMware Tools с ОС Windows Server для сетевого адаптера типа vmxnet3?

Сертифицированный профессионал VMware — виртуализация ЦОД 2022

22 февраля 2022 г. Чтение: 1 минута

Я сдал экзамен VCP-DCV 2022. Какие ресурсы я использовал для обучения?

Репозиторий Packer vpshere-iso для Windows

10 февраля 2022 г. Чтение: 1 минута

Мой репозиторий по использованию HashiCorp Packer для создания шаблонов vSphere для Windows

Ошибка сборки Packer с VMware Workstation 16

19 января 2022 г. Чтение – 4 минуты

Сбои сборок Packer при использовании VMware Workstation v16. Как исправить и возможная ошибка в процессе установки

Читайте также: