Собрал в одном месте набор правил для базовой настройки Software Restriction Policy. При создании правил я руководствовался великолепным циклом статей Вадима Поданса и DenTNT. Собственно, здесь представлена краткая выжимка, за пояснениями почему - смотреть по ссылкам первоисточники.
Эти настройки проверены эксплуатаций на 16 машинах последние за два года. При использовании Windows 7 и 10 проблема возникает только с обновлением стороннего софта, что, к сожалению, неизбежно.
Включение политики: командная строка от имени администратора -> secpol (или secpol.msc)
После включения политики нужно сконфигурировать ее.
1. Удалить из списка исполняемых типов файлов .lnk
2. Удалить правила путей по умолчанию и создать следующие:
- для 64-битных систем
Unrestricted - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%
Unrestricted - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
Unrestricted - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir (x86)%
Unrestricted - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramW6432Dir%
Dissalowed - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\DefaultSpoolDirectory%
Dissalowed - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%Temp
- для 32:
Unrestricted - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%
Unrestricted - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir%
Dissalowed - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\DefaultSpoolDirectory%
Dissalowed - %HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRoot%Temp
Это первоначальные правила. Их придется дополнять на конкретной машине под конкретное ПО. Также, полезно просканировать системные директории на предмент нетипичных папок, доступных пользователю для записи. Сделать это можно утилитой AccessEnum. Подробнее смотри там же.
3. Добавляем в список контролируемых расширений .js, .jse, .scf, .vbs, .vbe, .ps1, au3, .wsh, .wsf
Кроме того, если файл .ps1 запрещён, то ISE пытается сделать проверку для файлов .psm1 (см. здесь)
4. Запрешаем hh.exe, mshta.exe, reg.exe, runas.exe. См. здесь почему.
5. При желании использовать правила сертификатов см. какие есть подводные камни
6. Дополнительные правила Unrestricted для Яндекс.Диска и OneDrive:
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData%Yandex/YandexDisk/YandexDisk.exe
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData%Yandex/YandexDisk/YandexDiskScreenshotEditor.exe
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData%Yandex/YandexDisk/YandexDiskStarter.exe
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData%Yandex/YandexDisk/yupdate-exec.exe
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local AppData%Microsoft/OneDrive/OneDrive.exe
%HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Local AppData%Microsoft/OneDrive/Update/OneDriveSetup.exe
Здесь важно обратить внимание, что в пути к файлу, который вне ветки реестра, используются прямые слеши, а не обратные!
Прим. Строго говоря, не рекомендуется использовать пути ветки HKCU, потому что пользователь может туда писать все, что хочет. Но в моем случае злонамеренные действия самого пользователя не предполагается.
7. При выборе между режимами "Контролировать только файлы программ, исключая DLL" и "Контролировать все" следует ориентироваться на используемый софт. В идеале лучше контролировать все, потому что это защищает и от инъекций dll.
8. Если что-то не работает, можно включить расширенное логирование:
Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers -Name LogFileName -Value 'C:\SRP\saferlog.txt'
Удалить этот ключ после окончания диагностики, потому что лог очень быстро разрастается