Как запретить/разрешить пользователям вход на определенные компьютеры в домене AD?

По умолчанию пользователи Active Directory могут локально входить под своими учетками на любой доменный компьютер в сети. Это обеспечивается за счет того, что все новые пользователи создаваемые в Active Directory автоматически добавляются в группу Domain Users. А группа Domain Users в свою очередь по умолчанию добавляццфцется в локальную группу Users на рабочих станциях Windows при добавлении их в домен AD. В целях безопасности, многие организации ограничивают для пользователей разрешенные для входа компьютеры, а также могут внедрять дополнительные ограничения на разрешенное время входа в систему.

Разрешить пользователю вход только на определенные компьютеры AD

В свойствах учетной записи пользователя Active Directory можно задать список компьютеров, на которые ему разрешено входить. Например, вы хотите, чтобы определенный пользователь мог войти только на свой компьютер. Для этого:

  1. Откройте оснастку ADUC (Active Directory Users and Computers) командой dsa.msc
  2. Найдите учетную запись пользователя, для которого нужно настроить ограничения входа и откройте его свойства
  3. Перейдите на вкладку Account и нажмите кнопку Log On To Ограничить входа на компьютеры AD для пользователя
  4. По умолчанию пользователю разрешено входить на все компьютеры (The user can log on to: All computer).
  5. Чтобы ограничить список разрешенных для входа компьютеров, нужно выбрать The following computers и добавить в список имена компьютеров. Список компьютеров, на которы разрешено входить пользователю
    Примечание. Здесь указывается NetBIOS или DNS имя компьютера (нельзя знаки подстановки использовать). Параметр регистронезависимый. Максимально допустимое NetBIOS hostname в Windows – 16 символов.
  6. Сохраните настройки учетной записи.

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

Your account is configured to prevent you from using this PC. Please try another PC.

Ошибка при входе на доменный компьютер вход на который не разрешен

Кроме того, настроенный список разрешенных компьютеров в поле Log on To, будет блокировать подключение к разрешенным хостам по RDP (в том числе к разрешенным RDS фермам), если используется проверка подлинности NLA. В этом случае при подключении к разрешенному хосту по RDP под этим пользователем, появится ошибка:

The system administrator has limited the computers you can log on with.Try logging on at a different computer.
Системный администратор ограничил количество компьютеров с которых вы можете войти в систему.

Ошибка при RDP входе:Системный администратор ограничил количество компьютеров с которых вы можете войти в систему

Для исправления проблемы нужно добавить hostname компьютера-источника, с которого выполняется RDP подключение в список доверенных (даже если он не в домене), либо отключить NLA для RDP (что не безопасно).

Атрибут userWorkstations в Active Directory

Фактически список разрешенных компьютеров хранится в атрибуте пользователя userWorkstations (в виде списка имен компьютеров, разделенных запятыми). Вы можете просмотреть или отредактировать текущее значение userWorkstations на вкладке редактора атрибутов.

Атрибут пользователя AD - userWorkstations

Максимальный размер userWorkstations атрибута ограничен 1024 символами (этого хватает на 64 компьютера с длиной имени 16 символов), и если попытаться добавить список большое количество компьютеров, при добавлении появится ошибка:

This property is limited to 64 values. You must remove some of the existing values before you can add new ones.

Ограничение на максимальное количество разрешенных компьютеров в userWorkstations

В предыдущих версиях AD (до функционального уровня Window Server 2012R2) вместо атрибута userWorkstations использовался атрибут logonWorkstation (в современной схеме AD не используется).

Изменить значение атрибута userWorkstations с помощью PowerShell

Вручную заполнять список компьютеров, на которые разрешено входить пользователю домена из графической консоли ADUC может быть довольно утомительно. Чтобы добавить в список разрешенных компьютеров еще одно имя, проще воспользоваться PowerShell (требуется модуль AD для PowerShell). Следующая команда разрешит указанному пользователю вход на указанный компьютер (компьютер будет добавлен в список в атрибуте userWorkstations):

