[리눅스] Linux xinetd(슈퍼데몬) 설치 및 설정

반응형

안녕하세요. 이번 시간에는 꽤나 중요한 내용을 가지고 왔습니다. 

바로 리눅스 xinetd 슈퍼데몬 관련된 내용인데요. 우리가 자주 사용하고 있는 서비스인 FTP, Telnet, SSH, HTTP 등은 xinetd라는 슈퍼데몬에 의해 동작됩니다. 그래서 xinetd 설치 및 설정 과정 설명에 앞서 개념부터 잡고 가시면 내용을 보다 더 이해하기 쉽고 좀 더 전문성 있는 엔지니어로 다가갈 수 있는 내용 중 하나라고 생각합니다. 자 그럼 시작해볼까요?

 

 

# xinetd 슈퍼데몬 이해하기

- 데몬을 관리하는 데몬이며, 흔히 슈퍼데몬이라고 합니다.

- inetd의 후속 버전입니다.

구체적으로 기존의 슈퍼데몬인 inetd에 비해 향상되고 보완된 점은 아래와 같습니다.

  1) 보다 효율적인 리소스 관리가 가능하다.

  2) 보안성 문제를 극복하기 위해 서비스별로 다양하게 설정할 수 있는 옵션이 있다.

  3) 서비스별 접근제어와 관련되어 TCP Wrapper 기능뿐만 아니라 서비스별 접근제어가 가능하다.

  4) 접속 성공 및 실패에 대한 완벽한 로그가 기록된다.

 

 

# 깨알 지식 소개

- Standalone 방식 

  : FTP, Telnet, SSH, HTTP 등과 같은 다양한 서비스들의 프로세스(데몬) 동작 방식에는 공통점이 있습니다. 현시점에서 서비스를 제공하는 프로세스를 제외하고 그 외는 전부 클라이언트의 접속 요청이 있을 때까지 대기하다가 서비스 요청이 오면 처리하기 위해 프로세스를 실행하는 공통점이 존재합니다.

 

   그래서 서비스별로 개별적인 프로세스(데몬)가 존재하고, 대기하고, 동작하는 방식으로 서비스 속도가 빠른 장점이 있지만, 서버 리소스도 많이 점유하는 단점이 있습니다.

 

- inet(xinetd) 방식

   : 슈퍼 데몬을 이용해 개별적인 서비스 요청 건에 관련된 건 슈퍼데몬이 모두 처리하므로 속도가 느린 단점이 있지만, 서버 리소스를 보다 효율적으로 사용할 수 있는 장점이 있습니다.

 

 

# xinetd 설치 여부 확인

[root@Eloquence ~]# rpm -qa | grep xinetd*
[root@Eloquence ~]#

설치가 되어 있지 않은 상태

 

# 설치 가능한 xinetd 패키지 목록 확인

[root@Eloquence ~]# yum list xinetd*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
Available Packages
xinetd.x86_64                        2:2.3.15-13.el7                        base

 

# xinetd 설치

[root@Eloquence ~]# yum -y install xinetd.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.kakao.com
 * extras: mirror.kakao.com
 * updates: mirror.kakao.com
Resolving Dependencies
--> Running transaction check
---> Package xinetd.x86_64 2:2.3.15-13.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch            Version                    Repository     Size
================================================================================
Installing:
 xinetd          x86_64          2:2.3.15-13.el7            base          128 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 128 k
Installed size: 261 k
Downloading packages:
xinetd-2.3.15-13.el7.x86_64.rpm                            | 128 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 2:xinetd-2.3.15-13.el7.x86_64                                1/1
  Verifying  : 2:xinetd-2.3.15-13.el7.x86_64                                1/1

Installed:
  xinetd.x86_64 2:2.3.15-13.el7

Complete!

 

# xinetd 설치 여부 확인

[root@Eloquence ~]# rpm -qa | grep xinetd*
xinetd-2.3.15-13.el7.x86_64

 

 

# xinetd 주 설정 파일은 /etc/xinetd.conf 입니다. 

xinetd.conf 파일에는 default 설정 값이 저장되어 있습니다. 서비스별 개별적인 설정이 필요한 경우 /etc/xinetd.d/ 밑에

서비스별 설정 파일을 수정하면 됩니다.

 

[root@Eloquence ~]# vi /etc/xinetd.conf
{
# The next two items are intended to be a quick access place to
# temporarily enable or disable services.
#
#       enabled         =
#       disabled        =

# Define general logging characteristics.
        log_type        = SYSLOG daemon info  // 'syslogd' 데몬에 의해 /var/log/ 디렉토리에 로그를 기록
        log_on_failure  = HOST  // login 실패 시 로그에 호스트 이름 기록
        log_on_success  = PID HOST DURATION EXIT  // login 성공 시 로그에 PID(프로세스ID), HOST(해당호스트이름), DURATION(접속 유지시간), EXIT(접속 종료시간)를 기록

# Define access restriction defaults
#
#       no_access       =
#       only_from       =
#       max_load        = 0
        cps             = 50 10  // 초당 최대 연결 개수 50, 초당 연결 개수 초과 시 일시적으로 중지 후 재시작까지 10초 대기
        instances       = 50  // 동시에 서비스할 수 있는 서버 개수 50대 (50대의 클라이언트까지만 서비스 가능함)
        per_source      = 10  // 동일한 IP 출발지 클라이언트의 최대 서비스 연결 개수 10개

# Address and networking defaults
#
#       bind            =
#       mdns            = yes
        v6only          = no

# setup environmental attributes
#
#       passenv         =
        groups          = yes
        umask           = 002

# Generally, banners are not used. This sets up their global defaults
#
#       banner          =
#       banner_fail     =
#       banner_success  =
}

includedir /etc/xinetd.d  // xinetd를 동작할 때 등록된 서비스들이 정의된 경로 즉, 서비스별 설정은 앞서 말씀드린 바와 같이 /etc/xinetd.d/ 밑에 각 서비스 설정 파일에서 수정하면 됩니다.

 

 

# 데몬 상태 확인

[root@Eloquence ~]# ps -ef | grep xinetd*
root      1747  1313  0 02:31 pts/0    00:00:00 grep --color=auto xinetd*

현재 데몬이 실행되고 있지 않습니다.

 

# 데몬 실행

[root@Eloquence ~]# ps -ef | grep xinetd*
root      1757     1  0 02:32 ?        00:00:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
root      1759  1313  0 02:32 pts/0    00:00:00 grep --color=auto xinetd*

지금까지 리눅스 xinetd 설치 방법에 대해서 살펴봤습니다. 다음 포스팅에서는 xinetd 슈퍼데몬에 의해 동작되는 telnet과 ftp 서비스 관련 내용으로 찾아뵙겠습니다. 감사합니다.

반응형

댓글

Designed by JB FACTORY