Для добавления компьютера с ОС Ubuntu 14 в домен потребуются следующие пакеты:
apt-get install krb5-user samba winbind libnss-winbind libpam-winbind ntpdate ntp smbclient
В процессе установки заполняем realm name домена и прочие параметры. Их потом можно будет отредактировать. Для ввода компа в домен нужно прописать правильные параметры DNS, синхронизировать время с DC. Далее правим настроки сети, DNS и пр.
127.0.1.1 host.domain.loc host
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
Перезапускаем сетевые процессы или ребутаем комп. Далее синхронизируем время с DC:
service ntp stop
ntpdate -s dc.domain.loc
service ntp start
При необходимости правим часовой пояс:
Или запускаем конфигурацию часового пояса:
dpkg-reconfigure tzdata
В конфигурации NTP комментируем лишние строки начинающиеся на pool и добавляем строку:
При необходимости перезапускаем NTP:
/etc/init.d/ntp restart
Далее правим конфигурацию krb5:
[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
Должны получить что-то вроде:
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. Основные моменты:
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
Должны получить что-то вроде:
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
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. Для этого правим:
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
Теперь непосредственно настрока авторизации:
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 правим файл
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