윈도우 방화벽 명령어 Netsh

윈도우는 기본 방화벽인 "Windows 방화벽"을 사용합니다. 윈도우 10에서는 Windows Defender 방화벽이라 이름이 바뀌었으며 윈도우 디펜더 보안센터에서 통합 관리 됩니다. 제어판의 방화벽 고급설정 (wf.msc) 에서 프로필 속성을 설정하고 각각의 규칙을 만들거나 변경할 수 있습니다. Netsh advfirewall 명령어를 사용한다면 더욱 빠르고 편리하게 원하는 설정이 가능합니다. 특히 여러 가지 규칙을 변경해야 하는 경우 배치파일을 만들면 한 번에 모든 작업을 완료할 수 있습니다.




Netsh advfirewall 명령어

보통 netsh advfirewall + 명령어 ... 의 형태로 사용합니다. 또는
netsh
advfirewall
을 입력하면 그림과 같이 netsh advfirewall 프롬프트가 시작되며 netsh advfirewall 을 생략하고 명령어를 사용할 수 있습니다. exit 를 사용하여 빠져 나옵니다.





방화벽 사용 / 사용 안 함 설정

방화벽 프로필은 도메인 네트워크 / 개인 네트워크 / 공용 네트워크 3가지가 있습니다. netsh advfirewall set 명령어를 사용하여 프로필 설정을 변경할 수 있습니다.
방화벽 사용: netsh advfirewall set {프로필 종류} state on
방화벽 중지: netsh advfirewall set {프로필 종류} state off

{프로필 종류}에 원하는 항목을 넣을 수 있습니다.
모든 프로필 : allprofiles
현재 프로필 : currentprofile
도메인 네트워크: domainprofile
개인 네트워크: privateprofile
공용 네트워크: publicprofile

개인 네트워크의 방화벽을 사용하지 않음으로 변경한다면 다음과 같습니다.
netsh advfirewall set privateprofile state off




인바운드 / 아웃바운드 정책 설정

윈도우 방화벽은 기본으로 규칙과 일치하지 않는 인바운드 연결은 차단, 아웃바운드 연결은 허용으로 설정되어 있습니다. 사용자가 다른 컴퓨터(서버) 또는 사이트에 접속할 때는 아웃바운드 연결, 사용자가 서버 역할을 할 때는 인바운드 연결이 적용됩니다. 명령어의 형태는 다음과 같습니다.

netsh advfirewall set {프로필 종류} firewallpolicy {인바운드 정책,아웃바운드 정책}

인바운드 정책과 아웃바운드 정책 변수

blockinbound : 허용 규칙 이외의 모든 인바운드 연결을 차단합니다.
blockinboundalways : 허용 규칙을 포함한 모든 인바운드 연결을 차단합니다.
allowinbound : 차단 규칙 이외의 모든 인바운드 연결을 허용합니다.

blockoutbound : 허용 규칙 이외의 모든 아웃바운드 연결을 차단합니다.
allowoutbound : 차단 규칙 이외의 모든 아웃바운드 연결을 허용합니다.


예시) 공용 프로필에서 규칙과 일치하지 않는 아웃바운드 연결을 차단합니다.
netsh advfirewall set publicprofile firewallpolicy blockinbound,blockoutbound
기본 설정은 다음과 같습니다.
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound




새 규칙 만들기
netsh advfirewall firewall add rule {조건1} {조건2} {조건3} ...

명령어를 사용하여 각각의 프로그램을 허용하고 차단하는 규칙을 추가합니다. 사용할 수 있는 조건은 다음과 같습니다.

조건 설명
name="규칙 이름" all 이라는 이름은 사용할 수 없습니다.
dir=in
dir=out
인바운드 / 아웃바운드를 설정합니다.
action=allow
action=block
허용 / 차단을 설정합니다.
program="프로그램 경로" 프로그램 위치와 이름을 입력합니다.
service="서비스 이름" 허용하거나 차단할 서비스를 입력합니다.
description="규칙 설명" 규칙 설명을 추가 합니다.
enable=yes
enable=no
규칙을 사용할지 사용 안 할지 선택합니다.
profile=public
profile=private
profile=domain
profile=any
규칙을 적용할 프로필을 선택합니다.
쉼표를 이용해 복수의 프로필을 선택할 수 있습니다.
예) profile=public,private
protocol=any
protocol=tcp
protocol=udp
프로토콜을 설정합니다.
localip=12.34.56.78
remoteip=12.34.56.78
remoteip=any
로컬 및 원격 IP를 지정합니다.
localport=500
remoteport=500
remeteport=any
로컬 포트 및 원격 포트를 설정합니다.
IP와 포트는 - 를 사용해 범위를 지정할 수 있습니다.
쉼표를 사용하여 복수의 ip, 포트를 지정할 수 있습니다.

예시) remoteport=5000-5020
예시) localport=500,600

몇 가지 예를 보면 쉽게 사용 방법을 알 수 있습니다.
예시) 파이어폭스 아웃바운드 허용
netsh advfirewall firewall add rule name="Firefox" dir=out action=allow program="C:\Program Files\Mozilla Firefox\firefox.exe" enable=yes
예시) 팟플레이어 광고 IP 차단
netsh advfirewall firewall add rule name="Block Potplayer Ad" dir=out action=block program="C:\Program Files\DAUM\PotPlayer\PotPlayer64.exe" remoteip="110.76.142.69" enable=yes




규칙 사용함 / 안 함
netsh advfirewall firewall set rule {조건1} {조건2} ... new enable=yes(or no)
규칙을 사용 또는 사용 안 함으로 변경합니다. 이름을 직접 지정할 수도 있고 그룹을 지정하여 해당하는 규칙을 모두 변경할 수 있습니다.

예시) Xbox 인바운드 사용안함
netsh advfirewall firewall set rule name="Xbox" dir=in new enable=no
예시) 네트워크 검색 모두 사용 안 함 (그룹 지정)
netsh advfirewall firewall set rule group="네트워크 검색" new enable=No




규칙 삭제
netsh advfirewall firewall delete {조건1} {조건2}...

사용할 수 있는 조건들은 다음과 같습니다.
name / dir / profile / program / service / localip / remoteip / localport / remoteport / protocol

name=all을 사용하여 모든 규칙을 선택할 수 있습니다.

예시) 모든 규칙 삭제
netsh advfirewall firewall delete name=all
예시) 특정 이름 삭제
netsh advfirewall firewall delete name="rule 12"
예시) TCP 포트 80을 허용하거나 차단하는 모든 규칙 삭제
netsh advfirewall firewall delete name=all protocol=tcp localport=80




이름 확인

모든 규칙의 이름을 확인합니다.
netsh advfirewall firewall show rule name=all
모든 인바운드 규칙의 이름을 확인합니다.
netsh advfirewall firewall show rule name=all dir=in




마치며
Microsoft에서는 netsh advfirewall 명령어 대신 Powershell을 사용할 것을 권고하고 있습니다. 하지만 윈도우 10의 현재 버전까지는 netsh advfirewall을 사용하여 충분히 원하는 규칙을 변경하고 만들 수 있습니다. 더 자세한 사항은 하단의 사이트를 참고 하시기 바랍니다.


참고:
https://technet.microsoft.com/en-us/library/cc771920
https://technet.microsoft.com/en-us/library/dd734783

댓글

댓글 쓰기