$allowPC = "wks123"
$user = "abelov"
$current = (Get-ADUser $user -Properties userWorkstations).userWorkstations
$newValue = if ($current) { "$current,$allowPC" } else { $allowPC }
Set-ADUser $user -LogonWorkstations $newValue
Обратите внимание, что в командлете Set-ADUser используется устаревший параметр LogonWorkstation, который фактически вносит изменения в атрибут userWorkstations. Поле LogonWorkstation в AD при этом остается пустым. Параметр LogonWorkstation не используется в AD

Если нужно добавить в разрешенные для входа компьютеры большое количество записей, проще всего сохранить список компьютеров в CSV файл (NetBIOSName в этом примере название столбца в файле). Затем выполнить:

Import-Module ActiveDirectory
$ADusername = 'aapetrov'
$complist = Import-Csv -Path "C:\PS\computers.csv" | ForEach-Object {$_.NetBIOSName}
$comparray = $complist -join ","
Set-ADUser -Identity $ADusername -LogonWorkstations $comparray
Clear-Variable comparray

powershell: добавить несколько компьютеров в список разрешенных для входа в AD

Для изменения атрибутов пользователя Active Directory используется командлет Set-ADUser.

С помощью командлета Get-ADUser команды можно вывести список компьютеров, на которые разрешено входить пользователю:

Get-ADUser $ADusername -Properties userWorkstations | Format-List Name, userWorkstations

Get-ADUser userWorkstations: вывести список разрешенных компьютеров

Чтобы очистить список разрешенных компьютеров (пользователю можно будет входитьб на любой компьютер):

Set-ADUser -Identity 'abelov' -LogonWorkstations $null 

Вывести список всех пользователей, для которых включены ограничения на вход в домен:

Get-ADUser -ldapfilter '(userWorkstations=*)'|ft

powershell: вывести список пользователей, для которых включено ограничения по входу

Разрешенное время входа пользователей в Active Directory

По умолчанию пользователь домена может выполнять вход на компьютеры в любой время (24/7). В целях безопасности можно ограничить разрешенное время входа рабочими часами (например, с 8:00 до 19:00).

  1. Откройте свойства нужного пользователя в оснастке ADUС, перейдите на вкладку Account и нажмите кнопку Logon Hours (Время входа)active directory задать разрешенные часы работы пользователю
  2. Появится специальный календарный интерфейс, где можно задать разрешенные и запрещенный часы и дни недели. По умолчанию для пользователей не ограничено время входа в домена (все выделено синим);
  3. Выделите диапазоны времени, в которые вы хотите запретить вход пользователя и нажмите Logon Denied (цвет диапазонов, в которые запрещено логиниться пользователям изменится на белый).пользователь ad: задать logonhours

Чтобы включить временные ограничения сразу для нескольких пользователей в OU, выделите аккаунты и откройте их свойства. Перейдите на вкладку Accounts. Включите опцию Logon hours и настройте разрешенные и запрещенные часы. Все изменения применятся для всех выделенных аккаунтов.

Задать рабочие часы в AD для множества пользователей

Если пользователь попытается войти в компьютер за пределами разрешенных часов, он получит ошибку:

Account restrictions are preventing this user from signing in. For example: blank passwords aren't allowed, sign-in times are limited, or a policy restriction has been enforced.

не могу войти в windows account restrictions

Также с помощью PowerShell можно скопировать значение настроенного атрибута Logon Hours у одного (эталонного пользователя) и применить их для всех пользователей. Следующий пример применит одинаковые ограничения на время входа в домен для группы удаленных пользователей:

$templateuser='a.khramov'
$templatehours= Get-ADUser -Identity $templateuser -properties logonHours
Get-ADGroupmember "msk-VPN_Users" |foreach {Set-ADUSer $_.samaccountname -Replace @{logonHours = $templatehours.logonHours} }

С помощью параметра GPO Set action to take when logon hours expire в User Configuration -> Administrative Templates -> Windows Components -> Windows Logon Options можно выбрать действие, которое нужно выполнить, если разрешенные рабочие часы пользователя закончились. Можно заблокировать текущий сеанс ( lock ), завершить ( logoff ) или отключить ( disconnect )

Групповая политика: настроить действие при истечении рабочего времени

