Для безопасного запуска сторонних сервисов в Windows можно использовать учетную запись пользователя без прав локального администратора. Для этого нужно изменить настройки локальной политики безопасности и предоставить пользователю права входа в качестве службы.
По умолчанию службы Windows запускаются в контексте привилегированных учетных записей (System, Local Service или Network Service). Чтобы ограничить права службы, можно настроить ее запуск из-под обычного пользователя.
Чтобы изменить учетную запись, из-под которой запускается служба из консоли управления службами (services.msc
).
- Запустите консоли, найдите нужную службу и откройте ее свойства
- Перейдите на вкладку Log On. По умолчанию служба запускается от имени Local System.
- Чтобы запустить службу от пользователя, включите опцию This account и укажите учетную запись и ее пароль.
- Когда вы сохраните настройки, появится сообщение:
The account svc_user1 has been granted the Log On As A Service right.
Windows сама предоставила права на запуск служб от имени этого пользователя. Чтобы проверить это, откройте редактор локальной GPO (gpedit.msc
).
Перейдите в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment и найдите политику Log on as a service.
Как вы видите, пользователь был добавлен в эту локальную политику безопасности.
Можно предоставить права запуска служб другим пользователям или группам. Нажмите кнопку Add User or Group и укажите имя пользователя/группы.
Чтобы обновить настройки GPO, выполните команду:
gpupdate /force
Кроме разрешающей политики, есть еще и политика, которая позволяет запретить запускать службы от имени некоторых пользователей или групп. Эта политика находится в этом же разделе GPO и называется Deny log on as a service. Запрещающая политика имеет более высокий приоритет. Поэтому если добавить пользователя одновременно в Deny log on as a service и Logon as a service, запустить службу от его имени не получится.
Данная политика разрешает определенным учетным записям запускать от своего имени какой-то процесс, как службу Windows. При запуске такого процесса он регистрируется как служба. При этом пользователю не обязательно входить локально.
Запуск служб от имени непривилегированных пользователей позволяет повысить безопасность и стабильность Windows. Естественно, нужно минимизировать количество аккаунтов, которым вы предоставляете право Logon as a service.
Для предоставления права Logon as a service из командной строки можно использовать утилиту ntrights.exe (входит в состав Windows Server 2003 Resource Kit). Скачать ее можно по ссылке из WebArchive.
После установки Resource Kit, чтобы предоставить пользователю права на запуск служб, выполните команду:
ntrights.exe +r SeServiceLogonRight -u RESLAB\svc_user1
Это добавит учетную запись в локальную политику безопасности.
Чтобы убрать права пользователя:
ntrights.exe -r SeServiceLogonRight -u RESLAB\svc_user1