다음을 통해 공유


서명된 정책을 사용하여 변조로부터 비즈니스용 App Control 보호

참고

비즈니스용 App Control의 일부 기능은 특정 Windows 버전에서만 사용할 수 있습니다. App Control 기능 가용성에 대해 자세히 알아보세요.

서명된 비즈니스용 앱 제어 정책은 조직에 Windows에서 사용할 수 있는 최고 수준의 보호를 제공합니다. 이러한 정책은 관리자 권한으로 실행되는 맬웨어와 같이 정책의 관리 변조를 검색하도록 설계되었으며 부팅 실패 또는 파란색 화면이 발생합니다. 이 목표를 염두에 두고 서명된 App Control 정책을 제거하는 것이 훨씬 더 어렵습니다. 서명된 App Control 정책에 대해 이 보호를 제공하려면 SecureBoot를 사용하도록 설정해야 합니다.

현재 정책에 서명하는 데 사용할 수 있는 코드 서명 인증서가 없는 경우 사용자 고유의 용도로 코드 서명 인증서 가져오기를 참조하세요.

Warning

서명 인증서가 다음 규칙을 따르지 않는 경우 부팅 실패 또는 파란색 화면이 발생할 수 있습니다.

  • 기본 및 추가를 포함한 모든 정책은 PKCS 7 Standard 따라 서명되어야 합니다.
  • 2K, 3K 또는 4K 키 크기로만 RSA 키를 사용합니다. ECDSA는 지원되지 않습니다.
  • SHA-256, SHA-384 또는 SHA-512를 Windows 11 다이제스트 알고리즘으로 사용할 수 있으며, 2022년 11월 누적 보안 업데이트를 적용한 후 Windows 10 및 Windows Server 2019 이상을 사용할 수 있습니다. 다른 모든 디바이스는 SHA-256만 지원합니다.

서명된 정책을 배포하기 전에 먼저 서명되지 않은 버전의 정책을 배포하여 정책 규칙과 관련된 문제를 확인해야 합니다. 또한 규칙 옵션 9 - 사용:고급 부팅 옵션 메뉴10 - 사용:부팅 감사 실패 시 관리자가 문제 해결 옵션을 사용할 수 있도록 설정하는 것이 좋습니다. 규칙 옵션을 사용하도록 설정하려면 옵션이 이미 활성화되어 있는지 확실하지 않더라도 과 같은 Set-RuleOption -FilePath <PathAndFilename> -Option 9명령을 실행할 수 있습니다. 이 경우 명령은 아무런 영향을 주지 않습니다. 유효성이 검사되고 엔터프라이즈 배포 준비가 되면 이러한 옵션을 제거할 수 있습니다. 규칙 옵션에 대한 자세한 내용은 비즈니스용 앱 제어 정책 규칙을 참조하세요.

참고

기존 추가 정책이 있는 기본 정책에 서명할 때 모든 추가 항목에 대해 서명된 정책으로 전환해야 합니다. 기본 정책에 규칙을 추가하여 서명된 <SupplementalPolicySigner> 추가 정책에 권한을 부여합니다.

