Как вынудить PowerShell не позволить интерактивное командное окно

Я - администратор Citrix и хотел бы ограничить население обычного пользователя на наших серверах от использования PowerShell, чтобы запустить их собственные скрипты или использовать его в интерактивном режиме. Мы уже запрещаем использование командной строки через GPO, но с доступным PowerShell, это в основном бесполезно.

Я нашел, что Powershell.exe имеет параметр командной строки -NoInteractive который позволит пользователю запускать скрипт, но он не предоставляет им интерактивную командную строку. Проблема состоит в том, что я не нашел способ вынудить powershell управлять этим путем. Я даже пошел, насколько создать сценарий запуска C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1, который проверит на -NoInteractive параметр, но пользователи может обойти это путем простого запуска Powershell.exe с -NoProfile параметр.

Другая проблема состоит в том, что мы действительно используем много сценариев PowerShell для запуска приложений для пользователей, и части сценария входа в систему записаны в PowerShell и потребности работать под пользовательским контекстом, таким образом, я не могу простой ACL EXE-файл. Мне нужны они, чтобы смочь использовать PowerShell, просто не в интерактивном режиме. В конечном счете мы хотим осуществить AllSigned политика выполнения и знак, все сценарии так единственная вещь, которую может выполнить пользователь, являются сценарием, который мы (администраторы) создали и/или закончили на.

Я попытался гуглить для этого ответа и нашел многих людей, использующих -NoInteractive, но я не нашел экземпляр, где кто-то попытался вызвать его. Какие-либо идеи?

7
задан 25 March 2015 в 01:04
2 ответа

Я думаю, что вы неправильно поняли использование переключателя -NonInteractive; вы все еще можете запустить powerhell -noninteractive и получить интерактивную подсказку. Неинтерактивный переключатель предназначен для автоматизированных сценариев сценариев, в которых вы не хотите, чтобы Powerhell посылал запрос пользователю и ждал ответа. Например, в неинтерактивном окне PowerShell, если вы запустите Get-Credential без каких-либо параметров сразу же выйдет из строя, вместо того, чтобы запросить имя пользователя и пароль. Неинтерактивный не будет действовать в качестве механизма безопасности.

Лучшим методом является защита того, что вы пытаетесь защитить, а не инструментов, которые пользователь может использовать для доступа к нему.

.
11
ответ дан 2 December 2019 в 23:25

Думаю, у меня есть решение, которое сработает, хотя и не очень красивое. Пользователь jbsmith был на правильном пути. Если я закончу ACLing powerhell.exe для удаления Execute разрешений из группы Пользователей, то это остановит их от запуска интерактивного окна. Для тех сценариев PowerShell, которые пользователи DO должны запускать с помощью сценария входа, мы можем скомпилировать эти сценарии в EXE с помощью PowerGUI, что позволяет выполнять эти сценарии, так как это не вызывает исполняемый файл PowerShell.

Мы обсуждаем, хотим ли мы сделать еще один шаг вперед и использовать AppLocker GPO, чтобы ограничить сценарии PowerShell только теми, которые мы получили благословение. Конечно, мы можем установить эти ограничения только для среднего пользователя, не использующего IT, и позволить нашим администраторам продолжать использовать PowerShell как обычно. Это повлечет за собой некоторые административные издержки, поэтому часть AppLocker может оказаться неработоспособной

.
1
ответ дан 2 December 2019 в 23:25

Теги

Похожие вопросы