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

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

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

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

  1. Запустите оснастку ADUC ( Active Directory Users and Computers ), выполнив команду dsa.msc ;
  2. С помощью поиска найдите учетную запись пользователя, которому нужно ограничить вход только на компьютеры домена и откройте его свойства;
  3. Перейдите на вкладку Account и нажмите кнопку Log On To ; logon-to ad пользователь
  4. Как вы видите, пользователю разрешено входить на все компьютеры (The user can log on to: All computer). Чтобы разрешить пользователю аутентифицироваться только на определенных компьютерах, выберите опцию The following computers и добавьте в список имена компьютеров, но которые ему разрешено входить; разрешить пользвоателю вход только на следующие компьютеры
    Примечание . Нужно указывать полное NetBIOS или DNS имя компьютера (нельзя знаки подстановки использовать), параметр регистронезависимый.

  5. Количество компьютеров, которые можно добавить в этот список ограничено 64. При попытке добавить 65 компьютер появится сообщение об ошибке: This property is limited to 64 values. You must remove some of the existing values before you can add new ones . Как разрешить или запретить пользователям вход на компьютеры в домене AD?
  6. Сохраните изменения. Теперь пользователь может входить только на указанные компьютеры.
С помощью оснастки Active Directory Administrative Center ( dsac.msc ) и с помощью PowerShell вы можете разрешить пользователю входить более чем на 65 компьютер. Однако максимальное значение ограничивается типом данных атрибута Logon-Workstation в схема Active Directory (Octet String). В Windows Server 2016 + в этом атрибуте может содержаться до 8192 символов (в предыдущих версиях Windows Server 2003-2012 использовалось ограничение 1024 символов).

Еще одна интересная особенность появляется, если вы ограничили пользователю список компьютеров разрешенных для входа с помощью атрибута LogonWorkstation.
При попытке подключится к удаленному компьютеру ( RDS ферме ) по RDP, вы можете получить ошибку:

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

Для решения этой проблемы нужно добавить в список LogonWorkstation компьютер с которого (!!!) осуществляется RDP вход.

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

Вручную заполнять список компьютеров, на которые разрешено входить пользователю домена довольно утомительно. С помощью PowerShell можно автоматизировать это действие. Список компьютеров, на которые разрешено входить пользователю хранится в атрибуте пользователя в AD – LogonWorkstations . Например, наша задача разрешить определенному пользователю входить только на компьютеры, чьи имена содержатся в текстовом файле computers.csv (в этом примере в первой строке файла должно содержаться имя столбца – NetBIOSName).

Скрипт может выглядеть так (сначала загружаем модуль AD для Powershell ):

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

powershell изменить атрибут LogonWorkstations

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

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

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

Либо можно посмотреть список компьютеров в консоли ADUC.

logon workstations

Чтобы добавить в список новый компьютер, воспользуйтесь такой командой:

$Wks = (Get-ADUser dvivannikov -Properties LogonWorkstations).LogonWorkstations
$Wks += ",newpc"
Set-ADUser aapetrov -LogonWorkstations $Wks

Ограничить часы входа пользователя в Active Directory

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

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

Если вам нужно применить одинаковы ограничения Logon Hours для нескольких пользователей, проще всего использовать PowerShell. Сначала вручную настройте ограничения для одного пользователя, а затем используете значение его атрибута logonHours в качестве шаблона для других пользователей. Например, вы хотите ограничить время входа для группы удаленных пользователей:

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

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

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

В Windows нет встроенного функционала по принудительному завершению сессии пользователе, если его рабочее время закончено. Для гарантированного выполнения logoff можно создать простое задание планировщика и распространить его через GPO.

Также обратите внимание на два параметра GPO в разделе to 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 сервера будут отключать подключения пользователей, чьи часы работы просрочены.

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

В больших доменах использовать свойство пользователя LogonWorkstations для ограничения доступа пользователей к компьютерам нецелесообразно из-за ограничений и недостаточной гибкости. Для более гибкого управления правилами запрета/разрешения входа на компьютеры используют групповые политики.

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

Есть две групповые политики, которые находятся в разделе 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 (Запретить локальный вход)

назначить политики denylogon на OU

В больших доменах можно использовать комбинацию этих политик. Например, вы хотите запретить пользователям входить на компьютеры других OU.

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

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

Import-module ActiveDirectory
$rootOU = “OU= Users,OU=MSK,DC=remontka,DC=ru”
$group = “corpmsk-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

Несколько важных моментов касательно данных политик:

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