서명된 정책을 사용하여 Windows Defender Application Control 변조 방지

참고

Windows Defender Application Control의 일부 기능은 특정 Windows 버전에서만 사용할 수 있습니다. 자세한 내용은 Windows Defender Application Control 기능 가용성을 참조하세요.

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

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

Warning

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

  • 기본 및 추가를 포함한 모든 정책은 PKCS 7 표준에 따라 서명해야 합니다.
  • 2K, 3K 또는 4K 키 크기로만 RSA 키를 사용합니다. ECDSA는 지원되지 않습니다.
  • SHA-256, SHA-384 또는 SHA-512를 Windows 11 다이제스트 알고리즘으로 사용할 수 있으며, 2022년 11월 누적 보안 업데이트를 적용한 후 Windows 10 및 Windows Server 2019 이상을 사용할 수 있습니다. 다른 모든 디바이스는 SHA-256만 지원합니다.
  • '주체 일반 이름' 및 '발급자 일반 이름'과 같은 인증서 필드에 UTF-8 인코딩을 사용하지 마세요. 이러한 문자열은 PRINTABLE_STRING, IA5STRING 또는 BMPSTRING으로 인코딩되어야 합니다.

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

참고

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

서명을 위한 WDAC 정책 준비

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

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

    참고

    이 예제에서는 참조 컴퓨터에서 Windows Defender 애플리케이션 제어 정책 만들기 문서에서 만든 WDAC 정책의 적용된 버전을 사용합니다. 다른 정책에 서명하는 경우 $PolicyPath$PolicyName 변수를 올바른 정보로 업데이트해야 합니다.

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

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

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

    참고

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

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

    중요

    이 단계를 수행하지 못하면 이 정책을 수정하거나 사용하지 않도록 설정할 수 없게 되며 부팅 실패가 발생합니다. 부팅 실패를 일으키는 서명된 정책을 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 부팅 중지 실패를 일으키는 Windows Defender 애플리케이션 제어 정책 제거를 참조하세요.

  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 사용하여 WDAC 정책 파일에 서명할 수 있습니다.

  1. .pfx 코드 서명 인증서를 서명이 수행되는 컴퓨터의 사용자 개인 저장소로 가져옵니다. 이 예제에서는 옵션: Windows Defender 응용 프로그램 제어용 코드 서명 인증서 만들기 섹션에서 만든 인증서를 사용합니다.

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

    <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 이름을 원래 WDAC 정책 XML의 <PolicyId> 인 "{GUID}"로 바꿔야 합니다.

서명된 정책 확인 및 배포

certutil.exe 사용하여 서명된 파일을 확인할 수 있습니다. 출력을 검토하여 이 문서의 맨 위에 있는 경고에 설명된 대로 '주체 일반 이름' 및 '발급자 일반 이름'과 같은 인증서 필드에 대한 서명 알고리즘 및 인코딩을 확인합니다.

certutil.exe -asn <path to signed policy file>

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

서명된 정책을 확인했으면 기본 배포 방법을 사용하여 배포합니다. 정책 배포에 대한 자세한 내용은 Windows Defender 애플리케이션 제어 정책 배포를 참조하세요.

참고

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