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

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