Наша компания стремится внедрить политику мониторинга добавления и удаления USB-накопителей на наших корпоративных ПК с операционной системой Windows. Мы знаем, что можем просто заблокировать использование USB для пользователей с политиками при определенных условиях, но мы предпочитаем сообщать об этих изменениях в EventViewer, чтобы их можно было собирать и просматривать ежедневно, еженедельно и ежечасно.
Кто-нибудь знает какие-либо инструменты или опции, которые могут быть реализованы на платформе Windows. Мне действительно не нужна помощь с централизованным сбором информации, только надежная отчетность на уровне ПК.
Вы можете сделать это с помощью PowerShell.
Ваш сценарий будет выглядеть примерно так:
. .\eventhandler.ps1
function logEvent([string] $message)
{
$evt=new-object System.Diagnostics.EventLog("System")
$evt.Source = "USB Drive Watcher"
$infoevent = [System.Diagnostics.EventLogEntryType]::Information
$evt.WriteEntry($message,$infoevent,70)
}
$handleUSBEvent = {
param ($sender, $args)
$event = $args[1].NewEvent.__CLASS
if ($event -eq "__InstanceCreationEvent")
{
logEvent("USB Drive Inserted")
}
elseif ($event -eq "__InstanceDeletionEvent")
{
logEvent("USB Drive Removed")
}
}
$timespan = new-object System.TimeSpan(0,0,1)
$scope = new-object System.Management.ManagementScope("\\.\root\cimV2")
$query = new-object System.Management.WqlEventQuery("__InstanceOperationEvent",$timespan,"TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.DriveType=2")
$watcher = new-object System.Management.ManagementEventWatcher($scope,$query)
$watcher.Start()
add-eventhandler (gv watcher) EventArrived $handleUSBEvent
Do-Events $false
Назовите этот файл чем-то вроде USBNotifier.ps1. Вам нужно будет скачать и установить PSEventing и файл EventHandler.ps1, находящийся в его Область загрузки.
Поскольку это неподписанный скрипт, вам нужно будет установить политику выполнения PowerShell в «RemoteSigned» (и щелкните правой кнопкой мыши «разблокировать» сценарий EventHandler.ps1).
Этот сценарий записывает в журнал системных событий, поэтому его следует запускать с правами администратора.
Чтобы сделать эту программу скрытой и работающей в фоновом режиме, вы можете использовать следующий VBScript:
Dim objShell
set objShell=CreateObject("WScript.Shell")
strPath = "c:\users\adam\desktop\USBNotification.ps1" 'The path to your script.
strCMD = "powershell -nologo -command " & Chr(34) & "&{" & strPath & "}" & Chr(34)
objShell.Run strCMD, 0
Этот файл сценария должен находиться в той же папке, что и сценарий USBNotifier.ps1 и сценарий EventHandling.ps1. Затем все, что вам нужно сделать, это установить элемент запуска для этого VBScript, который будет запускаться при входе в систему как администратор. В качестве альтернативы вы можете создать командный файл, который вызывает сценарий USBNotifier и создать пользовательский сервис.
Если вы хотите установить PowerShell 2.0, вы, вероятно, можете использовать его возможности обработки событий (устраняя необходимость в PSEventing), а также можете использовать функциональность фоновых заданий PS 2.0.
Возможно, вы найдете что-то более простое, подходящее именно вам, но Блокировка устройства очень хорош для таких (и связанных) задач