Контроль сменных носителей

Контроль сменных носителей
Контроль сменных носителей - тема нынче весьма популярная и обсуждаемая.
Но бесплатных средств, работающих под ОС Windows и более менее управляемых в небольшой сети, найти не удалось.
Платные средства дешевле 500 рублей за рабочее место не существуют, что в нынешних условиях непосильные деньги для многих компаний. Посему на коленке был сделан небольшой скрипт, который каждый час запускается на АРМ пользователей. Запуск и его контроль осуществляется средствами Microsoft SMS (который уже есть в наличии).
Данный скрипт позволяет довольно успешно контролировать работу сменных носителей в небольшом домене, содержащем чуть более 150 рабочих станций и серверов.

Скрипт может запускаться так же средствами групповой политики Active Directory, но механизм этот не столь гибок, сколь хотелось бы.

Небольшие комментарии по коду:
  • первый цикл определяет имя пользователя вошедшего в систему
  • второй цикл определяет входит ли пользователь в доменную группу "UsbFullControl", назначение группы понятно из её названия
  • третий цикл делает то же для группы "UsbReadOnly"
  • если пользователь не входит ни в одну из групп, значит ему не повезло - выключается возможность работы со всеми сменными устройствами
  • иначе делаются настройки облегчающие работу с флешками и разрешающие работу с дискетами и оптическими дисками
  • Для работы скрипта нужны административные права, либо права SYSTEM, то есть он не эффективен в сети, где большое число пользователей имеет права локальных администраторов.
Безусловно, групп может быть больше, привязку можно делать к имени компьютера и все списки спрятать внутри скрипта. Тут уж все зависит от фантазии внедренца.

Источники идеи уже не найду. Среди них результаты поиска по словам "usb control security", а так же материалы с сайта Microsoft.

---------------

@ECHO OFF

:: delims is a TAB followed by a space
FOR /F "tokens=2* delims= " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v DefaultUserName') DO SET LastLogon=%%B

For /F "tokens=1" %%A in ('net user %LastLogon% /domain ^| find /i "UsbFullControl"') Do Set Group=%%A
IF NOT "%Group%"=="" GOTO UsbFullControl

For /F "tokens=1" %%A in ('net user %LastLogon% /domain ^| find /i "UsbReadOnly"') Do Set Group=%%A
IF NOT "%Group%"=="" GOTO UsbReadOnly

:UsbDenyAll
move %SystemRoot%InfUsbstor.pnf %SystemRoot%InfUsbstor.pnf.old
move %SystemRoot%InfUsbstor.inf %SystemRoot%InfUsbstor.inf.old

> "%Temp%.usb.reg" echo REGEDIT4
>>"%Temp%.usb.reg" echo.
>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesFlpydisk]
>>"%Temp%.usb.reg" echo "Start"=dword:00000004

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSfloppy]
>>"%Temp%.usb.reg" echo "Start"=dword:00000004

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom]
>>"%Temp%.usb.reg" echo "Start"=dword:00000004

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUsbStor]
>>"%Temp%.usb.reg" echo "Start"=dword:00000004
>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESystemCurrentControlSetControlStorageDevicePolicies]
>>"%Temp%.usb.reg" echo "WriteProtect"=dword:00000001
>>"%Temp%.usb.reg" echo.

start /wait regedit /s "%Temp%.usb.reg"

del "%Temp%.usb.reg"

GOTO End

:UsbFullControl
move %SystemRoot%InfUsbstor.pnf.old %SystemRoot%InfUsbstor.pnf
move %SystemRoot%InfUsbstor.inf.old %SystemRoot%InfUsbstor.inf

> "%Temp%.usb.reg" echo REGEDIT4
>>"%Temp%.usb.reg" echo.
>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesFlpydisk]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSfloppy]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUsbStor]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003
>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESystemCurrentControlSetControlStorageDevicePolicies]
>>"%Temp%.usb.reg" echo "WriteProtect"=dword:00000000
>>"%Temp%.usb.reg" echo.

start /wait regedit /s "%Temp%.usb.reg"

del "%Temp%.usb.reg"
GOTO End

:UsbReadOnly
move %SystemRoot%InfUsbstor.pnf.old %SystemRoot%InfUsbstor.pnf
move %SystemRoot%InfUsbstor.inf.old %SystemRoot%InfUsbstor.inf

> "%Temp%.usb.reg" echo REGEDIT4
>>"%Temp%.usb.reg" echo.
>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesFlpydisk]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSfloppy]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003

>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUsbStor]
>>"%Temp%.usb.reg" echo "Start"=dword:00000003
>>"%Temp%.usb.reg" echo [HKEY_LOCAL_MACHINESystemCurrentControlSetControlStorageDevicePolicies]
>>"%Temp%.usb.reg" echo "WriteProtect"=dword:00000001
>>"%Temp%.usb.reg" echo.

start /wait regedit /s "%Temp%.usb.reg"

del "%Temp%.usb.reg"

GOTO End


:End
Alt text

Ваш провайдер знает о вас больше, чем ваша девушка?

Присоединяйтесь и узнайте, как это остановить!

Сергей Солдатов

REPLY-TO-ALL is a double language blog (English/Russian) run by three information security practitioners. Want to discuss information security problems? This is the place.