Разное

Krb5 conf настройка: Аутентификация в apache используя Active Directory и kerberos

Содержание

Аутентификация в apache используя Active Directory и kerberos

Почти в каждой организации используется домен Microsoft Windows, в котором пользователи проходят проверку подлинности. Так же часто в IT инфраструктуре используются сервисы, предоставляемые различными дистрибутивами linux. При выдаче прав доступа администраторам windows и linux приходится вести различные базы пользователей, что конечно не удобно. Реализовав единую базу данных пользователей и прозрачную аутентификации для пользователей (single sign on) можно избавится от массы рутинной работы и устранить риски безопасности. В данном случае реализуем прозрачный доступ пользователей к некому web ресурсу. Для аутентификации будет использоваться протокол Kerberos и «Key Distribution Center» (KDC) реализованный в контроллере домена Windows. В качестве linux системы рассматривается rhel5, для других дистрибутивов возможны не принципиальные отличия в процессе настройки. Если у вас дистрибутив отличный от указанного, то стоит проверить версию библиотеки Kerberos, она должна быть не младше чем 1.5 (MIT Kerberos), т.к. начиная с этой версии поддерживается механизм согласования метода аутентификации SPNEGO (Simple and Protected Negotiate). Веб сервер должен иметь A запись на вашем днс сервере т.к. имя ресурса является частью Kerberos билета. Процесс аутентификации описан в RFC1510, обязательно прочтите как проходит процесс аутентификации.

Термины и команды:
realm — область использующая единую базу Kerberos. По соглашению реалм записывается строчными буквами, для отличия от днс домена.
principal — имя которому поставлено в соответствие набор учетных данных. Делится на три части: 1)primary — первая чать принципала Kerberos. Если это пользователь, то соответствует его имени. Если сервис — имя сервиса. 2)instance — вторая часть, служит для уточнения первой части. Может не содержатся в имени принципала, если есть — то это описание. В случае хоста — его fqdn. 3)realm — реалм идет последней частью.
ticket — набор временных данных которые подтверждают идентичность клиента или сервиса.
TGT — Ticket-Granting Ticket. Билет дающий право на получение других билетов в реалме, где был он выпущен.
keytab — файл содержащий ключи, хост или сервис использует его точно таким же образом как пользователь использует пароль.
KDC — Key Distribution Center, сервер выдающий билеты.
kinit — программа, используется для начала процесса аутентификации принципала и получения билета TGT.
klist — программа, выводит список принципалов и Kerberos билетов содержащихся в кеше, или список список ключей в keytab файле.
kvno — получает билет для указанного принципала и выдает на терминал версию ключей.
ktutil — позволяет управлять записями в keytab файле.

Начальные условия:
локальная сеть — 192.168.1.0/24
сервер Active Directory — dc01.domain.ru(192.168.1.1)
веб сервер — web.domain.ru (192.168.1.130)

Действия по шагам:
Настраиваем синхронизацию времени. 
Установите и настройте службу ntpd.#» /etc/ntp.conf
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server dc01.domain.ru
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys

Сейчас запустим службу и поставим ее в автозагрузку:

[root@server ~]# /etc/init.d/ntpd start
[root@server ~]# chkconfig ntpd on

Проверить состояние службы синхронизации времени можно командой:

[user@server ~]$ ntpstat
synchronised to NTP server (192.168.1.1) at stratum 5
   time correct to within 300 ms
   polling server every 512 s

Настройка Kerberos на web.domain.ru.
Ниже приведена минимальная конфигурация для использования протокола аутентификации в реалме domain.ru. Реалм в данном случае будет совпадает с доменом Windows. Обратите внимание, для работоспособности Kerberos, реалм должен быть написан прописными буквами!

[user@server ~]$ cat /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = DOMAIN.RU
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 DOMAIN.RU = {
  kdc = dc01.domain.ru
  admin_server = dc01.domain.ru
 }

[domain_realm]
 .domain.ru = DOMAIN.RU
 domain.ru = DOMAIN.RU

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

Если у вас в сети несколько контроллеров домена то вы можете их перечислить в секции [realms], что то вроде:

[realms]
 DOMAIN.RU = {
  kdc = dc01.domain.ru
  kdc = dc02.domain.ru
  admin_server = dc01.domain.ru
  admin_server = dc02.domain.ru
 }

Проверить работоспособность Kerberos можно с помощью kinit, и учетной записи в домене Windows. Данная команда позволяет для принципала (в данном случае для пользователя домена) получить TGT билет и поместить его в кеш. Содержимое кеша можно посмотреть командой klist:

[user@server ~]$ kinit [email protected]
[user@server ~]$ klist

Ticket cache: FILE:/tmp/krb5cc_500
Default principal: [email protected]

Valid starting     Expires            Service principal
03/22/11 17:43:35  03/23/11 03:43:38  krbtgt/[email protected]
renew until 03/23/11 17:43:35

Далее нам нужно создать аккунт сервера в в Active Directory и связать его с принципалом сервиса  в KDC. Можно сделать это самостоятельно на котроллере домена. Создать сначала аккаунт, а затем связать его с принципалом с помощью команды ktpass. Но мне больше нравится вариант с установкой samba и вводом сервера в домен, в этом случае аккаунт и принципал службы создаются автоматически. Как плюс, samba позволит нам в будущем организовать сетевые ресурсы и получать информацию из AD для разграничения доступа к службам сервера.

Настройка samba, добавление сервера web.domain.ru в домен Windows
Устанавливаем samba:

[root@server ~]# yum install samba

В конфигурации samba необходимо указать используемый реалм, указать что будет используется keytab файл, и указать что самба работает как член домена AD — параметр security=ads. Конфигурация samba достаточная для наших целей приведена ниже:

[root@server ~]# cat /etc/samba/smb.conf
[global]
workgroup = DOMAIN
realm = DOMAIN.RU
server string = Samba Server Version %v
security = ADS
passdb backend = tdbsam
 use kerberos keytab = Yes
local master = No
cups options = raw

Проверить правильность конфигурационного файла можно командой 

[root@server ~]# testparm

Если ошибок нет, то самое время добавить наш сервер в домен Windows, естественно что нужно это делать имея полномочия на добавление в домен:

[root@server ~]# net ads join -U win_admin

win_admin’s password:
Using short domain name — DOMAIN
Joined ‘WEB’ to realm ‘DOMAIN.RU’

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

[root@server ~]# net ads dns register -I 192.168.1.130 -U win_admin

Проверить корректность добавления сервера в домен можно следующим образом:

[root@server ~]# net ads testjoin
Join is OK

Создание файла keytab, добавление ключа принципала сервиса «HTTP» в keytab.
Создадим keytab файл. Так как в конфигурации samba не оговорено где должен содержатся keytab файл, то будет создан файл по умолчанию /etc/krb5.keytab:

[root@server ~]# net ads keytab create -U win_admin

Теперь создадим и добавим принципал для сервиса — «HTTP», Если вы сейчас посмотрите, на контроллере домена, через консоль MMC и остнастку ADCI Edit параметр «servicePrincipalName», какие принципалы сервисов созданы для нашего сервера — это будут: «HOST/web.domain.ru» и «HOST/web».

[root@server ~]# net ads keytab add HTTP -U win_admin

Если вы теперь посмотрите в список принципалов, то заметите, что там добавились еще два — «HTTP/web.domain.ru» и «HTTP/web». В принципе это уже значит что добавление прошло успешно. Тем не менее, давайте посмотрим что сейчас находится в keytab:

