Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается настройка политики управления приложениями для бизнеса . Политику можно настроить для принудительного применения или аудита правила политики. В режиме аудита поведение 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.exe
Visual 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 переходит в отладчик скрипта командной строки в точке скрипта, где произошло событие аудита. Точка останова позволяет отлаживать код и проверять текущее состояние скрипта в режиме реального времени.
PowerShell