Как запретить пользователю входить в учетную запись, используемую только для олицетворения?

В настоящее время у меня есть служба Windows, написанная на C# (работающая как LocalSystem), которая создает учетную запись пользователя, необходимую для олицетворения, используя DirectoryEntry для добавления пользователя / пароля и связанных пользовательских флагов. Затем он просто использует эту учетную запись для выполнения некоторых задач (используя олицетворение) с использованием функциональности LogonUser() - работает отлично.

Однако эта учетная запись должна использоваться ТОЛЬКО для олицетворения моей службой, пользователь НИКОГДА не должен иметь возможности войти (даже если он имеет учетные данные) локально или через сеть.

Для этого я попытался установить Локальные политики для "Запретить локальный вход в систему" ​​и "Запретить доступ к этому компьютеру из сети" и добавил пользователя, которого создает моя служба. Однако теперь олицетворение завершается неудачно со следующим: Ошибка входа в систему: пользователю не предоставлен запрошенный тип входа в систему на этом компьютере (1385)

Итак, я полагаю, что это НЕ правильный способ сделать это... но мне нужно обезопасить учетную запись, чтобы она могла использоваться моей службой только для целей олицетворения и чтобы никто другой никогда не мог войти в учетную запись (даже если у них есть все полномочия).

Есть ли в LSA что-то, что я могу использовать? Или используя код DirectoryEntry, аналогичный тому, который был создан при создании учетной записи? Есть ли способ разрешить существование учетной записи, но не разрешить пользователям входить в систему в интерактивном режиме?

Любая помощь приветствуется. Спасибо,

3 ответа

Я бы предложил отключить Process Monitor от sysinternals и выяснить, какой файл, реестр, сетевой доступ требуется для олицетворения. Затем работайте в обратном направлении, чтобы найти минимальное назначение прав пользователя в локальной политике, к которому вы можете отказать или просто удалить доступ. Я много раз использовал его для устранения проблем безопасности на веб-серверах, обращающихся к изолированным программным файлам, файлам данных и временным каталогам.

-Gft

Эта программа работает в домене? Если это так, вы можете создать учетную запись службы, чтобы делать то, что вам нужно.

По моему опыту, локальный вход и олицетворение имеют одно и то же разрешение (вход в систему локально) и не могут быть разделены. то есть щелчок правой кнопкой мыши по программе и выполнение "Запуск от имени другого пользователя" - это то же самое, что вход в систему непосредственно от пользователя и запуск программы.

Однако можно предоставить учетной записи возможность запуска в качестве службы отдельно от локального разрешения входа, и вы можете обнаружить, что вместо запуска службы с локальной системой вы можете запускать ее с учетной записью пользователя. Сервис и учетная запись пользователя могут быть созданы через локальную систему с помощью PSExec или других инструментов / методов.

В конечном счете, я думаю, что способ, которым вы пытаетесь достичь своей цели, невозможен, и вам нужно будет изменить дизайн. Удачи, пожалуйста, дайте мне знать, если вы найдете способ доказать, что я не прав. Я хотел бы заставить определенные учетные записи администратора работать только через "запустить как".

Другие вопросы по тегам