Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье описывается настройка политики управления приложениями для бизнеса . Политику можно настроить для принудительного применения или аудита правила политики. В режиме аудита поведение PowerShell не изменяется, но регистрирует сообщения события 16387 в PowerShellCore/Analytic журнал событий. В режиме принудительного применения PowerShell применяет ограничения политики.
В этой статье предполагается, что вы используете тестовый компьютер, чтобы проверить поведение PowerShell на широком компьютере перед развертыванием политики управления приложениями в вашей среде.
Создание политики управления приложениями
Политика управления приложениями описана в XML-файле, который содержит сведения о параметрах политики, разрешенных файлах и сертификатах подписи, распознаваемых политикой. При применении политики только утвержденные файлы могут загружаться и запускаться. PowerShell блокирует выполнение неутвержденных файлов скриптов или запускает их в режиме ConstrainedLanguage в зависимости от параметров политики.
Вы создаете политику управления приложениями и управляете ими с помощью модуля ConfigCI , который доступен во всех поддерживаемых версиях Windows. Этот модуль Windows PowerShell можно использовать в Windows PowerShell 5.1 или в PowerShell 7 с помощью уровня совместимости Windows. Этот модуль проще использовать в Windows PowerShell. Созданную политику можно применить к любой версии PowerShell.
Действия по созданию политики управления приложениями
Для тестирования необходимо просто создать политику по умолчанию и самозаверяющий сертификат подписи кода.
Создание политики по умолчанию
New-CIPolicy -Level PcaCertificate -FilePath .\SystemCIPolicy.xml -UserPEsЭта команда создает файл политики по умолчанию под названием
SystemCIPolicy.xml, который разрешает выполнение всех файлов, подписанных кодом Microsoft.Примечание.
Выполнение этой команды может занять до двух часов, так как оно должно сканировать весь тестовый компьютер.
Отключение режима аудита в политике по умолчанию
Новая политика всегда создается в
Auditрежиме. Чтобы проверить применение политик, необходимо отключить режим аудита при применении политики. Измените файлSystemCIPolicy.xmlс помощью текстового редактора, например,notepad.exeVisual Studio Code (VS Code). Закомментируйте опциюAudit mode.<!-- <Rule> <Option>Enabled:Audit Mode</Option> </Rule> -->Создание самозаверенного сертификата для подписи кода
Вам нужен сертификат подписывания кода для подписывания всех тестовых двоичных файлов или файлов скриптов, которые необходимо запустить на тестовом компьютере.
New-SelfSignedCertificateпредоставляется модулем PKI. Чтобы получить наилучшие результаты, выполните эту команду в Windows PowerShell 5.1.$newSelfSignedCertificateSplat = @{ DnsName = $Env:COMPUTERNAME CertStoreLocation = "Cert:\CurrentUser\My\" Type = 'CodeSigningCert' } $cert = New-SelfSignedCertificate @newSelfSignedCertificateSplat Export-Certificate -Cert $cert -FilePath C:\certs\signing.cer Import-Certificate -FilePath C:\certs\signing.cer -CertStoreLocation "Cert:\CurrentUser\Root\" $cert = Get-ChildItem Cert:\CurrentUser\My\ -CodeSigningCert dir C:\bin\PowerShell\pwsh.exe | Set-AuthenticodeSignature -Certificate $certДобавление сертификата подписи кода в политику
Используйте следующую команду, чтобы добавить новый сертификат подписи кода в политику.
Add-SignerRule -FilePath .\SystemCIPolicy.xml -CertificatePath C:\certs\signing.cer -UserПреобразование XML-файла политики в двоичный файл принудительного применения политики
Наконец, необходимо преобразовать XML-файл в двоичный файл, используемый элементом управления приложениями для применения политики.
ConvertFrom-CIPolicy -XmlFilePath .\SystemCIPolicy.xml -BinaryFilePath .\SIPolicy.p7bПрименение политики управления приложениями
Чтобы применить политику к тестовой машине, скопируйте
SIPolicy.p7bфайл в требуемое системное расположение.C:\Windows\System32\CodeIntegrityПримечание.
Некоторые определения политик должны быть скопированы в вложенную папку, например
C:\Windows\System32\CodeIntegrity\CiPolicies. Дополнительные сведения см. в советах администратора управления приложениями и известных проблемах.Отключение политики управления приложениями
Чтобы отключить политику, переименуйте
SIPolicy.p7bфайл. Если вам нужно выполнить больше тестирования, вы можете изменить имя обратно, чтобы повторно включить политику.Rename-Item -Path .\SIPolicy.p7b -NewName .\SIPolicy.p7b.off
Тестирование с помощью аудита политики управления приложениями
PowerShell 7.4 добавила новую функцию для поддержки политик управления приложениями в режиме аудита . В режиме аудита PowerShell запускает ненадежные скрипты в ConstrainedLanguage режиме без ошибок, но записывает сообщения в журнал событий. Сообщения журнала описывают, какие ограничения будут применяться, если политика была в режиме принудительного применения .
Просмотр событий аудита
PowerShell регистрирует события аудита в журнале событий PowerShellCore/Analytic . Журнал по умолчанию не включен. Чтобы включить журнал, откройте Windows Просмотр событий, щелкните правой кнопкой мыши журнал PowerShellCore/Analytic и выберите "Включить журнал".
Кроме того, можно выполнить следующую команду из сеанса PowerShell с повышенными привилегиями.
wevtutil.exe sl PowerShellCore/Analytic /enabled:true /quiet
Вы можете просмотреть события в Windows Просмотре событий или использовать командлет Get-WinEvent для получения событий.
Get-WinEvent -LogName PowerShellCore/Analytic -Oldest |
Where-Object Id -EQ 16387 | Format-List
TimeCreated : 4/19/2023 10:11:07 AM
ProviderName : PowerShellCore
Id : 16387
Message : App Control Audit.
Title: Method or Property Invocation
Message: Method or Property 'WriteLine' on type 'System.Console' invocation will not
be allowed in ConstrainedLanguage mode.
At C:\scripts\Test1.ps1:3 char:1
+ [System.Console]::WriteLine("pwnd!")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FullyQualifiedId: MethodOrPropertyInvocationNotAllowed
Сообщение о событии содержит положение скрипта, в котором будет применено ограничение. Эти сведения помогут вам разобраться, где необходимо изменить скрипт, чтобы он выполнялся согласно политике управления приложениями.
Внимание
После просмотра событий аудита необходимо отключить журнал Аналитики. Журналы аналитики быстро растут и потребляют большое количество места на диске.
Просмотр событий аудита в отладчике PowerShell
Если в интерактивной сессии PowerShell переменная $DebugPreference установлена в значение Break, PowerShell переходит в отладчик скрипта командной строки в точке скрипта, где произошло событие аудита. Точка останова позволяет отлаживать код и проверять текущее состояние скрипта в режиме реального времени.