tm

   Для добавления компьютера с ОС Ubuntu 14 в домен потребуются следующие пакеты:

apt-get install  krb5-user samba winbind libnss-winbind libpam-winbind ntpdate ntp smbclient

В процессе установки заполняем realm name домена и прочие параметры. Их потом можно будет отредактировать. Для ввода компа в домен нужно прописать правильные параметры DNS, синхронизировать время с DC. Далее правим настроки сети, DNS и пр.

nano /etc/hosts
127.0.0.1       localhost
127.0.1.1       host.domain.loc host
nano /etc/hostname
host.domain.loc
nano /etc/network/interfaces
auto enp2s0
iface enp2s0 inet static
address 192.168.50.21
netmask 255.255.255.0
gateway 192.168.50.1
dns-nameservers 192.168.50.20
dns-search domain.loc
nano /etc/resolvconf/resolv.conf.d/head
domain domain.loc

Перезапускаем сетевые процессы или ребутаем комп. Далее синхронизируем время с DC:

service ntp stop
ntpdate -s dc.domain.loc
service ntp start

При необходимости правим часовой пояс:

nano /etc/timezone
Asia/Novosibirsk

Или запускаем конфигурацию часового пояса:

dpkg-reconfigure tzdata

В конфигурации NTP комментируем лишние строки начинающиеся на pool и добавляем строку:

nano /etc/ntp.conf
server dc.domain.loc

При необходимости перезапускаем NTP:

/etc/init.d/ntp restart

Далее правим конфигурацию krb5:

nano /etc/krb5.conf

[libdefaults]
        default_realm = DOMAIN.LOC

        krb4_config = /etc/krb.conf
        krb4_realms = /etc/krb.realms
        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]
        DOMAIN.LOC = {
                kdc = dc.domain.loc
                admin_server = dc.domain.loc
                default_domain = domain.loc
        }

[domain_realm]
        .domain.loc = domain.loc
        domain.loc = domain.loc
[login]
        krb4_convert = true
        krb4_get_tickets = false

О каждом параметре по-порядку:

libdefaults - раздел с настройками, используемые библиотекой Kerberos V5.

  • default_realm - область Kerberos по-умолчанию.
  • kdc_timesync - проверка разницы во времени на DC и клиентской машине.
  • ccache_type - определяем формат кэша учётных данных.
  • forwardable - что-то связано с пересылкой билетов.
  • v4_name_convert - позволяет администратору настраивать исключения для правила сопоставления домена по умолчанию.

realms - раздел с контактами домена.

login - раздел настроек авторизации.

  • krb4_get_tickets - необходимость вводить пароль для получения билетов.

Проверяем выдаются ли билеты (пишем с учётом регистра):

kinit Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

В ответ ничего не должно прийти. Проверяем наличие билета.

klist

Должны получить что-то вроде:

klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: userDOMAIN.LOC

Valid starting       Expires              Service principal
16.09.2017 16:54:22  17.09.2017 02:54:22  krbtgt/Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
        renew until 17.09.2017 16:54:18

Теперь настраиваем доступ в ресурсам в домене в Samba. Основные моменты:

nano /etc/samba/smb.conf
[global]
   workgroup = DOMAIN
   realm = DOMAIN.LOC
   security = ADS
   encrypt passwords = true
   socket options = TCP_NODELAY
   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes
   idmap uid = 10000 - 40000
   idmap gid = 10000 - 40000
   winbind enum groups = yes
   winbind enum users = yes
   winbind use default domain = yes
   template shell = /bin/bash
   winbind refresh tickets = yes
   dns proxy = no
   obey pam restrictions = yes
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

Проверяем корректность настроек:

testparm

Должны получить что-то вроде:

testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "idmap uid" option is deprecated
WARNING: The "idmap gid" option is deprecated
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

Разная ругань на параметры системы - это вопросы тюнинга, об этом отдельно. Главное нет ошибок конфигурационного файла.

Теперь отключаем сервисы:

sudo /etc/init.d/winbind stop
sudo /etc/init.d/smbd stop

В /etc/security/limits.conf добавляем строку:

*    -    nofile    16384

Теперь пробуем соедениться с доменом (регистр важен):

kinit user@DOMAIN
net ads join -U user -D DOMAIN.LOC

Вводом пароль, ошибок не должно быть. Для тестирования соединения:

net ads testjoin

Если всё ОК, то должны увидеть Join is OK. Перезагружаем ПК и можно посмотреть расшаренные ресурсы на DC. Снова получаем билет:

kinit Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Проверяем наличие билета:

klist

и смотрим расшаренные ресурсы:

smbclient -k -L dc.daomain.loc
smbclient -k -L dc.domain.loc
WARNING: The "idmap uid" option is deprecated
WARNING: The "idmap gid" option is deprecated
WARNING: The "syslog" option is deprecated
OS=[Windows Server 2016 Standard 14393] Server=[Windows Server 2016 Standard 6.3]
        Sharename       Type      Comment
        ---------       ----      -------
        2GIS            Disk
        Admin           Disk
        ADMIN$          Disk      Удаленный Admin
        Ambul           Disk
        buhgalterija    Disk
        C$              Disk      Стандартный общий ресурс
        D$              Disk      Стандартный общий ресурс
        Diamant         Disk
        F               Disk
        F$              Disk      Стандартный общий ресурс
        IPC$            IPC       Удаленный IPC
        NETLOGON        Disk      Общий сервер входа
        REMINST         Disk      Общий ресурс служб развертывания Windows
        scan            Disk
        SYSVOL          Disk      Общий сервер входа
        UpdateServicesPackages Disk      A network share to be used by client systems for collecting all software packages (usually applications) published on this WSUS system.
        Users           Disk
        WsusContent     Disk      A network share to be used by Local Publishing to place published content on this WSUS system.
        WSUSTemp        Disk      A network share used by Local Publishing from a Remote WSUS Console Instance.
        Инженеры Disk
        Нефролог 1 этаж Disk
        Общая папка Disk
        Платный приём Disk
OS=[Windows Server 2016 Standard 14393] Server=[Windows Server 2016 Standard 6.3]

Перезагружаемся и проверяем, что у Winbind доверительные отношения с AD:

wbinfo -t

и можно проверить какие пользователи и группы есть в домене:

wbinfo -g
wbinfo -u

   Для того, что бы появилась возможность авторизоваться на нашей машине с Ubuntu под доменными пользователями необходимо сделать Winbind источником пользователей и групп из AD. Для этого правим:

 

nano /etc/nsswitch.conf
passwd:         compat winbind
group:          compat winbind
shadow:         compat
gshadow:        files
hosts: dns mdns4_minimal[NotFoud=return] mdns4 files
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis

 

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

wbinfo -g
wbinfo -u
getent group
getent passwd

   Теперь непосредственно настрока авторизации:

nano /etc/pam.d/common-session
session [default=1]                     pam_permit.so
session requisite                       pam_deny.so
session required                        pam_permit.so
session optional                        pam_umask.so
session required        pam_unix.so
session optional                        pam_winbind.so
session  optional  pam_mkhomedir.so skel=/etc/skel/ umask=0077

Можно перезагружаться и входить под доменной учётной записью.

Если нужно ограничить авторизацию только по определённой группе в AD правим файл

nano /etc/pam.d/common-auth
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass require_membership_of=unix-auth
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so

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

Если авторизаваться не удаётся и в логах видим что-то типа

cannot convert group tech-access to sid, check if group tech-access is valid group.

то значение параметра require_membership_of пишем с указанием домена! Т.е. DOMAIN.LOC\unix-auth

Комментарии отключены