CMD로 Windows 방화벽 상태 확인하고 켜고 끄는 법 (netsh advfirewall 실무 가이드)

Prompt Architect 편집팀 · 2026-06-18 · 7분

TL;DR — GUI 없이 명령 프롬프트(CMD)에서 netsh로 Windows 방화벽 상태를 확인하고 프로필별로 켜고 끄는 방법을, 관리자 권한 오류 해결과 실무 주의사항까지 정리했습니다.

원격 접속 중인 서버, 응답이 느려진 PC, 혹은 사내 단말 수십 대를 한 번에 점검해야 할 때 — 방화벽 설정 창을 마우스로 일일이 여는 것은 비효율적입니다. Windows는 netsh advfirewall 명령으로 방화벽 상태를 즉시 확인하고, 프로필 단위로 켜고 끌 수 있습니다. 이 글에서는 CMD 한 줄로 방화벽을 다루는 법을 실무 관점에서 정리합니다.

이 글에서 다루는 것

  1. 왜 GUI 대신 CMD를 쓰는가
  2. Windows 방화벽 프로필(도메인/개인/공용) 개념
  3. 현재 방화벽 상태 확인하기
  4. 방화벽 켜기 / 끄기
  5. 프로필별로 따로 제어하기
  6. "시스템 오류 5" — 액세스 거부 해결
  7. 흔한 실수와 엣지케이스
  8. 요약 & AI에게 물어보는 법

1. 왜 CMD로 방화벽을 다루는가

방화벽 제어를 GUI(제어판 → Windows Defender 방화벽)로만 하면 다음 상황에서 막힙니다.

  • GUI가 없는 환경: Windows Server Core, SSH/원격 셸 세션, 자동화 스크립트.
  • 반복 작업: 여러 대의 PC에 같은 설정을 배포해야 할 때.
  • 기록·재현성: 명령은 로그로 남고 그대로 다시 실행할 수 있지만, 마우스 클릭은 남지 않습니다.

netsh advfirewall는 Windows 7 이후 모든 버전(Windows 10/11, Server 2016~2022)에서 기본 제공되는 표준 도구라, 별도 설치 없이 바로 쓸 수 있다는 점이 가장 큰 장점입니다.

참고: 더 최신 환경에서는 PowerShell의 Get-NetFirewallProfile / Set-NetFirewallProfile 도 동일한 일을 합니다. 다만 호환성과 입력 길이 면에서 netsh가 여전히 가장 보편적이라 이 글의 기준으로 삼습니다.


2. 방화벽 프로필 이해하기

Windows 방화벽은 네트워크 위치에 따라 세 가지 프로필을 따로 관리합니다. 이 개념을 모르면 "분명히 껐는데 왜 차단되지?" 같은 혼란이 생깁니다.

프로필 netsh 키워드 적용 상황
도메인 domainprofile 회사 Active Directory 도메인에 연결된 네트워크
개인 privateprofile 집·신뢰하는 사설 네트워크
공용 publicprofile 카페·공항 등 신뢰하지 않는 공용 Wi-Fi

한 PC는 연결된 네트워크에 따라 어느 프로필이 "활성(active)"인지 달라집니다. allprofiles는 이 셋을 한꺼번에 다룹니다.


3. 현재 방화벽 상태 확인하기

먼저 지금 방화벽이 켜져 있는지부터 봅니다. CMD를 열고 아래를 입력합니다.

:: 세 프로필 전체의 상세 설정을 출력
netsh advfirewall show allprofiles

출력이 길어서 상태만 빠르게 보고 싶다면 find로 필터링합니다. 한국어 Windows는 "상태", 영문 Windows는 "State"로 표시되므로 환경에 맞춰 키워드를 바꿉니다.

:: 한국어 Windows — "상태" 줄만 추출
netsh advfirewall show allprofiles | find /i "상태"

:: 영문 Windows — "State" 줄만 추출
netsh advfirewall show allprofiles | find /i "State"

특정 프로필만 보고 싶다면 키워드를 바꿉니다.

:: 공용 네트워크 프로필만 확인
netsh advfirewall show publicprofile

출력에서 State ON(또는 상태 설정)이면 켜진 것, OFF면 꺼진 것입니다.


4. 방화벽 켜기 / 끄기

세 프로필을 한꺼번에 제어하는 가장 흔한 형태입니다.

:: 모든 프로필 방화벽 켜기 (권장 기본값)
netsh advfirewall set allprofiles state on

:: 모든 프로필 방화벽 끄기
netsh advfirewall set allprofiles state off

on을 실행한 뒤 3번의 상태 확인 명령으로 실제 반영됐는지 다시 검증하는 습관을 들이면 좋습니다. 명령은 성공하면 보통 확인. 또는 Ok. 한 줄만 출력합니다.


5. 프로필별로 따로 제어하기

전체가 아니라 특정 프로필만 제어해야 하는 경우가 실무에서는 더 많습니다. 예를 들어 회사 내부망(도메인)에서는 정책상 방화벽을 유지하되, 잠깐 디버깅하려는 공용 프로필만 끄고 싶을 때입니다.

:: 공용 프로필만 끄기 (도메인/개인은 유지)
netsh advfirewall set publicprofile state off

:: 개인 프로필만 켜기
netsh advfirewall set privateprofile state on

:: 도메인 프로필만 끄기
netsh advfirewall set domainprofile state off

이렇게 프로필을 분리해서 다루면, 보안 정책이 적용되는 도메인 환경은 건드리지 않으면서 필요한 부분만 임시 조정할 수 있습니다.


