Pull to refresh

Управляемые учётные записи служб (Managed Service Accounts)

Reading time5 min
Views65K
image

Есть способ, который позволяет узнать пароль администратора в случае, если какая-либо служба запускается от его имени.
Пароли учетных записей, от которых запускаются службы Windows, хранятся в зашифрованном виде в реестре (LSA Secrets) по пути:

HKEY_LOCAL_MACHINE/Security/Policy/Secrets

Существуют способы, которые позволяют извлечь пароли из LSA Secrets:
  • Скопировать путь реестра во временный путь, а затем расшифровать зашифрованные пароли
  • Использовать теневые копии
  • Использовать специальные утилиты для работы с процессом lsass.exe

Попробуем получить пароль от учетной записи под которой запускается служба SQL Server.
Имеется:
Контроллер домена на Windows Server 2012 R2
SQL Server Express 2012
При установке SQL Server, для запуска службы, специально укажем существующую доменную учётную запись (пароль меньше 14 символов).

Piccy.info - Free Image Hosting

Воспользуемся утилитой gsecdump для извлечения паролей.
Запустим PowerShell от имени администратора и выполним команду: gsecdump-v2b5.exe -l
Результат:

Piccy.info - Free Image Hosting

Чтобы защититься от такого рода атак в Windows Server 2008 R2 был придуман механизм Managed Service Accounts.
Managed Service Accounts являются управляемыми учетными записями в домене, которые обеспечивают автоматическое управление паролями и упрощенное управление именами служб-участников, включая делегирование управления другим администраторам.
Преимущества управляемых учетных записей служб:
  • Автоматическая смена паролей. По умолчанию смена пароля – раз в 30 дней
  • Сложный пароль. Используется комплексный автоматически генерируемый пароль из 240 символов в случайном порядке (первая половина — буквы английского алфавита, вторая половина — цифры и другие символы)
  • Отсутствие избыточных прав
  • Возможность использования одного MSA на нескольких серверах (gMSA). В случае, когда требуется, чтобы все экземпляры служб использовали один и тот же субъект, например для использования в службе NLB
  • Управление SPN

Автоматическое обновление SPN при переименовании
— учетной записи сервера
— свойства dnshostname учетной записи сервера
— изменении свойства addition¬aldnshostname учетной записи сервера
— изменении свойства additionalsam¬accountname учетной записи сервера

Сервисы и службы, которые поддерживают MSA:
  • IIS
  • AD LDS
  • SQL Server 2008 R2 SP1, 2012
  • MS Exchange 2010, 2013

Требования MSA:
  • Уровень домена и леса – Windows Server 2008 R2
  • Windows Server 2008 R2, Windows 7 (Professional, Enterprise, Ultimate)
  • .Net Framework 3.5x
  • Модуль администрирования Active Directory для PowerShell
  • Установленный патч 2494158

Если лес и домен не имеют уровень 2008 R2 (MSA) и 2012 (gMSA) нужно поднять уровень леса командой:
adprep /forestprep
И уровень домена, командой:
adprep /domainprep в каждом домене, в котором необходимо создать и использовать управляемые учетные записи службы.

Включение MSA в PowerShell
1) Выполнить командлет: Import-Module ActiveDirectory
2) Чтобы создать учётную запись MSA нужно выполнить командлет:
New-ADServiceAccount serviceaccount –RestrictToSingleComputer
где serviceaccount – имя учетной записи MSA
RestrictToSingleComputer – параметр означает, что MSA будет привязан только к одному серверу.
Можно зайти в Active Directory Users and Computers и убедиться, что MSA был создан (чтобы появился раздел Managed Service Accounts, нужно включить в оснастке View — Advanced Features).
Piccy.info - Free Image Hosting

3) Чтобы привязать MSA к серверу нужно выполнить командлет:
Add-ADComputerServiceAccount -Identity server -ServiceAccount serviceaccount
где server – имя сервера, который будет соотнесён с MSA
serviceaccount – имя учетной записи MSA
Чтобы проверить, что операция выполнена успешно, нужно зайти в оснастку Active Directory Users and Computers, перейти в свойства сервера и посмотреть атрибут msDS-HostServiceAccount
Piccy.info - Free Image Hosting

