Как подружить Linux с доменом Active Directory::Журнал СА 3.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы
1001 и 1 книга  
12.02.2021г.
Просмотров: 8551
Комментарии: 2
Коротко о корпусе. Как выбрать системный блок под конкретные задачи

 Читать далее...

11.02.2021г.
Просмотров: 8889
Комментарии: 4
Василий Севостьянов: «Как безболезненно перейти с одного продукта на другой»

 Читать далее...

20.12.2019г.
Просмотров: 16065
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 15156
Комментарии: 13
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 16275
Комментарии: 6
Анализ вредоносных программ

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Как подружить Linux с доменом Active Directory

Архив номеров / 2008 / Выпуск №3 (64) / Как подружить Linux с доменом Active Directory

Рубрика: Администрирование /  Администрирование

Мирослав Бусалов

Как подружить Linux с доменом Active Directory

Windows или Linux? Наверное, нет ни одного системного администратора, который не задумывался бы над этим вопросом. О плюсах и минусах операционных систем Open Source и продуктов Microsoft написаны гигабайты текстов, ожесточенные споры не утихают уже много лет. Наблюдая за этими баталиями, хочется лишь одного – гармонии.

Предположим следующую ситуацию. Часть сотрудников вашей компании выполняет только рутинные операции в одном-двух бизнес-приложениях, используя браузер. И операционная система для них значения не имеет. Исходя из экономической целесообразности, нет смысла ставить на такие рабочие станции Windows.

Или другой пример – есть отдел разработчиков под UNIX, которым удобнее и комфортнее использовать на рабочей станции Linux. Как можно заметить, причины внедрения Linux-десктопов в организации могут быть различные. При этом в вашей организации есть домен Active Directory, все пользователи имеют свои учетные записи, собственные папки на файловом сервере и разные права на свои рабочие станции. Подобные удобства всем хотелось бы сохранить и на рабочих станциях под Linux, особенно системному администратору, поскольку централизованная авторизация и хранение данных пользователей на сервере уменьшают его головную боль.

Статья представляет собой пошаговое руководство, как «подружить» рабочие станции Linux с доменом Active Directory.

Начальные условия

Домен Active Directory под управлением одного или более контроллеров домена на базе Windows Server 2003; в качестве Linux-десктопа используется Kubuntu 7.10

Цели

  • Обеспечить единую аутентификацию пользователей.
  • Обеспечить авторизацию пользователей в домене Active Directory.
  • Обеспечить прозрачную и сквозную авторизацию на ресурсах сети (SSO – Single Sign-On).
  • Обеспечить хранение пользовательских данных на сервере.

Про последний пункт хотелось бы сказать следующее: в данном примере в качестве файлового сервера используется Windows-сервер. Поэтому речь идет только о хранении данных пользователей. Сохранять профиль UNIX-пользователя на сервере не представляется возможным, так как в качестве Linux-десктопа используется Kubuntu 7.10 со встроенным экранным менеджером KDE. В процессе создания профиля пользователя KDE создает символьные ссылки (symlink), которые необходимы для корректной работы. Естественно, что создать symlink в файловой системе NTFS на Windows Server 2003 не получится.

Используемые обозначения

  • domain.ru – полное имя домена Active Directory;
  • dc.domain.ru – полное имя контроллера домена;
  • fileserver.domain.ru – полное имя файлового сервера.

Условно всю работу можно разделить на следующие этапы:

  • Модернизация схемы Active Directory.
  • Настройка атрибутов будущих UNIX-пользователей и групп.
  • Настройка рабочей станции с Kubuntu.
  • Настройка ресурсов сети (веб-серверов, службы ssh и т. д.) для обеспечения прозрачной и сквозной авторизации пользователей.

Модернизация схемы Active Directory