[root@server ~]# klist -ek /etc/krb5.keytab 
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
—- —————————————————————————
   2 host/[email protected] (DES cbc mode with CRC-32) 
   2 host/[email protected] (DES cbc mode with RSA-MD5) 
   2 host/[email protected] (ArcFour with HMAC/md5) 
   2 host/[email protected] (DES cbc mode with CRC-32) 
   2 host/[email protected] (DES cbc mode with RSA-MD5) 
   2 host/[email protected] (ArcFour with HMAC/md5) 
   2 [email protected] (DES cbc mode with CRC-32) 
   2 [email protected] (DES cbc mode with RSA-MD5) 
   2 [email protected] (ArcFour with HMAC/md5) 
   2 HTTP/[email protected] (DES cbc mode with CRC-32) 
   2 HTTP/[email protected] (DES cbc mode with RSA-MD5) 
   2 HTTP/[email protected] (ArcFour with HMAC/md5) 
   2 HTTP/[email protected] (DES cbc mode with CRC-32) 
   2 HTTP/[email protected] (DES cbc mode with RSA-MD5) 
   2 HTTP/[email protected] (ArcFour with HMAC/md5) 

Для полной уверенности можно получить Kerberos билет от KDC для только что заведенных принципалов:

[root@server ~]# kvno HTTP/[email protected] HTTP/[email protected]

HTTP/[email protected]: kvno = 2
HTTP/[email protected]: kvno = 2

Обратите внимание, что версия ключа идентична. Посмотрим эти билеты подробнее (в выводе только интересующие нас билеты):

[root@server ~]# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]

Valid starting     Expires            Service principal
03/25/11 15:37:04  03/26/11 01:35:17  HTTP/[email protected]
renew until 03/26/11 15:35:14, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5 
03/25/11 15:42:26  03/26/11 01:35:17  HTTP/[email protected]
renew until 03/26/11 15:35:14, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5

Обратите внимание что номера ключей билетов (колонка KVNO), имя принципала в билете и алгоритмы шифрования должны совпадать! Рекомендуется создать свой keytab для службы HTTP, где будет содержатся только нобходимые нам ключи. Сделать это можно с помощью ktutil. Расширеных функций редактирования он не поддерживает, поэтому его можно запустить через rlwrap:

[root@server ~]# rlwrap ktutil

Загрузим содержимое keytab

ktutil:  read_kt /etc/krb5.keytab

Посмотрите текущие записи:

ktutil:  list

Нас интересуют записи в которых фигурирует метка «HTTP». Удалите все лишние записи, указав в команде удаления ненужный слот записи:

ktutil:  delent 1

Должно получится так:

ktutil:  list
slot KVNO Principal
—- —- ———————————————————————
   1    2                  HTTP/[email protected]
   2    2                  HTTP/[email protected]
   3    2                  HTTP/[email protected]

Сохраним оставшиеся в другой keytab файл:

ktutil:  write_kt /etc/httpd/httpd.keytab

Сменим права доступа:

[root@server ~]# chown apache:apache /etc/httpd/httpd.keytab
[root@server ~]# chmod 0440 /etc/httpd/httpd.keytab

Переходим к заключительной части.

Установка и настройка mod_auth_kerb.
Установим модуль mod_auth_kerb:

[root@server ~]# yum install mod_auth_kerb

Вы обнаружите файл /etc/httpd/conf.d/auth_kerb.conf содержащий пример настройки mod_auth_kerb. Воспользуемся этим примером как отправной точкой. В примере ниже примере аутентификация требуется только к части сайта web.domain.ru/private. Параметр KrbServiceName должен содержать имя принципала сервиса (и соответственно ключ), которое будет использовать apache для аутентификации. На место расположения файла keytab указывает параметр Krb5KeyTab. Используйте SSL если вы включите параметр KrbMethodK5Passwd. Данный параметр  включает аутентификацию с поддержкой ввода логин/пароль, причем они будут посланы по сети практически чистым текстом ( кодировка Base64 очень слабая )

[root@snort conf.d]# cat /etc/httpd/conf.d/auth_kerb.conf

LoadModule auth_kerb_module modules/mod_auth_kerb.


<Location /private>

#  SSLRequireSSL

  AuthType Kerberos

  AuthName «Kerberos Login»

  KrbMethodNegotiate On

  KrbMethodK5Passwd Off

  KrbAuthRealms DOMAIN.RU

  Krb5KeyTab /etc/httpd/httpd.keytab

  KrbServiceName HTTP

#  require user [email protected] [email protected]
  require valid-user

</Location>

Такой вариант настройки не очень удобен в плане гибкости. Гораздо удобнее настроить аутентификацию в .htaccess файле. Прежде чем будете пробовать второй пример — приведите к первоначальному виду файл /etc/httpd/conf.d/auth_kerb.conf, т.е. все закоментированно кроме строчки с загрузкой модуля.

[root@snort ~]# cat /var/www/html/.htaccess
#SSLRequireSSL
AuthType Kerberos
AuthName «Kerberos Login»
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbAuthRealms DOMAIN.RU
Krb5KeyTab /etc/httpd/httpd.keytab
KrbServiceName HTTP
#require user [email protected] [email protected]
require valid-user

В обоих этих примерах доступ получают все пользователи прошедшие аутентификацию. Можно настроить избирательный доступ, указав принципалы пользователей. В обоих примерах эта строка с указанием списка принципалов закомментирована. Не удобно в эксплуатации? Конечно гораздо удобнее, вдобавок к аутентификации, предоставлять доступ на основании членства в группе, которая содержится в Active Directory. Но это в следующий раз. А сейчас действительно последняя часть.

Настройка интернет браузеров.
Начнем с internet explorer 8. Во вкладке «Безопасность» окна «Свойства обозревателя» выделите «Местная интрасеть» и нажмите на «Узлы».

В появившемся окне нажмите «Дополнительно»

Впишите свой домен как на примере:

Закройте окно, и нажмите на кнопку «Другой» в области «Уровень безопасности для этой зоны». Отметьте параметр автоматического входа в систему как показано на рисунке.

Теперь в окне «Свойства обозревателя» перейдите во вкладку «Дополнительно», и включите параметр «Разрешить встроенную проверку подлинности Windows». Для того что бы настройки вступили в силу, браузер необходимо перезапустить.

Перейдем к настройке Mozilla Firefox, здесь все проще и без перезапусков. Наберите в адресной строке «about:config», в строке фильтра — «network.neg». Впишите свой домен в две строки, как показано на рисунке.

Подключаемся к Active Directory при помощи realmd::Журнал СА 1-2.2015

Рубрика:

Администрирование / 
How To

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

 СЕРГЕЙ ЯРЕМЧУК, автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС, [email protected]

Подключаемся к Active Directory с помощью realmd

Несмотря на то что Linux и Windows уже не редкость в одной сети, интеграции из коробки до сих пор нет. Как нет и единого решения. Проект realmd упрощает подключение Linux-систем к AD

Что у нас есть сегодня? Microsoft для Windows Server 2008 R2 – 2012 R2 предлагает Identity Management for UNIX (Служба управления идентификацией UNIX), являющийся частью роли контроллера домена и позволяющий использовать для входа в UNIX учетные записи Active Directory. Но сейчас он уже объявлен как устаревший. Большие возможности дает Configuration Manager, хотя, соответственно, требует немалых вложений.

Приверженцы Unix ориентируются на связку Samba (winbind) и Kerberos или на решения сторонних компаний (PowerBroker Identity Services, Centrify Server Suite, Quest Authentication Services).

Первый бесплатен, рекомендуется многими специалистами как более правильный, но требует тщательных настроек. Вторые вмешиваются в схему AD и требуют дополнительного лицензирования (PowerBroker имеет и Open Source-версию).

