강좌
클라우드/리눅스에 관한 강좌입니다.
네트워크 분류

시스템이 응답 가능한 서비스는 어떤 것들이 있는가?

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

시스템이 응답 가능한 서비스는 어떤 것들이 있는가?

 

 

 

 

 

우리는 netstat을 이용하여 시스템의 연결성을 확인할 수 있다고 이미 배웠다.

 

 

 

 , 시스템의 개별 서비스들과 개별 연결들의 상태를 표시하고 있는 항목이 있는데 그것은 바로 netstat의 결과들 가운데 “State”라는 항목값이다.

 

 

 

 “State”라는 항목값에는 다음과 같은 값들이 올 수 있다.

 

 

 

 매우 중요한 정보이므로 결코 가볍게 보지말자.

 

netstat의 실행결과로 출력되는 State항목의 다음 값들의 의미를 정확하게 알아야만 우리가 알고자 하는 시스템의 연결상태정보들은 쉽게 파악할 수 있기 때문이다.

 

 

 

 

 

. 비어있음 : 연결되어있지 않음.

 

 

. FREE     : 소켓은 존재하지만 할당되어 있지 않음.

 

 

. LISTENING       : 외부 연결요구에 응답준비가 되어 있는 상태.

 

 

. CONNECTING      : 연결이 막 이루어진 상태.

 

 

. DISCONNECTING   : 연결해제되고 있는 상태.

 

 

. UNKNOWN : 알수 없는 연결 즉, 알려지지 않은 연결상태.

 

 

. LISTEN   : 연결가능하도록 관련데몬이 떠있으며 연결이 가능함을 나타냄.

 

. SYS-SENT        : 연결을 요청한 상태.

 

. SYN_RECEIVED    : 연결요구에 응답을 한후에 확인메시지를 기다리고 있는 상태.

 

. ESTABLISHED     : 앞의 3단계 연결과정이 모두 종료된 후에 연결이 완료된 상태.

 

. FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 :연결종료를 위해 종료요청을 받은 후의 종료과정임.

 

. CLOSING         : 전송된 메시지가 유실된 상태를 나타냄.

 

. TIME-WAIT       : 연결종료 후에 한동안 유지하고 있는 상태.

 

. CLOSED          : 연결이 완전히 종료됨.

 

 

 

, netstat으로 확인한 각각의 개별 연결상태는 위의 여러가지 값들 가운데 하나의 값을 가진다.

 

 

 

 그리고 위의 값들 가운데 “LISTEN”이라는 것은 현재 시스템이 응답가능하며 서비스 준비가 되어있는 상태 즉, 해당 서비스의 요구를 대기하고 있는 상태임을 나타내고 있는 것이다.

 

 

 

 

 

따라서 필요할 경우에 이들 값들을 다음과 같은 방법으로 확인해 볼 수 있다.

 

 

 

 아래 사용방법에서 “State항목값에는 위의 여러가지 항목들 가운데 하나를 지정하면 된다.

 

 

 

 

 

       사용방법 : netstat -an | grep “State항목값

 

 

 

 

그러면 현재 시스템이 위의 여러가지 항목들 가운데 특정 상태에 있는 연결상태만을 확인할 수 있다는 의미가 된다.

 

 

 

 따라서 다음 예는 시스템에서 LISTEN상태(응답가능상태)에 있는 각 포트들을 확인하는 예이다.

 

 

 

 이 방법은 서버보안을 위하여 시스템관리자가 주기적으로 반드시 점검해봐야하는 사항들이다.

 

 

 

 , 불필요한 포트들이 서버에서 열려있다면 그 포트사용을 중지해야 한다.

 

 

 

 그리고 평소에 보이지 않은 포트가 열려있다면 해킹이 되지않았나 의심해봐야 한다.

 

 

 

 

 

[root@sulinux ~]#netstat -an | grep LISTEN

tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN     

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN     

tcp        0      0 127.0.0.1:953               0.0.0.0:*                   LISTEN     

tcp        0      0 ::1:53                      :::*                        LISTEN     

tcp        0      0 :::22                       :::*                        LISTEN     

tcp        0      0 ::1:953                     :::*                        LISTEN     

unix  2      [ ACC ]     STREAM     LISTENING     6691   @/tmp/fam-root-

unix  2      [ ACC ]     STREAM     LISTENING     5026   /var/run/audispd_events

unix  2      [ ACC ]     STREAM     LISTENING     6713   /tmp/.gdm_socket

unix  2      [ ACC ]     STREAM     LISTENING     5150   /var/run/acpid.socket

unix  2      [ ACC ]     STREAM     LISTENING     5338   /var/run/avahi-daemon/socket

unix  2      [ ACC ]     STREAM     LISTENING     5372   @/var/run/hald/dbus-VBc8dYKxB8

unix  2      [ ACC ]     STREAM     LISTENING     5371   @/var/run/hald/dbus-tNxnwr16IS

unix  2      [ ACC ]     STREAM     LISTENING     5124   /var/run/dbus/system_bus_socket

unix  2      [ ACC ]     STREAM     LISTENING     6742   /tmp/.X11-unix/X0

unix  2      [ ACC ]     STREAM     LISTENING     7183   /tmp/ssh-JBMkhu2184/agent.2184

[root@sulinux ~]#

 

 

 

 

위의 결과에서 현재 서버에서 응답가능한(LISTEN상태인, 열려있는) 포트들은 53번포트, 25번포트, 953번포트등임을 알 수 있다.

 

 

 

 이 포트들이 어떤 서비스를 하기 위한 포트들인가를 확인하려면 /etc/services파일을 확인해 보면 잘 알 수 있다.

 

 

 

 , /etc/services파일에는 해당 포트가 어떤 서비스에 사용되는가를 정의해둔 텍스트 파일이므로 그 내용을 보면 금방 알 수 있다.

 

 

 

 

 

그리고 다음은 현재 시스템이 특정 IP주소의 시스템과 연결된 정보만을 netstat으로 확인하는 예이다.

 

 

 

 , 현재 시스템이 192.168.0.150번 시스템과 연결된 정보만을 확인한 예이다.

 

 

 

 

 

[root@sulinux ~]#netstat -an | grep 192.168.0.150

tcp        0     52 ::ffff:192.168.0.250:22     ::ffff:192.168.0.150:1543   ESTABLISHED

[root@sulinux ~]#

 

 

 

 

, 위의 결과행에서 의미하는 각 항목의 의미는 다음과 같다.

 

 

 

tcp            : 사용 프로토콜

 

192.168.0.250:22      : 서버IP주소(192.168.0.250) 및 서버에서 사용한 포트번호(22)

 

192.168.0.150:1543 : 클라이언트IP주소(192.168.0.150) 와 포트번호(1543)

 

ESTABLISHED   : 연결상태(위에서 설명한 항목임.)

 

 

 

, 위의 결과를 보면 하나의 연결이라도 상세한 연결상태를 확인할 수 있다는 것을 알 수 있다.

 

 

 

 이제 여러분과 필자는 netstat을 이용하여 현재 시스템의 외부 연결상태에 대한 세션연결상태를 확인할 수 있고 또한 그 연결이 어떤 의미를 가졌는가를 알 수 있다.

 

 

 

 그리고 특정 연결상태만을 확인해 보는 방법도 잘 알게 되었다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,032 명
  • 현재 강좌수 :  35,772 개
  • 현재 접속자 :  139 명