авторизация в домене Active Directory

Added by Павел Ласточкин about 1 year ago

Доброго времени суток.
Возникла необходимость интегрировать в сеть Calculate Linux Desktop, с авторизацией пользователей из MS AD.
Calculate в домен ввел без проблем,

# net ads testjoin
# wbinfo -u
# wbinfo -g
# getent passwd
# getent group

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

Replies (11)

RE: авторизация в домене Active Directory - Added by Роман Тутов 10 months ago

никак . CLD работает только со своим сервером . с MS работать и не обязан

RE: авторизация в домене Active Directory - Added by Виктор Кустов 10 months ago

Текущая версия samba 4.5.*, она вполне может подключаться и работать с AD. Только вот про калькодомен придётся забыть, про утилиты - тоже. И если планируется ещё и сервисы чтобы работали в AD, будет много ручной работы. По факту, несмотря на совместимость самбы с AD, шаблоны LDAP кальки принципиально другие, нежели AD.

RE: авторизация в домене Active Directory - Added by Павел Ласточкин 10 months ago

Спасибо, это я понимаю.
Ситуация заключается в следующем:
Мы гос. учреждение, и, соответственно, должны переходить на отечественное ПО. На данный момент "Calculate Linux Desktop" единственная бесплатная ОС включенная в реестр отечественного ПО. Текущая инфраструктура не позволяет отказаться от MS AD. Моей задачей является сохранения учетных записей, и сделать их независимыми от используемой ОС.

Как я уже написал в первом сообщении, samba без проблем подключается к AD, получает списки пользователей и групп, выводит все группы пользователя, но это все в консоле. На данный момент не хватило опыта и времени подружить PAM с winbind, чтобы можно было авторизоваться в ГУИ. В Ubuntu я это делал не однократно, а здесь не задалось.

Возможно есть вариант синхронизировать пользователей "Calculate Directory Server " и AD, но я на него не натыкался.

RE: авторизация в домене Active Directory - Added by Виктор Кустов 10 months ago

На данный момент не хватило опыта и времени подружить PAM с winbind, чтобы можно было авторизоваться в ГУИ. В Ubuntu я это делал не однократно, а здесь не задалось.

Предлагаю сосредоточиться именно на этом направлении. Для этого "не задалось" нужно описать технически. Что именно не получается, с какими сообщениями об ошибках, больше конкретики. Для вывода сообщений об ошибках лучше использовать wgetpaste, например:

# wbinfo -g | wgetpaste

и сюда ссылочку.

Также можно ознакомиться с документацией:
https://wiki.gentoo.org/wiki/Kerberos_Windows_Interoperability
http://it.bmc.uu.se/andlov/docs/linux/ads/
https://wiki.archlinux.org/index.php/Active_Directory_Integration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) (да, это про арч, но вики у них неплохая и помогала не раз)

RE: авторизация в домене Active Directory - Added by Павел Ласточкин 5 months ago

Павел Ласточкин wrote:

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

К сожалению пришлось на время отвлечься от данного вопроса, но сейчас идем с новой силой.
Как оказалось надо было подправить конфиги samba и PAM.
Итак, авторизоваться в системе используя учетную запись MS AD удалось:

0. Введение

Имеем:
Домен: DEMO.LOCAL
Контроллер домена: pdc
компьютер: test01

1. Установка необходимых пакетов:

# USE="acl client cups ldap pam winbind ads gnutls" emerge -av samba
# emerge krb5

2. Не знаю почему, но у меня samba после установки не стартует автоматически, поэтому:

# rc-update add samba default

3. И добавляем winbind в конфиг запуска samba:

в файле /etc/conf.d/samba
строчку

daemon_list="smbd nmbd" 

меняем на

daemon_list="smbd nmbd winbind" 

4. Создаем конфиг /etc/samba/smb.conf:

[global]
   netbios name = test01
   workgroup = DEMO
   security = ADS
   realm = DEMO.LOCAL
   encrypt passwords = yes

   idmap config *:backend = tdb
   idmap config *:range = 70001-80000
   idmap config SAMDOM:backend = ad
   idmap config SAMDOM:schema_mode = rfc2307
   idmap config SAMDOM:range = 500-40000

   winbind use default domain = Yes
   winbind nss info = rfc2307
   winbind trusted domains only = no
   winbind use default domain = yes
   winbind enum users  = yes
   winbind enum groups = yes
   winbind nested groups = Yes
   winbind refresh tickets = yes

  template shell = /bin/bash
  template homedir = /home/%U

5. Проверяем:

# testparm

Смотрим есть ли ошибки или предупреждения, если появится:

rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)

Без перезагрузки можно устранить так:

# ulimit -n 16384

Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf
Добавить в конец файла строки:

*               -    nofile            16384
root            -    nofile            16384

