Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell로 Windows 방화벽 규칙 구성

이 문서에서는 PowerShell을 사용하여 고급 보안이 포함된 기본 제공 Windows Defender 방화벽의 설정 및 규칙을 관리하는 방법에 대한 기본 사항을 제공합니다. 다른 네트워크 프로필에 대해 방화벽을 활성화/비활성화하고, 방화벽 규칙을 생성 또는 제거하고, 현재 활성 방화벽 규칙 세트를 보여주는 편리한 표를 얻기 위해 작은 PS 스크립트를 작성하는 방법을 고려할 것입니다.

그래픽 콘솔에서 Windows 방화벽 설정을 관리할 수 있습니다. 제어판 -> 시스템 및 보안 -> Windows Defender 방화벽 . 그러나 Windows 8.1(Windows Server 2012 R2)부터 내장된 NetSecurity를 사용할 수 있습니다. 방화벽을 관리하는 PowerShell 모듈입니다.

이전에는 다음 명령이 Windows 방화벽 규칙 및 설정을 관리하는 데 사용되었습니다. netsh advfirewall firewall

Windows 10의 NetSecurity 모듈에는 85개의 명령이 있습니다. 전체 목록을 표시할 수 있습니다.

Get-Command -Module NetSecurity

PowerShell로 Windows 방화벽 규칙 구성

PowerShell에서 Windows 방화벽 네트워크 프로필을 관리하는 방법

Windows 방화벽에는 세 가지 유형의 네트워크 프로필이 있습니다.

  • 도메인 – Active Directory 도메인의 컴퓨터에 적용됨
  • 비공개 – 가정 또는 회사 네트워크
  • 공개 – 공용 네트워크

PowerShell로 Windows 방화벽 규칙 구성

NLA(네트워크 위치 인식)는 데이터베이스에 네트워크 유형에 대한 정보를 보관합니다. 네트워크 프로필(위치)이 잘못 감지된 경우 변경할 수 있습니다.

각 네트워크 프로필(위치)은 사용된 방화벽 규칙 집합에 따라 다를 수 있습니다. 기본적으로 컴퓨터의 모든 네트워크 인터페이스는 방화벽으로 보호되며 세 가지 유형의 프로필이 모두 적용됩니다.

도메인, 공용 및 개인의 세 가지 네트워크 프로필을 모두 활성화하려면 다음 명령을 사용하십시오.

Set-NetFirewallProfile -All -Enabled True

또는 전체 대신 특정 프로필을 설정합니다. :

Set-NetFirewallProfile -프로필 공개 -활성화 True

세 네트워크 위치 모두에 대해 방화벽을 비활성화하려면 다음 명령을 사용하십시오.

Set-NetFirewallProfile -All -Enabled False

Set-NetFirewallProfile cmdlet을 사용하여 프로필 옵션(기본 작업, 로깅, 로그 파일의 경로 및 크기, 알림 설정 등)을 변경할 수 있습니다.

최신 OS 버전에서는 모든 프로필에 대해 Windows 방화벽이 활성화되어 있음을 알 수 있습니다. 프로필 설정에서 모든 아웃바운드 연결은 허용되고 인바운드 연결은 차단됩니다(허용된 연결 제외).

모든 인바운드 연결을 차단하도록 공개 프로필의 기본 동작을 변경해 보겠습니다.

Set-NetFirewallProfile –이름 공개 –DefaultInboundAction 블록

다음과 같이 현재 프로필 설정을 표시할 수 있습니다.

Get-NetFirewallProfile -이름 공개

PowerShell로 Windows 방화벽 규칙 구성

GPO를 사용하여 Windows 방화벽 설정을 관리하는 경우 현재 결과 프로필 설정을 다음과 같이 표시할 수 있습니다.

Get-NetFirewallProfile -policystore 활성 저장소

모든 방화벽 설정이 컴퓨터의 모든 네트워크 인터페이스에 적용되었는지 확인하십시오.

Get-NetFirewallProfile -이름 공개 | fl DisabledInterfaceAliases

모든 인터페이스가 보호되는 경우 명령은 다음을 반환합니다.

DisabledInterfaceAliases : {NotConfigured}

PowerShell로 Windows 방화벽 규칙 구성

특정 인터페이스 프로필을 비활성화할 수 있습니다(인터페이스 이름 목록을 표시하려면 Get-NetIPInterface 사용).

Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"

보시다시피 공개 프로필은 더 이상 Ethernet0에 적용되지 않습니다.

DisabledInterfaceAliases : {Ethernet0}

PowerShell로 Windows 방화벽 규칙 구성

프로필 수준에서 네트워크 연결 로깅 옵션을 설정할 수 있습니다. 기본적으로 Windows 방화벽 로그는 %systemroot%\system32\LogFiles\Firewall에 저장되며 파일 크기는 4MB입니다. 모든 연결 로깅을 활성화하고 최대 파일 크기를 변경할 수 있습니다.

Set-NetFireWallProfile -프로필 도메인 -LogBlocked True -LogMaxSize 20000 -LogFileName '%systemroot%\system32\LogFiles\Firewall\pfirewall.log'

PowerShell을 사용하여 Windows 방화벽 규칙을 생성, 편집 또는 제거하는 방법