Realmd (Realm Discovery) [1] – сервис D-Bus, позволяющий производить настройку сетевой аутентификации и членства в домене (AD или IPA/FreeIPA) без сложных настроек. Информация о домене обнаруживается автоматически. Дляаутентификации и проверки учетных записей realmd использует SSSD (через Kerberos и LDAP) [2] или Winbind. Версия 0.1 была представлена в конце июля 2012 года, на момент написания этих строк актуальной была 0.15.2. В настоящее время realmd интегрирован в kickstart, Центр управления GNOME и другие инструменты.

Покажем подключение к домену example.org с помощью realmd на примере Ubuntu Linux 14.04 LTS, в других дистрибутивах все показанное будет отличаться только особенностями работы менеджера пакетов.

Перед началом настроек необходимо настроить DNS, лучше всего, когда в /etc/resolv.conf прописан сам контролер домена. Все, что необходимо, уже есть в репозитории:

$ sudo apt-get install realmd samba-common-bin samba-libs sssd-tools krb5-user adcli

При конфигурировании krb5-user будет запрошена область по умолчанию, вводим имя домена в верхнем регистре – EXAMPLE.ORG.

Рисунок 1. Конфигурирование пакета krb5-user

Конфигурационный файл /etc/realmd.conf не создается, действуют параметры по умолчанию. В результате может возникнуть конфликт имен, что приведет к ошибке при подключении. Чтобы избежать проблем, следует его создать такого содержания:

$ sudo nano /etc/realmd.conf

[service]

automatic-install = no

[example.org]

fully-qualified-names = no

Файл имеет немало полезных опций, но пока этого достаточно.

Сервисы SSSD (System Security Services Daemon) также требуют настройки. Добавим фильтр учетных записей и количество попыток подключений:

$ sudo nano /etc/sssd/sssd.conf

[nss]

filter_groups = root

filter_users = root

reconnection_retries = 3

[pam]

reconnection_retries = 3

В некоторых ситуациях следует добавить:

use_fully_qualified_names = False

Указываем права доступа:

$ sudo chmod 0600 /etc/sssd/sssd.conf

Пробуем найти доступные домены:

$ sudo realm discover

или

$ sudo realm discover EXAMPLE.ORG

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

$ kinit -V [email protected]

Using default cache: /tmp/krb5cc_1000

Using principal: [email protected]

Password for [email protected]:

Authenticated to Kerberos v5

Подключаемся (см. рис. 2).

$ sudo realm —verbose join example.org -U Administrator

Рисунок 2. Подключаемся к Active Directory

Для запуска понадобятся права root, иначе получим сообщение:

realm: Couldn’t join realm: Not authorized to perform this action

Теперь, если ввести

$ sudo realm list

получим полную информацию о домене (см. рис. 3), а в консоли Active Directory Users and Computers появится новый компьютер (см. рис. 4).

Рисунок 3. Информация о домене

Рисунок 4. Вкладка Active Directory Users and Computers

Некоторые действия и информацию можно получить с помощью утилиты adsli.

$ adcli info example.org

[domain]

domain-name = example.org

domain-short = EXAMPLE

domain-forest = example.org

domain-controller = WIN-SRV001.example.org

domain-controller-site = Default-First-Site-Name

domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv full-secret ads-web

domain-controller-usable = yes

domain-controllers = WIN-SRV001.example.org

[computer]

computer-site = Default-First-Site-Name

Также стоит добавить новое правило в /etc/sudoers, чтобы доменный пользователь мог получать права администратора локального компьютера:

$ sudo nano /etc/sudoers

%domain\ [email protected] ALL=(ALL) ALL

Перегружаем систему и регистрируемся как доменный пользователь «пользователь@домен».

  1. Сайт проекта realmd – http://freedesktop.org/software/realmd.
  2. Сайт проекта SSSD – https://fedorahosted.org/sssd.

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Google+

Настройка SSO аутентификации в Active Directory на прокси-сервере.¶

Иногда возникает ситуация, когда по определенным причинам у вас нет доступа к учетной записи администратора домена (к примеру, политики безопасности предприятия).

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

Для ручной настройки аутентификации в Active Directory через Kerberos вам необходимо выполнить все шаги по настройке устройства TING, описанные выше, вплоть до создания учетной записи компьютера в каталоге Active Directory

После чего выполнить следующие шаги:

8.1. Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку Аутентификация по протоколу Kerberos, нажмите кнопку Обновить — и убедитесь, что все пункты, за исключением Файл keytab отмечены зеленым. Если это не так, то необходимо проверить настройки.

8.2. Создайте в домене учетную запись компьютера с именем, совпадающим в поле Kerberos-аккаунт этой машины в AD на вкладке Службы -> Веб-прокси -> Технология единого входа (SSO) -> Общие настройки

Примечание

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

8.3. На контроллере домена добавьте SPN HTTP к учетной записи созданного компьютера (в нашем случае TING) и одновременно экспортируйте keytab-файл.

ktpass.exe /princ HTTP/[email protected] /mapuser ZTEST\ting$ /crypto all /ptype KRB5_NT_SRV_HST /pass rndpass /out c:/tmp/squid.keytab +answer

Предупреждение

Будьте внимательны, регистр имеет значение.

В данной команде мы добавили

SPN /princ HTTP/[email protected]

К учетной записи компьютера /mapuser ZTEST\ting$

С поддержкой всех возможных типов шифрования /crypto all

Со случайным паролем /pass rndpass

И сделали экспорт keytab файла /out c:/tmp/squid.keytab

8.4. Проверьте наличие SPN-имен в аккаунте. Для этого на контроллере домена AD выполните команду:

Вы должны увидеть следующий вывод:

Registered ServicePrincipalNames for CN=TING,CN=Computers,DC=ztest,DC=int:
    HTTP/ting.ztest.int

8.5. Скопируйте с помощью SSH-клиента (например, Putty) файл c:/tmp/squid.keytab на устройство TING в папку /usr/local/etc/squid/

8.6. Измените владельца keytab файла:

chown root:squid /usr/local/etc/squid/squid.keytab

8.7. Измените права доступа к keytab файлу:

chmod 640 /usr/local/etc/squid/squid.keytab

Примечание

Данные операции должны выполняться пользователем, с достаточными правами.

8.8. Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку Аутентификация по протоколу Kerberos, нажмите кнопку Обновить — и убедитесь, что все пункты отмечены зеленым.
8.9. Пройдите в раздел Службы -> Веб-прокси -> Технология единого входа (SSO), на вкладку Общие, нажмите кнопку Применить для применения настроек и перезапуска веб-прокси SQUID.

Установка krb5-user в Ubuntu / Linux Mint / Debian

Установка:

Для установки krb5-user в Ubuntu / Linux Mint / Debian, введите в Терминал:

sudo apt update

sudo apt install krb5-user

Подробная информация о пакете:

Базовые программы для аутентификации с использованием MIT Kerberos

http://web.mit.edu/kerberos/



Источник: https://packages.ubuntu.com

Навигация по записям

  • Зависимости:

  • krb5-config

    Конфигурационные файлы для Kerberos Version 5

  • libc6

    Библиотека GNU C: общие библиотеки

  • libcomerr2

    Общая библиотека описания ошибок

  • libk5crypto3

    Библиотеки времени выполнения MIT Kerberos — Crypto Library

  • libkadm5clnt-mit11

    Библиотеки времени выполнения MIT Kerberos — Клиенты администрирования

  • libkadm5srv-mit11

    Библиотеки времени выполнения MIT Kerberos — KDC и Admin Server

  • libkdb5-9

    Библиотеки времени выполнения MIT Kerberos — база данных Kerberos

  • libkrb5-3

    Библиотеки времени выполнения MIT Kerberos

  • libkrb5support0

    Библиотеки времени выполнения MIT Kerberos — Библиотека поддержки

  • libss2

    Библиотека синтаксического анализа интерфейса командной строки

