Pull to refresh

PowerShell: машина vs человек

Reading time 2 min
Views 4.2K
Некоторое время назад мне досталась по наследству ферма терминальных серверов. И руководство поставило мне задачу — искоренить skype, chrome, firefox и mail.ru агентов на всех терминальных серверах. Исторически сложилось так, что в компании используются тонкие клиенты и лишь у привилегированных пользователях есть полноценный ПК, и там разрешены вышеперечисленные программы, а на терминалах — ни-ни.

image



Я снес все программы, прикрутил AD политики, ограничивающие запуск заданных приложений и решил — что наверное это все. Но через день я обнаружил, что пользователи снова используют программы, но уже portable версии, а exe-файлы были переименованы в 123*.exe Признаться я был удивлен, осведомленности и подготовленности пользователей.

Вопрос с закрытием интернета или запрещением абсолютно всех программ, кроме разрешенных не подходил в силу специфики конторы. Возник спортивный интерес и я решил использовать powershell:

1. определяем запущенные процессы
get-process

2. далее требуются только те, что нам интересны — тут обращаем внимание, на то что если процесс переименован в 123.exe и в писке процессов он так и будет висеть как 123, и это плохо, т.к. не понятно хороший это процесс или плохой, поэтому просматриваем поле описание — хоть файл skype и переименован в 123 и в процессах висит 123, но вот описание у него старое — skype…

where-object { $_.Description -match 'skype' }

3. останавливаем найденные процессы:

Stop-Process -Force

В сухом остатке имеем конструкцию вида:
get-process | where-object { $_.Description -match "skype" } | Stop-Process -Force

Можно поместить это в ps1-скрипт и прикрутить к чему либо, но тогда понадобится подписывать его или отключать требование безопасности — не запускать не подписанные скрипты.

Я поступил иначе — создал в планировщике задание, где указал запускать программу:
C:\Windows\...\powershell.exe
с параметром
get-process | where-object { $_.Description -match 'skype' } | Stop-Process -Force

В данном случае запуск происходит и не требуется подпись скрипта. Теперь задача может запускаться хоть каждую минуту и прибивать не желательные нам программы. А если добавить уточненную фильтрацию к данному решению — то вообще можно отучить пользователей от использования любых заданных программ во всем домене (без уточненного поиска, на переименованные файлы — не сработает).
Tags:
Hubs:
+16
Comments 57
Comments Comments 57

Articles