Есть еще два GPO параметра, которые позволяют ограничить сетевую активность пользователей за пределами рабочего времени, заданного в настройках учетной записи. Речь о следующих параметрах Computer configurations -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options.

  • Network security: Force logoff when logon hours expire
  • Microsoft network server: Disconnect clients when logon hours expire

gpo: автоматическое отключение пользоватлей с истекшими logohours

Эти политики позволят заблокировать сетевые SMB сессии пользователей, чьи рабочие часы истекли.

На отдельно стоящем Windows компьютере (без домена) ограничить разрешённое время работы пользователя можно с помощью команды net user <login> /time:<allowed-time>

Ограничить вход на компьютеры AD с помощью GPO

В больших доменах редко используется ограничение доступа пользователей к компьютерам через атрибут userWorkstations. Т.к. это такое решение недостаточно гибкое (максимальное число компьютеров в атрибуте ограничено) и требует постоянного ручного вмешательства. Проще настроить правила запрета/разрешения входа на компьютеры через параметры безопасности в разделе GPO Computer Configuration -> Policies -> Security Settings -> Local Policies -> User Rights Assignment (Конфигурация пользователя -> Политики -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя):

  • Deny log on locally (Запретить локальный вход) – позволяет запретить локальный вход на компьютеры для определенных пользователей или групп.
  • Allow log on locally (Локальный вход в систему) – содержит список пользователей и групп, которым разрешено входить на компьютер локально.

Например, чтобы запретить пользователям определенной группы входить на компьютеры в определенной Organizational Unit (OU), вы можете создать отдельную группу пользователей, добавить ее в политику Deny log on locally и назначить ее на OU с компьютерами, доступ к которым вы хотите ограничить.

политика Deny log on locally (Запретить локальный вход)

В больших доменах обычно используется комбинацию этих политик.

Часто в корпоративных сетях внедряется запрет пользователям на вход на компьютеры, расположенные в других OU. Для этого в каждой OU нужно создать группу безопасности, куда нужно включить всех пользователей OU.

Совет. Такие динамические группы пользователей можно автоматически наполнять пользователями из OU с помощью PowerShell командлетов Get-ADUser и Add-ADGroupMember таким скриптом:

$rootOU = "OU= Users,OU=MSK,DC=winitpro,DC=ru"
$group = "corp\msk-users"
Get-ADUser -SearchBase $rootOu -Filter * | ForEach-Object {Add-ADGroupMember -Identity $group -Members $_ }

Затем нужно включить параметр GPO Allow log on locally, добавить в него эту группу (+ различные администраторские группы: Domain Admins, администраторы рабочих станций и прочее) и назначить политику на OU с компьютерами. Таким образом вы разрешите входить на компьютеры только пользователям конкретного OU.

Обновите настройки GPO на клиентах. Теперь при попытке входа пользователя, которому запрещен локальный метод входа, появится окно с предупреждением:

You cannot log on because the logon method you are using is not allowed on this computer.  Please see your network administrator for more information.

Или

The sign-in method you are trying to use isn’t allowed. For more info, contact your network administrator.

The sign-in method you are trying to use isn’t allowed

Также можно ограничить список пользователей в локальной группе Users с помощью политики Restricted Groups (см. пример использования политик Restricted Groups из раздела Windows Settings -> Security Settings для добавления пользователей в локальную группу администраторов).

Несколько важных моментов касательно политик, ограничивающих локальный вход на компьютеры:

  • Не стоит применять данные политики, для ограничения доступа к серверам и тем более к контроллерам домена;
    Как разрешить обычным пользователям RDP доступ к DC.
  • Не включаете эти политики через стандартные GPO: Default Domain Policy или Default Domain Controllers Policy;
  • Запрещающая политика имеет больший приоритет;
  • Не забывайте про сервисные учетные записи(в том числе gMSA), которые могут использоваться для запуска служб на компьютерах;
  • Не стоит применить политики, ограничивающие локальный вход на весь домен. Назначайте их на конкретные OU;
  • Пользователи смогут подключаться компьютерам с помощью интерактивных RDP сессий несмотря на запрет локального входа.

Предыдущая статья Следующая статья


Комментариев: 43 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)