서명을 위한 App Control 정책 준비

  1. 관리자 권한 Windows PowerShell 세션을 열고 사용할 변수를 초기화합니다.

    $PolicyPath=$env:userprofile+"\Desktop\"
    $PolicyName="FixedWorkloadPolicy_Enforced"
    $LamnaServerPolicy=$PolicyPath+$PolicyName+".xml"
    

    참고

    이 예제에서는 참조 컴퓨터에서 비즈니스용 앱 컨트롤 정책 만들기 문서에서 만든 App Control 정책의 적용된 버전을 사용합니다. 다른 정책에 서명하는 경우 $PolicyPath$PolicyName 변수를 올바른 정보로 업데이트해야 합니다.

  2. 작업 디렉터리로 데스크톱으로 이동합니다.

    cd $PolicyPath
    
  3. App Control 정책에 정책 서명 인증서에 대한 규칙이 <UpdatePolicySigner> 아직 포함되어 있지 않은 경우 추가해야 합니다. ConvertFrom-CiPolicy를 사용하여 정책 XML을 변환하려면 하나 <UpdatePolicySigner> 이상의 규칙이 있어야 합니다.

    Add-SignerRule을 사용하고 인증서 파일(.cer)에서 규칙을 만듭니 <UpdatePolicySigner> 다. 코드 서명 인증서를 구입했거나 자체 PKI(공개 키 인프라)에서 인증서를 발급한 경우 인증서 파일을 내보낼 수 있습니다.

    참고

    정책에서 추가 정책을 허용하지 않는 경우 다음 명령에서 -Supplemental 스위치를 생략해야 합니다.

    Add-SignerRule -FilePath $LamnaServerPolicy -CertificatePath <Path to exported .cer certificate> -Update -Supplemental
    

    중요

    이 단계를 수행하지 못하면 이 정책을 수정하거나 사용하지 않도록 설정할 수 없게 되며 부팅 실패가 발생합니다. 부팅 실패를 유발하는 서명된 정책을 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 부팅 중지 실패를 유발하는 비즈니스용 앱 제어 정책 제거를 참조하세요.

  4. Set-RuleOption을 사용하여 서명되지 않은 정책 규칙 옵션을 제거합니다.

    Set-RuleOption -FilePath $LamnaServerPolicy -Option 6 -Delete
    
  5. (선택 사항) Set-CIPolicyIdInfo 를 사용하여 정책 ID를 다시 설정하고 정책 이름을 변경합니다.

  6. (선택 사항) Set-CIPolicyVersion을 사용하여 VersionEx 정책을 변경합니다.

    중요

    서명된 정책을 업데이트할 때 업데이트된 정책의 VersionEx는 현재 정책보다 크거나 같아야 합니다. 서명된 정책을 더 낮은 버전으로 바꾸면 부팅 실패가 발생합니다.

  7. ConvertFrom-CIPolicy를 사용하여 정책을 이진 형식으로 변환합니다.

    $PolicyID= Set-CIPolicyIdInfo -FilePath $LamnaServerPolicy  -ResetPolicyID
    $PolicyID = $PolicyID.Substring(11)
    $CIPolicyBin = $env:userprofile + "\Desktop\" + $PolicyID + ".cip"
    ConvertFrom-CIPolicy $LamnaServerPolicy $CIPolicyBin
    

정책 서명

signtool.exe 사용하여 정책 서명

코드 서명 인증서를 구입했거나 사용자 고유의 PKI에서 인증서를 발급한 경우 SignTool.exe 사용하여 App Control 정책 파일에 서명할 수 있습니다.

  1. .pfx 코드 서명 인증서를 서명이 수행되는 컴퓨터의 사용자 개인 저장소로 가져옵니다. 이 예제에서는 선택 사항: 비즈니스용 App Control에 대한 코드 서명 인증서 만들기에서 만든 인증서를 사용합니다.

  2. SignTool.exe 사용하여 App Control 정책에 서명합니다.

    <Path to signtool.exe> sign -v -n "ContosoSigningCert" -p7 . -p7co 1.3.6.1.4.1.311.79.1 -fd sha256 $CIPolicyBin
    

    참고

    <signtool.exe에 대한 경로> 변수는 SignTool.exe 유틸리티의 전체 경로여야 합니다. ContosoSigningCert 는 정책에 서명하는 데 사용할 인증서의 주체 이름입니다. 이 인증서를 정책 서명에 사용하는 컴퓨터의 개인 인증서 저장소로 가져와야 합니다.

완료되면 명령은 확장명을 사용하여 서명된 정책 파일을 .p7 출력해야 합니다. 파일 {GUID}.cip 이름을 원래 App Control 정책 XML의 <PolicyId> 인 "{GUID}"로 바꿔야 합니다.

서명된 정책 확인 및 배포

certutil.exe 또는 PowerShell을 사용하여 서명된 파일을 확인할 수 있습니다. 출력을 검토하여 이 문서의 맨 위에 있는 경고에 설명된 대로 서명 알고리즘을 확인합니다.

certutil.exe -asn <path to signed policy file>
$CIPolicyBin = 'path to signed policy file'
Add-Type -AssemblyName 'System.Security'
$SignedCryptoMsgSyntax = New-Object -TypeName System.Security.Cryptography.Pkcs.SignedCms
$SignedCryptoMsgSyntax.Decode([System.IO.File]::ReadAllBytes($CIPolicyBin))
$SignedCryptoMsgSyntax.Certificates | Format-List -Property *

배포를 계속하기 전에 대표 컴퓨터 집합에서 서명된 정책을 철저히 테스트합니다. 부팅 오류가 발생하지 않도록 서명된 App Control 정책을 적용한 후 테스트 컴퓨터를 두 번 이상 다시 부팅해야 합니다.

서명된 정책을 확인했으면 기본 배포 방법을 사용하여 배포합니다. 정책 배포에 대한 자세한 내용은 비즈니스용 앱 제어 정책 배포를 참조하세요.

참고

서명된 정책에 대한 변조 방지 보호는 서명된 정책이 컴퓨터에 적용되면 첫 번째 다시 부팅 후에 적용됩니다. 이 보호는 UEFI 보안 부팅이 사용하도록 설정된 컴퓨터에만 적용됩니다.