Удаленная работа с пользователями AD samba-домена


Все просто, когда есть удаленный доступ в офис и возможность терминального подключения к Windows Server для управления пользователями AD домена через MMC-консоль ADUC. Однако все усложняется немного непривычно, когда домен-контроллер на samba и управлять пользователями нужно из командной строки. Частичное решение — установка RSAT на локальном компьютере в удаленном офисе. Однако работа с ним требует присутствия администратора на месте. Но не всегда такая возможность имеется. Поэтому будем осваивать удаленную работу с пользователями AD samba-домена из консоли Linux

Начальные условия

  • Домен-контроллер на самба настроен и работает
  • Компоненты администрирования RSAT установлены на одном из компьютеров входящих в домен
  • Эталонный пользователь (логин d01) создан при помощи MMC-консоли ADUC. Необходимые атрибуты (флаги) из Properties→Account→Account option установлены. После этого создание остальных пользователей можно выполнять удаленно
  • На сервере с самбой установлен ldap-utils
  • В smb.conf (секция global) есть опция ldap server require strong auth = no. Нужно для работы с утилитами ldap

Создание

Всех пользователей создаем в новом Organization Unit (LM) на который в будущем применим нужные политики. Если отдельный OU не нужен, пропускаем этот шаг

samba-tool ou create "OU=LM"

Заводим пользователя домена с логином d28, задаем пароль, помещаем его в OU LM, указываем путь к сетевому профилю, а также имя и фамилию пользователя. Если параметр --userou не задан, все пользователи будут созданы в дифолтном OU Users

samba-tool user create d28 48255 --userou="OU=LM" --profile-path="\\AD\profiles\d28" --given-name="Lid" --surname="Pel"

Список других атрибутов, которые можно задать при создании пользователя

  • —initials
  • —script-path
  • —home-drive
  • —home-directory
  • —must-change-at-next-login
  • —use-username-as-cn
  • —smartcard-required
  • —job-title
  • —department
  • —company
  • —description
  • —mail-address
  • —internet-address
  • —telephone-number
  • —physical-delivery-office

Создадим группу DOCTOR и добавим в нее пользователя d28

samba-tool create group DOCTOR
samba-tool group addmembers DOCTOR d28

Проверим список пользователей

samba-tool user list

альтернативная команда

wbinfo -u

Результат

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

Изменение атрибутов пользователя

Открываем свойства пользователя, закладка Account и смотрим на Account options

Account options пользователя

Свойства учетной записи доменного пользователя. Все выглядит привычно

Доступны следующие атрибуты:

  • User must change password at next login
  • User cannot change password
  • Password never expires
  • Account is disabled
  • Store password using reversible encryption
  • Smart card is required for interactive logon
  • Account is sensitive and cannot be delegated
  • Use only Kerberos DES encryption types for this account
  • This account supports Kerberos AES 128 bit encryption
  • This account supports Kerberos AES 256 bit encryption
  • Do not require Kerberos preauthentication

К сожалению samba-tool может влиять только на первых четыре

User must change password at next login

samba-tool user setpassword d28 --newpassword=12345 --must-change-at-next-login

Password never expires

samba-tool user setexpiry d28 --noexpiry

Account is disabled

samba-tool user disable d28

Smart card is required for interactive logon

samba-tool user setpassword d28 --smartcard-required

User cannot change password

Значение этого атрибута хранится в дискрипторе nTSecurityDescriptor каждого пользователя и работа с ним невозможна через samba-tool

Задать его остальным пользователям возможно переносом значения дискриптора от эталонного пользователя

Узнаем значение nTSecurityDescriptor эталонного пользователя CN=Etalon User,OU=LM,DC=testdomain,DC=local (логин d01) и сохраним его в файл etalon.ldiff (имя произвольное)