4) Установка управляемой учетной записи службы на локальном компьютере
Нужно выполнить командлет:
Install-ADServiceAccount -Identity serviceaccount
где serviceaccount – имя учетной записи MSA
5) Тестирование MSA (Windows 8.1, Windows PowerShell 4.0, Windows Server 2012 R2)
Нужно выполнить командлет:
Test-ADServiceAccount serviceaccount
где serviceaccount – имя учетной записи MSA
Вернёт значение True или False
6) Установить для службы Windows запуск от имени MSA и перезапустить службу.
В конце имени MSA не забудьте указать знак $
Поле пароль нужно оставить пустым.
Piccy.info - Free Image Hosting

Проверим с помощью утилиты gsecdump пароль для учётной записи службы
Piccy.info - Free Image Hosting

В Windows Server 2012 появились Групповые управляемые учетные записи служб (Group Managed Service Accounts).
Они позволяют привязывать управляемую учетную запись не к одному серверу, а к нескольким.
Это может потребоваться, например, для использования в службе балансировки сетевой нагрузки.

Требования:
  • Уровень схемы – Windows Server 2012
  • Контроллер домена Windows Server 2012 (R2) на котором запущена служба Microsoft Key Distribution Service
  • Windows Server 2012, 2012 R2, 8, 8.1
  • Модуль администрирования Active Directory для PowerShell


Включение gMSA в PowerShell
1) Проверить, что включена служба Microsoft Key Distribution Services
“Служба распространения ключей использует общий секрет для создания ключей учетной записи. Эти ключи периодически изменяются. В дополнение к прочим атрибутам групповых управляемых учетных записей служб контроллер домена Windows Server 2012 вычисляет пароль для ключа, предоставленного службами распространения ключей. Обратившись к контроллеру домена Windows Server 2012, узлы Windows Server 2012 и Windows 8 могут получить текущий и предыдущий пароль.”
2) Создать Root Key
За создание Root Key отвечает командлет:
Add-KdsRootKey
Чтобы создать новый Root Key нужно выполнить командлет:
Add-KdsRootKey –EffectiveImmediately
В таком случае ключ будет доступен через 10 часов, пока не среплицируется.
Можно выполнить командлет:
Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
В таком случае, ключ будет доступен сразу (-10 часов начала работы)
3) Создать gMSA
Выполнить командлет:
New-ADServiceAccount serviceaccount -DNSHostName test.test.com –PrincipalsAllowedToRetrieveManagedPassword $test
где serviceaccount – имя учетной записи gMSA
test.test.com – имя сервера, на котором был создан Root Key
$test – имя сервера, который может обращаться к KDS для получения информации

Можно зайти в Active Directory Users and Computers и убедиться, что gMSA был создан (чтобы появился раздел Managed Service Accounts, нужно включить в оснастке View — Advanced Features).
Piccy.info - Free Image Hosting

4) Установка управляемой учетной записи службы на локальном компьютере
Нужно выполнить командлет:
Install-ADServiceAccount -Identity serviceaccount
где serviceaccount – имя учетной записи gMSA
5) Тестирование MSA (Windows 8.1, Windows PowerShell 4.0, Windows Server 2012 R2)
Нужно выполнить командлет:
Test-ADServiceAccount serviceaccount
где serviceaccount – имя учетной записи MSA
Вернёт значение True или False
6) Установить для службы Windows запуск от имени gMSA и перезапустить службу.
В конце имени gMSA не забудьте указать знак $
Поле пароль нужно оставить пустым.
Piccy.info - Free Image Hosting

Проверим с помощью утилиты gsecdump пароль для учётной записи службы
Piccy.info - Free Image Hosting

Удалить MSA/gMSA можно с помощью командлета Uninstall-ADServiceAccount

Задавать параметры MSA/gMSA можно с помощью командлета Set-ADServiceAccount
Задание периода смены пароля:
Set-ADServiceAccount serviceaccount -ManagedPasswordIntervalInDays 60
где serviceaccount – имя учетной записи gMSA
60 – период, через который сменится пароль
Задание криптоалгоритмов Kerberos для использования MSA
Варианты: RC4, AES128, AES256
Set-ADServiceAccount serviceaccount -KerberosEncryptionType RC4, AES128, AES256
Задание SPN
Set-ADServiceAccount serviceaccount -ServicePrincipalNames @{Add=«добавляемый SPN»}

Задание NetBIOS имени для сервиса (SAMAccountName)
Если не задано, используется идентификатор Name
Если задано, имя отображения в AD будет из Name, а идентификатор для логина из SAMAccountName
Set-ADServiceAccount serviceaccount –SamAccountName test

MSA – это ещё один способ, который позволяет повысить безопасность.
Tags:
Hubs:
Total votes 8: ↑7 and ↓1+6
Comments0

Articles