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
>
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 (если в названии группы есть пробелы — их необходимо экранировать):
Включаем Ubuntu в состав домена Windows
Встала задача подключить ноутбук с ОС Ubuntu к домену Windows. Если в ОС Windows это сделать проще простого, то в линуксе нужно проделать небольшие манипуляции.
И так, для примера привожу нужную для дальнейшего мануала информацию:
- Компьютер-сервер с ОС Windows Server 2008 R2:
- Имя: Server2008R2
- Домен: myserver.com
- Роль: контроллер домена ActiveDirectory, DNS-сервер
- IP-адрес: 172.17.1.3
- Маска сети: 255.255.255.0
- Шлюз: 172.17.1.1
- Виртуальная машина с ОС Windows Server 2008 R2:
- Имя: FileServer
- Домен: myserver.com
- Роль: вторичный контроллер домена ActiveDirectory с настроенной реплекацией
- IP-адрес: 172.17.1.6
- Маска сети: 255.255.255.0
- Шлюз: 172.17.1.1
- Ноутбук с ОС Ubuntu 11.04:
- Имя: LaptopUbuntu
- Сетевые настройки: через DHCP (получает от роутера с IP-адресом 172.17.1.1)
Т.к. нашей задачей является подключить ноутбук к домену mydomain.com, то необходимо проделать следующие действия:
sudo apt-get install krb5-user ntp samba winbind
krb5-user — пакет для протокола Kerberos, который используется для аутентификации в Windows;
ntp — позволяет синхронизировать время в контроллером домена;
samba — позволяет стать членом домена;
winbind — позволяет использовать учетную запись пользователя из ActiveDirectory.
Теперь перейдем непосредственно к настройкам:
sudo gedit /etc/resolv.conf
Изменить содержимое на следующее:
domain myserver.com
search myserver.com
nameserver 172.17.1.3
Задаем нужное имя ноутбука (LaptopUbuntu) в следующем файле:
sudo gedit /etc/hostname
sudo gedit /etc/hostname
Меняем так, чтобы было (секцию IPv6 не трогаем):
127.0.0.1 localhost
172.17.1.2 LaptopUbuntu.myserver.com LaptopUbuntu
Теперь для применения изменений необходимо перезагрузить ноутбук. После перезагрузки у меня, почему-то, все отредактированные выше файлы сбросились в первоначальное содержимое. Немного подумав, я понял, что виноват тому значащийся в сетевых настройках включенный DHCP. Через Network Manager я отключил DHCP, выбрал пункт «ручная настройка», а затем опять проделал то, что написано выше. Хотя, часть значений параметров можно вписать через все тот же Network Manager.
Открываем следующий файл:
sudo gedit /etc/ntp.conf
и вписываем в него следующее:
sudo /etc/init.d/ntp restart
Далее приступим к настройке Kerberos. Редактируем файл:
sudo gedit /etc/krb5.conf
Заполняем его следующей информацией:
[libdefaults]default_realm = MYSERVER.COM
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true [realms]
MYSERVER.COM = <
kdc = SERVER2008R2
kdc = FILESERVER
admin_server = SERVER2008R2
default_domain = MYSERVER.COM
> [domain_realm]
.domain.com = MYSERVER.COM
domain.com = MYSERVER.COM
[login]
krb4_convert = false
krb4_get_tickets = false
Теперь настраиваем Samba:
sudo gedit /etc/samba/smb.conf
Приводим секцию [global] к следующему содержанию:
workgroup = MYSERVER.COM
realm = MYSERVER.COM
security = ADS
encrypt passwords = true
dns proxy = no
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
Для проверки правильности заполнения конфигурационного файла Samba, можно выполнить команду testparm, которая выведет информацию о том, что в конфигурации ошибок нет, либо они есть.
Теперь перейдем к настройке Winbind, если мы хотим использовать учетные записи из ActiveDirectory у себя на ноутбуке.
Опять редактируем файл:
sudo gedit /etc/samba/smb.conf
И в секцию [global] добавляем:
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
winbind offline logon = yes
winbind cache time = 1440
После чего необходимо перезапустить демоны:
sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start
Далее идем и редактируем следующий файл:
sudo gedit /etc/nsswitch.conf
Добавляем в конец строк passwd и group слово winbind, т.е. файл должнен выглядеть так:
passwd: compat winbind
group: compat winbind
И самое последнее: в файл /etc/pam.d/common-session добавить следующую строчку:
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
Демонстрация всего того, что описано выше, будет в одной из следующих заметок.
Linux в домене Active Directory
Содержание
Общая информация
Если вам нужно просто предоставить сетевой доступ к ресурсам Linux компьютера, то смотрите статью Samba.
В этой статье мы опишем как подключить Linux компьютер к домену под управлением Microsoft Active Directory и сделать из него файловый сервер.
После выполнения этой инструкции мы будем иметь в сети файловый сервер под управлением ОС Линукс, входящий в домен Windows 2003 и ничем не отличающийся от файлового сервера под Windows. Пользователи домена смогут обращаться к его ресурсам под своими учётными записями. Доступ регулируется группами домена AD.
По этой инструкции настраивались Debian (4, 5), Ubuntu 9.10, создавалась она на основе официальной документации и многих рекомендаций и инструкций из Интернета. Остальные Linux’ы настраиваются сходным образом.
Проверка требований
- Проверяем что Samba собрана с поддержкой Kerberos:
- Также проверим что поддерживается LDAP
- Для корректной работы Samba в домене Windows 2003 нужны версии MIT Kerberos version >=1.3.1. Проверим:
- Для корректной работы с Windows 2008 серверами сама Samba должна быть достаточно свежая:
Установка Samba
При настройке krb5-config лучше указывать IP адреса контроллеров домена, а не их DNS имена.
Настройка Samba
- Для подключения к домену Active Directory удобно использовать утилиту Likewise-Open.
- Для администрирования Samba удобно использовать SWAT или webmin, которые предоставляют веб интерфейс. Попасть на него можно по адресу http://server_address:901 и https://server_address:10000 соответственно, указав для соединения пользователя root. Но будьте осторожны — он полностью переписывает smb.conf и некоторые параметры может просто игнорировать. Лучше предварительно сделать резервную копию файла. Я сначала использовал SWAT, а затем дорабатывал конфигурационный файл /etc/samba/smb.conf руками. Вот, что осталось у меня не закоментированным (принтеры к этому серверу не подключены):
Мы описали два общих каталога:
- backup — доступ имеют только пользователи входящие в группу BackupGroup в Active Directory. Они могут создавать и удалять файлы/каталоги
- distrib — доступ имеют все пользователи входящие в группу DistribGroup в Active Directory
В приведённой конфигурации подразумевается, что eth0 — это сетевой интерфейс в локальную сеть, где домен имеет полное имя WORKGROUP.DOMAIN.LOCAL
- редактируем /etc/nsswitch:
- Проверим, что в /etc/hosts есть корректная запись для нашего сервера, также можно добавить записи для контроллеров доменов:
- Удаляем если есть (или переносим в резервные копии) файл /etc/samba/secrets.tdb и все файлы из /var/lib/samba/*.tdb
- Проверяем конфигурацию (не обязательно):
- testparm -s
В Ubunto testparm находится в пакете samba-common-bin
- Проверим как Samba-3 winbind общается с контроллером домена Active Directory посредством протокола Kerberos:
На рассхождение времени в секундах указывает строка «Server time offset: -5». Обратите внимание, что протокол Kerberos зависим от времени, и расхождение с часами контроллера домена допускается лишь незначительное, поэтому желательно настроить NTP клиент (см. статьи по настройке NTP). В Ubuntu это указывается в файле /etc/default/ntpdate:
- В Debian (и его сыновьях, таких как Ubuntu и внуках вроде Linux Mint) при установке пакета krb5-cofig сразу предлагается его настройка. Лучше всего попробовать работать с этими настройками, но если ничего предложено не было или мы хотим что-то изменить, то редактируем /etc/krb5.conf (я для более стабильной работы использовал ip адреса вместо имён серверов):
- Проверим работает ли Kerberos, постараемся получить билет и просмотреть его:
- Удалим полученный билет:
- Присоединяемся к домену:
Всё, компьютер включен в домен, что можно проверить на контроллере. Даже если после приведённых строк получили следующие:
Проверка работы и отладка
- Для удобства отладки сделаем ссылку на каталог журналов:
- Запускаем samba и winbind:
- Для проверки правильно ли подключение к домену можно посмотреть список пользователей и групп домена (не обязательно):
Если нас не понимают, то подсказываем пароль для wbinfo и смотрим: список доменов в сети, информацию о домене WORKGROUP, список пользователей и групп домена:
- Проверяем, как работает NSS. Команда getent показывает инфо о пользователе, который может быть как в домене, так и юниксовый:
- Теперь можно использовать ресурсы на линукс-сервере, на которые мы дали доступ, как обычные доменные ресурсы.
Дополнительная настройка
- Можно также сопоставить (но это не обязательно) локальные учётные данные и из домена Windows. Для сопоставления пользователей редактируем файл /etc/samba/smbusers.conf:
- для сопоставления (мапирования от англ. Map) групп домена и групп UNIX выполняем:
- После того как всё отлажено, можно понизить уровень записи в журнал до «1». В /etc/samba/smb.conf:
Доступ к Samba из Windows 7 и 2008 r2
Начиная с этих версий параметры авторизации у MS поменялись. Скорее всего Samba вскоре это учтёт, а пока подружить системы можно изменив на Win7 свойства сетевой безопасности:
Пуск — Панель управления — Администрирование — Локальная политика безопасности — Локальные политики — Параметры безопасности
- Сетевая безопасность: минимальная сеансовая безопасность для клиентов на базе NTLM SSP — убрать галочку с «Требовать 128-битное шифрование». Таких параметра два — выполнить для обоих
- Сетевая безопасность: уровень проверки подлинности LAN Manager — выбрать в списке пункт «Отправлять LM- и NTML-ответы»
Работа над ошибками
Winbind не запускается
При запуске Samba обнаруживаем, что winbind не запустился:
В журнале log.winbindd обнаруживаем запись:
Видим, что добавлен «встроенный домен» (BUILTIN) и домен «название компьютера» (STORAGE), подключиться к домену AD не удалось.
Решение: Переподключить компьютер в домен. Удалять придётся с самого контроллера, т.к. комадна net ads leave скорее всего не поможет.
Ошибка получения билета Kerberos
При попытке получить билет Kerberos получили:
Решение: указать имя домена в другом регистре. Скорее всего нужны все заглавные