Windows 방화벽 동적 키워드
중요
이 문서에서는 미리 보기에 있는 기능 또는 설정에 대해 설명합니다. 콘텐츠는 변경될 수 있으며 미리 보기의 다른 기능 또는 서비스에 종속될 수 있습니다.
Windows 방화벽에는 Windows 방화벽의 구성 및 관리를 간소화하는 동적 키워드라는 기능이 포함되어 있습니다.
동적 키워드를 사용하면 하나 이상의 방화벽 규칙을 참조할 수 있는 IP 주소 범위, FQDN(정규화된 도메인 이름) 및 자동 해결 옵션 집합을 정의할 수 있습니다.
동적 키워드 구성
동적 키워드를 구성하려면 다음을 사용할 수 있습니다.
- 방화벽 CSP는 Microsoft Intune 같은 MDM(모바일 장치 관리) 솔루션과 함께 사용할 수 있습니다.
- Windows PowerShell
팁
Microsoft Intune 재사용 가능한 설정 그룹이라는 간소화된 관리 환경을 제공합니다. 자세한 내용은 방화벽 규칙에 대한 프로필에 재사용 가능한 설정 그룹 추가를 참조하세요.
이 문서에서는 Windows PowerShell 사용하여 동적 키워드를 구성하는 방법을 설명합니다.
동적 키워드 및 FQDN(정규화된 도메인 이름)
동적 키워드는 IP 주소 범위 또는 FQDN 집합을 정의하여 구성할 수 있습니다. FQDN을 사용할 때 고려해야 할 중요한 사항은 다음과 같습니다.
- FQDN 지원은 IP 주소가 동적이고 자주 변경되는 IP 규칙 관리의 오버헤드를 줄이기 위한 것입니다.
- FQDN은 모든 시나리오에서 IP 주소를 대체하는 것은 아닙니다. 보안 및 성능상의 이유로 가능한 경우 IP 주소를 사용해야 합니다.
- FQDN 규칙은 DNS 대기 시간 및 기타 요인으로 인해 엔드포인트의 성능에 영향을 줄 수 있습니다.
- FQDN은 보안 DNS 서비스가 아닙니다. FQDN 확인은 엔드포인트의 기본 DNS 구성을 사용합니다.
- FQDN 규칙을 사용하려면 해당 FQDN을 IP 주소로 확인하려면 DNS 쿼리가 필요합니다. IP 주소로의 트래픽은 FQDN 규칙에 대한 DNS 쿼리를 생성해야 합니다.
- 제한 사항은 프록시를 통해 액세스되는 웹 사이트, 보안 DNS 서비스, 특정 VPN 터널 구성, 엔드포인트에서 캐시된 IP입니다.
- 부분적으로 정규화된 도메인 이름(PQDN)은 허용되지만 FQDN을 사용하는 것이 좋습니다. 예를 들어 호스트에 대해 와일드카드
*
가 지원됩니다.*.contoso.com
FQDN 규칙의 두 가지 예는 다음과 같습니다.
- 기본적으로 모든 아웃바운드 및 인바운드를 차단하고 특정 아웃바운드 트래픽을 허용합니다.
- 기본적으로 모든 인바운드 차단 및 일부 특정 아웃바운드 트래픽 차단
참고
인바운드 FQDN 규칙은 기본적으로 지원되지 않습니다. 그러나 사전 하이드레이션 스크립트를 사용하여 규칙에 대한 인바운드 IP 항목을 생성할 수 있습니다.
주의
아웃바운드 규칙의 기본 구성은 매우 안전한 특정 환경에서 고려할 수 있습니다. 그러나 기본적으로 트래픽을 허용하는 방식으로 인바운드 규칙 구성을 변경해서는 안 됩니다.
높은 보안 환경에서는 모든 앱의 인벤토리를 유지 관리해야 합니다. 레코드에는 앱에 네트워크 연결이 필요한지 여부가 포함되어야 합니다. 관리자는 디바이스 관리 솔루션을 사용하여 네트워크 연결이 필요한 각 앱과 관련된 새 규칙을 만들고 해당 규칙을 중앙에서 푸시해야 합니다.
함수 및 알려진 제한 사항
Windows 방화벽 FQDN 기능은 네트워크 보호 외부 설명선 드라이버를 사용하여 DNS 쿼리가 FQDN 규칙과 일치하는 DNS 응답을 검사합니다. 기능의 몇 가지 중요한 기능 및 제한 사항은 다음과 같습니다.
- 네트워크 보호 구성 요소는 DNS 쿼리를 주기적으로 실행하지 않습니다. DNS 쿼리를 실행하려면 애플리케이션이 필요합니다.
- Windows 방화벽은 디바이스를 다시 시작할 때 저장된 모든 확인된 IP 주소를 플러시합니다.
- 네트워크 보호는 검사 중에 UDP 패킷을 보유하지 않으므로 DNS 응답을 동기적으로 검사하지 않습니다. 결과는 애플리케이션이 DNS 응답을 받은 후 연결을 시도하지만 방화벽 규칙 업데이트보다 빠르면 차단되는 잠재적 조건입니다.
- 일반적으로 애플리케이션에는 초기 실패한 연결에 대한 재시도 논리가 있으므로 최종 사용자에게 문제가 투명합니다.
- 경우에 따라 구성 요소에 초기 연결 실패에 대한 재시도 논리가 없을 수 있습니다. 이는 다음 두 가지 방법으로 해결됩니다.
- 사용자가 사용 중인 애플리케이션에서 새로 고침 을 적중할 수 있으며 성공적으로 연결되어야 합니다.
- 관리자는 환경에서 이 조건이 발생하는 프리하일레이션 스크립트를 재치 있게 사용할 수 있습니다.
FQDN 기능 요구 사항
FQDN 기능에 대한 요구 사항은 다음과 같습니다.
- Microsoft Defender 바이러스 백신을 켜고 플랫폼 버전
4.18.2209.7
이상을 실행해야 합니다.- 확인하려면 Windows 보안 열고 설정>정보를 선택합니다.
- 네트워크 보호는 차단 또는 감사 모드여야 합니다. 자세한 내용은 네트워크 보호가 사용하도록 설정되어 있는지 확인을 참조하세요.
- HTTPS(DoH)를 통한 DNS를 사용하지 않도록 설정해야 합니다. 기본 설정 브라우저를 구성하려면 다음 설정을 사용할 수 있습니다.
- 디바이스의 기본 DNS 확인 설정이 적용됩니다. 이 기능은 DNS 보안 또는 기능 변경을 제공하지 않습니다.
팁
여기에서 ADMX 파일을 다운로드하고, 지침을 따르고, 로컬 테스트를 위해 gpedit.msc를 통해 구성할 수도 있습니다.
Windows PowerShell 사용하여 동적 키워드 관리
이 섹션에서는 Windows PowerShell 사용하여 동적 키워드를 관리하는 방법에 대한 몇 가지 예제를 제공합니다. 동적 키워드를 사용할 때 고려해야 할 몇 가지 중요한 사항은 다음과 같습니다.
- 모든 동적 키워드(keyword) 개체를 나타내는 GUID(고유 식별자)가 있어야 합니다.
- 방화벽 규칙은 조건에 대한 IP 주소를 명시적으로 정의하는 대신 동적 키워드를 사용할 수 있습니다.
- 방화벽 규칙은 동적 키워드와 정적으로 정의된 주소 범위를 모두 사용할 수 있습니다.
- 동적 키워드(keyword) 개체를 여러 방화벽 규칙에서 재사용할 수 있습니다.
- 방화벽 규칙에 구성된 원격 주소가 없는 경우 규칙이 적용되지 않습니다. 예를 들어 규칙이 아직 확인되지 않은 개체로만
AutoResolve
구성된 경우 - 규칙이 여러 동적 키워드를 사용하는 경우 규칙은 현재 해결된 모든 주소에 적용됩니다. 해결되지 않은 개체가 있더라도 규칙이 적용됩니다. 동적 키워드(keyword) 주소가 업데이트되면 연결된 모든 규칙 개체에 원격 주소가 업데이트됩니다.
- Windows는 규칙과 동적 키워드(keyword) 주소 간에 종속성을 적용하지 않으며 두 개체 중 하나를 먼저 만들 수 있습니다. 규칙은 아직 존재하지 않는 동적 키워드(keyword) ID를 참조할 수 있습니다. 이 경우 규칙이 적용되지 않습니다.
- 방화벽 규칙에서 사용 중인 경우에도 동적 키워드(keyword) 주소를 삭제할 수 있습니다.
아웃바운드 허용
PowerShell에서 FQDN을 허용하는 예제 스크립트는 다음과 같습니다.
$fqdn
변수 값을 차단하려는 FQDN(줄 #1)으로 바꿉니다.
$fqdn = 'contoso.com'
$id = '{' + (new-guid).ToString() + '}'
New-NetFirewallDynamicKeywordAddress -id $id -Keyword $fqdn -AutoResolve $true
New-NetFirewallRule -DisplayName "allow $fqdn" -Action Allow -Direction Outbound -RemoteDynamicKeywordAddresses $id
또는 로 설정된 $true
$false
매개 변수를 AutoResolve
사용하여 동적 키워드(keyword) 주소를 만들 수 있습니다. 가 로 $true
설정된 경우 AutoResolve
Windows는 키워드(keyword) IP 주소로 resolve 시도합니다.
아웃바운드 차단
다음은 PowerShell에서 FQDN을 차단하는 예제 스크립트입니다.
$fqdn
변수 값을 차단하려는 FQDN(줄 #1)으로 바꿉니다.
$fqdn = 'contoso.com'
$id = '{' + (new-guid).ToString() + '}'
New-NetFirewallDynamicKeywordAddress -id $id -Keyword $fqdn -AutoResolve $true
New-NetFirewallRule -DisplayName "block $fqdn" -Action Block -Direction Outbound -RemoteDynamicKeywordAddresses $id
자동 resolve 규칙 및 연결된 확인된 IP 주소 표시
이 예제에서는 매개 변수가 로 설정된 $true
모든 동적 키워드(keyword) 주소 AutoResolve
와 연결된 확인된 IP 주소를 표시하는 방법을 보여 줍니다.
Get-NetFirewallDynamicKeywordAddress -AllAutoResolve
참고
DNS 쿼리가 관찰될 때까지 IP 주소가 채워지지 않습니다.
수화 FQDN 규칙
다음 샘플 스크립트는 현재 Windows 방화벽 구성을 읽고, FQDN 기반 규칙을 추출하고, 각 도메인에서 DNS 확인을 수행합니다. 그 결과 해당 규칙의 IP 주소가 "미리 해시"됩니다.
Get-NetFirewallDynamicKeywordAddress -AllAutoResolve |`
ForEach-Object {
if(!$_.Keyword.Contains("*")) {
Write-Host "Getting" $_.Keyword
resolve-dnsname -Name $_.Keyword -DNSOnly | out-null
}
}
를 사용하여 DNS 확인을 수행하는 데 유사한 스크립트를 nslookup.exe
사용할 수 있습니다.
Get-NetFirewallDynamicKeywordAddress -AllAutoResolve |`
ForEach-Object {
if(!$_.Keyword.Contains("*")) {
Write-Host "Getting" $_.Keyword
nslookup $_.Keyword
}
}
를 사용하는 nslookup.exe
경우 모든 아웃바운드 상태 차단을 사용할 때 아웃바운드 방화벽 규칙을 만들어야 합니다. 다음은 에 대한 아웃바운드 규칙을 만드는 명령입니다 nslookup.exe
.
$appName = 'nslookup'
$appPath = 'C:\Windows\System32\nslookup.exe'
New-NetFirewallRule -DisplayName "allow $appName" -Program $appPath -Action Allow -Direction Outbound -Protocol UDP -RemotePort 53
모든 아웃바운드 차단 및 일부 FQDN 허용
다음 예제에서는 FQDN 평가를 위해 애플리케이션 목록을 구문 분석합니다. 스크립트에 나열된 FQDN은 Microsoft Edge의 첫 번째 시작 시 트래픽을 검사할 때 관찰되었습니다.
중요
전체 목록이나 권장 사항이 아닙니다. 적절한 연결 및 기능을 보장하기 위해 애플리케이션을 평가하는 방법의 예입니다.
인터넷 연결에 대한 Microsoft Edge 요구 사항에 대한 자세한 내용은 Microsoft Edge 엔드포인트에 대한 허용 목록을 참조하세요.
$domains = @(
'*.microsoft.com',
'*.msftconnecttest.com',
'assets.msn.com',
'client.wns.windows.com',
'config.edge.skype.com',
'ctldl.windowsupdate.com',
'dns.msftncsi.com',
'login.live.com',
'ntp.msn.com'
)
foreach ($domain in $domains) {
$id = '{' + (New-Guid).ToString() + '}'
New-NetFirewallDynamicKeywordAddress -Id $id -Keyword $domain -AutoResolve $true
New-NetFirewallRule -DisplayName "allow $domain" -Action Allow -Direction Outbound -RemoteDynamicKeywordAddresses $id
}
동적 키워드를 관리하는 데 사용되는 PowerShell cmdlet에 대한 자세한 내용은 다음을 참조하세요.
- Get-NetFirewallDynamicKeywordAddress
- New-NetFirewallDynamicKeywordAddress
- Remove-NetFirewallDynamicKeywordAddress
- Update-NetFirewallDynamicKeywordAddress
API 구조에 대한 자세한 내용은 방화벽 동적 키워드를 참조하세요.