В классической схеме AD невозможно хранить атрибуты UNIX-пользователей, такие как UID, GID, Login Shell, Home Directory. Поэтому схему необходимо расширить, добавив в нее возможность хранения нужных нам сведений. Для этого существует два варианта: первый – это бесплатный пакет Microsoft под названием Windows Services for UNIX 3.5 (SFU), второй – это использование последней версии семейства серверов 2003 – Windows Server 2003 R2. Мы будем использовать второй вариант. Если ваши контроллеры домена и файловые серверы уже работают под релизом R2, можно смело пропустить несколько абзацев, касающихся обновления стандартного Windows Server 2003 до R2.

Windows Server 2003 R2 – версия Windows Server 2003, имеющая встроенные компоненты Windows Services for UNIX (SFU), необходимые нам при создании гетерогенной среды для хранения атрибутов UNIX-пользователей в схеме Active Directory. Релиз R2 включает в себя два важных компонента:

  • Subsystem for UNIX-based Applications (SUA);
  • Identity Management for UNIX (IMU).

SUA помогает UNIX-приложениям работать под Windows так, как будто они работают в Linux или UNIX. Это выходит за рамки нашей статьи, поэтому мы сфокусируем внимание на компоненте IMU, которая содержит нужные в дальнейшем службы – Administration Components, Password Synchronization, Server for NIS, их установку мы сейчас и рассмотрим.

Необходимо отметить, что возможно два сценария обновления, в зависимости от того, установлен у вас пакет SFU или нет. Мы будем рассматривать вариант, при котором SFU не установлен. В противном случае рекомендую посетить англоязычный ресурс http://www.winlinanswers.com/book/resources.php?id=5, где вы найдете полное описание варианта обновления до R2 с установленным SFU.

Вставив CD#2 с дистрибутивом Windows Server 2003 R2 и согласившись на продолжение установки, вы увидите сообщение об ошибке с описанием, что установка не может быть продолжена, поскольку версия схемы данного домена не совместима с R2. Поэтому сначала необходимо выполнить следующую команду:

X:\CMPNENTS\R2\ADPREP\adprep.exe /forestprep

где X – буква, соответствующая CD с дистрибутивом. После чего можно начать установку компонентов R2, выполнив файл R2auto.exe из корневой директории CD.

После установки компонентов R2 нужно в панели управления в разделе установки и удаления программ выбрать пункт «Windows Components», затем найти строчку «Active Directory Services» и в детализации выбрать установку «Identity Management for UNIX».

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

Настройка атрибутов будущих UNIX-пользователей и групп

Откройте оснастку Active Directory User and Computers и вызовите свойства любого пользователя. Появилась новая закладка UNIX Attributes, в которой возможно назначить свойства UNIX-пользователя (см. рисунок). Для начала нам нужно создать несколько UNIX-групп, которые пригодятся нам в дальнейшем.

Свойства UNIX-пользователя - UNIX attributes

Свойства UNIX-пользователя - UNIX attributes

Создайте группу UNIXusers – это будет группа по умолчанию для всех UNIX-пользователей. Для этого создайте обычным способом группу нужного вам вида (Domain Local или Global), затем откройте свойства данной группы и перейдите на вкладку «UNIX Attributes». В строке «NIS Domain» выберите ваш домен, после чего группе автоматически будет присвоен GID. Если он не устраивает вас по какой-то причине, можете прописать новый идентификатор вручную. При создании следующих групп GID будет автоматически увеличиваться на единицу.

Аналогичным способом создайте группу UNIXadmins, которая затем будет указана в настройках конфигурационного файла /etc/sudoers как группа, членам которой разрешено выполнять sudo на рабочих станциях с Kubuntu.

Создайте еще одну группу и назовите ее audio, присвоив ей вручную GID 29. Дело в том, что в Linux есть одна особенность – файлы аудиоустройств, как правило, имеют общую группу таким образом, что возможность работы с аудио доступна только владельцам файлов и членам этой группы. В эту группу потом добавим всех пользователей, чтобы у них была возможность использовать наушники и микрофон.

Теперь выберите одного из тех пользователей вашего домена, которому вы хотите присвоить UNIX-атрибуты. В свойствах откройте вкладку «UNIX Attributes», так же как и для группы, выберите имя вашего домена в строке «NIS Domain», и в строке «Primary group name/GID» выберите группу по умолчанию UNIXusers.

