Виртуальные учётные записи — это самое простейшее, но при этом очень мощное, средство защиты, о котором следует знать системным администраторам.
Время от времени администраторам приходится устанавливать ПО подозрительного происхождения или сомнительного качества. Если это ПО создаёт сервис или является приложением в IIS, то самое время применить Virtual Accounts для ограничения прав такого приложения и уменьшения зоны поражения в случае компрометации приложения.
Как правило разработчики не утруждают себя и запускают ПО от Local System, самые крутые от Network Service. В первом случае мы получаем очень уязвимую систему, и угрозу для всей доменной инфраструктуры. Во втором случае ситуация лучше, но не многим: стандартную учётную запись Network Service легко атаковать, и в случае наличия системных уязвимостей или конфигурационных ошибок скомпрометировать систему.
До 2008 года мы были обречены создавать обычные учетные записи для запуска сервисов и пулов IIS с ограниченными правами. Проблема обычных учётных записей в наличие пароля: его надо задать, где-то хранить и к тому же менять! Всё это на практике приводит к легкой компрометации обычных учётных записей. В Windows Server 2008 появились Virtual Accounts. Эти учётные записи не создаются администратором, их не существует в обычном понимании, они не хранятся в разделе реестра SAM на диске, у них нет паролей. Тем не менее от имени виртуальной учётной записи можно запустить сервис или пул IIS путем их специальной, но очень элементарной настройки: учётная запись просто задаётся в специальном формате. (Разработчики могут использовать в своём приложении специальное API для динамического создания и использования виртуальных учётных записей). При перезапуске сервиса виртуальная учётная запись пересоздается. Таким образом к ней невозможно подобрать пароль – в результате намного сложнее скомпрометировать систему.
Формат виртуальной учётной записи:
-
IIS AppPool\имя пула
Например: IIS AppPool\MyNewAppPool где MyNewAppPool это имя пула в IIS
Помните, что вы должны предоставить права этой учётной записи на корневой каталог сайта/приложения
- NT SERVICE\имя сервиса
Вот пример как запускается сервис WSUS:
Имя сервиса MSSQL$MICROSOFT##WID
Имя учётной записи NT SERVICE\MSSQL$MICROSOFT##WID
Надо отметить, что виртуальные учётные записи не видны среди других учётных записей в диалоговых окнах выбора учётных записей.
Например, на том же сервере WSUS:
Тем не менее если указать имя виртуальной учётной записи в явном виде и нажать «Проверить», то учётная запись подхватится.
Это верно и при назначении прав на локальные папки, если сервису или пулу нужно иметь туда доступ, а также при назначении прав на другие объекты (например, Security Rights или права на DCOM). Если права назначены, то это видно:
Что касается доступа к сетевым ресурсам, то вместо виртуальной учётной записи будет использоваться учётная запись компьютера (в формате Comp$): именно для неё нужно предоставлять права, например, на сетевую папку. Безусловно это понижение безопасности: виртуальные учётные записи предназначены прежде всего для локального использования. Для распределенного применения (несколько серверов, сетевой доступ) есть другой тип учётных записей – gMSA, но это уже другая история.
Полезные ссылки:
Service Accounts Step-by-Step Guide
Filed under: Windows | Tagged: gMSA, MSA, Virtual Accounts, Windows |
[…] Илья Сазонов напоминает о полезности использования механизма виртуальных учётных записей для усиления безопасности исполнения локальных служб в системах Windows в заметке Виртуальные учётные записи в Windows […]
Спасибо за статью.
Немного не понятно почему виртуальная учетка такая безопасная.
Пароль? Далеко не всегда взлом через пароль идет, темболее IIS. Аутентификация всеравно по какому-то принципу происходить должна, значит и подмена ключа возможна. Хотя соглашусь, утащить пароль сложнее.
Трудно найти имя? Так его можно посмотреть как в списке служб, от кого запущена так и по правам на папке.
Ну и требую продолжения банкета про gMSA :)
Про gMSA много написано и без меня, а вот про виртуальные учётные записи почему-то редко пишут.
Виртуальная учётная запись не «такая безопасная» — она является способом повышения безопасности, внося «временность» и «динамику» в предоставление прав, что усложняет взлом системы в целом.
[…] Не всегда оптимально размещать задачи в SCOR. Иной раз удобнее обычные Schedule Tasks. К тому же, начиная с версии Windows Server 2012, в Schedule Tasks поддерживается gMSA – Group Managed Service Accounts, что очень удобно: пароли нигде не присутствуют в явном виде и не нужно заниматься их периодической заменой. Как и любой учётной записи вы можете назначить gMSA права на ресурсы, включив в нужные группы. Небольшой обзор gMSA вы можете найти в статье Виртуальные учётные записи в Windows. […]