Linux машина в домене Windows AD
Была необходимость ввести в домен Windows машину с Ubuntu. Для этих целей обычно используют Samba и Winbind. Но возможен альтернативный вариант с sssd, краткое руководство по нему ниже.
Для примера будем использовать:
Контроллер домена = dc.contoso.com
Запускаем терминал Ubuntu:
1. Переключаемся под рута
2. Устанавливаем необходимые пакеты
apt install sssd heimdal-clients msktutil
3. Редактируем /etc/krb5.conf, в качестве отступов используется табуляция
[libdefaults]default_realm = CONTOSO.COM [realms]
CONTOSO.COM = <
kdc = DC
admin_server = dc.contoso.com
default_domain = contoso.com
> [login]
krb4_convert = true
krb4_get_tickets = false [domain_realm]
.contoso.com = CONTOSO.COM
contoso.com = CONTOSO.COM
4. Редактируем файл /etc/hosts, указываем FQDN для данного хоста:
127.0.0.1 localhost
127.0.1.1 .contoso.com
5. Пробуем получить Kerberos ticket от имени администратора домена:
# kinit YourDomainAdmin
YourDomainAdmin@CONTOSO.COM’s Password:
# klist
Credentials cache: FILE:/tmp/krb5cc_0
Principal: YourDomainAdmin@CONTOSO.COM
Issued Expires Principal
Dec 1 15:08:27 2018 Dec 2 01:08:22 2018 krbtgt/CONTOSO.COM@CONTOSO.COM
Если тикет получен успешно, то теперь можно сгенерировать Kerberos principals для данного хоста, регистр важен:
msktutil -c -b ‘CN=YourComputersOU’ -s HOST/HOSTNAME.contoso.com -k /etc/sssd/HOSTNAME.keytab —computer-name HOSTNAME —upn HOSTNAME$ —server dc.contoso.com —user-creds-only
msktutil -c -b ‘CN=YourComputersOU’ -s HOST/HOSTNAME -k /etc/sssd/HOSTNAME.keytab —computer-name HOSTNAME —upn HOSTNAME$ —server dc.contoso.com —user-creds-only
Сейчас наш хост должен отобразиться в списке компьютеров в каталоге. Если все так — удаляем полученный Kerberos ticket:
6. Создаем файл /etc/sssd/sssd.conf со следующим содержимым:
services = nss, pam
config_file_version = 2
domains = contoso.com
entry_negative_timeout = 0
debug_level = 3
ad_domain = contoso.com
ad_server = dc.contoso.com
enumerate = false
id_provider = ad
auth_provider = ad
chpass_provider = ad
access_provider = simple
simple_allow_groups = users # каким группам разрешено логиниться, через запятую. Есть ограничение — названия групп должны быть с маленькой буквы.
ldap_schema = ad
ldap_id_mapping = true
fallback_homedir = /home/%u
default_shell = /bin/bash
ldap_sasl_mech = gssapi
ldap_sasl_authid = $
ldap_krb5_init_creds = true
krb5_keytab = /etc/sssd/ .keytab
Описание параметров конфигфайла sssd можно посмотреть тут
Устанавливаем права доступа для файла sssd.conf:
chmod 600 /etc/sssd/sssd.conf
Перезапускаем SSSD service
service sssd restart
7. Редактируем настройки PAM
редактируем файл /etc/pam.d/common-session, после строки
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel umask=0022
переопределить параметры через системные настройки PAM, вызываем
и отмечаем пункты sss auth и makehomdir . Это автоматически добавит
строчку выше в common-session и она не будет перезатерта при обновлении системы.
Теперь мы можем логиниться на машине доменными пользователями, которым разрешен вход.
P.S.: Можно дать права на использование sudo доменным группам. Используя visudo, редактируем файл /etc/sudoers, или, создаем новый файл в /etc/sudoers.d/ и редактируем его
visudo -f /etc/sudoers.d/ваш_файл
добавляем требуемую группу — например, Domain Admins (если в названии группы есть пробелы — их необходимо экранировать):
Linux/BSD Проще не бывает!
Вводим Debian в домен под управлением Win2k8 Server
Задание: дать доменным пользователям из групп «domain users» и «domain admins» на работе доступ на свою машину по samba.
Дополнительные начальные данные:
- на моей «рабочей лошадке» стоит Debian Lenny
- пользователи которых я хочу пустить к себе по samba работают под WinXP с авторизацией через домен my.domain поднятый на Win2k8 (контроллер домена — controller.my.domain)
- права на запись в моих шарах должны иметь только некоторые доменные админские группы, остальным — только чтение
- учетная запись доменного админа Admin (он может ввести машину в домен)
- рабочая группа — WORK ( наследство от давно почившего контроллера домена под Win NT 4)
- имя моей машины — black
Итак, начнем! Сначала ставим необходимые пакетики:
# aptitude install krb5-user winbind samba
Начинаем веселиться — вот такие у меня конфиги:
# cat / etc / krb5.conf | grep -v ^ #
[ logging ]
default = FILE: / var / log / krb5libs.log
kdc = FILE: / var / log / krb5kdc.log
admin_server = FILE: / var / log / kadmind.log
default_realm = MY.DOMAIN
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
MY.DOMAIN = <
kdc = controller.my.domain
admin_server = controller.my.domain
>
[ domain_realm ]
.my.domain = MY.DOMAIN
my.domain = MY.DOMAIN
[ login ]
krb4_convert = true
krb4_get_tickets = false
Минимально необходимый конфиг samba выглядит вот так:
# cat / etc / samba / smb.conf | grep -v ^ #
[ global ]
realm = MY.DOMAIN
workgroup = WORK
netbios name = black
disable spoolss = Yes
show add printer wizard = No
security = ads
idmap uid = 10000 — 20000
idmap gid = 10000 — 20000
template shell = / bin / bash
template homedir = / home /% D /% U
winbind use default domain = yes
comment = Write for Domain Users
path = / media / samba / share
browseable = yes
writable = yes
create mask = 0664
directory mask = 0777
valid users = @ «WORK\domain admins» , @ «WORK\domain users»
write list = @ «WORK\domain admins» , @ «WORK\domain users»
После того как настроили samba, надо бы ее перегрузить:
# / etc / init.d / samba restart
И winbind не помешает передернуть:
# / etc / init.d / winbind restart
Правим nsswitch.conf примерно до такого вида:
# cat / etc / nsswitch.conf | grep -v ^ #
passwd: files winbind
group: files winbind
shadow: files winbind
hosts: files mdns4_minimal [ NOTFOUND = return ] dns mdns4 winbind
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
Чтобы вступили в силу изменения в конфиге /etc/nsswitch.conf без перегарузки, нужно от рута дать команду:
Перед тем как вводить машину в домен нужно сначала синхронизировать время с домен-контроллером:
После удачной синхронизации времени мы готовы стать полноценным участником домена my.domain. Чтобы войти в домен выполняем от рута:
# net ads join -W my.domain -S master -U Admin
password for Admin:
Admin— доменный администратор который имеет право ввести комп в домен
В ответ на это нас должны спросить доменный пароль для доменного пользователя Admin. После ввода пароля — МЫ В ДОМЕНЕ. Если конечно не вывалилась какаято ошибка. Проверить то что мы таки вошли в домен можно например набрав команду:
В ответ на которую мы должны увидеть перечень доменных пользователей.
Для того чтобы в нашу систему можно было логиниться под доменными аккаунтами нужно привести конфиги PAM к такому виду:
# cat / etc / pam.d / common-account
account sufficient pam_winbind.so
account required pam_unix.so
# cat / etc / pam.d / common-auth
auth sufficient pam_winbind.so
auth required pam_unix.so use_first_pass
# cat / etc / pam.d / common-session
session required pam_mkhomedir.so skel = / etc / skel / umask =0022
session sufficient pam_winbind.so
session required pam_unix.so
Вот и все! Можно пробовать зайти, например, по ssh или samba на наш компьютер. Пользователей входящих в группы «domain admins» и «domain users» должно пускать без проблем (даже не спрашивая пароль).
Linux машина в домене Windows AD с помощью sssd и krb5
Была необходимость ввести в домен Windows машину с Ubuntu. Для этих целей обычно используют Samba и Winbind. Но возможен альтернативный вариант с sssd, краткое руководство по нему ниже.
Для примера будем использовать:
Домен = contoso.com
Контроллер домена = dc.contoso.com
Запускаем терминал Ubuntu:
1. Переключаемся под рута
2. Устанавливаем необходимые пакеты
3. Редактируем /etc/krb5.conf, в качестве отступов используется табуляция
4. Редактируем файл /etc/hosts, указываем FQDN для данного хоста:
5. Пробуем получить Kerberos ticket от имени администратора домена:
Если тикет получен успешно, то теперь можно сгенерировать Kerberos principals для данного хоста, регистр важен:
Сейчас наш хост должен отобразиться в списке компьютеров в каталоге. Если все так — удаляем полученный Kerberos ticket:
6. Создаем файл /etc/sssd/sssd.conf со следующим содержимым:
Описание параметров конфигфайла sssd можно посмотреть тут
Устанавливаем права доступа для файла sssd.conf:
Перезапускаем SSSD service
7. Редактируем настройки PAM
редактируем файл /etc/pam.d/common-session, после строки
переопределить параметры через системные настройки PAM, вызываем
и отмечаем пункты sss auth и makehomdir. Это автоматически добавит
строчку выше в common-session и она не будет перезатерта при обновлении системы.
Теперь мы можем логиниться на машине доменными пользователями, которым разрешен вход.
P.S.: Можно дать права на использование sudo доменным группам. Используя visudo, редактируем файл /etc/sudoers, или лучше, как рекомендует maxzhurkin и iluvar, создаем новый файл в /etc/sudoers.d/ и редактируем его
добавляем требуемую группу — например, Domain Admins (если в названии группы есть пробелы — их необходимо экранировать):
P.S.S.: Спасибо gotch за информацию о realmd. Очень удобно — если не нужны специфические настройки, то ввод машины в домен занимает, по сути, три (как заметил osipov_dv четыре) команды:
1. Устанавливаем нужные пакеты:
2. Редактируем файл /etc/hosts, указываем FQDN для данного хоста:
3. Проверяем, что наш домен виден в сети:
4. Вводим машину в домен:
5. Редактируем настройки PAM
Дополнительный плюс данного варианта — сквозная авторизация на файловых ресурсах домена.
Для того чтоб при входе не указывать дополнительно к логину домен, можно добавить суффикс по умолчанию. В файле /etc/sssd/sssd.conf, в блоке [sssd] добавляем строку:
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
Похожие публикации
Как работать с минус-словами в Яндекс.Директе и Google Ads [и автоматизировать процесс]
Search Ads официально возвращается в Россию
Как (и зачем) бесплатно парсить ключи и объявления конкурентов из Яндекс.Директ и Google Ads
Средняя зарплата в IT
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Комментарии 31
(у вас в начале текста contoso.com потом contoso.domain)
Лучше добавить — «используя visudo»
Файлы в /etc/sudoers.d/ правятся по тем же правилам, что и /etc/sudoers:
Просто так править файлы в /etc/sudoers.d/ не стоит
На счет PBIS ничего сказать не могу, не пробовал, но вот на счет GSSAPI — SMB:
Так тут GSSAPI как раз используется. Есть одно немаловажное различие: SMB не говорит в чем у него проблема при попытке ввода в домен — просто с ошибкой вываливается, а msktutil при —verbose говорит. Например:
modify_ext: ldap_modify_ext_s failed (Insufficient access)
ldap modification of CN=…
failed while trying to change msDs-supportedEncryptionTypes to 28.
Error was: Insufficient access