끄적끄적

반응형

[root@hoon hoon]# netstat -na


Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State     

tcp        0      0 0.0.0.0:3300            0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     

tcp        0      0 211.236.xx.xx:80       200.40.xx.xx:1291       SYN_RECV   

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     

tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN     

tcp        0      0 211.236.xx.xx:80       219.251.xx.xx:2156    TIME_WAIT  

tcp        0      0 211.236.xx.xx:22       211.236.xxx.xx:37859    ESTABLISHED

tcp        0      0 211.236.xx.xx:80       222.122.xxx.xx:46241   ESTABLISHED

tcp        0      0 211.236.xx.xx:80       222.122.1xx2xx:2709    ESTABLISHED

Active UNIX domain sockets (servers and established)

Proto RefCnt Flags       Type       State         I-Node Path

unix  2      [ ACC ]     STREAM     LISTENING     193443844 /tmp/mysql.sock

unix  7      [ ]         DGRAM                    998    /dev/log

unix  2      [ ]         STREAM     CONNECTED     193494930

unix  2      [ ]         STREAM     CONNECTED     193494879

unix  3      [ ]         STREAM     CONNECTED     193482882

unix  3      [ ]         STREAM     CONNECTED     193482881

unix  2      [ ]         DGRAM                    192172871

unix  2      [ ]         DGRAM                    1280  

unix  2      [ ]         DGRAM                    1223  

unix  2      [ ]         DGRAM                    1205  

unix  2      [ ]         DGRAM                    1013  


뭐 정상적으로 한가하게(?)작동하는 서버에서  netstat 상태를 보면 대충 저런 시츄에이션이 연출된다.


이런 정보에서 State 상태를 유심히 관찰할 필요성이 있는데....이건 TCP의 3 Way handshake 라는 방식으로 TCP연결이 맺어지는 것과 관련이 있다.



일단 해당 State 필드를 해석해 보자면 ...




LISTEN : 서버에 데몬이 떠서 접속 요청을 대기 또는 기다리는 상태.


SYN_SENT :로컬의 클라이언트 응용프로그램이 원격 또는 로컬 호스트에 SYN패킷을 보내어 연결을 요청한 상태.


SYN_RECEIVED : 서버가 클라이언트로부터 접속요구(SYN)를 받은 클라이언트에게 SYN/ACK으로 응답하였지만 확인 메세지를 받지 않은 상태.


ESTABLISHED : 3 way handshake 가 완료된 후 서로 연결이 되어 실제 데이터 교환이 이루어지고 있는 상태.


FIN_WATE1, CLOSE_WATE, FIN_WAIT2: 서버에서 연결을 종료하기 위해 클라이언트에게 또는 클라이언트가 서버에 종결을 요청하고 회신을 받아 종료하는 과정의 상태.


CLOSING : 흔하지는 않지만 주로 확인 메세지가 전송도중 분실된 상태.


TIME_WAIT : 연결을 종료되었지만 주로 확인 메세지가 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태.


CLOSED : 완전히 종료.





시스템 netstat 명령어

문법 : #netstat [옵션]

 

옵션 :

-r : routing table을 출력한다.

-i : 모든 네트워크 인터페이스 정보를 출력한다.

-n : 주소를 숫자로 출력한다.

-p : PID와 프로그램 이름을 출력한다.

-l : listening 상태인 소캣 정보만 출력한다.

-a : listening & non listening 소켓 모두 출력한다.

-u : udp 프로토콜을 사용하는 소켓만 출력한다.

-t : tcp 프로토콜을 사용하는 소켓만 출력한다.

ex)

#netstat -nap (열려 있는 모든 포트)

#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)

#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)

#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)

#netstat -a (연결된, 혹은 연결을 기다리고 있는 모든 포트를 출력)

#netstat -an (연결된, 혹은 연결을 기다리고 있는 목록을 IP주소로 바꿔서 보여줌)

 




포트스캔 명령어로 확인하는 방법


# TCP 포트 확인 방법

nmap -sT -p 1-65535 localhost

# UDP 포트 확인 방법

nmap -sU -p 1-65535 localhost

# 네트워크에 열린 포트 확인

nmap -sX -p 22,53,110 211.239.111.*


 



lsof 명령어로 확인하는 방법


# 모든 네트워크 소켓 확인

lsof -I



반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]