Содержание

Авторизация в Windows-домене

Версии Microsoft Windows 2003 Server R1/R2, Ubuntu 8.04/8.10, Gentoo 2007/2008/2009.

Постановка задачи

  1. Авторизация в Linux с использованием данных, хранящихся в Active Directory домена Windows.
  2. Сохранение одинаковых uid доменных пользователей на всех компьютерах сети.
  3. Запрос билета Kerberos для прозрачного доступа к доменным ресурсам.

Необходимое ПО

Реализация

Релизации возможны две:

  1. С помощью SFU + LDAP + Kerberos.
  2. С помощью Samba(>=3.3) + Kerberos.

Общее необходимое ПО

SFU + LDAP + Kerberos

Необходимое ПО

Настройка авторизации

/etc/ldap.conf

Во всех виденных мной дистрибутивах по-умолчанию этот файл идёт уже удобоваримый, остаётся только допилить следующие параметры:

N.B. Внимательно сверьте приведённые параметры секции Services for UNIX 3.5 mappings - некоторые параметры в файле конфигурации отсутствуют, запись с homeDirectory должна быть только одна.

/etc/nsswitch.conf

В параметрах passwd, shadow и group добавляем ldap, чтобы запросы несуществующих пользователей производились в AD:

passwd:         compat ldap
shadow:         compat ldap
group:          compat ldap
Промежуточная проверка

На данном этапе команда

$ getent passwd

должна выводить кроме пользователей Unix ещё и пользователей домена, для которых определены Unix-параметры msSFU30xxxxxxx в AD.

/etc/krb5.conf

В простом случае с одним доменом, файл выглядит так:

[appdefaults]
        pam = {
                minimal_uid = 1000
                forwardable = true
        }

[libdefaults]
        # Домен по-умолчанию
        default_realm = DOMAIN.TDL
        forwardable = true
        proxiable = true

[realms]
        DOMAIN.TDL = {
                # Адрес сервера Kerberos, при правильной настройке DNS достаточно указать имя самого домена
                kdc = domain.tdl
                # Адрес сервера администрирования, обычно совпадает с kdc
                admin_server = domain.tdl
        }

[domain_realm]
        .domain.tdl = DOMAIN.TDL
        domain.tdl = DOMAIN.TDL
/etc/pam.d/

Находим в каталоге /etc/pam.d/ файлы, относящиеся ко всем программам системы. В Gentoo это один файл /etc/pam.d/system-auth; в Ubuntu это четыре файла: /etc/pam.d/common-auth, /etc/pam.d/common-account, /etc/pam.d/common-password, /etc/pam.d/common-session.

В них надо добавить вызов модуля pam_krb5.so.

Gentoo

auth            required        pam_krb5.so try_first_pass
account         required        pam_krb5.so
passwd          required        pam_krb5.so
session         required        pam_mkhomedir.so umask=0077

Последний модуль pam_mkhomedir.so позволяет создавать каталог пользователя при его первом входе в систему, назначая права на него 0700.

В целом должно получиться примерно следующее:

auth		required	pam_env.so
auth		optional	pam_group.so 
auth		sufficient	pam_unix.so try_first_pass likeauth nullok 
auth		required	pam_krb5.so try_first_pass

account		sufficient	pam_unix.so 
account		required	pam_krb5.so
 
password	required	pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 try_first_pass retry=3 
password	sufficient	pam_unix.so try_first_pass use_authtok nullok md5 shadow 
password        required        pam_krb5.so try first_pass
password	required	pam_deny.so

session		required	pam_limits.so 
session		required	pam_env.so
session		required	pam_unix.so 
session		required	pam_mkhomedir.so umask=0077

Ubuntu

В моих изысканиях файлы выглядели следующим образом (комментарии убраны):

Samba + Kerberos

В процессе…