Установка Контроллера Домена Active Directory на Ubuntu под управлением Samba – Блог админа

SAMBA это открытая реализация протокола SMB который предоставляет сервис файлов и печати для клиентов SMB / CIFS. Samba помогает в успешном взаимодействии по сети вашей системы Ubuntu с клиентами под Windows, обеспечивая тем самым и интеграции с общими сервисами для среды Windows. Эти услуги помогают обмену данными и информацией о компьютерах и пользователях, участвующих в сети, и могут быть классифицированы по трем основным категориям с точки зрения функциональности:

Сервис общих файлов и печати: Использует протокол Server Message Block (SMB) для облегчения обмена файлами, директориями, разделами, и работе печати через сеть.

Сервис Директорий: предоставляет жизненно важную информацию о компьютерах и пользователях сети с помощью Lightweight Directory Access Protocol (LDAP) и Microsoft Active Directory.

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

В этой статье рассказывается как установить Active Directory Domain Controller под управлением Samba на Ubuntu 16.04. Samba как AD DC требует версию минимум 4.0.0. Настоятельно рекомендуется использовать последний стабильный релиз Samba который содержит исправление ошибок прошлых релизов и улучшение поддержки Microsoft Active Directory и дополнительные возможности.

Основное преимущество этого заключается в том, что нам не нужно устанавливать отдельный Kerberos KDC. Samba включает в себя AD совместимый KDC и предоставляет свою собственную реализацию LDAP для AD бекэнда.

1 Перед началом

  • Убедитесь что ваш сервер настроен на использование статичного IP адреса. DHCP может вызвать проблему, если у сервера сменить адрес.
  • Обновите ваш resolv.conf на использование правильных серверов имен.
  • Обновите ваш файл /etc/hosts для использования правильных записей. Ваше имя сервера должно разрешаться в IP сервера.

Начнем по порядку. Изменяем настройки сервера согласно нашим трем пунктам выше.

1) Настройте ваш сервер на использование статичного IP.  Отредактируйте файл /etc/network/interfaces на  IP «96.126.107.141», имя контроллера домена «some-org.com» и другие детали:

root@ubuntu:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 96.126.107.141
netmask 255.255.255.0
network 96.126.107.0
broadcast 96.126.107.255
gateway 96.126.107.1
dns-nameservers 96.126.107.141 8.8.8.8
dns-search some-org.com

# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

Мы изменил iface eth0 inet dhcp на iface eth0 inet static и то что выделено жирным — это конфигурация сети.

2) Исправьте ваш файл resolv.conf — добавьте имя вашего контроллера домена.

root@ubuntu:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND — YOUR CHANGES WILL BE OVERWRITTEN
nameserver 96.126.107.141
nameserver 8.8.8.8
nameserver 207.192.69.4
search some-org.com

3) Наконец — поправьте ваш /etc/hosts file и установите «ubuntu.some-org.com»  как имя хоста:

root@ubuntu:~# cat /etc/hosts
127.0.0.1 localhost
96.126.107.141 ubuntu.some-org.com ubuntu

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

root@ubuntu:~# echo ubuntu.some-org.com > /etc/hostname

root@ubuntu:~# /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.

После изменение требуется перезапустить сеть.

Наконец, всё готово к установке пакетов.

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

Сначала требуется установить пакеты необходимые для установки нашего Domain controller Active directory.

root@ubuntu:~# apt-get update && apt-get upgrade -y

root@ubuntu:~# apt-get install git attr build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl ntp ntpdate winbind

При установке пакетов у вас спросят информацию о вашем kerberos. Вам требуется предоставить зону по умолчанию Kerberos и информацию об администраторе. Вы можете указать вашу зону по умолчанию как some-org.com и администрирующий сервер как имя хоста указанное выше.

3 Установка и настройка SAMBA

Вам потребуется скачать последние пакеты Samba с git репозитория в директории»samba4″.

root@ubuntu:~# git clone -b v4-1-stable git://git.samba.org/samba.git samba4
Cloning into ‘samba4’…
remote: Counting objects: 1276826, done.
remote: Compressing objects: 100% (280630/280630), done.
remote: Total 1276826 (delta 992350), reused 1267276 (delta 984263)
Receiving objects: 100% (1276826/1276826), 249.03 MiB | 10.51 MiB/s, done.
Resolving deltas: 100% (992350/992350), done.
Checking connectivity… done.

После скачивания войдите в директорию «samba4» и настройте ваш пакет Samba.

root@ubuntu:~#cd samba4
root@ubuntu:~#./configure —enable-debug —enable-selftest
root@ubuntu:~#make
root@ubuntu:~/samba4# make
WAF_MAKE=1 python ./buildtools/bin/waf build
Waf: Entering directory /root/samba4/bin'
Selected embedded Heimdal build
Waf: Leaving directory
/root/samba4/bin’
‘build’ finished successfully (6.288s)
root@ubuntu:~#make install

Сборка SAMBA достаточно продолжительна. После того как все будет сделано — проверьте версии SAMBA и клиента SMB — они должны совпадать.

root@ubuntu:~# /usr/local/samba/sbin/samba -V
Version 4.1.23
root@ubuntu:~# /usr/local/samba/bin/smbclient -V
Version 4.1.23

4 Создание Samba Active Directory

Следующий шаг — инициализация вашего контроллера. Вы можете просто выполнить команду:

root@ubuntu:~/samba4# /usr/local/samba/bin/samba-tool domain provision —realm=some-org.com —domain=some-org —adminpass=»password» —server-role=dc —dns-backend=SAMBA_INTERNAL
Looking up IPv4 addresses
Looking up IPv6 addresses
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=some-org,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=some-org,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: ubuntu
NetBIOS Domain: SOME-ORG
DNS Domain: some-org.com
DOMAIN SID: S-1-5-21-4019752003-3807572232-1148719748

Можно, конечно, использовать Bind9 как DNS, но SAMBA уже содержит в себе собственный полнофункциональный DNS сервер. Это указано командой SAMBA_INTERNAL. Далее нам требуется запустить сервис SAMBA после настройки контроллера.

root@ubuntu:~# /usr/local/samba/sbin/samba
root@ubuntu:~#

5 Проверка вашего Samba Domain Controller

Мы можем запустить «smbclient», для проверки того, что Samba предоставляет стандартные AD DC общие директории «netlogon» и «sysvol», которые были указаны в «smb.conf» во время настройки.

root@ubuntu:~# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]

Sharename Type Comment
——— —- ——-
print$ Disk Printer Drivers
IPC$ IPC IPC Service (ubuntu server (Samba, Ubuntu))
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.3.11-Ubuntu]

Server Comment
——— ——-
UBUNTU ubuntu server (Samba, Ubuntu)

Workgroup Master
——— ——-
WORKGROUP UBUNTU

Для проверки работы аутентификации вы можете попробовать подключиться к общей директории «netlogon», используя аккаунт администратора домена, который был создан во время настройки.

root@ubuntu:~/samba4# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c ‘ls’
Enter Administrator’s password:
Domain=[SOME-ORG] OS=[Unix] Server=[Samba 4.1.23]
. D 0 Sun Oct 16 09:30:02 2016
.. D 0 Sun Oct 16 09:31:09 2016