6. Настраиваем Kerberos:

В файл "/etc/krb5.conf" записываем параметры домена:

[libdefaults]
    default_realm = DEMO.LOCAL
    kdc_timesync = 1
    ccache_type = 4
    forwardable = true
    proxiable = true
    v4_instance_resolve = false
    v4_name_convert = {
    host = {
        rcmd = host
        ftp = ftp
    }
    plain = {
        something = something-else
    }
    }
    fcc-mit-ticketflags = true

[realms]
    DEMO.LOCAL = {
    kdc = pdc
     admin_server = pdc
    default_domain = DEMO.LOCAL
    }

[domain_realm]
    .demo.local = DEMO.LOCAL
    demo.local = DEMO.LOCAL
[login]
    krb4_convert = false
    krb4_get_tickets = false

Проверяем настройки получением билета:

# kinit Администратор

Если не было сообщений об ошибках, то проверяем полученный билет:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Администратор@DEMO.LOCAL

Valid starting       Expires              Service principal
12.07.2018 08:57:06  12.07.2018 18:57:06  krbtgt/DEMO.LOCAL@DEMO.LOCAL
    renew until 13.07.2018 08:57:04

7. Вводим в домен

# net ads join -U Администратор

Проверяем что вошли в домен

# net ads testjoin

8. Добавление Winbind в качестве источника пользователей и групп

Для этого в файле /etc/nsswitch.conf приводим строки к виду:

passwd:      files ldap winbind
shadow:      files ldap winbind
group:       files ldap winbind

9. Проверяем работу в домене

# wbinfo -t
checking the trust secret for domain DCN via RPC calls succeeded

А так же, что Winbind увидел пользователей и группы из AD командами

# wbinfo -u
# wbinfo -g

Теперь проверяем, что CLD запрашивает у Winbind информацию о пользователях и группах, выполнив:

# getent passwd
# getent group 

10. Авторизация пользователей домена в системе

Содержимое файла /etc/pam.d/system-auth меняем на:

auth        required      pam_env.so
auth        sufficient    pam_unix.so likeauth nullok try_first_pass
auth        sufficient    pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth        required      pam_deny.so

account     sufficient    pam_winbind.so
account    required     pam_unix.so
account    sufficient   pam_ldap.so

password   required     pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password   sufficient   pam_unix.so nullok sha256 shadow use_authtok
password   optional     pam_ecryptfs.so
password   sufficient   pam_ldap.so
password   required     pam_deny.so

session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0022
session    required     pam_env.so
session    required     pam_limits.so
-session   optional     pam_loginuid.so
-session   optional     pam_elogind.so
session    required     pam_unix.so
session    optional     pam_ecryptfs.so unwrap
session    optional     pam_ldap.so

Заключение

Теперь можно авторизоваться в CLD используя учетку MS AD.
Главная задача выполнена, не без проблем пока, но можно уже планировать внедрение...

Проблемы

1. Не знаю как поменять пароль доменного пользователя через GUI

RE: авторизация в домене Active Directory - Added by Павел Ласточкин 5 months ago

Родион Дорошкевич wrote:

А логин через KDM?

У меня нет, т.к. я использую "Calculate Linux Desktop Cinnamon", а там другой DM.
Ну а в "Calculate Linux Desktop KDE" через KDM должно работать.

RE: авторизация в домене Active Directory - Added by Родион Дорошкевич 5 months ago

Т.е. стандартный для дистра DM работает?

RE: авторизация в домене Active Directory - Added by Павел Ласточкин 5 months ago

Родион Дорошкевич wrote:

Т.е. стандартный для дистра DM работает?

ДА, постараюсь на днях проверить дистрибутивы с другими DM.

Сегодня заметил один недостаток: CLD не добавляет/обновляет DNS-запись в AD, но думаю это можно решить.

RE: авторизация в домене Active Directory - Added by Тимофей Захарчук 5 months ago

Павел - оформили бы инструкцию на планете или в вики, а то в форуме затеряется

RE: авторизация в домене Active Directory - Added by Павел Ласточкин 5 months ago

Тимофей Захарчук wrote:

Павел - оформили бы инструкцию на планете или в вики, а то в форуме затеряется

Тимофей, я планирую это сделать, если кто-нибудь раньше не успеет, но мой перфекционизм не позволяет это сделать сейчас.
На данный момент инструкция еще не готова, как я писал выше есть, скажем так, проблемы:
1. сложность со сменой пароля пользователем AD;
2. не добавляются/обновляются DNS-записи в AD;
3. групповые политики (насколько я знаю они вообще не работают).

Если пунктом 3 можно пренебречь, то 1 и 2 сильно усложняют процесс практической эксплуатации. После решения проблем 1 и 2 можно будет считать что инструкция готова.

(1-11/11)

Thank you!