Если необходимо по каким-то причинам изменить параметры Login Shell и Home Directory, можно это сделать. UID присвоится автоматически, но при желании можно прописать его вручную.

После присвоения UNIX-атрибутов всем нуждающимся в них пользователям вернемся к группам. Открыв свойства группы UNIXusers, на вкладке «UNIX Attributes» нажмите кнопку «Add» и добавьте туда всех пользователей.

Аналогично поступим с группой audio, а в группу UNIXadmins внесем только тех пользователей, кому разрешено выполнение sudo на рабочих станциях.

Теперь остается только создать нового пользователя, например unixldap, и присвоить ему соответствующие атрибуты. Учетная запись этого пользователя будет использоваться при регистрации и поиске в LDAP с Linux-десктопа, поэтому её необходимо максимально ограничить в правах, допустим, явно запретив доступ ко всем ресурсам файлового сервера и т. д.

На этом работы с оснасткой «Active Directory User and Computers» закончены.

Немного о настройке файлового сервера для работы с UNIX-клиентами

В данном примере монтирование домашних каталогов пользователей осуществляется с использованием CIFS (Common Internet File System).

Если для каких-нибудь задач вам потребуется работа с NFS (Network File System), то для обеспечения доступа к файловым ресурсам вашего Windows-сервера с Linux-десктопов необходимо будет установить на сервер пакет Microsoft Services for NFS. Привожу краткое руководство, как это сделать.

Зайдите в панель управления, затем в разделе установки и удаления программ выберите пункт «Windows Components», там войдите в «Other Network File and Print Services» и в детализации выберите установку «Microsoft Services for NFS». Из данного пакета необязательными к установке являются два последние пункта: Server for NFS Authentication и User Name Mapping. После установки данных служб пользователи с рабочих станций под управлением Linux получат доступ к файловым ресурсам данного сервера, используя NFS.

Настройка рабочей станции с Kubuntu

Теперь приступим к самой большой части работы – настройке Kubuntu. Сначала выполните установку Kubuntu 7.10 на рабочую станцию, после чего установите все необходимые обновления, например, используя встроенный в KDE менеджер обновлений Adept Updater.

Также рекомендуется изменить параметры входа в систему для KDE (в других экранных менеджерах могут быть отличия) – открываем меню «System Settings», переходим на закладку «Advanced», там выбираем «Менеджер входа в систему», и, войдя в административный режим, отключаем опцию «Показывать список» на вкладке «Пользователи». Если этого не сделать, система при входе будет отображать всех UNIX-пользователей вашего домена, что совершенно ни к чему.

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

Поэтому первым пунктом настроим синхронизацию времени. Для этого в файле /etc/default/ntpdate внесем следующие изменения:

NTPSERVERS="dc.domain.ru"

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

$sudo ntpdate -s dc.domain.ru

Указываем FQDN для настраиваемой рабочей станции в файле /etc/hosts:

127.0.0.1 workstation.domain.ru localhost workstation

Проверьте доступность машины по FQDN командой:

ping workstation.domain.ru –с 4

Теперь необходимо установить и настроить поддержку Kerberos. Устанавливаем нужные пакеты:

$sudo apt-get install krb5-user libpam-krb5 krb5-config libkrb53 krb5-doc

Если система выдала ошибку:

dpkg was interrupted, you must manually run dpkg –-configure –a to correct this problem

последуйте совету подсказки, наберите:

$sudo dpkg –-configure –a

В процессе вас попросят принять решение о замене файла /etc/qt3/qt_plugins_3.3rc – согласитесь с вариантом по умолчанию, оставьте текущую версию без изменений. Данная ошибка иногда проявляется в версии 7.10 после первой установки обновлений.

И приступаем к настройке – внесем изменения в файл /etc/krb5.conf:

[libdefaults]
 
default_realm = DOMAIN.RU