47431 blocks of size 524288. 40274 blocks available

6 Настройка SAMBA_INTERNAL DNS

Работающий DNS имеет важное значение для правильной работы с Active Directory. Без правильных записей DNS, Kerberos не будет работать, что в свою очередь означает, что многие из основных функций так же не будут работать. Всегда стоит потратить некоторое дополнительное время, обеспечивая ваши настройки DNS, чтобы убедиться, что они должным образом сделаны.

Требуется изменить файл /etc/resolv.conf для внесения нашего имени домена:

root@ubuntu:~#echo domain some-org.com >> /etc/resolv.conf

Ваш контроллер домена требуется сервер имен, который способен разрешить запросы в зоны Active Directory. Поскольку это ваш первый контроллер домена в лесу AD.

Так же требуется изменить файл  «/usr/local/samba/etc/smb.conf» и добавить dns от google как dns_forwarder.

root@ubuntu:~# cat /usr/local/samba/etc/smb.conf
# Global parameters
[global]
workgroup = SOME-ORG
realm = SOME-ORG.COM
netbios name = UBUNTU
server role = active directory domain controller
dns forwarder = 8.8.8.8

7 Тестирование DNS

Для проверки правильной работы DNSвыполните команды и проверьте правильность вывода:

root@ubuntu:~# host -t SRV _ldap._tcp.some-org.com
_ldap._tcp.some-org.com has SRV record 0 100 389 ubuntu.some-org.com

root@ubuntu:~# host -t SRV _kerberos._udp.some-org.com.
_kerberos._udp.some-org.com has SRV record 0 100 88 ubuntu.some-org.com.

root@ubuntu:~# host -t A ubuntu.some-org.com
ubuntu.some-org.com has address 96.126.107.141

8 Настройка Kerberos

Kerberos важная часть Active Directory. Обычно настраивается в файле /etc/krb5.conf. Во время инициализации рабочий пример будет создан в файле /usr/local/samba/share/setup/krb5.conf. Вы можете заменить файл krb5.conf на файл примера путем копирования или создания символьной ссылки.

root@ubuntu:~# ln -s /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf

Вам потребуется отредактировать этот файл и изменить default_realm на имя вашего DC:

root@ubuntu:~# cat /etc/krb5.conf
[libdefaults]
default_realm = SOME-ORG.COM
dns_lookup_realm = false
dns_lookup_kdc = true

Имя realmдолжно быть указано ВЕРХНИМ РЕГИСТРОМ.

9 Тестирование Kerberos

Вы можете использовать kinit для тестирования вашей конфигурации Kerberos:

root@ubuntu:~# kinit [email protected]
Password for [email protected]:
Warning: Your password will expire in 41 days on Sun 27 Nov 2016 09:31:07 AM UTC

Вам потребуется отключить срок действия пароля администратора active directory для того чтобы исключить проблемы аутентификации в будущем.

root@ubuntu:~# /usr/local/samba/bin/samba-tool user setexpiry administrator —noexpiry
Expiry for user ‘administrator’ disabled.

Примечание: Всегда указывайте ваш realm в верхнем регистре. Для проверки работы Kerberos запустите:

root@ubuntu:~# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]

Valid starting Expires Service principal
10/17/2016 04:19:31 10/17/2016 14:19:31 krbtgt/[email protected]
renew until 10/18/2016 04:19:19, Etype (skey, tkt): arcfour-hmac, arcfour-hmac

10 Создание директории пользователей

Создадим теперь директорию пользователей и установим правильные права и владельца.

root@ubuntu:~# mkdir -m 770 /Users
root@ubuntu:~# chmod g+s /Users
root@ubuntu:~# chown root:users /Users

Далее отредактируйте ваш файл конфигурации SMB «/usr/local/samba/etc/smb.conf»:

[Users]
directory_mode: parameter = 0700
read only = no
path = /Users
csc policy = documents

11 Настройка NTP

Active Directory требует синхронизации времени для всех участников домена чтобы Kerberosработал правильно. Строго рекомендуется использовать NTP на вашем контроллере домена для синхронизации времени. Эта  документация предоставит вам всю необходимую информацию для настройки NTP on anна вашем контроллере домена AD.

12 Итоги

И, наконец, мы создали наш контроллер домена AD на сервере Ubuntu 16.04. Вы можете создать свой собственный Active Directory DC и обмениваться данными по сети. Главным преимуществом этой конфигурации является возможность централизовать учетные данные пользователей и компьютеров. Он имеет ряд и других преимуществ. Некоторые из ключевых преимуществ:

  • Поддержка списка пользователей, которые могут получить доступ к сети в AD и определение, к каким файлам пользователи могут получить доступ и что они могут сделать с этими файлами.
  • В дополнение к безопасности и удобству, контроллеры домена обеспечивают скорость за счет высвобождения отдельных ресурсов ПК от выполнения серверных функций, что в конечном итоге повышает производительность клиентской машины.
  • Также обеспечивается полный журнал безопасности, который требуется для системы безопасности и аудита.

Это перевод статьи. Оригинал можно почитать здесь.

Настройка Преобразования DNS с Помощью «resolv.conf» в Примерах

Файл настроек /etc/resolv.conf содержит информацию, которая позволяет компьютеру преобразовывать буквенно-цифровые доменные имена в цифровые IP адреса.

При использовании DHCP, dhclient обычно перезаписывает resolv.conf информацией полученной от DHCP сервера.

Как редактировать файл «/etc/resolv.conf»?

Используйте текстовые редакторы, такие как vi или gedit, в Linux:

# vi /etc/resolv.conf

В /etc/resolv.conf настраиваются три основные опции (директивы):

nameserver # IP адрес DNS сервера
domain # Доменное Имя локального хоста
search # Какие Доменные Имена искать

Директива «nameserver»

Опция nameserver указывает на IP адрес DNS сервера.

nameserver <IP адрес>

Это может быть Ваш личный DNS сервер, какой-либо публичный DNS сервер либо DNS сервер Вашего интернет провайдера.

Замечание: Вы можете указать максимум 3 DNS сервера.

Пример:

nameserver 192.168.0.100
nameserver 8.8.8.8
nameserver 8.8.4.4

Директива «domain»

Локальное доменное имя хоста.

domain <локальное доменное имя>

Пример:

domain domain.com
nameserver 192.168.0.100
nameserver 8.8.4.4

Как работает директива «domain» в файле «resolv.conf»?

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

Таким образом, если в файл /etc/resolv.conf поместить следующую строку:

domain example.com

Тогда, Ваш компьютер будет пытаться преобразовать test, как доменное имя test.example.com.

Директива «search»

Задает список поиска для имен хостов. Список поиска обычно определяется по имени локального домена. Это можно изменить, перечислив список доменов для поиска в этой директиве.

search <список поиска>

Пример:

search example.com company.net
nameserver 192.168.0.100
nameserver 8.8.8.8

Как работает директива «search» в файле «resolv.conf»?

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

Таким образом, если в файл /etc/resolv.conf поместить следующие строки:

search example.com company.net

Тогда, Ваш компьютер будет пытаться преобразовать test, как доменное имя test.example.com, а затем как test.company.net. В качестве IP адреса будет возвращено первое успешное преобразование.

krb5.conf (5): файл конфигурации Kerberos — справочная страница Linux

Имя

krb5.conf — файл конфигурации Kerberos

Описание

krb5.conf содержит информацию о конфигурации, необходимую для библиотеки Kerberos V5. Сюда входит информация, описывающая область Kerberos по умолчанию, и
расположение центров распределения ключей Kerberos для известных областей.

