기타

netstat 로 서버에 대한 외부 네트요청 확인하기

시반 2008. 1. 16. 16:29

netstat -an 명령어는 현재 운영하고 있는 서버에 대한 외부의 네트워크 요청을 확인할 수 있는

유용한 명령어 입니다. 유닉스 뿐 아니라 윈도우에도 있네요...

 

Local Address는 자신의 아이피 입니다.

Foreign Address는 상대방의 아이피 입니다.

State는 접속방법입니다.

 

State의 대한 설명은 다음과 같습니다.

 

LISTEN : 현재열려있는 포트로써 누군가의 접속을 항상 기다리고 있는 포트입니다.

             즉 항상 열려있다는 뜻으로 허용한 포트 외의 포트가 Listening에 있다면

             그 원인을 잘 살펴봐야 합니다.

ESTABLISHED : 현재 정상적으로 연결이 된 포트로써 사용하고 있다는 의미입니다.

                       80번 포트에 이런 메시지가 있으면 웹브라우저를 통하고 홈폐이지

                       를 보고 있다는 뜻입니다. < 80번 포트는 인터넷 포트입니다. >

TIME_WAIT : 접속 후 사용이 종료되었으나 지정된 시간만큼 다른 명령이나 신호를

                   기다리고 있다는 의미입니다. 80번 포트는 웹브라우저의 요청에 대하여

                   홈폐이지 보여주기가 완전히 끝난뒤에도 다른 요청에 빨리 동작하기

                   위하여 15초정도 대기상태에 있습니다.

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

FIN_WAIT 2 : 연결이 완전히 닫힌 상태입니다.

SYN_SENT : 원격지에서 포트를 열려고 시도하는 중을 나타냅니다. 허용된 포트외의

                  다른포트에서 이런 메시지가 나오면 유심이 확인해 봐야 합니다.

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

 

간단하지만 이렇게 접속자정보와 state로 불법사용자여부를 확인하거나

웹서버의 경우 tcp 세션 현황을 모니터링 할 수 있습니다.

 

TCP session 상태가 "FIN_WAIT , TIME_WAIT" 와 같은 session의 정보가 장시간  다수 발생하는 경우

해당 tcp 세션을 clear 하기도 합니다.

 

예) ndd -set /dendd -set /dev/tcp tcp_discon 0x0001 (solaris나 hpux 의 경우 )

    rmsock  PCB/ADDR tcpcb (AIX의 경우)

 

하지만 정상적으로 "ESTABLISH" 상태인 session을 clear 하면
데이터 손실이나 시스템다운 등의 예상치 못한 결과가 생길 수 도 있다고 한다.