ActiveDirectory/Login

Материал из ALT Linux Wiki

< ActiveDirectory(Различия между версиями)
Перейти к: навигация, поиск
(Проверка работы)
 
(33 промежуточные версии не показаны)
Строка 17: Строка 17:
|Пароль администратора||Pa$$word
|Пароль администратора||Pa$$word
|}
|}
-
 
+
<div id="prep"></div>
-
{{Attention|Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную.}}
+
-
{{Attention|При указании домена, имеющего суффикс '''.local''', потребуется на сервере и подключаемых компьютерах под управлением Linux <u>'''отключить''' службу {{cmd|avahi-daemon}}</u> (доменная зона "local." используется в технологии zeroconf).}}
+
-
 
+
= Подготовка =
= Подготовка =
== Установка пакетов ==
== Установка пакетов ==
-
  apt-get install samba-winbind alterator-auth
+
 
 +
{{Attention|Аутентификация через winbind в новых сборках Samba не работает, используйте аутентификацию через {{pkg|task-auth-ad-sssd}}.}}
 +
 
 +
С версии {{prg|alterator-auth-0.31-alt1}}
 +
 
 +
  apt-get install task-auth-ad-sssd
 +
 
 +
{{note|Для старых версий: <source lang="text">apt-get install alterator-auth sssd-ad samba-common-tools</source>}}
Требуемые версии:
Требуемые версии:
Строка 30: Строка 34:
* {{pkg|alterator-auth}} >= 0.26-alt1
* {{pkg|alterator-auth}} >= 0.26-alt1
-
Возможно, следует [[Обновление ОС#В пределах версии|обновить]] установленный дистрибутив версии 7.0 из репозитория.
+
Возможно, следует [[Обновление ОС#В пределах версии|обновить]] установленный дистрибутив из репозитория.
== Синхронизация времени ==
== Синхронизация времени ==
Строка 61: Строка 65:
  ntpdate pool.ntp.org
  ntpdate pool.ntp.org
-
 
+
<div id="setup"></div>
= Ввод в домен в Центре управления системой =
= Ввод в домен в Центре управления системой =
В Центре управления системой перейдите в раздел {{path|Пользователи → Аутентификация}}
В Центре управления системой перейдите в раздел {{path|Пользователи → Аутентификация}}
 +
 +
Для ввода компьютера в Active Directory потребуется установить пакет {{pkg|task-auth-ad-sssd}} и все его зависимости.
[[Файл:Alterator-auth-new.png]]
[[Файл:Alterator-auth-new.png]]
Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».
Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».
-
 
-
{{Note|Для аутентификации в Active Directory потребуется наличие службы {{cmd|winbind}} из пакета {{pkg|samba-winbind}}}}
 
= Ввод в домен в командной строке =
= Ввод в домен в командной строке =
Строка 76: Строка 80:
<pre># system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word'
<pre># system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word'
Joined 'HOST-15' to dns domain 'school.alt'</pre>
Joined 'HOST-15' to dns domain 'school.alt'</pre>
-
 
+
<div id="check"></div>
= Проверка работы =
= Проверка работы =
-
<pre># wbinfo -u | grep ivan
+
<pre># getent passwd ivan
-
ivan
+
-
 
+
-
# wbinfo -a ivan
+
-
Enter ivan's password:
+
-
plaintext password authentication succeeded
+
-
Enter ivan's password:
+
-
challenge/response password authentication succeeded
+
-
 
+
-
# getent passwd | egrep :[0-9]{5} | grep ^ivan
+
ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash
ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash
Строка 99: Строка 94:
Server time: Ср, 22 апр 2015 16:22:47 MSK
Server time: Ср, 22 апр 2015 16:22:47 MSK
KDC server: 192.168.1.1
KDC server: 192.168.1.1
-
Server time offset: -1</pre>
+
Server time offset: -1
 +
# net ads testjoin
 +
Join is OK</pre>
 +
 +
{{Note| Вы не увидите пользователей из AD с помощью команды <code># getent passwd </code> на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку серверы. Поэтому для проверки необходимо точно указать имя пользователя <code># getent passwd имя_пользователя </code>. Список пользователей можно посмотреть на сервере командой <code># samba-tool user list</code>}}
 +
 +
= Примечания =
 +
# Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки ping ДОМЕН.local и вводите в домен
 +
# При указании домена, имеющего суффикс '''.local''', потребуется на сервере и подключаемых компьютерах под управлением Linux <u>'''отключить''' службу {{cmd|avahi-daemon}}</u> (доменная зона "local." используется в технологии zeroconf).
 +
# Следите за синхронизацией времени на клиенте и сервере.
 +
# Для предотвращения кэширования имён пользователя отключите службу {{cmd|nscd}}.
 +
# В новых версиях Samba до запуска службы {{cmd|winbind}} должна запускаться служба {{cmd|smb}}.
 +
# Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
 +
<source lang="bash">rm -f /etc/krb5.conf
 +
cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf</source>
 +
<div id="login"></div>
= Настройка окна входа =
= Настройка окна входа =
Строка 118: Строка 128:
Полный перечень доступных кнопок:
Полный перечень доступных кнопок:
  show-indicators=a11y;power;session;language
  show-indicators=a11y;power;session;language
 +
 +
= Отображение глобальных групп на локальные =
 +
 +
== Установка модуля ролей ==
 +
apt-get install libnss-role
 +
 +
== Настройка ролей и привилегий ==
 +
Добавляем роль локальных администраторов:
 +
groupadd -r localadmins
 +
 +
{{Note|Лучше использовать группу localadmins (вместо admins) по избежание конфликта с группой admins во FreeIPA}}
 +
 +
Создаём привилегию на право удалённого доступа (по протоколу ssh):
 +
groupadd -r remote
 +
 +
Включаем удалённый доступ только для группы remote:
 +
control sshd-allow-groups enabled
 +
sed -i 's/AllowGroups.*/AllowGroups = remote/' /etc/openssh/sshd_config
 +
 +
Настраиваем список привилегий для пользователей (для роли users):
 +
roleadd users cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp fuse
 +
 +
Настраиваем список привилегий для администраторов (для роли admins):
 +
roleadd localadmins wheel remote vboxusers
 +
 +
Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности:
 +
roleadd 'Domain Users' users
 +
roleadd 'Domain Admins' localadmins
 +
 +
Просматриваем список назначенных ролей и привилегий:
 +
rolelst
 +
id ivan
 +
 +
Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает локальные роли для глобальных групп в домене.
 +
 +
= Подключение файловых ресурсов =
 +
 +
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
 +
 +
== Через gvfs ==
 +
 +
{{note|Способ актуален для дистрибутивов, использующих gvfs (например, Кентавр, Simply Linux, Basealt Workstation, СПТ).}}
 +
 +
Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.
 +
 +
1. Устанавливаем необходимые пакеты (с правами root):
 +
apt-get install fuse-gvfs gvfs-backend-smb gvfs-utils
 +
 +
2. Включаем для пользователя в группу ''fuse'' (с правами root):
 +
gpasswd -a <пользователь> fuse
 +
 +
Как включить доменных пользователей в локальную группу см. выше.
 +
 +
{{Note|Следующий рецепт не работает:
 +
control fusermount public
 +
systemctl restart systemd-udevd
 +
}}
 +
 +
3. Входим доменным пользователем
 +
 +
4. Открываем ресурс в файловом менеджере (например, по адресу {{path|smb://server/sysvol}}). Ресурс смонтирован по пути {{path|/run/<uid_пользователя>/gvfs}}.
 +
 +
Другой вариант (полезно для скриптов в автозапуске):
 +
gvfs-mount smb://server/sysvol/
 +
 +
{{note|Если необходимо открывать что-то с ресурса в WINE, в {{cmd|winecfg}} добавьте диск с путём {{path|/run/<uid_пользователя>/gvfs}}.}}
 +
 +
== Через pam_mount ==
 +
 +
В этом случае заданный ресурс подключается с заданного сервера <u>автоматически при каждом входе</u> доменным пользователем.
 +
 +
1. Устанавливаем {{pkg|pam_mount}}:
 +
apt-get install pam_mount
 +
 +
2. Прописываем pam_mount в схему {{path|/etc/pam.d/system-auth-sss}}:
 +
 +
(перед {{term|auth            required        pam_permit.so}})
 +
auth            optional        pam_mount.so
 +
и
 +
session        optional        pam_mount.so
 +
 +
3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}} (перед тегом <cifsmount>):
 +
<source lang="xml"><volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" /></source>
 +
где
 +
* '''uid="10000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD)
 +
* '''server="c228"''' — имя сервера с ресурсом
 +
* '''path="sysvol"''' — имя файлового ресурса
 +
* '''mountpoint="~/share"''' — путь монтирования в домашней папке пользователя
 +
 +
{{Attention|Обязательно указывайте настоящее имя сервера в параметре {{term|server}}, а не имя домена}}
 +
 +
= Групповые политики =
 +
 +
Групповые политики (GPO) на Linux применяются только контроль входа через [[SSSD]] и средства Centrify.
 +
 +
== SSSD ==
 +
 +
SSSD имеет внутреннюю поддержку следующих групповых политик:
 +
 +
{|class="standard"
 +
!Политика
 +
|-
 +
|{{term|Allow log on locally}}
 +
|-
 +
|{{term|Allow log on through Remote Desktop Services}}
 +
|-
 +
|{{term|Access this computer from the network}}
 +
|-
 +
|{{term|Allow log on as a batch job}}
 +
|-
 +
|{{term|Allow log on as a service}}
 +
|}
 +
 +
 +
{{Note|Планируется поддержка других групповых политик средствами подключаемых модулей}}
 +
 +
== Ссылки по групповым политикам ==
 +
* https://fedoraproject.org/wiki/Changes/SssdGpoBasedAccessControl
 +
* http://wiki.eri.ucsb.edu/stadm/AD_Samba4
 +
* http://centrifying.blogspot.ru/2014/01/basics-using-group-policy-on-unixlinux.html
 +
* https://www.youtube.com/watch?v=2cJWnUZ8qLI
= Ссылки =
= Ссылки =
Строка 123: Строка 254:
* [[Ввод в домен на базе Windows 2003]]
* [[Ввод в домен на базе Windows 2003]]
* https://fedorahosted.org/sssd/wiki/Configuring_sssd_with_ad_server
* https://fedorahosted.org/sssd/wiki/Configuring_sssd_with_ad_server
 +
* https://wiki.samba.org/index.php/Setup_Samba_as_an_AD_Domain_Member
 +
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}}

Текущая версия на 15:16, 13 июня 2017

Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под Samba в режиме AD DC). Устаревшая инструкция: Ввод в домен на базе Windows 2003

Параметры домена

Параметр Значение
Имя доменаSCHOOL.ALT
Рабочая группаSCHOOL
Имя компьютера в NetbiosHOST-15
Имя пользователя-администратораAdministrator
Пароль администратораPa$$word

Содержание

Подготовка

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

Внимание! Аутентификация через winbind в новых сборках Samba не работает, используйте аутентификацию через task-auth-ad-sssd.


С версии alterator-auth-0.31-alt1

apt-get install task-auth-ad-sssd
Примечание: Для старых версий:
apt-get install alterator-auth sssd-ad samba-common-tools


Требуемые версии:

  • pam-config >= 1.7.0-alt1
  • alterator-auth >= 0.26-alt1

Возможно, следует обновить установленный дистрибутив из репозитория.

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

С версии alterator-auth 0.28 синхронизация времени производится автоматически с контроллером домена.

Для более ранних версий:

Способ 1: Через net time
net time set -S <имя домена>
Способ 2: По протоколу RFC 867

На сервере включается через xinetd daytime-tcp:

# chkconfig --list | grep daytime-tcp
        daytime-tcp:    вкл

А на клиенте — служба settime-rfc867:

chkconfig settime-rfc867 on
service settime-rfc867 start
Способ 3: Через Центр управления системой → Дата и время

Включите флажок «Получать точное время с NTP-сервера» и укажите в поле справа pool.ntp.org. После этого нажмите кнопку «Применить».

Способ 4: Через ntpdate
ntpdate pool.ntp.org

Ввод в домен в Центре управления системой

В Центре управления системой перейдите в раздел Пользователи → Аутентификация

Для ввода компьютера в Active Directory потребуется установить пакет task-auth-ad-sssd и все его зависимости.

Alterator-auth-new.png

Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».

Ввод в домен в командной строке

# system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word'
Joined 'HOST-15' to dns domain 'school.alt'

Проверка работы

# getent passwd ivan
ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash

# net ads info
LDAP server: 192.168.1.1
LDAP server name: c228.school.alt
Realm: SCHOOL.ALT
Bind Path: dc=SCHOOL,dc=ALT
LDAP port: 389
Server time: Ср, 22 апр 2015 16:22:47 MSK
KDC server: 192.168.1.1
Server time offset: -1

# net ads testjoin
Join is OK
Примечание: Вы не увидите пользователей из AD с помощью команды # getent passwd на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку серверы. Поэтому для проверки необходимо точно указать имя пользователя # getent passwd имя_пользователя . Список пользователей можно посмотреть на сервере командой # samba-tool user list


Примечания

  1. Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки ping ДОМЕН.local и вводите в домен
  2. При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon (доменная зона "local." используется в технологии zeroconf).
  3. Следите за синхронизацией времени на клиенте и сервере.
  4. Для предотвращения кэширования имён пользователя отключите службу nscd.
  5. В новых версиях Samba до запуска службы winbind должна запускаться служба smb.
  6. Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
rm -f /etc/krb5.conf
cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf

Настройка окна входа

Настройка LightDM

В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults]:

greeter-hide-users=true

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

Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите

show-language-selector=false

В новых версиях lightdm-gtk-greeter можно указать кнопки явно:

show-indicators=a11y;power

Полный перечень доступных кнопок:

show-indicators=a11y;power;session;language

Отображение глобальных групп на локальные

Установка модуля ролей

apt-get install libnss-role

Настройка ролей и привилегий

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

groupadd -r localadmins
Примечание: Лучше использовать группу localadmins (вместо admins) по избежание конфликта с группой admins во FreeIPA


Создаём привилегию на право удалённого доступа (по протоколу ssh):

groupadd -r remote

Включаем удалённый доступ только для группы remote:

control sshd-allow-groups enabled
sed -i 's/AllowGroups.*/AllowGroups = remote/' /etc/openssh/sshd_config

Настраиваем список привилегий для пользователей (для роли users):

roleadd users cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp fuse

Настраиваем список привилегий для администраторов (для роли admins):

roleadd localadmins wheel remote vboxusers

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

roleadd 'Domain Users' users
roleadd 'Domain Admins' localadmins

Просматриваем список назначенных ролей и привилегий:

rolelst
id ivan

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

Подключение файловых ресурсов

Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).

Через gvfs

Примечание: Способ актуален для дистрибутивов, использующих gvfs (например, Кентавр, Simply Linux, Basealt Workstation, СПТ).


Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.

1. Устанавливаем необходимые пакеты (с правами root):

apt-get install fuse-gvfs gvfs-backend-smb gvfs-utils

2. Включаем для пользователя в группу fuse (с правами root):

gpasswd -a <пользователь> fuse

Как включить доменных пользователей в локальную группу см. выше.

Примечание:

Следующий рецепт не работает:

control fusermount public
systemctl restart systemd-udevd


3. Входим доменным пользователем

4. Открываем ресурс в файловом менеджере (например, по адресу smb://server/sysvol). Ресурс смонтирован по пути /run/<uid_пользователя>/gvfs.

Другой вариант (полезно для скриптов в автозапуске):

gvfs-mount smb://server/sysvol/
Примечание: Если необходимо открывать что-то с ресурса в WINE, в winecfg добавьте диск с путём /run/<uid_пользователя>/gvfs.


Через pam_mount

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

1. Устанавливаем pam_mount:

apt-get install pam_mount

2. Прописываем pam_mount в схему /etc/pam.d/system-auth-sss:

(перед auth required pam_permit.so)

auth            optional        pam_mount.so

и

session         optional        pam_mount.so

3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml (перед тегом <cifsmount>):

<volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />

где

  • uid="10000-2000200000" — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD)
  • server="c228" — имя сервера с ресурсом
  • path="sysvol" — имя файлового ресурса
  • mountpoint="~/share" — путь монтирования в домашней папке пользователя
Внимание! Обязательно указывайте настоящее имя сервера в параметре server, а не имя домена


Групповые политики

Групповые политики (GPO) на Linux применяются только контроль входа через SSSD и средства Centrify.

SSSD

SSSD имеет внутреннюю поддержку следующих групповых политик:

Политика
Allow log on locally
Allow log on through Remote Desktop Services
Access this computer from the network
Allow log on as a batch job
Allow log on as a service


Примечание: Планируется поддержка других групповых политик средствами подключаемых модулей


Ссылки по групповым политикам

Ссылки


 
Личные инструменты