Файл krb5.conf использует формат в стиле INI. Разделы разделяются квадратными скобками; внутри каждого раздела есть отношения, в которых теги могут быть
присвоены определенные значения.Теги также могут содержать подраздел, который содержит дальнейшие отношения или подразделы. Тег может быть назначен нескольким
ценности. Вот пример формата INI, используемого krb5.conf :

 [раздел1] 

tag1 = значение_a
tag1 = значение_b
tag2 = значение_c

[раздел 2]

tag3 = {
subtag1 = subtag_value_a
subtag1 = subtag_value_b
subtag2 = subtag_value_c
}
tag4 = {
subtag1 = subtag_value_d
subtag2 = subtag_value_e
}

krb5.conf может включать другие файлы с помощью директив include FILENAME или includeir DIRNAME, которые должны находиться в начале строки.
FILENAME или DIRNAME должны быть абсолютным путем. Указанный файл или каталог должен существовать и быть доступным для чтения. Включение каталога включает все файлы в
каталог, имена которого состоят исключительно из буквенно-цифровых символов, дефисов или знаков подчеркивания. Включенные файлы профиля синтаксически независимы от своих родителей,
поэтому каждый включаемый файл должен начинаться с заголовка раздела.

krb5.conf может привести к получению конфигурации из загружаемого модуля профиля путем размещения директивы «module MODULEPATH: RESIDUAL» в
начало строки перед заголовками разделов. MODULEPATH может быть относительно пути к библиотеке установки krb5 или может быть абсолютным путем.
RESIDUAL предоставляется модулю во время инициализации. Если krb5.conf использует директиву модуля, kdc.conf также должен использовать директиву, если она существует.

Следующие разделы в настоящее время используются в krb5.conf файл:

[libdefaults]
Содержит различные значения по умолчанию, используемые библиотекой Kerberos V5.
[логин]
Содержит значения по умолчанию, используемые программой входа в систему Kerberos V5, login.krb5 (8).
[appdefaults]
Содержит значения по умолчанию, которые могут использоваться приложениями Kerberos V5.
[царства]
Содержит подразделы, привязанные к именам областей Kerberos, которые описывают, где найти серверы Kerberos для конкретной области и других областей, специфичных для этой области.
Информация.
[domain_realm]
Содержит отношения, которые сопоставляют поддомены и имена доменов с именами областей Kerberos. Это используется программами, чтобы определить, в какой области должен находиться хост,
учитывая его полное доменное имя.
[запись]
Содержит отношения, которые определяют, как объекты Kerberos должны выполнять регистрацию.
[capaths]
Содержит пути аутентификации, используемые с неиерархической межсферной областью. Записи в разделе используются клиентом для определения промежуточных областей.
который может использоваться при межсферной аутентификации.Он также используется конечной службой при проверке переданного поля на предмет доверенных промежуточных областей.
[dbdefaults]
Содержит значения по умолчанию для параметров базы данных.
[dbmodules]
Содержит параметры конкретной базы данных, используемые библиотекой базы данных.
[плагины]
Содержит параметры регистрации и фильтрации подключаемого модуля.
Каждый из этих разделов будет рассмотрен более подробно в следующих разделах.

Раздел Libdefaults

В разделе [libdefaults] определены следующие отношения:

default_keytab_name
Это отношение определяет имя keytab по умолчанию, которое будет использоваться серверами приложений, такими как telnetd и rlogind. По умолчанию это «/etc/krb5.keytab». Этот
ранее по умолчанию было «/ etc / v5srvtab», но было изменено на текущее значение.
default_realm
Это отношение определяет область по умолчанию, которая будет использоваться в активности Kerberos клиентского хоста.
default_tgs_enctypes
Это отношение определяет поддерживаемый список типов шифрования сеансового ключа, который должен возвращать KDC. Список может быть разделен запятыми или
пробел.
default_tkt_enctypes
Это отношение идентифицирует поддерживаемый список типов шифрования сеансового ключа, которые должен запрашивать клиент, в том же формате.
allowed_enctypes
Это отношение определяет разрешенный список типов шифрования сеансового ключа.

pam_krb5 (8): аутентификация Kerberos 5 — справочная страница Linux

Имя

pam_krb5 — аутентификация Kerberos 5

Сводка

требуется аутентификация /$LIB/security/pam_krb5.so
сеанс необязательный /$LIB/security/pam_krb5.so
учетная запись достаточна /$LIB/security/pam_krb5.so

пароль достаточен / $ LIB / security /pam_krb5.so

Описание

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

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

Аргументы

отладка
включает отладку через системный журнал (3) . Сообщения отладки регистрируются с приоритетом LOG_DEBUG .
debug_sensitive
включает отладку конфиденциальной информации через системный журнал (3) . Сообщения отладки регистрируются с приоритетом LOG_DEBUG .
безадресный
сообщает pam_krb5.so о необходимости получения учетных данных без списков адресов. Это может быть необходимо, если в вашей сети используется NAT, и не должно использоваться в противном случае.Этот
вариант устарел в пользу флага noaddresses в разделе libdefaults файла krb5.conf (5) .
afs_cells = cell.example.com [, …]
сообщает pam_krb5.so о необходимости получения маркеров для названных ячеек в дополнение к локальной ячейке для пользователя. Модуль угадывает основное имя AFS.
сервис для названных ячеек, или его можно указать, задав ячейку в форме имя ячейки = имя принципала .
баннер = Kerberos 5
сообщает pam_krb5.so, как идентифицировать себя, когда пользователи пытаются изменить свои пароли. Значение по умолчанию — «Kerberos 5».
ccache_dir = / tmp
сообщает pam_krb5.so, какой каталог использовать для хранения кешей учетных данных. Значение по умолчанию — / tmp .
ccname_template = ФАЙЛ:% d / krb5cc_% U_XXXXXX
указывает расположение, в котором следует разместить кэш учетных данных для конкретного сеанса пользователя.Это значение рассматривается как шаблон, и эти последовательности
заменено:% u имя входа
% U UID входа
% p главное имя
% r имя области
% h домашний каталог
% d каталог ccache по умолчанию (как установлено с ccache_dir )
% P текущий идентификатор процесса
% % literal «%»

Значение по умолчанию — « ФАЙЛ:% d / krb5cc_% U_XXXXXX ».

chpw_prompt
сообщает pam_krb5.so разрешить изменение паролей с истекшим сроком действия во время попыток аутентификации.Хотя это традиционное поведение «кинит», оно
несовместимо с поведением, ожидаемым PAM, которое ожидает, что аутентификация (кажется, будет) успешной, только для того, чтобы срок действия пароля был отмечен
последующий вызов функции управления счетом. Некоторые приложения, которые неправильно обрабатывают истечение срока действия пароля, безоговорочно завершат работу, если пользователь
срок действия пароля истек, и этот флаг можно использовать, чтобы попытаться обойти эту ошибку в этих приложениях. По умолчанию false .
cred_session
указывает, что pam_krb5 должен создавать и уничтожать кеши учетных данных, как это происходит, когда вызывающее приложение открывает и закрывает сеанс PAM, когда
вызывающее приложение устанавливает и удаляет учетные данные PAM. Это сделано для компенсации приложений, которые ожидают создания кеша учетных данных, но которые
не используйте управление сеансом PAM. Обычно это безобидное резервирование в приложениях, которым оно не требуется, поэтому этот параметр включен по умолчанию. кроме
услуги в этом списке: « sshd ».
existing_ticket
сообщает pam_krb5.so принять наличие ранее существовавших учетных данных Kerberos, предоставленных вызывающим приложением в кэше учетных данных по умолчанию, как
достаточно для аутентификации пользователя и пропуска любых проверок управления учетной записью.
ОПАСНО! Если также не используется валидация, относительно легко создать
Кэш учетных данных, который выглядит «достаточно хорошо», чтобы обмануть pam_krb5.so.
внешний

