Настройка авторизации Linux-машин (Ubuntu) в Active Directory

 Исторически сложилось, что у нас на факультете централизованная база пользователей хранится в Windows-домене (на момент написания этой статьи в Active Directory на Microsoft Windows 2003 Server и в домене на базе Windows NT 4.0 Server). Поэтому для Linux-машин решено было брать пользователей из доменов, чтобы минимизировать зоопарк из учетных записей. Решение этой задачи возможно через LDAP и winbind. Мы использовали второй вариант – авторизацию пользователей через winbind.

 

Для определенности примем, что Windows-сервер является контроллером домена и имеет следующие настройки:

 

   1. Учетная запись администратора домена: adsadmin

   2. Имя домена: physnet

   3. Полное имя домена: physnet.local

   4. Имя контроллера домена (hostname): pserv

   5. IP-адрес контроллера домена: 10.2.0.2

 

Linux-машина имеет имя debi и IP-адрес у ней статический. DNS настроен и работает.

 

Ставим на Linux из-под учетной записи суперпользователя Samba, winbind и Kerberos:

 

    # apt-get install samba winbind krb5-doc krb5-user krb5-config

 

После установки пакетов настраиваем Kerberos, который нам потребуется для проведения авторизации в Active Directory, для этого правим файл /etc/krb5.conf:

 

    [realms]

    PHYSNET.LOCAL = {

     kdc = pserv.physnet.local

     admin_server = pserv.physnet.local

    }

 

В принципе в этом файле pserv.physnet.local можно заменить на его IP-адрес – 10.2.0.2. Далее запускаем команду:

     # kinit adsadmin@PHYSNET.LOCAL 

Если получаем на это ошибку вида kinit(v5): Cannot find KDC for requested realm while getting initial credentials или kinit(v5): KDC reply did not match expectations while getting initial credentials, то скорее всего вы неправильно настроили Kerberos – просмотрите настройки еще раз. Если все прошло без ошибок, то тестируем работу Kerberos’а:

     # klist

 Если на этот тест получаем ошибку вида kinit(v5): Clock skew too great while getting initial credentials, то это означает, что часы на windows-сервере и linux-машине показывают разное время. Их нужно синхронизировать, а для этого поставить и настроить пакет ntpdate:

     # apt-get install ntpdate

 Конфигурационный файл ntpdate обычно можно найти в папке /etc (/etc/ntp.conf) или /etc/default (/etc/default/ntpdate). После правки конфигурационных файлов нужно перестартовать ntpdate:

     # /etc/init.d/ntpdate restart

 Теперь настраиваем winbind, для этого правим файл /etc/samba/smb.conf. Его содержимое для нашего случая пример такой вид:

 

    [global]

    security = ads

    password server = *

    encrypt passwords = yes

    workgroup = PHYSNET

    realm = PHYSNET.LOCAL

    netbios name = debi

    idmap uid = 10000-20000

    idmap gid = 10000-20000

    winbind enum users = yes

    winbind enum groups = yes

    template homedir = /home/%D/%U

    template shell = /bin/bash

 

Теперь перестартовываем samba и winbind:

     # /etc/init.d/samba restart

    # /etc/init.d/winbind restart

 Добавляем нашу linux-машину в домен:

     # net ads join -W physnet -U adsadmin

 Если все прошло успешно, то команда

     # wbinfo -t

 должна дать ответ checking the trust secret via RPC calls succeeded. Проверить список доступных групп и пользователей домена можно командами:

     # wbinfo -g

    # wbinfo -u

 Теперь добавляем авторизацию. Файл /etc/nsswitch.conf примет примерно такой вид:

     passwd: files winbind

    group: files winbind

    shadow: files winbind

 Модифицируем PAM. Файл /etc/pam.d/common-auth после правки примет примерно такой вид:

     auth sufficient pam_winbind.so

    auth required pam_unix.so nullok_secure use_first_pass

 

    /etc/pam.d/common-account:

     account sufficient pam_winbind.so

    account required pam_unix.so nullok_secure

 

    /etc/pam.d/common-password:

 

    password sufficient pam_winbind.so

    password required pam_unix.so nullok obscure min=4 max=8 md5

 

    /etc/pam.d/common-session:

 

    session required pam_unix.so

    session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

 

После этого создаем в папке /home папку PHYSNET:

    # mkdir /home/PHYSNET

Все, теперь можно перегрузить linux-машину и опробовать доменную авторизацию.

Замечание 1: Если у вас в сети несколько доменов с доверительными настройками (trusted), то либо придется по каждому имени домена в папке /home создавать папку вида /home/ДОМЕН или запретить trusted-отношения между доменами в файле конфигурации samba (allow trusted domains = no в smb.conf)

Замечание 2: Для авторизации доменного пользователя в качестве логина нужно будет писать ДОМЕНпользователь (Например PHYSNETadsuser)

Замечание 3: В случае использования DHCP нужно будет поправить runlevels для скриптов запуска samba, winbind, ifupdown и networking. Для этого достаточно, чтобы в /etc/rc2.d стартовала сеть (@S16networking, @S16ifupdown) ранее winbind и samba (@S20samba, @S20winbind).

Источник: http://mixa.su/news/linux/nastraivaem-avtorizaciyu-v-active-directory.html

Комментарии

Изображение пользователя manofring.

да велосипеды это

да велосипеды это все...
покатался в свое время .... хватит
Реально самба орг содержит кучу млин доков..ну кучу...
даже примеры конфигов..
да лучше об они нарисовали блок схемы..
ну я так зае...ся это настраивать 3-4 года назад...
ну так...
но настроил...
:)))

style="display:inline-block;width:728px;height:15px"
data-ad-client="ca-pub-4493870272388852"
data-ad-slot="6622567932">