6. "시스템 오류 5" — 액세스 거부 해결

가장 자주 막히는 지점입니다. 명령을 입력했는데 아래처럼 나온다면:

시스템 오류 5이(가) 생겼습니다.
액세스가 거부되었습니다.

원인은 단순합니다. 방화벽 변경은 관리자 권한이 필요한데, 지금 연 CMD가 일반 사용자 권한이기 때문입니다. 상태를 확인만 하는 명령은 대부분 일반 권한으로도 되지만, set ... state 처럼 설정을 바꾸는 명령은 반드시 관리자 권한이 있어야 합니다.

해결 방법:

  1. 시작 메뉴에서 cmd 또는 "명령 프롬프트" 검색
  2. 항목을 우클릭 → "관리자 권한으로 실행" 선택
  3. UAC(사용자 계정 컨트롤) 창이 뜨면 "예" 클릭
  4. 창 제목 표시줄에 "관리자:"가 붙었는지 확인 후 명령 재실행

키보드로 빠르게 열려면 Win 키를 누르고 cmd 입력 후 Ctrl + Shift + Enter를 누르면 바로 관리자 CMD가 열립니다.


7. 흔한 실수와 엣지케이스

  • 방화벽을 완전히 끄지 마세요. 트러블슈팅을 위해 잠깐 끄는 것은 괜찮지만, 끈 상태로 방치하면 PC가 외부 공격에 그대로 노출됩니다. 특정 포트만 막거나 여는 게 목적이라면 방화벽 자체를 끄지 말고 규칙(rule) 을 추가하는 것이 정석입니다.
:: 예) 8080 포트 인바운드 허용 규칙 추가 (방화벽은 켜둔 채)
netsh advfirewall firewall add rule name="MyApp-8080" dir=in action=allow protocol=TCP localport=8080
  • 그룹 정책에 묶인 PC. 회사 도메인 PC는 그룹 정책(GPO)이 방화벽을 강제하는 경우가 많습니다. 이때는 netsh로 꺼도 정책 새로고침 시 다시 켜지거나 아예 변경이 거부됩니다. 정책 관리자에게 문의해야 합니다.

  • find 키워드 불일치. 위에서 언급했듯 OS 언어에 따라 "상태"/"State"가 다릅니다. 필터 결과가 비어 나오면 언어 키워드부터 의심하세요.

  • 변경 후 검증 누락. 명령이 성공 메시지를 내도, 다른 프로세스(보안 솔루션, GPO)가 곧바로 되돌릴 수 있습니다. 변경 직후 show 명령으로 한 번 더 확인하는 습관이 사고를 줄입니다.

  • 원격 세션 주의. RDP/SSH로 접속한 원격 PC에서 방화벽을 잘못 설정하면 자기 접속 경로를 스스로 차단해 더 이상 들어가지 못할 수 있습니다. 원격에서는 변경 전 현재 규칙을 백업하고, 가급적 콘솔 접근 수단을 확보한 뒤 작업하세요.


8. 요약

  • 상태 확인: netsh advfirewall show allprofiles (+ find /i "상태")
  • 전체 켜기/끄기: netsh advfirewall set allprofiles state on|off
  • 프로필별: domainprofile / privateprofile / publicprofile
  • "시스템 오류 5"는 관리자 권한 CMD로 해결
  • 끄기보다 규칙 추가가 안전한 정석. 검증은 항상 show

CMD 한 줄이면 GUI를 거치지 않고도 방화벽을 정확히 제어할 수 있습니다. 핵심은 "프로필을 구분하고, 끄기보다 규칙으로 관리하며, 변경 후 반드시 검증"하는 세 가지 원칙입니다.


AI에게 물어볼 때 (프롬프트 팁)

방화벽이나 보안 설정을 ChatGPT·Claude 같은 AI에게 물어볼 때는, OS 버전·권한 상태·목적을 구체적으로 넣어야 정확한 명령을 받습니다. 모호하게 물으면 위험하거나 동작하지 않는 답이 나올 수 있습니다.

예시 1 — 환경을 명시한 진단 요청

나는 Windows 11 한국어 버전을 쓰고, 관리자 권한 CMD를 열 수 있어.
공용(public) 프로필 방화벽만 켜져 있는지 확인하고, 꺼져 있으면 켜는
netsh 명령을 단계별로 알려줘. 각 줄에 한국어 주석도 달아줘.

예시 2 — 끄지 않고 포트만 여는 안전한 방법 요청

방화벽을 끄지 않은 채로 TCP 3000번 포트의 인바운드 접속만 허용하고 싶어.
netsh advfirewall firewall 규칙 추가/삭제 명령과,
나중에 그 규칙만 제거하는 명령까지 묶어서 알려줘.

예시 3 — 에러 메시지를 그대로 붙여 원인 분석 요청

netsh advfirewall set allprofiles state off 를 실행했더니
"시스템 오류 5이(가) 생겼습니다. 액세스가 거부되었습니다"가 나와.
원인과 해결 단계를 우선순위 순서로 알려주고,
회사 도메인 PC라면 추가로 의심할 점도 알려줘.

이처럼 환경 → 목적 → 제약(끄지 말 것 등) → 출력 형식을 명확히 적는 것이 좋은 프롬프트의 기본 구조입니다. Prompt Architect의 프롬프트 분석기로 위 예시들을 점검해 보면, 어떤 요소가 빠졌을 때 답변 품질이 떨어지는지 점수로 확인할 수 있습니다.