внешний = sshd
сообщает pam_krb5.чтобы использовать учетные данные Kerberos, предоставленные вызывающим приложением во время настройки сеанса. Чаще всего это полезно для получения токенов AFS.
перенаправляемый
сообщает pam_krb5.so, что полученные учетные данные должны быть пересылаемыми. Эта опция устарела в пользу опции с переадресацией в
libdefaults раздел krb5.conf (5) .
хостов = хостов [, …]
сообщает pam_krb5.so о необходимости получения учетных данных с использованием адресов заданных хостов в дополнение к адресам интерфейсов на локальной рабочей станции.За
Например, если ваша рабочая станция находится за маскирующим брандмауэром, укажите ou брандмауэра

Настройка файла krb5.conf

Настройка файла krb5.conf

ПРИМЕЧАНИЕ

Эта информация относится к почтовому серверу в Linux. Если ваш почтовый сервер находится на Mac OS X Server, вы можете добиться этого, просто правильно подключив машину к Open Directory.Если вы столкнулись с какой-либо проблемой при присоединении, посмотрите в разделе «Устранение неполадок» информацию о команде kinit , которая используется для проверки аутентификации.

The /Library/Preferences/edu.mit. на главной машине Open Directory — это файл krb5.conf . Вы можете скопировать этот файл с главного сервера Open Directory на компьютер Linux, на котором запущено Kerio Connect, и использовать его как / etc / krb5.conf файл.

Например, в
Linux: ~ # cd / и т. Д.
linux: / etc # scp opendirectoryserver: /Library/Preferences/edu.mit.Kerberos./krb5.conf
, замените opendirectoryserver именем хоста вашего сервера Open Directory.

Пошаговая настройка файла /etc/krb5.conf в Linux

Более подробное описание / etc / krb5.conf доступен на официальном сайте Kerberos Kerberos: Configuration Files / krb5.conf.

Для Active Directory или Open Directory с более сложной сетью (например, с несколькими областями Kerberos) необходимо настроить существующий файл krb5.conf или создать его с нуля. Linux распространяется с файлом /etc/krb5.conf , который содержит следующие ссылки на EXAMPLE.COM:

Типичный стандарт по умолчанию / etc / krb5.conf в Linux выглядит примерно так:

