윈도우 특정 포트 확인 - windou teugjeong poteu hwag-in

윈도우(Windows) 포트 확인 명령어(NETSTAT) 사용방법

윈도우(Windows) 서버 취약점 진단 중 포트 확인을 위해 구글링한 내용에 대해서 간단히 정리해 보려고 한다.

포트 확인을 위해 netstat 명령어를 이용하는데, 윈도우와 리눅스에서 모두 사용 가능하다. (※ 단, 사용 옵션이 조금 상이하다.)

1. netstat 이란?

netstat 명령어는 자신의 컴퓨터와 연결된 모든 네트워크 연결을 보여주는 명령어

2. 사용방법(Windows용)

명령프롬프트(CMD)에서 ">netstat /?"를 입력하면 netstat에 대한 자세한 설명을 확인할 수 있으며, 본 게시글에서는 자주 사용되는 -a, -n, -o에 대하여 알아볼 것이다.

netstat에서 자주 사용되는 옵션(-a, -n, -o)

-a : 모든 포트를 표시해준다.

-n : "IP주소:포트" 형태로 보여준다.

      ex) 192.168.0.100:8080

-o : PID(프로세스ID)를 표시해준다.

1) 현재 열린(LISTEN) 포트 확인

// TCP와 UDP 모두 확인

> netstat -ano | find "LISTEN"

// TCP만 확인

> netstat -anp tcp | find "LISTEN"

// UDP만 확인

> netstat -anp udp | find "LISTEN"

아래 그림은 현재 LISTEN 중인 UDP 포트가 존재하지 않아 결과 값이 출력되지 않았다.

2) 특정 포트로 접속한 IP 확인

// 현재 Local 컴퓨터에 443포트로 접속한 ip 확인

> netstat -ano | find "443"

// 현재 Local 컴퓨터에 특정 IP의 80포트로 접속한 리스트 확인

> netstat -ano | find "특정 IP:443"

3) 특정 PID의 해당 프로그램 종료하는 명령어

아래 tasklist 명령어를 통해 특정 PID의 해당 프로그램명 확인 후, Windows 작업관리자를 통해 종료시킨다.

> tasklist | find "pid"

특정 포트가 열려있는지 확인하고 싶을 때 한다.

1. 명령프롬프트 cmd 실행

2. 사용중인 모든 포트 확인

3. 내가 원하는 특정 포트 번호만 확인

    포트확인하고, Listening 인지 Tima wait인지 알 수 있다.

    해당 Port가 없으면 아무것도 안뜬다..

(참고) 맨 끝자리있는 숫자는  PID 이고, 어디서 사용중인지 작업관리자에서 찾을 수 있음.

특정 ip주소, 특정 포트(port)가 열려있는지 ping 확인하기 / tcping 사용법

ip주소, ping에관해서는 아래 참고 ansan-survivor.tistory.com/558 > 1. 명령 프롬프트 실행 2. 명령어 입력 ipconfig << 본인 MAC 주소 확인 >> 1. 명령 프롬프트 실행 2. 명령어 입력 ipconfig /all << Ping 보..

ansan-survivor.tistory.com

* 네트워크의 TCP/IP 그리고 PORT에 대해서 자세히 공부하고 싶다면 아래 책으로 연습하는게 좋다. (인강도 제공한다)

개발 도중 사용하고 있던 특정 포트가 종료되지 않아 다시 명령어를 입력했을 때 에러가 발생하는 경우를 한 번씩 겪는다.
(ex. node:3000, django:8080, tomcat:8080)

이번 기회에 윈도우에서 명령 프롬프트(CMD)를 통해 특정 포트가 열려있는지 검색하고 해당 포트를 죽이는 명령어에 대해서 정리하고자 한다.

특정 포트 검색 (netstat -ano)

  • 기본 명령어는 netstat 이다.
  • 그런데 이렇게 해서는 우리가 원하는 특정 포트가 현재 사용되고 있는지와 taskkill(특정 포트 종료 명령어)을 사용하기 위해서 알아야 할 pid가 나오지 정확히 나오지 않기 때문에 netstat 명령어에 옵션을 붙여준다.
  • 다양한 옵션에 대한 설명은 netstat help를 통해 알 수 있다.
  • 우리는 netstat -ano를 실행한다.
    - -a : 모든 연결 포트 표시
    - -n : 주소와 포트 번호를 숫자 형식으로 표시
    - -o : 프로세스 ID (PID) 표시
    - 로컬에서 개발 중이었다면 굳이 n 옵션은 사용하지 않아도 포트는 확인할 수 있다.
  • 우리가 현재 우리가 찾을려는 포트는 3000번 포트이다.
  • 3000번 포트를 사용하고 있는 프로세스의 PID는 22644임을 확인할 수 있다.

특정 포트 죽이기 (taskkill /f /pid [PID])

  • PID를 확인했다면 taskkill 명령어를 통해 종료시킬 수 있다.
  • taskkill 명령어 또한 다양한 옵션을 가지고 있다. 다양한 옵션에 대해 알고 싶다면 taskkill /?를 통해 확인해보자
  • 우리는 taskkill /f /pid [PID]를 통해 특정 포트를 종료하도록 한다.
    - /f : 강제 종료
    - /pid [PID] : 종료할 프로세스의 PID 지정
  • 우리는 pid가 22644인 프로세스를 종료하고자 했기 때문에 taskkill /f /pid 22644를 통해 3000번을 사용하고 있는 프로세스를 종료한다.
  • 다시 netstat -ano를 통해 현재 연결 포트를 확인해보자
  • 3000번 포트가 말끔히 종료되었다.
  • 다시 node를 실행해보면 잘 실행된다.

추가 (find)

  • 우리는 특정 포트를 확인할 때 netstat -ano를 통해 포트를 확인했다.
  • 사실 이건 비효율적인 명령이다.
  • find 명령어와 함께 사용하면 손쉽게 특정 포트를 확인할 수 있다.
  • netstat -ano | find "3306"과 같이 명령어를 실행하면 다음과 같이 netstat -ano의 출력 결과 중 "3306"이 포함된 부분만 출력된다.

Toplist

최신 우편물

태그