스크립트를 작성하거나 원격으로 PC에 접속해 명령어 한 줄로 Windows 방화벽을 켜거나 꺼야 하는 상황이 종종 발생합니다. 대부분의 IT 환경에서는 그룹 정책(Group Policy)을 사용하는 것이 클라이언트 컴퓨터의 Windows 방화벽을 구성하는 가장 쉬운 방법입니다.
그룹 정책은 HTTP, 파일 공유, 각종 소프트웨어 애플리케이션 등을 위한 포트 예외를 추가할 때도 가장 간편한 방법입니다. 하지만 Active Directory에 속하지 않은 컴퓨터나 서버를 관리해야 할 때를 대비해 명령 프롬프트에서 Windows 방화벽을 구성하는 방법도 알아두면 큰 도움이 됩니다.
명령 프롬프트로 Windows 방화벽 관리하기
먼저 서버나 컴퓨터에서 Windows 방화벽이 활성화되어 있는지 확인하려면 명령 프롬프트에 다음 명령어를 입력합니다.
netsh advfirewall show allprofiles
이때 반드시 관리자 권한으로 명령 프롬프트를 실행해야 합니다. 시작 메뉴에서 CMD를 검색한 후 명령 프롬프트를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택하세요. 그러면 아래와 비슷한 결과가 표시됩니다.

기본적으로 세 개의 항목이 표시됩니다. 도메인 프로필(Domain Profile), 개인 프로필(Private Profile), 공용 프로필(Public Profile) 설정입니다. 이 세 가지는 컴퓨터의 각 네트워크 연결이 가질 수 있는 세 가지 상태에 해당합니다. 예를 들어 가정용 네트워크에 연결하면서 홈 네트워크 옵션을 선택했다면 개인 프로필 설정이 적용됩니다.
상태(State)는 방화벽이 켜져 있는지 꺼져 있는지를 나타내며, 방화벽 정책(Firewall Policy)은 각 프로필에 적용되는 인바운드 및 아웃바운드 정책을 보여줍니다.
특정 프로필에 대해 방화벽을 비활성화하려면 다음 명령어를 사용합니다.
netsh advfirewall set privateprofile state off
그 외에 currentprofile(현재 프로필), publicprofile(공용 프로필), domainprofile(도메인 프로필), allprofiles(모든 프로필) 옵션을 사용할 수 있습니다. 방화벽을 완전히 끄고 싶다면 privateprofile 대신 allprofiles를 입력하면 됩니다. 다시 활성화하려면 명령어 마지막의 off를 on으로 바꾸기만 하면 됩니다.
명령줄로 방화벽 포트 열기
그렇다면 명령줄로 방화벽에서 특정 포트를 열려면 어떻게 해야 할까요? 이것 역시 아주 간단합니다.
예를 들어 Windows 원격 데스크톱에 사용되는 3389번 포트를 열고 싶다면 다음 명령어를 실행하면 됩니다.
netsh advfirewall firewall add rule name="Open Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
명령어가 꽤 길지만 구조를 살펴보면 이해하기 쉽습니다. 규칙을 추가하고(add rule), 이름을 지정한 뒤(name), 프로토콜(TCP 또는 UDP)과 방향(In 또는 Out)을 선택하고, 포트 번호를 입력한 후 동작(Allow 또는 Deny)을 지정하는 방식입니다.
이 명령어를 실행한 후 Windows 방화벽의 허용된 앱 목록을 확인해 보면 원격 데스크톱 항목에 체크 표시가 된 것을 볼 수 있습니다.

여러 개의 포트를 한 번에 열어야 한다면 하이픈(-)을 사용하면 됩니다. 예를 들어 아래 명령어는 6000번부터 7000번까지의 포트를 UDP 아웃바운드 트래픽에 대해 엽니다.
netsh advfirewall firewall add rule name="UDP ports" protocol=UDP dir=out localport=6000-7000 action=allow
이 외에도 Windows 방화벽의 모든 측면을 관리할 수 있는 다양한 고급 명령어가 있습니다. 명령어 끝에 /?를 붙이면 모든 옵션과 사용 예시를 확인할 수 있으니 참고하세요.