[libdefaults]
default_realm = ПРИМЕР.COM
dns_lookup_realm = ложь
dns_lookup_kdc = ложь
[царства]
EXAMPLE.COM = {
kdc = kerberos.example.com:88
admin_server = kerberos.example.com:749
default_domain = example.com
} [domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

Отредактируйте параметры файла, используя следующие инструкции:

[libdefaults]

Установите по умолчанию имя области Kerberos для вашей сети.Например, для игрового мира KERIO.COM сценарий будет выглядеть так:

[libdefaults]
default_realm = KERIO.COM
dns_lookup_realm = ложь
dns_lookup_kdc = ложь

[царства]

Каждая «область» указана как имя области заглавными буквами, равными символу, а затем небольшой раздел, заключенный в фигурные скобки, как показано в примере выше.

  1. Измените имя области EXAMPLE.COM, чтобы исправить имя области Kerberos, или, если пример области не существует, скопируйте его из примера файла krb5.conf, показанного выше.
  2. Каждая область содержит значения «kdc» и «admin_server». Задайте для них полное имя хоста сервера Open Directory или Active Directory.
  3. Установите default_domain на имя домена DNS, привязанное к области.
  4. Может быть несколько областей, поэтому Kerio MailServer может иметь несколько почтовых доменов, связанных с разными областями Kerberos.

Пример: для области KERIO.COM, главного сервера Open Directory master.kerio.com и домена DNS kerio.com

[царства]
KERIO.COM = {
kdc = мастер.kerio.com:88
admin_server = master.kerio.com:749
default_domain = kerio.com}

[default_realm]

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

  1. Измените каждый экземпляр EXAMPLE.COM на свое имя области Kerberos заглавными буквами.
  2. Измените каждый экземпляр example.com на свое доменное имя DNS, привязанное к соответствующей области Kerberos.
  3. В этом разделе могут быть похожие записи для других доменов и их соответствующих областей, поэтому Kerio MailServer может иметь разные почтовые домены, присоединенные к разным областям Kerberos.

Например, если область — KERIO.COM, а домен DNS — kerio.com:

[default_realm]
.kerio.com = KERIO.COM
kerio.com = KERIO.COM

heimdal-krb5.conf: файл конфигурации для Kerberos 5

хеймдал-крб5.conf: файл конфигурации для Kerberos 5

Команда для отображения руководства heimdal-krb5.conf в Linux: $ man 5 heimdal-krb5.conf

НАЗВАНИЕ

krb5.conf

— файл конфигурации для Kerberos 5

ОБЗОР

В krb5.h

ОПИСАНИЕ

В

файл определяет несколько параметров конфигурации для Kerberos 5
библиотека, а также для некоторых программ.

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

файл:
        / * пусто * /
        разделы

разделы:
        разделы разделы
        раздел

раздел:
        привязки '[' section_name ']'

section_name:
        STRING

привязки:
        привязки
        привязка

привязка:
        name '=' STRING
        name '=' '{' привязки '}'

название:
        STRING
 

СТРОКА состоит из одного или нескольких непробельных символов.

STRING, указанные ниже на этой странице руководства, используют следующие
обозначение.

логическое
значения могут быть либо да / истина, либо нет / ложь.
время
значения могут быть списком года, месяца, дня, часа, минуты, секунды.
Пример: 1 месяц 2 дня 30 мин.
Если единицы не указаны, предполагается, что секунды.
типов
допустимые типы шифрования: des-cbc-crc, des-cbc-md4, des-cbc-md5,
des3-cbc-sha1, arcfour-hmac-md5, aes128-cts-hmac-sha1-96 и
aes256-cts-hmac-sha1-96.
адрес
адрес может быть адресом IPv4 или IPv6.

В настоящее время признанные разделы и привязки:

[appdefaults]

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

  1. опция области приложения

  2. вариант приложения

  3. вариант области

  4. вариант

Поддерживаемые варианты:

перенаправляемый = логический

При получении начальных учетных данных сделайте их пересылаемыми.
проксируемый = логический

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

При получении начальных учетных данных запросите их для файла конфигурации empt

для Kerberos 5

Одно или несколько правил канонизации имени участника-службы. Каждое правило
состоит из одного или нескольких токенов, разделенных двоеточием (‘:’). В настоящее время
эти правила используются только для канонизации имени хоста (обычно, когда
получение сервисного билета из ccache или TGS, а также когда
получение учетных данных инициатора GSS из keytab).Эти правила могут быть
используется для реализации списков поиска, похожих на DNS-резолвер, без использования
DNS.

ПРИМЕЧАНИЕ. Правила канонизации имен — это экспериментальная функция.

Первый токен — это тип правила, один из следующих:
как есть,

квалифицируется, или

нсс.

Все оставшиеся токены должны быть токенами опций:
use_fast
(используйте FAST для защиты обменов TGS; в настоящее время не поддерживается),
use_dnssec
(используйте DNSSEC для защиты поиска имени хоста; в настоящее время не поддерживается),
ccache_only
,
use_referrals,

no_referrals,

область поиска,

миндоц = N,

maxdots = N,

заказ = N,
домен =
домен,
область =
царство,
match_domain =
домен,
и match_realm =
царство.

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

Для каждого правила система проверяет, что имя хоста имеет не менее
миндоц
периоды (если указаны) в нем, не более
макс. Точек
периоды (если заданы), что имя хоста оканчивается заданным
match_domain
(если дано),
и что область принципала соответствует
match_realm
(если есть).

Как есть
правила оставляют имя хоста неизменным, но могут устанавливать область.
Квалификация
правила уточняют имя хоста с данным
домен
а также может установить область.
В
нсс
Правило использует системный преобразователь для поиска канонического имени хоста и является
обычно небезопасно. Обратите внимание, что использование
нсс
тип правила подразумевает наличие основных псевдонимов в HDB (хотя
не обязательно в keytabs).

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

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

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

Неправильные правила игнорируются.

Модуль Kerberos для Apache

На этой странице описана конфигурация модуля версии 5.0. Руководство по настройке
для более старого модуля 4.x можно найти здесь.

Перед началом настройки модуля убедитесь, что ваша среда Kerberos
правильно настроен (т.е. KDC, /etc/krb5.conf и т. д.). Самый простой способ
check использует команду kinit с машины apache, чтобы получить
билет для известного принципала (желательно того, кто будет привык
протестировать модуль).

Теперь вам нужно создать служебный ключ для модуля, который нужен для
выполнить аутентификацию клиента. Проверка пароля kerberos имеет два
шаги. В первом из них с KDC связываются, используя пароль, пытаясь
получить билет для клиента. После того, как этот билет будет успешно приобретен,
модуль также должен проверять, что KDC не был намеренно подделан, и
только что полученному билету можно доверять. Если бы эта проверка не была сделана
любой злоумышленник, способный подделать KDC, может выдать себя за любого принципала
зарегистрирован в KDC.Чтобы сделать это, проверьте, что модуль apache должен
убедитесь, что KDC знает свой служебный ключ, который apache разделяет с
KDC. Этот служебный ключ должен быть создан при настройке модуля. Этот
служебный ключ также необходим при использовании метода согласования. В этом случае
модуль действует как стандартный сервис kerberos (аналогично, например, kerberized
ssh или ftp-серверы). Имя служебного ключа по умолчанию:
HTTP / @REALM, другое имя первого
экземпляр можно установить с помощью параметра KrbServiceName.Ключ должен храниться
в keytab на локальном диске используются параметры Krb5Keytab и Krb4Srvtab
чтобы указать имя файла с помощью keytab. Этот файл должен быть доступен только для чтения
для процесса apache и содержат только ключ, используемый для www
аутентификация.

Чтобы модуль загружался при запуске apache, добавьте следующую строку
в ваш httpd.conf:

LoadModule auth_kerb_module libexec / mod_auth_kerb.so
 

Чтобы проверка подлинности Kerberos работала, AuthType должен иметь значение

По причинам обратной совместимости значения KerberosV4
и KerberosV5 также поддерживаются.Их использование не рекомендуется.
однако для более точной настройки используйте следующие три параметра.

KrbMethodNegotiate на | от
(по умолчанию на )

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

KrbMethodK5Passwd на | от
(по умолчанию на )

Чтобы включить или отключить использование аутентификации на основе пароля для Kerberos v5.

KrbMethodK4Passwd на | от
(по умолчанию на )

Чтобы включить или отключить использование аутентификации на основе пароля для Kerberos v4.

KrbАвторизованный на | от
(по умолчанию на )

Если установлено значение с , эта директива разрешает проверку аутентификации.
на другие модули.Используйте только в том случае, если действительно знаете, что делаете.

KrbAuthRealms область1 [область2 … областьN]

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

KrbVerifyKDC на | от
(по умолчанию на )

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

KrbServiceName service
(по умолчанию HTTP )

Для уточнения имя службы, которая будет использоваться Apache для
аутентификация. Соответствующий ключ с таким именем должен быть сохранен в keytab.

Krb4Srvtab / путь / к / srvtab

Эта опция принимает один аргумент, указывающий путь к srvtab Kerberos V4.Он просто будет использовать «srvtab по умолчанию» из конфигурации Kerberos V4, если
этот вариант не указан. Srvtab должен быть доступен для чтения для apache
процесс и должен отличаться от srvtabs, содержащих ключи для других
Сервисы.

Krb5Keytab / путь / к / keytab

Эта опция принимает один аргумент, определяющий расположение Kerberos V5.
keytab файл. Он будет использовать «ключ клавиатуры по умолчанию» из конфигурации Kerberos V5, если он
здесь не указано.Файл keytab должен быть доступен для чтения для процесса apache,
и должен отличаться от других вкладок в системе.

KrbSaveCredentials на | от
(по умолчанию установлено , отключено)

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

Иногда необходимо хранить файл билета или кеш учетных данных.
после аутентификации пользователя, обычно для скриптов cgi. Если вы включите
KrbSaveCredentials, билеты будут
извлечены в файл заявки или кеш учетных данных, который будет доступен для
обработчик запросов.Файл заявки будет удален после обработки запроса.

Сценарий CGI может использовать эти файлы, установив KRB5CCNAME (v5) или
Переменные среды KRBTKFILE (v4), указывающие на имя файла, как указано
над. Пример сценария для использования KRB5CCNAME:
Вот.

Пример .htaccess

AuthType Kerberos
AuthName "Вход в Kerberos"
KrbAuthRealms KRB.NCSU.EDU NCSU.EDU
KrbMethodK4Passwd выключен
требуется пользователь [email protected] [email protected]
 

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

Использование Mozilla

Модуль был протестирован с последней версией Mozilla 1.7b, которая поддерживает GSSAPI.
аутентификация в дистрибутиве по умолчанию для Linux. Если вы хотите дать ему
попробуйте скачать
пакет mozilla. Если вы используете реализацию krb5 MIT, все, что вы
необходимо убедиться, что динамические библиотеки MIT доступны для
Mozilla. Их нужно либо установить в системные каталоги, либо установить
Переменная среды LD_LIBRARY_PATH, указывающая на каталог
содержащие библиотеки.

Если вы используете реализацию Heimdal krb5, вам необходимо установить
дополнительный пакет с фиктивными библиотеками. Скачать
и распаковать. Войдите в каталог gss_dummy и запустите make. затем
добавить полный путь к каталогу в среду LD_LIBRARY_PATH
переменная, а также путь к вашим стандартным библиотекам Heimdal. Затем установите
Переменная LD_PRELOAD, чтобы указать на Heimdal libgssapi.so и на
libgss_nt_service_name.so библиотека, созданная в фиктивном каталоге

.

Когда вы настраиваете среду и экспортируете переменные, вы можете запустить
Mozilla и должна иметь возможность общаться с модулем.Вы также можете включить
отладка модуля Mozilla Negotiate путем установки NSPR_LOG_MODULES
и переменные NSPR_LOG_FILE для согласования аутентификации: 5 и /tmp/negotiateauth.log
соответственно.

LD_PRELOAD = / usr / heimdal-0.6 / lib / libgssapi.so: gss_lib / libgss_nt_service_name.so
LD_LIBRARY_PATH = gss_lib: /usr/heimdal-0.6/lib
NSPR_LOG_MODULES = согласовать аутентификацию: 5
NSPR_LOG_FILE = / tmp /gotiateauth.log
экспорт LD_PRELOAD LD_LIBRARY_PATH NSPR_LOG_MODULES NSPR_LOG_FILE
мозилла

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *