Windows에서 열린 포트 확인하는 방법 완벽 가이드 2026

netstat 명령어와 PowerShell을 사용하여 Windows에서 열린 포트를 확인하는 방법

Windows에서 열린 포트를 확인하는 것은 네트워크에 관심 있는 모든 사용자가 알아야 할 기술이에요. 열린 포트는 컴퓨터가 특정 포트 번호에서 활발하게 연결을 기다리고 있다는 뜻이고, 어떤 포트가 열려 있는지 알면 보안 허점을 찾고, 연결 문제를 해결하며, 애플리케이션이 제대로 실행 중인지 확인할 수 있어요. Windows는 이를 위해 여러 내장 방법을 제공하고, 외부 도구를 사용해 포트가 외부에서 어떻게 보이는지 테스트할 수도 있어요.

열린 포트란 무엇이고 왜 중요한가

컴퓨터의 모든 네트워크 서비스는 1부터 65535 사이의 포트 번호에 연결돼요. 서비스가 실행 중이고 들어오는 연결을 기다리고 있으면 그 포트는 "열려" 있는 거예요. 아무것도 그 포트를 사용하지 않으면 포트는 "닫혀" 있고 들어오는 연결 시도는 거부되거나 무시돼요.

실제로 이게 왜 중요한지 살펴볼게요:

  • 보안 감사: 예상치 못한 열린 포트는 악성 프로세스, 악성코드, 또는 잘못 설정된 서비스가 컴퓨터를 노출하고 있다는 신호일 수 있어요.
  • 문제 해결: 웹 서버, 게임 서버, 또는 원격 데스크톱에 접속할 수 없다면 가장 먼저 확인해야 할 것은 포트가 실제로 열려 있는지예요.
  • 방화벽 확인: Windows 방화벽이 서비스가 실행 중인데도 포트를 차단하고 있거나, 닫혀 있다고 생각한 포트를 허용하고 있을 수 있어요.
팁: "열려 있다"와 "방화벽에서 차단되지 않았다"는 다른 개념이에요. 포트가 로컬에서는 열려 있을 수 있지만(서비스가 수신 중) 방화벽이나 라우터에서 외부적으로는 차단될 수 있어요. 아래 방법들은 두 가지 관점을 모두 다루고 있어요.

Netstat 명령어로 열린 포트 확인하기

netstat 명령어는 Windows 컴퓨터가 현재 수신 중인 모든 포트를 나열하는 가장 빠른 내장 방법이에요. 명령 프롬프트를 열고(시작 메뉴에서 "cmd" 검색, 마우스 오른쪽 클릭, "관리자 권한으로 실행" 선택) 다음을 실행하세요:

netstat -ano

플래그의 의미는 다음과 같아요:

  • -a 모든 활성 연결과 수신 포트를 표시해요.
  • -n 주소와 포트 번호를 숫자로 표시하고 호스트명 확인을 하지 않아요(훨씬 빨라요).
  • -o 프로세스 ID(PID)를 추가해서 각 포트를 어느 프로그램이 사용하는지 알 수 있어요.

출력 열은 다음과 같아요: Proto , Local Address , Foreign Address , State , 그리고 PID . State 열에 "LISTENING"이 표시된 행을 찾으세요. 그것들이 열린 포트예요. LISTENING . 수신 중인 포트만 보려면:

수신 중인 포트만 보려면:

netstat -ano | findstr LISTENING

조사할 PID를 찾으면 다음 명령어로 프로세스 이름을 찾을 수 있어요:

tasklist /fi "PID eq 1234"

1234 을(를) netstat 출력의 실제 PID로 바꾸세요. 이 명령어는 어느 실행 파일이 그 포트에서 수신 중인지 정확히 알려줄 거예요.

특정 포트가 사용 중인지 확인하려면 netstat과 findstr을 함께 사용하세요:

netstat -ano | findstr :443
참고: Netstat은 로컬 머신에 활성 바인딩이 있는 TCP와 UDP 포트만 보여줘요. 그 포트들이 인터넷에서 접근 가능한지는 알려주지 않아요. 그것을 위해서는 외부 포트 검사 도구가 필요해요(아래에서 다룹니다).

PowerShell로 포트 확인하기

PowerShell은 netstat보다 더 깔끔하고 스크립트하기 쉬운 대안을 제공해요. PowerShell을 관리자 권한으로 열고 다음을 실행하세요:

Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort

이 명령어는 LISTEN 상태의 모든 TCP 포트를 정렬된 목록으로 반환하고, 로컬 주소와 PID를 포함해요. 같은 명령어에서 PID를 프로세스 이름으로 확인하려면:

Get-NetTCPConnection -State Listen |
  Select-Object LocalPort,
    @{Name="Process";Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |
  Sort-Object LocalPort

PowerShell에서 원격 호스트의 특정 포트가 열려 있는지 직접 테스트할 수도 있어요: Test-NetConnection :

Test-NetConnection -ComputerName example.com -Port 443

출력에 TcpTestSucceeded : True 이(가) 나타나면 포트가 열려 있고 컴퓨터에서 연결을 받아들이고 있는 거예요. 이것은 Windows PC에서 서버로의 아웃바운드 연결을 확인할 때 유용하고, 로컬에서만 열린 것을 확인하는 것보다 더 많은 정보를 줄 수 있어요.

Windows 방화벽 설정에서 포트 규칙 확인하기

Windows 방화벽은 어떤 포트가 들어오고 나갈 수 있는지 제어해요. 서비스가 로컬에서 포트를 수신 중일 수 있지만, 방화벽이 그 포트의 인바운드 트래픽을 차단하면 외부 클라이언트는 접근할 수 없어요. 방화벽 규칙을 검토하는 방법을 알려드릴게요.

Windows Defender 방화벽 고급 보안 사용하기

  1. Win + R 을(를) 누르고, wf.msc 을(를) 입력한 후 Enter를 누르세요.
  2. 왼쪽 패널에서 인바운드 규칙 을(를) 클릭해서 컴퓨터로 들어오는 트래픽을 제어하는 규칙을 보세요.
  3. 아웃바운드 규칙 을(를) 클릭해서 컴퓨터에서 나가는 트래픽을 보세요.
  4. 사용 으로 정렬해서 어떤 규칙이 활성화되어 있는지 빠르게 확인하세요.
  5. 각 규칙은 프로토콜(TCP/UDP), 로컬 포트, 원격 포트, 작업(허용/차단)을 표시해요.

명령줄 사용하기

명령줄에서 모든 활성 방화벽 규칙을 나열하려면:

netsh advfirewall firewall show rule name=all

특정 포트가 방화벽을 통과할 수 있는지 확인하려면:

netsh advfirewall firewall show rule name=all | findstr "LocalPort"

Microsoft의 공식 문서에서 Windows 방화벽 설정하기 는 규칙 생성과 관리에 대해 자세히 설명하고 있어요. 규칙을 추가하거나 수정해야 한다면 참고하세요.

Windows에서 포트 스캐너 사용하기

내장 도구는 자신의 컴퓨터를 확인하는 데 좋지만, 때로는 네트워크의 다른 호스트를 스캔하거나 명령줄 출력보다 시각적 개요를 원할 수 있어요. 전용 포트 스캐너가 그 역할을 해요.

Nmap 은(는) 포트 스캔의 업계 표준이에요. 무료 오픈소스이고 공식 Nmap 다운로드 페이지 에서 Windows용으로 받을 수 있어요. Windows 설치 프로그램에는 Zenmap이라는 그래픽 인터페이스가 포함되어 있어요. 기본 호스트 스캔은 다음과 같아요:

nmap -sV 192.168.1.1

-sV 플래그는 각 열린 포트에서 실행 중인 서비스 버전을 감지하려고 시도해요. Windows 네트워크 보안 감사에 유용한데, 어떤 포트가 열려 있는지뿐만 아니라 그 뒤에 있는 소프트웨어가 무엇인지도 볼 수 있거든요.

중요: 자신이 소유하거나 명시적으로 스캔 허가를 받은 호스트만 스캔하세요. 제어하지 않는 네트워크의 포트를 스캔하면 컴퓨터 사기 및 악용 법(CFAA) 이나 해당 국가의 동등한 법을 위반할 수 있어요.

외부에서 열린 포트 테스트하기

여기서 중요한 구분이 있어요. 포트가 Windows 컴퓨터에서 로컬로 수신 중이어도 외부 세계에서는 닫혀 있을 수 있어요. 이는 라우터가 포트를 포워딩하지 않았거나 ISP가 차단했을 때 발생해요. 인터넷이 실제로 보는 것을 알려면 외부 관점에서 테스트해야 해요.

이것이 정확히 온라인 포트 검사 도구가 하는 일이에요. 원격 서버에서 사용자의 IP 주소로 TCP 연결을 시도하고 연결이 수락되었는지(열림), 거부되었는지(닫힘), 또는 시간 초과되었는지(타임아웃) 보고해요. 소프트웨어 설치가 필요 없고, 로컬 방화벽을 완전히 우회해서 실제 외부 상태를 보여줘요.

온라인 포트 검사 도구로 Windows의 열린 포트 테스트하기

Windows 컴퓨터에서 정확히 어떤 포트가 열려 있는지 확인하세요

무료 온라인 포트 검사 도구는 원격 서버에서 모든 IP 또는 도메인으로 TCP 연결을 테스트하므로 Windows의 열린 포트를 확인할 때 진정한 외부 보기를 얻을 수 있어요. 한 개의 포트를 확인하거나 최대 10개를 한 번에 일괄 확인할 수 있으며, 결과는 밀리초 단위로 나와요.

포트 확인하기 →

자주 사용하는 포트 빠른 참조

어떤 서비스가 어떤 포트를 사용하는지 알면 문제 해결할 때 시간을 절약할 수 있어요. Windows 시스템에서 가장 자주 만나게 될 포트들을 소개할게요:

포트 프로토콜 서비스 Windows에서의 일반적인 용도
80 TCP HTTP 웹 서버(IIS, Apache), 로컬 개발 서버
443 TCP HTTPS 보안 웹 서버, Windows 업데이트
3389 TCP RDP 원격 데스크톱 프로토콜, 원격 관리
445 TCP SMB 파일 공유, Windows 네트워크 공유
22 TCP SSH OpenSSH(Windows 10/11에 내장)
21 TCP FTP 파일 전송, IIS FTP 서비스
25 TCP SMTP 이메일 전송, 메일 서버 릴레이
3306 TCP MySQL MySQL/MariaDB 데이터베이스 연결
5432 TCP PostgreSQL PostgreSQL 데이터베이스 연결
135 TCP RPC Windows 원격 프로시저 호출, DCOM
포트 3389(RDP)는 인터넷에서 가장 집중적으로 무차별 대입 공격을 받는 포트 중 하나예요. RDP를 공개 인터넷에 노출했다면 비표준 포트로 이동하거나 방화벽 규칙에서 IP 주소별로 접근을 제한하는 것을 고려해보세요.

필요 없는 포트 닫기

좋은 Windows 포트 모니터링은 열린 것을 찾는 것만이 아니에요. 어떤 포트가 열려 있어야 하는지 결정하고 나머지는 모두 닫는 것이 중요해요. 실용적인 접근 방식은 다음과 같아요:

  1. netstat -ano을(를) 실행하고 모든 LISTENING 포트를 나열하세요. 앞서 보여드린 tasklist 명령어를 사용해 각 PID를 프로세스 이름으로 매핑하세요.
  2. 필요 없는 서비스를 파악하세요. 예를 들어, IIS를 사용하지 않는다면 포트 80이나 443이 로컬에서 열려 있을 이유가 없어요. services.msc 을(를) 통해 서비스를 중지하세요.
  3. Windows 방화벽 인바운드 규칙을 검토하세요. wf.msc 을(를) 열고 불필요하다고 파악한 포트로의 트래픽을 허용하는 규칙을 비활성화하세요.
  4. 라우터를 확인하세요. 라우터의 포트 포워딩 규칙은 Windows 방화벽이 OS 수준에서 차단해도 포트를 노출할 수 있어요. 라우터 관리자 패널에 로그인해서 포워딩된 포트를 감사하세요.
  5. 외부에서 다시 테스트하세요. 변경을 마친 후 외부 포트 검사를 다시 실행해서 포트가 더 이상 접근 가능하지 않은지 확인하세요.

CISA 사이버보안 공지 는 정기적으로 실제 환경에서 악용되는 특정 포트에 대한 경보를 발표해요. Windows 서버를 관리한다면 이 목록을 주기적으로 확인하는 것이 좋은 습관이에요.

포트가 로컬에서 열려 있다는 것은 Windows 컴퓨터의 서비스가 그 포트 번호에서 활발하게 연결을 기다리고 있다는 뜻이에요. 포트가 외부에서 열려 있다는 것은 인터넷의 다른 컴퓨터들이 실제로 그것에 접근할 수 있다는 뜻이에요. 라우터, ISP, 또는 Windows 방화벽이 포트가 로컬에서 수신 중이어도 외부 접근을 차단할 수 있어요. 항상 외부 도구로 테스트해서 실제 상태를 확인하세요.

이것은 거의 항상 다음 세 가지 중 하나 때문이에요: Windows 방화벽이 포트를 차단하는 인바운드 규칙을 가지고 있거나, 라우터에 그 포트에 대한 포트 포워딩 규칙이 없거나, ISP가 네트워크 수준에서 포트를 차단하고 있어요. 각 계층을 순서대로 확인하세요. ISP가 차단하는 일반적인 포트에는 주거용 연결에서 25(SMTP), 80, 443이 있어요.

RDP를 인터넷에 직접 노출하는 것은 상당한 보안 위험이에요. 자동화된 봇들이 지속적으로 열린 포트 3389를 스캔하고 무차별 대입 로그인을 시도해요. 원격 접근이 필요하다면 먼저 VPN을 사용해서 네트워크에 접근하거나, Windows 방화벽에서 특정 IP 주소로 RDP 접근을 제한하거나, 비표준 포트와 강력한 비밀번호, 네트워크 수준 인증(NLA)을 함께 사용하세요.

-a 플래그를 사용할 때 Netstat이 UDP 포트를 표시해요. Proto 열에서 "UDP"로 표시된 행을 찾으세요. 하지만 UDP는 TCP처럼 연결 핸드셰이크가 없어서 원격에서 테스트하기가 훨씬 어려워요. 대부분의 온라인 포트 검사 도구(TCP 기반 도구 포함)는 TCP 연결만 테스트해요. UDP 스캔의 경우 UDP 플래그를 사용한 Nmap이 실질적인 선택지지만, 관리자 권한이 필요해요. -sU

wf.msc 을(를) 열고 "인바운드 규칙"을 클릭한 후 오른쪽의 "새 규칙"을 클릭하세요. "포트"를 선택하고, TCP 또는 UDP를 선택하고, 포트 번호를 입력하고, "연결 허용"을 선택하고, 적절한 프로필(도메인, 프라이빗, 공개)에 적용하고, 규칙에 이름을 지으세요. 명령줄을 선호한다면 다음을 사용하세요: netsh advfirewall firewall add rule name="MyPort" dir=in action=allow protocol=TCP localport=8080 .

타임아웃은 포트 검사 도구가 TCP 연결 요청을 보냈지만 대기 기간(보통 몇 초) 내에 응답을 받지 못했다는 뜻이에요. 이것은 보통 방화벽이 패킷을 적극적으로 거부하기보다는 조용히 버리고 있다는 의미예요. "닫힘" 결과는 호스트가 TCP 리셋을 보내 연결을 적극적으로 거부했다는 뜻이에요. 타임아웃은 엄격한 방화벽 설정에서 더 일반적인데, 이 경우 트래픽을 거부하지 않고 버려요.