2.log

netstat 상태값과 옵션 정리 본문

HACKING/Bandit+

netstat 상태값과 옵션 정리

2.log 2023. 3. 26. 20:22
728x90
반응형

 

netstat (Network Statistics)

현재 서버가 다른 시스템과 어떤 서비스/포트로 연결되어 있는지 확인하는 명령어

 

$ netstat -tnl

#t : TCP
#n : Numeric(10진수)
#l : Listening

 

 

 

 

 

시스템 콘솔에 표시되는 네트워크 정보 항목

 Proto (Protocol)  프로토콜 종류 (TCP or UDP)
 Local Address  자기 자신의 IP 주소와 포트번호
 0.0.0.0 : 특정 IP 연결되어있지 않은 상태
 Foreign Address  상대 측 IP 주소와 포트번호
 0.0.0.0 : 아직 통신 시작되지 않은 상태
 State  현재 서비스 연결 상태

 

 

 

State (네트워크 서비스 연결상태) 항목

 

 

 

 

 LISTEN(window : LISTENING)  클라이언트의 접속 요청을 기다리고 있는 상태
 SYN_SENT  클라이언트가 연결 요청(SYN 신호 보냄)을 한 상태
 SYN_RECV  서버가 클라이언트로부터 접속요구(SYN)를 받아 클라이언트에게 응답(SYN/ACK) 했지만, 아직 확인   메시지(ACK)는 받지 못한 상태 
 ESTABLISHED  다른 컴퓨터와 연결된 상태
 (클라이언트가 서버의 SYN 받아서 세션이 연결된 상태)
 FIN_WAIT1  클라이언트가 서버에게 연결을 끊고자 요청하는 상태 (FIN을 보낸상태)
 FIN_WAIT2  서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태
 (서버가 클라이언트로부터 최초로 FIN 을 받은 후 클라이언트에게 ACK을 주었을 때)
 LAST_ACK  호스트가 원격지 호스트의 연결 종료 요구 승인 기다리는 상태
 (서버가 클라이언트에게 FIN을 보냈을떄의 상태)
 CLOSE_WAIT  원격의 연결 요청 받고 상위 응용프로그램 레벨로부터 연결 종료되기를 기다리는 상태

 Passive Close 하는 쪽에서 프로그램이 소켓 종료시키는 것을 기다리기 위한 상태
 가령, 소켓 프로그래밍시 TCP connection 을 close 함수로 명시적으로 끊어주지 않으면 CLSOE_WAIT 상태로 영원히 남아 있을 수 있고 이는 resource leak 으로 이어짐
 CLOSED  연결 완전히 종료된 상태
 CLOSING  확인 메시지가 전송 도중 유실된 상태
 TIME WAIT  연결은 종료되었으나 잠시 소켓 열어놓은 상태 (분실 가능성 있는 느린 세그먼트 위함, 기본값 : 120/s)

 Active Close 하는 쪽의 마지막 ACK이 유실되었을 때, Passive Close 하는 쪽은 자신이 보낸 FIN 에  대한 응답을 받지 못했으므로 FIN 재전송하고, 이때 TCP는 connection 정보를 유지하고 있어서 ACK 을 다시 보낼 수 있음

 

 

 

모드

 Active Open  connect() 를 호출하는 쪽
 SYN 세그먼트를 전송한 쪽으로 대개 클라이언트 쪽이지만 100%는 아님
 Passive Open  accept() 를 호출하는 쪽
 일반적으로 서버쪽 역할이지만 100%는 아님
 Active Close  close() 를 처음 호출한 쪽, FIN 세그먼트를 전송한 쪽
 클라이언트, 서버 관계없이 어느쪽이든 active close 할 수 있음
 Passive Close  FIN 세그먼트를 받는 쪽
 MSL (Maximum Segment Lifetime)  세그먼트가 네트워크 내에서 폐기 되기 전까지 살아남을 수 있는 시간

 

 

 

TCP flag

 ACK (Acknowledgement)  받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 or  데이터 양을 더한 것과 같은 ACK 보냄

 ACK 번호와 응답을 통해 보낸 패킷에 대한 손실 여부 판단하여 재송소아 하거나 다음 패킷 전송 함
 FIN (Finish)  세션 종료시키는데 사용됨
 보낸 사람이 더 이상 보낼 데이터 없음을 보여줌
 RST (Reset)  재설정 하는 과정이자 양방향에서 동시에 일어나는 중단작업
 비정상적인 세션 연결 끊기에 해당
 PSH (Push)  대화형 트래픽에서 사용되며 버퍼가 채워지기를 기다리지 않고 데이터 전달
 
 데이터는 버퍼링 없이 바로 위 Layer가 아닌 7 Layer의 응용프로그램으로 바로 전달
 URG (Urgent)  Urgent pointer* 가 유효한 것인지 나타냄

 * 전송하는 데이터 중 긴급히 전달해야 할 내용 있을 경우 사용 

 

 

 

옵션

 -a  모든 연결 및 수신 대기 포트 표시
 -c  현재 실행 명령을 매 초마다 실행
 -l  listen 하고 있는 포트만 보여줌
 -i  네트워크 트래픽 정보 모니터링
 -t  tcp 로 연결된 포트 보여줌
 -u  udp로 연결된 포트 보여줌
 -n  주소나 포트 형식을 숫자로 표현
 -p [프로토콜]  해당 프로토콜을 사용하고 있는 프로그램만 보여줌
 -r  라우팅 테이블 보여줌
 -s  프로토콜별 통계 정보

 

 

 

 

 

 

 

 

[참고]

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pxkey&logNo=221276188823 

 

리눅스 「netstat」 네트워크 포트(Port) 상태 확인

안녕하세요. 창작자 픽케입니다. 만약 Node.js 기반의 웹 서버를 생성하고, 데몬(Daemon) 프로세스로 실...

blog.naver.com

 

https://ktdsoss.tistory.com/282

 

[UNIX/LINUX] netstat 상태값, 옵션 정리

netstat 과 관련하여 글 올립니다.아시다시피 netstat 은 해당 명령을 수행하는 서버가 다른 시스템과 어떤 서비스 또는 포트로 연결되어 있는지를 확인하는 명령어입니다.알아두면 매우 유용한 명

ktdsoss.tistory.com

 

728x90
반응형

'HACKING > Bandit+' 카테고리의 다른 글

Insecure_Client_Initiated_Renegotiation  (0) 2023.03.28
HeartBleed 취약점에 대하여  (0) 2023.03.26
SSL/TLS 에 대하여  (0) 2023.03.25
NAS 와 NDMP에 대하여  (0) 2023.03.24
Telnet 과 SSH  (0) 2023.03.24
Comments