ldapsearch -x -H ldap://ad.testdomain.local -D "administrator@testdomain.local" -w "adminPWD" -b "CN=Etalon User,OU=LM,DC=testdomain,DC=local" nTSecurityDescriptor | awk '/^nTSecurityDescriptor:: / {printf $1 " " $2} /^ / {gsub(/^[ ]+/, ""); printf $0} END {print ""}' > etalon.ldiff

Содержимое файла etalon.ldiff приведем к следующему виду, где:

— в первой строке dn: пользователя (результат команды samba-tool user show d28)
nTSecurityDescriptor:: значение дискриптора — одна строка

Задать Account options при помощи дискриптора nTSecurityDescriptor

фрагмент содержимого файла etalon.ldiff

Накатываем etalon.ldiff пользователю d28

ldapmodify -x -H ldap://ad.testdomain.local -D "administrator@testdomain.local" -w "adminPWD" -f etalon.ldiff

Проверяем из MMC-консоли. Атрибут User cannot change password установлен

Поддержка Kerberos AES 128-bit и 256-bit

Работа с шифрованием Kerberos определяется полем msDS-SupportedEncryptionTypes, значение которого должно соответствовать сумме битов

Атрибут (флаг) HEX значение 10 значение
Поддержка AES 128-bit 0x08 8
Поддержка AES 256-bit 0x10 16
Поддержка обоих типов AES (128-bit и 256-bit) 0x18 24

И редактируется командой

ldbedit -H /var/lib/samba/private/sam.ldb 'samAccountName=d28' msDS-SupportedEncryptionTypes

В редакторе указываем десятичную цифру

Как насчет остальных?

Остальными можем управлять изменяя значение поля userAccountControl нужного пользователя (объекта AD)

Здесь аналогично, сумма битов определяет значение UserAccountControl

Атрибут (флаг) HEX значение 10 значение
ENCRYPTED_TEXT_PWD_ALLOWED 0x0080 128
NORMAL_ACCOUNT 0x0200 512
NOT_DELEGATED 0x100000 1048576
USE_DES_KEY_ONLY 0x200000 2097152
DONT_REQ_PREAUTH (Не требуется предварительная проверка подлинности Kerberos) 0x400000 4194304

Редактируется командой

ldbedit -H /var/lib/samba/private/sam.ldb 'samAccountName=d28' userAccountControl

У новосозданного пользователя userAccountControl равен 512

Дополнительно

Атрибуты каждого пользователя можно просмотреть привычно через MMC-консоль ADUC или при помощи samba-tool

samba-tool user show d28

Еще один способ, где время отображается в human-readable. Важно при разборе полетов

pdbedit -u d28 -v

Изменить пароль пользователя d28

samba-tool user setpassword d28 --newpassword=pa$$w()rd

Заблокировать, разблокировать пользователя

samba-tool user disable d28
samba-tool user enable d28

Если необходимо изменить имя отображаемое в MMC-консоли (значение поля distinguishedName) с текущего на Lidiya Pelenska

samba-tool user rename d28 --force-new-cn='Lidiya Pelenska'

Есть возможность редактировать, удалять или добавлять другие атрибуты. Команда автоматически открывает свойства пользователя в vi. Две команды на выбор

samba-tool user edit d28
ldbedit -H /var/lib/samba/private/sam.ldb 'samAccountName=d28'

Если хочется в другом редакторе, тогда используем ключ -e

samba-tool user edit d28 --editor=mcedit
ldbedit -e mcedit -H /var/lib/samba/private/sam.ldb 'samAccountName=d28'
Атрибуты пользователя. samba-tool

Свойства учетной записи доменного пользователя из консоли Linux. Не все атрибуты отображены. Есть возможность для редактирования

Информация о пользователях, сессиях, а также с каких IP-адресов или компьютеров они подключены

smbstatus

Бонус

Предлагаю ознакомиться с консольной тулзой, при помощи которой можно создавать, редактировать и удалять некоторые объекты Active Directory. Там не все еще корректно отрабатывает, но автор работает над этим. И имя ей admin-tools

0 0 голоса
Ваша оценка поста?
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии