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

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

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

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

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

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

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

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

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

На данный момент не хватило опыта и времени подружить 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_(Русский) (да, это про арч, но вики у них неплохая и помогала не раз)

Павел Ласточкин 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

1 Like

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Calculate 18 KDE

При команде: net ads join -U Администратор
Пишет что Samba скомпилирована без ads (ads support not compiled in)
При этом вся samba замаскирована. (All ebuilds that could satisfy samba have been masked )
Как ее пересобрать с поддержкой ads?

Aleksandr Koledenkoff wrote:

Calculate 18 KDE

При команде: net ads join -U Администратор
Пишет что Samba скомпилирована без ads (ads support not compiled in)
При этом вся samba замаскирована. (All ebuilds that could satisfy samba have been masked )
Как ее пересобрать с поддержкой ads?

#echo ‘net-fs/samba ads gnutls’ >> /etc/portage/package.use/custom
#cl-update
Скорее всего, этого должно хватить. Но если изменение флага будет проигнорировано, то:
#emerge -avuDN net-fs/samba.

В вашей ситуации, установленная версия самбы замаскирована, а не все.

Спасибо, все заработало. На Calculate 18 Mate тоже.

Вставлю дополнительные 5коп.
Что бы доменный пользователь стал “полноценным” на линуксовом компьютере, который мы только что ввели в домен, ему неплохо было бы назначить локальные никсовые группы.
Простое прописывание пользователя в /etc/group ничего не даёт.
Посему я сделал следующее:
Добавил в /etc/pam.d/system-auth первой строкой:

auth  optional  pam_group.so

Добавил в /etc/security/group.conf в конец:

*; *; *; Al0000-2400; audio, cdrom, users, uucp, cdrw, usb, games, plugdev, scanner, wheel

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

Я бы еще добавил в /etc/security/group.conf группы lp и lpadmin

Но сейчас есть проблема с тем, что никсовые группы видны только когда делаешь id из терминала пользователя, но стоит сделать sudo или выйти в рутовую консоль и в них в

id <ad_username>

никсовые группы не видны.
Так же не видно ад-шых групп по

net groupmap list

Хотя в

getent group

все группы на месте.
И кстати, в примере конфига самбы нужно всё же имя своего домена вписывать, а не SAMDOM, иначе мапинг будет через tdb.

Сделал вроде все по инструкции в т ч пробовал инструкцию в конце https://wiki.gentoo.org/wiki/Kerberos_Windows_Interoperability, но # wbinfo -u # wbinfo -g выводят доменные учетки, а # getent passwd # getent group нет. и не заходит в систему соответственно с доменной учеткой
В чем разница между wbinfo и getent?

Все около дела работает, но есть косяк.
Как только сетевой провод вытаскиваешь, то даже текущий юзер перестает с вистеме опеределять, непонятный юзер с id 12345 говорит.
команда wbinfo -u выводит ошибку WBC_ERR_WINBIND_NOT_AVAILABLE
Хочу добиться оффлайн входа и работы без сети естественно. Все настроено по инструкции https://unlis.ru/?p=207, а также конфиги с астралинукс пробовал. Там оффлайн логин тоже не работает, но в принципе кеш winbind доступен без сети.
Может чего-то нет в самбе или nss? В убунте еще пакет libnss-winbind есть.
libnss-cache не поможет? Замаскирован