# DOMAIN.RU пишется обязательно ЗАГЛАВНЫМИ БУКВАМИ

ticket_lifetime = 24000

# The following krb5.conf variables are only for

# MIT Kerberos

krb4_config = /etc/krb.conf

krb4_realms = /etc/krb.realms

kdc_timesync = 1

ccache_type = 4

forwardable = true

proxiable = true

plain = {

something = something-else

}

}

fcc-mit-ticketflags = true

[realms]

DOMAIN.RU = {

kdc = dc.domain.ru

# kdc – key distribution center – контроллер домена

admin_server = dc.domain.ru

default_domain = domain.ru

}

[domain_realm]

.domain.ru = DOMAIN.RU

domain.ru = DOMAIN.RU

[login]

krb4_convert = true

krb4_get_tickets = false

[logging]

default = FILE:/var/log/krb5libs.log

kdc = FILE:/var/log/krb5kdc.log

admin_server = FILE:/var/log/kadmind.log

После настройки Kerberos мы можем проверить его работоспособность следующими командами:

$kinit user@DOMAIN.RU

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

$klist

Ticket cache: FILE:/tmp/krb5cc_1000

Default principal: user@DOMAIN.RU

Valid starting Expires Service principal

03/15/08 15:15:55 03/15/08 21:55:55 krbtgt/ DOMAIN.RU@DOMAIN.RU 

Удалить билет можно командой kdestroy.

Если при выполнении команды kinit система выдала ошибку, проверьте настройки DNS, большинство проблем возникает именно из-за некорректной работы данной службы.

Далее на очереди установка и настройка поддержки LDAP:

$sudo apt-get install libnss-ldap libpam-ldap

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

Изменяем файл /etc/ldap.conf:

# LDAP Defaults

# See ldap.conf(5) for details

# This file should be world readable but not world writable

uri ldap://dc.domain.ru

base       dc=domain,dc=ru

ldap_version 3

scope sub

# Следующие две строки содержат реквизиты учетной записи

# unixldap, необходимые для доступа к схеме AD

binddn cn=unixldap,cn=Users,dc=domain,dc=ru

bindpw     password

bind_timelimit 2

bind_policy soft

# bind_policy soft указывает, что при неудачном подключении

# к LDAP не пытаться переподключиться при отсутствии

# данной строки система не сможет загрузиться

idle_timelimit 2

# PAM options with group-based access configuration:

pam_filter objectClass=posixAccount

pam_login_attribute uid

# nsswitch.conf options:

nss_base_password cn=Users,dc=domain,dc=ru?sub

nss_base_group   cn=Users,dc=domain,dc=ru?sub

# Далее прописываем mapping POSIX атрибутов,

# т.к. в схему AD они не добавляются

nss_map_objectclass posixAccount User

nss_map_attribute homeDirectory unixHomeDirectory

nss_map_attribute gecos cn

nss_map_objectclass posixGroup Group

ssl no
 
# sudo options:

sudoers_base cn=UNIXadmins,cn=Users,dc=domain,dc=ru

# debug 257

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

Также необходимо внести изменения в файл /etc/ldap/ldap.conf, который требуется для работы некоторых утилит, например ldapsearch. Это файл может состоять всего из двух строк:

BASE       dc=domain,dc=ru

URI ldap://dc.domain.ru

Пришла очередь установить компоненты, которые позволят монтировать личные папки пользователей, располагающиеся на сервере Windows. Это пакеты smbfs и pam_mount. Первый позволяет понимать windows share, а второй отвечает за автоматический mount/umount при процедурах login/logout. Устанавливаем:

$sudo apt-get install smbfs

А вот установка pam_mount не отличается простотой. Дело в том, что при установке с помощью команды «apt-get install» по умолчанию установится версия 0.18, которая не отличается дружелюбием по отношению к файловой системе cifs (хотя заявлено, что поддерживает), поэтому нам нужно установить более новую версию, например 0.32, а для этого придется обновить много библиотек и установить несколько пакетов. Итак, приступим. Скачайте следующие установочные файлы и установите их именно в такой последовательности:

  • tzdata_2008a-0ubuntu0.7.10_all.deb
  • libc6_2.7-6_i386.deb
  • libhx10_1.10.2-2_i386.deb
  • libssl0.9.8_0.9.8g-4ubuntu1_i386.deb

