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

Как разрешить или запретить пользователям вход на компьютеры в домене 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. d0bad0b0d0ba d180d0b0d0b7d180d0b5d188d0b8d182d18c d0b8d0bbd0b8 d0b7d0b0d0bfd180d0b5d182d0b8d182d18c d0bfd0bed0bbd18cd0b7d0bed0b2d0b0 65d22de6ba7e0
  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

С помощью командлета 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=winitpro,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

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

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

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