Некоторое время назад мне досталась по наследству ферма терминальных серверов. И руководство поставило мне задачу — искоренить skype, chrome, firefox и mail.ru агентов на всех терминальных серверах. Исторически сложилось так, что в компании используются тонкие клиенты и лишь у привилегированных пользователях есть полноценный ПК, и там разрешены вышеперечисленные программы, а на терминалах — ни-ни.
Я снес все программы, прикрутил AD политики, ограничивающие запуск заданных приложений и решил — что наверное это все. Но через день я обнаружил, что пользователи снова используют программы, но уже portable версии, а exe-файлы были переименованы в 123*.exe Признаться я был удивлен, осведомленности и подготовленности пользователей.
Вопрос с закрытием интернета или запрещением абсолютно всех программ, кроме разрешенных не подходил в силу специфики конторы. Возник спортивный интерес и я решил использовать powershell:
1. определяем запущенные процессы
2. далее требуются только те, что нам интересны — тут обращаем внимание, на то что если процесс переименован в 123.exe и в писке процессов он так и будет висеть как 123, и это плохо, т.к. не понятно хороший это процесс или плохой, поэтому просматриваем поле описание — хоть файл skype и переименован в 123 и в процессах висит 123, но вот описание у него старое — skype…
3. останавливаем найденные процессы:
В сухом остатке имеем конструкцию вида:
Можно поместить это в ps1-скрипт и прикрутить к чему либо, но тогда понадобится подписывать его или отключать требование безопасности — не запускать не подписанные скрипты.
Я поступил иначе — создал в планировщике задание, где указал запускать программу:
с параметром
В данном случае запуск происходит и не требуется подпись скрипта. Теперь задача может запускаться хоть каждую минуту и прибивать не желательные нам программы. А если добавить уточненную фильтрацию к данному решению — то вообще можно отучить пользователей от использования любых заданных программ во всем домене (без уточненного поиска, на переименованные файлы — не сработает).
Я снес все программы, прикрутил 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
В данном случае запуск происходит и не требуется подпись скрипта. Теперь задача может запускаться хоть каждую минуту и прибивать не желательные нам программы. А если добавить уточненную фильтрацию к данному решению — то вообще можно отучить пользователей от использования любых заданных программ во всем домене (без уточненного поиска, на переименованные файлы — не сработает).