Доменная Авторизация в Linux и Vmware

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

Задача следующая. Установить линукс, на нем сделать авторизацию через Active Directory, установить Vmware Server 1.x или 2.x и сделать чтобы в них тоже авторизовались пользователи через AD.

  1. Устанавливаем необходимые пакеты. Samba — собствено самый главный пакет. Samba-client — устанавливать если доступ на шары будет осуществляться с линукс машины. NTP синхронизация времени, очень нужно для авторизации в AD. ACL — Необходимый пакет для установки прав на папки. krb5-workstation — необходимый пакет.
  2. Испраляем файл /etc/hosts.
    192.168.1.2 vmware01.trex vmware01
  3. В файле /etc/fstab необходимо добавить acl. Это нужно для того чтобы acl работали с этим разделом.
    /dev/hda1 / ext3 defaults,acl 1 1
  4. Делаем ремаунт раздела .
    mount -o remount /
  5. Правим файл /etc/krb5.conf Необходимо соблюдать капслок.
    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
     default_realm = TREX
     dns_lookup_realm = false
     dns_lookup_kdc = false
     ticket_lifetime = 24h
     forwardable = yes
    
    # 192.168.1.1 Домен контроллер
    # TREX название домена, 192.168.1.1 - доменный контролер
    [realms]
     TREX = {
      kdc = 192.168.1.1:88
      admin_server = 192.168.1.1:749
      default_domain = trex
      kdc = 192.168.1.1
     }
    
    [domain_realm]
     .trex = TREX
     trex = TREX
    
    [kdc]
    profile = /var/kerberos/krb5kdc/kdc.conf
    
    [appdefaults]
     pam = {
       debug = false
       ticket_lifetime = 36000
       renew_lifetime = 36000
       forwardable = true
       krb4_convert = false
     }
  6. Проверяем, что настроили все верно.
    # kinit administrator@TREX
    

    Если все верно, никаких ошибок не будет.

  7. Настраиваем самбу, конфиг файл будет выглядеть примерно так.
    [global]
    workgroup = TREX
    netbios name = VMWARE01
    server string = WMWare Server 01
    log file = /var/log/samba/%m.log
    max log size = 50
    security = ADS
    realm = TREX
    encrypt passwords = yes
    server signing = yes
    smb passwd file = /etc/samba/smbpasswd
    allow trusted domains = no
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *New*password* %n\n *Retype*new*password* %n\n*passwd:*all*authentication*tokens*updated*successfully*
    pam password change = yes
    obey pam restrictions = yes
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = no
    idmap domains = TREX
    idmap config TREX:backend = rid
    idmap config TREX:range = 10000-1000000
    #Устаревшая запись, в новых версиях ругается в логах.
    #WARNING: idmap backend uses obsolete and deprecated 'idmap_' prefix.
    #idmap uid = 10000-1000000
    #idmap gid = 10000-1000000
    #idmap backend = idmap_rid:TREX=10000-1000000
    winbind use default domain = yes
    winbind separator = +
    winbind enum users = yes
    winbind enum groups = yes
    template shell = /bin/bash
    # Путь до домашней папки будет вида /home/TREX/user
    template homedir = /home/%D/%U
    #при возникновении ошибок о принтерах. Нужно добавить вот эти 5 строчек
    #Unable to connect to CUPS server localhost:631 - Connection refused
    load printers = no        (this alone isn't enough)
    show add printer wizard = no
    printing = none
    printcap name = /dev/null
    disable spoolss = yes
    
  8. Вводим сервер в домен
    # net ads join -U administrator
            administrator's password:
            Using short domain name -- TREX
            Joined 'VMWARE01' to realm 'TREX'
    
  9. Перестартовываем самбу.
    /etc/init.d/smb restart
    
  10. Исправляем файл /etc/nsswitch.conf, чтобы выглядел он примерно так.
    
    passwd:     compat winbind files
    shadow:     compat winbind files
    group:      compat winbind files
    protocols:  files winbind
    services:   files winbind
    netgroup:   files winbind
    automount:  files winbind nisplus
  11. Перестартовываем winbind.
    /etc/init.d/winbind restart
  12. Набираем команду:
    wbinfo -g
    

    Должен получиться список групп.

  13. Прописываем в /etc/pam.d/system-auth
    auth        required      pam_env.so
    auth        sufficient    pam_unix.so likeauth nullok
    auth        sufficient    pam_krb5.so use_first_pass
    auth        sufficient    pam_smb_auth.so use_first_pass nolocal
    auth        sufficient    pam_winbind.so use_first_pass
    auth        required      pam_deny.so
    
    account     required      pam_unix.so broken_shadow
    account     sufficient    pam_succeed_if.so uid < 100 quiet
    account     sufficient    pam_krb5.so
    account     sufficient    pam_winbind.so
    account     required      pam_permit.so
    
    password    requisite     pam_cracklib.so retry=3
    password    sufficient    pam_unix.so nullok use_authtok md5 shadow
    password    sufficient    pam_krb5.so use_authtok
    password    sufficient    pam_winbind.so use_authtok
    password    required      pam_deny.so
    
    session     required      pam_limits.so
    session     required      pam_unix.so
    session     optional      pam_krb5.so
    

Основная настройка на этом заканчивается. Теперь необходимо настроить ssh, чтобы он пускал по доменному паролю.

Для этого в файле /etc/pam.d/sshd пишем такие строки.

#%PAM-1.0
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    required     pam_loginuid.so

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

Авторизация через протокол ssh настроена, важно не забыть последнюю строчку, иначе будет вылазить ошибка, что не возможно найти домашнюю папку.

Если вы хотите, чтобы по ssh доступ имела какая то определенная группа, то строчку:

auth       include      system-auth

Надо заменить на такую:

auth    sufficient     pam_winbind.so require_membership_of=S-1-5-21-1343024091-1284227242-725345543-10226

Где вот это длинное и не понятное S-1…. есть ID вашей группы. Получить можно так:


# wbinfo -n "IT"
S-1-5-21-1343024091-1284227242-725345543-10226 Domain Group (2)

На этом заканчивается настройка ssh.

Теперь перейдем в VMWare Server. После установки необходимо поправить файл:


/etc/pam.d/vmware-authd

Он должен выглядеть примерно так:

#%PAM-1.0
auth       sufficient       pam_unix.so shadow nullok
auth       sufficient       pam_winbind.so use_first_pass
auth       required         pam_unix_auth.so shadow nullok

account    sufficient       pam_unix.so
account    sufficient       pam_winbind.so
account    required         pam_unix_acct.so

Несколько коментариев:

  • При установки Vmware server 1.x на 64битную систему, необходимо доставить samba-common.i386, и в файле vmware-authd, прописать путь до 32битной библиотеки pam_winbind.so, т.к. с 64битной работать это не будет.
  • Для Vmware Server 1.x права раздаются на уровне операционной системы. Для выдачи прав на виртуальную машину, необходимо писать следующее:
    setfacl -m u:"TREX+inot":rwx /vmware/vm-001
  • В Vmware Server 2.0 права выдаются в веб интерфейсе. Если все настроено правильно, то в добавлении прав будет видно доменных пользователей и группы.

Вроде бы все. Если чтото вспомню допишу.