Теперь привычным способом установим пакет libxml-writer-perl:

$sudo apt-get install libxml-writer-perl

И только после всех описанных манипуляций скачиваем и устанавливаем пакет libpam-mount_0.32-4_i386.deb.

Конфигурационный файл модуля pam_mount называется pam_mount.conf.xml и находится в каталоге /etc/security. Я приведу здесь только измененные части файла, т.к. целиком его приводить смысла не имеет.

Для начала включим отладку:

<debug enable="1" />

Ниже перед закомментированным абзацем с описанием mntoptions вставим строчку:

<mntoptions allow="*" />

И наконец после строки:

<pmvarrun>pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>

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

<volume

       user="*" 

       invert="1"

       fstype="cifs"

       server="fileserver.domain.ru"

       path="share/%(USER)"

       options="iocharset=utf8,dir_mode=0700,file_mode=0600"

       mountpoint="/home/%(USER)/data"

    />

Получается, что при входе в систему в домашнем каталоге пользователя будет создаваться папка /data, куда будет монтироваться его сетевая папка с сервера (\\fileserver.domain.ru\share\username).

Следующим шагом позаботимся о корректной работе sudo для соответствующих пользователей. Для этого внесем следующие изменения в файл /etc/sudoers:

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%UNIXadmins ALL=(ALL) ALL

И еще изменим файл /etc/pam.d/sudo для корректной работы kdesu (запуск административных приложений в KDE):

#%PAM-1.0

auth       sufficient   pam_krb5.so

auth       sufficient   pam_ldap.so  use_first_pass

auth       sufficient   pam_unix.so  use_first_pass

auth       required     pam_deny.so

#@include common-auth

#@include common-account

Теперь нам предстоит настроить модули PAM (Pluggable Authentication Modules) – подключаемые модули аутентификации. Описание принципов работы и синтаксис оставим за рамками нашей статьи, все интересующиеся без труда найдут его в сети. Изменениям подвергнутся несколько конфигурационных файлов, располагающихся в каталоге /etc/pam.d. Начнем с файла /etc/pam.d/common-account:

#account   required     pam_login_access.so

account    required     pam_ldap.so ignore_authinfo_unavail ignore_unknown_user

account    required     pam_unix.so

Теперь редактируем файл /etc/pam.d/common-auth:

auth       optional     pam_mount.so

auth       sufficient   pam_krb5.so  use_first_pass

auth       sufficient   pam_ldap.so  ignore_authinfo_unavail ignore_unknown_user use_first_pass

auth       required     pam_unix.so nullok_secure

auth       required     pam_deny.so

Следом вносим изменения в файл /etc/pam.d/common-password, который начнет работать только при смене пароля (по истечении срока или при запуске утилиты passwd):

password   sufficient   pam_unix.so  obscure md5

password   sufficient   pam_ldap.so

Переходим к файлу /etc/pam.d/common-session:

session optional pam_mount.so

session          required     pam_unix.so

session          optional     pam_foreground.so

Необходимо отметить, что во всех модулях, использующих библиотеку pam_mount, строчка с описанием ее использования должна быть на первом месте, к сожалению, pam_mount не умеет принимать пароль через опции use_first_pass или try_first_pass, поэтому строка просто не отработает, как следствие, сетевая папка не будет смонтирована.

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

На этом настройка модулей PAM завершена. Осталось внести изменения в последний, очень важный конфигурационный файл: /etc/nsswitch.conf:

group: files ldap

hosts: files dns

networks: files

passwd: files ldap

shells: files

sudoers: files ldap

Теперь остается только завершить сеанс и войти в систему под доменным UNIX-пользователем. При неудачной попытке ищите ошибки в log-файлах.

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


Комментарии отсутствуют

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

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru