netstat 를 이용해 로컬 컴퓨터에 사용중인 포트와 프로세스 정보 알아보기

 

개발환경 : window 7 32bit

 

프로젝트를 생성하고 tomcat 를 돌리는데 8080 포트를 누군가 사용해서

허용이 안된다는 황당한 메시지를 접하게 되었다. 그냥 다른 포트로 바꿔도

되겠지만 아무리 찾아봐도 사용하는 놈이 없는데 어떻게 된 것일까?

의문을 해결하기 위해 한번 찾아보기로 했다. 예전에 종종 사용했던

netstat 를 이용해서 찾을 건데 그 방법에 대해 조금더 상세히 정리해 본다

 

1. netstat 옵션과 여러가지 사용법

 

콘솔창에서 실행하는 윈도우에서 제공하는 프로그램들은 help 를 누르면

옵션에 대한 정보를 볼수 있다. 아래 리스트에 나와있는 옵션값을 조합해서

쓰면 되는데 유용한 몇가지만 언급하도록 한다.

>netstat –n 은 현재 연결된 정보만 나온다. 상태를 보면 ESTABLISHED CLOSE_WAIT

인 것을 볼수 있다. 로컬주소는 현재 컴퓨터의 주소이며 외부주소는 외부에서

연결한 정보이다. 외부주소가 127.0.0.1 이란 말은 로컬 서버를 운영하고 있다는 말이된다.

>netstat –na or –an 은 연결을 기다리는 목록까지 보여준다. 상태가 위와 달리

LISTENING 이 된다

>netstat –anb  로 그 포트를 어떤 프로그램이 사용하는지도 나타낸다.

그것은 b 옵션을 넣었기 때문이다. 이것으로 1차적인 해킹시도를 알수가 있다.

자기도 모르는 프로그램이 포트를 사용한다고 하면 의심해 볼만 하기 때문이다.

8080 포트를 누가 사용하는지 볼려했는데 대충은 찾은거 같다. tnslsnr이면 오라클

리스너 인데 이놈이 8080 을 사용한다니 .. 이해가 되지 않는다. 내 컴퓨터에 11g

Xdb, 10g 가 깔려 있으니 어떤놈인지 찾아야 겠다.

>netstat –ano 는 포트를 사용하는 프로세스 아이디를 보여줍니다.  –o 가 그 역할을 하게

되는데 여기서 최종 목적인 8080 포트를 사용하는 프로그램을 찾기 위한 것이다.

물론 >netstat –anb 로 어떤 프로그램이 사용하는지 알았지만 좀도 확실하게 알아볼려면

프로세스 아이디로 찾아보자.

 

2. 상태필드에서 나타나는 값들에 대한 설명

 

netstat 의 목적은 네트워크 상태를 알아보기 위한 것이다. 그러면 현재 아이피들의

상태값을 보고 판단해야 되는데 그 값이 무엇을 의미하는지 모르면 쓸모가 없지 않은가

그 상태값들에 대한 정리 이다.

 

* LISTEN : 누군가의 접속을 기다리고 있는 포트

* ESTABLISHED : 현재 포트를 누군가 사용하고 있다.

* TIME_WAIT : 접속후 사용이 종료 되었으며 다른 명령을 기다리고 있는 상태

* FIN_WAIT 1 : 포트가 닫혔으며 연결이 종료되기를 기다리는 상태

* FIN_WAIT 2 : 연결이 완전히 닫힌 상태

* SYN_SENT : 원격지에서 포트를 열려고 시도하는 중인 상태

* UNKNOWN : 현재 포트의 상태를 알수 없다는 뜻

 

3. PID 로 프로그램 찾기

 

이제 최종 목적인 8080 포트를 사용하는 프로그램을 찾아보도록 한다.

>tasklist /SVC /fi “PID eq 1956” 는 마지막에 프로세스 PID 를 입력하면

어떤 프로그램이 사용하는지 서비스 명이 나오게 된다.

이것으로 Oracel XE 가 사용하는 것으로 판명이 났다.

Posted by 녹두장군

댓글을 달아 주세요