Инструменты пользователя

Инструменты сайта

A PCRE internal error occured. This might be caused by a faulty plugin

os:linux:common:avtorizacija_v_windows-domene

====== Авторизация в Windows-домене ====== Версии **Microsoft Windows 2003 Server R1/R2**, **Ubuntu 8.04/8.10**, **Gentoo 2007/2008/2009**. ===== Постановка задачи ===== - Авторизация в Linux с использованием данных, хранящихся в Active Directory домена Windows. - Сохранение одинаковых uid доменных пользователей на всех компьютерах сети. - Запрос билета Kerberos для прозрачного доступа к доменным ресурсам. ===== Необходимое ПО ===== ===== Реализация ===== Релизации возможны две: - С помощью SFU + LDAP + Kerberos. - С помощью Samba(>=3.3) + Kerberos. ==== Общее необходимое ПО ==== * Microsoft Windows 2003 Server с настроенной Active Directory * pam: базовый пакет PAM (Pluggable Authentication Module), на текущий момент включён по-умолчанию в большинство дистрибутивов * pam_krb5: модуль PAM для выполнения автризации с помощью Kerberos * //nscd//: (необязательно) кэширование аутентификационных данных (идёт в составе glibc) * //sudo//: (необязательно) позволяет пользователям и группам пользователей выполнять комманды от других пользователе ==== SFU + LDAP + Kerberos ==== === Необходимое ПО === * Установленный пакет Services for Unix (при написании данной статьи использовалась версия 3.5), или Server for NIS, или Identity Management for Unix. Всё это необходимо для добавления в схему AD дополнительных полей, данные из которых будут использованы для идентификации пользователей. * openldap: необходим для выполнения запросов в LDAP * nss_ldap: модуль Name Service для выполнения поиска пользователей, групп и т.п. в LDAP === Настройка авторизации === == /etc/ldap.conf == Во всех виденных мной дистрибутивах по-умолчанию этот файл идёт уже удобоваримый, остаётся только допилить следующие параметры: * Настроить host (или ldap, ldapi, ldaps, ...) * Настроить base (обычно, ou=Users,dc=domain,dc=tdl) * При необходимости настроить binddn (имя пользователя для подключения к AD) и binpw (пароль пользователя для подключения к AD) * Раскомментировать (или добавить при её отсутствии) группу параметров //Services for UNIX 3.5 mappings//:<file> nss_map_objectclass posixAccount User nss_map_objectclass shadowAccount User nss_map_attribute uid msSFU30Name nss_map_attribute uidNumber msSFU30UidNumber nss_map_attribute gidNumber msSFU30GidNumber nss_map_attribute uniqueMember msSFU30PosixMember nss_map_attribute userPassword msSFU30Password nss_map_attribute homeDirectory msSFU30HomeDirectory nss_map_attributes loginShell msSFU30LoginShell nss_map_objectclass posixGroup Group pam_login_attribute msSFU30Name pam_filter objectclass=User pam_password ad </file> N.B. Внимательно сверьте приведённые параметры секции //Services for UNIX 3.5 mappings// - некоторые параметры в файле конфигурации отсутствуют, запись с homeDirectory должна быть только одна. == /etc/nsswitch.conf == В параметрах //passwd//, //shadow// и //group// добавляем **ldap**, чтобы запросы несуществующих пользователей производились в AD: <file> passwd: compat ldap shadow: compat ldap group: compat ldap </file> == Промежуточная проверка == На данном этапе команда <code console>$ getent passwd</code> должна выводить кроме пользователей Unix ещё и пользователей домена, для которых определены Unix-параметры msSFU30xxxxxxx в AD. == /etc/krb5.conf == В простом случае с одним доменом, файл выглядит так: <file> [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 </file> == /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** <file> 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 </file> Последний модуль //pam_mkhomedir.so// позволяет создавать каталог пользователя при его первом входе в систему, назначая права на него 0700. В целом должно получиться примерно следующее: <file> 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 </file> **Ubuntu** В моих изысканиях файлы выглядели следующим образом (комментарии убраны): * **/etc/pam.d/common-auth**<file> auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_krb5.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so </file> * **/etc/pam.d/common-account**<file> account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_krb5.so account requisite pam_deny.so account required pam_permit.so </file> * **/etc/pam.d/common-password**<file> password [success=2 default=ignore] pam_unix.so obscure sha512 password [success=1 user_unknown=ignore default=die] pam_krb5.so try_first_pass password requisite pam_deny.so password required pam_permit.so </file> * **/etc/pam.d/common-session**<file> session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session optional pam_ck_connector.so nox11 session required pam_mkhomedir.so umask=0077 </file>

Дискуссия

Enter your comment
 
os/linux/common/avtorizacija_v_windows-domene.txt · Последние изменения: 17.02.2011 05:58 (внешнее изменение)

Инструменты страницы