방화벽 규칙을 관리하기 위한 9개의 cmdlet이 있습니다.

  • 새로운 NetFirewallRule
  • NetFirewallRule 복사
  • NetFirewallRule 비활성화
  • NetFirewallRule 활성화
  • NetFirewallRule 가져오기
  • NetFirewallRule 제거
  • NetFirewallRule 이름 바꾸기
  • NetFirewallRule 설정
  • NetFirewallRule 표시

Windows 방화벽에서 포트를 여는 방법에 대한 몇 가지 간단한 예를 살펴보겠습니다.

예를 들어 도메인 및 개인 프로필에 대해 포트 80 및 443에 대한 인바운드 TCP 연결을 허용하려면 다음 명령을 사용하십시오.

New-NetFirewallRule -DisplayName 'HTTP-Inbound' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('80', '443')

PowerShell로 Windows 방화벽 규칙 구성

앱에 대한 네트워크 액세스를 허용하거나 차단할 수 있습니다. 예를 들어 Firefox에 대한 아웃바운드 연결을 차단하려는 경우:

New-NetFirewallRule -Program "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -Action Block -Profile Domain, Private -DisplayName "Block Firefox browser" -설명 "Block Firefox browser" -Direction Outbound

하나의 IP 주소에서만 포트 3389에서 인바운드 RDP 연결을 허용하려면:

New-NetFirewallRule -DisplayName "AllowRDP" -RemoteAddress 192.168.2.200 -방향 인바운드 -프로토콜 TCP -LocalPort 3389 -액션 허용

지정된 IP 서브넷 또는 IP 범위의 주소에 대해 ping(ICMP)을 허용하려면 다음 명령을 사용하십시오.

$ips =@("192.168.2.15-192.168.2.40", "192.168.100.15-192.168.100.200", "10.1.0.0/16")
New-NetNameFirewallRule에서 Iv "Allow" 표시 -방향 인바운드 -프로토콜 ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -방향 인바운드 -프로토콜 ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow

이전 기사에서는 PowerShell을 사용하여 IP 주소와 도메인/사이트 DNS 이름으로 사이트 액세스를 차단하는 방법을 보여주었습니다.

기존 방화벽 규칙을 편집하기 위해 Set-NetFirewallRule cmdlet을 사용합니다. 예를 들어, 이전에 생성된 규칙에 대해 지정된 IP 주소로부터의 인바운드 연결을 허용하려면:

Get-NetFirewallrule -DisplayName 'HTTP-인바운드' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10

방화벽 규칙에 여러 IP 주소를 추가하려면 다음 스크립트를 사용하십시오.

$ips =@("192.168.2.15", "192.168.2.17","192.168.100.15")
Get-NetFirewallrule -DisplayName 'WEB-인바운드'|Set-NetFirewallRule -RemoteAddress $ips 코드>

방화벽 규칙의 모든 IP 주소를 표시하려면:

Get-NetFirewallrule -DisplayName '인바운드 ICMPv4 허용'|Get-NetFirewallAddressFilter

PowerShell로 Windows 방화벽 규칙 구성

Disable-NetFirewallRule을 사용하여 방화벽 규칙을 활성화/비활성화할 수 있습니다. 및 Enable-NetFirewallRule cmdlet.

Disable-NetFirewallRule –DisplayName 'WEB-인바운드'

ICMP(ping)를 허용하려면 다음 명령을 실행하십시오.

Enable-NetFirewallRule -이름 FPS-ICMP4-ERQ-In

방화벽 규칙을 제거하기 위해 Remove-NetFirewallRule cmdlet이 사용됩니다.

PowerShell을 사용하여 Windows 방화벽 규칙 나열

다음과 같이 인바운드 트래픽에 대한 활성 방화벽 규칙 목록을 표시할 수 있습니다.

Get-NetFirewallRule | 여기서 {($_.enabled -eq $True) -and ($_.Direction -eq "인바운드")} |ft

아웃바운드 차단 규칙 목록을 표시하려면:

Get-NetFirewallRule -Action Block -활성화 True -방향 아웃바운드

규칙에 앱 이름을 표시하려면:

Get-NetFirewallRule -Action 차단 -활성화 True -방향 아웃바운드 | %{$_.이름; $_ | Get-NetFirewallApplicationFilter}

PowerShell로 Windows 방화벽 규칙 구성

보시다시피 Get-NetFirewallRule cmdlet은 방화벽 규칙에 대한 네트워크 포트와 IP 주소를 표시하지 않습니다. 포트 번호를 표시하는 보다 편리한 방법으로 허용된 인바운드(아웃바운드) 연결에 대한 자세한 정보를 표시하려면 다음 PowerShell 스크립트를 사용하십시오.

Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -속성 이름,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter) .프로토콜}},
@{이름='로컬포트';표현식={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{이름='원격포트';표현식={($ PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
사용, 프로필, 방향, 작업

PowerShell로 Windows 방화벽 규칙 구성

PowerShell은 명령 프롬프트에서 Windows 방화벽 규칙을 관리할 수 있는 충분한 기회를 제공합니다. 특정 이벤트가 발생하면 자동으로 PowerShell 스크립트를 실행하여 포트를 열고 닫을 수 있습니다. 다음 기사에서는 Windows VDS 서버에서 RDP를 통해 원격으로 암호를 무차별 대입하려는 IP 주소를 자동으로 차단하는 간단한 PowerShell 및 Windows 방화벽 기반 솔루션을 고려할 것입니다.