서버/Linux III 2016. 3. 14. 15:17

Linux III - 05. 리눅스 서비스 운영 방식(Standalone & xinetd)

 

 

login as: root
root@192.168.1.100's password:
Last login: Mon Mar 14 15:03:45 2016 from 192.168.1.1
[root@main /root]#

 

login as: root
root@192.168.1.101's password:
Last login: Mon Mar 14 10:43:51 2016 from 192.168.1.1
[root@clone1 /root]#

 

 

 

1. 서비스 운영 방식 2가지 유형

 

 Standalone

  - 부팅될때 자동으로 실행되는 서비스들이 사용함

  - 서버는 서비스 데몬을 준비한 상태로 운영함

  - 서비스가 메모리에 항상 상주해야함

  - 응답 속도가 빠르다.

  - '/etc/init.d' 스크립트 파일을 참조함

  - 서비스 요청이 많은 경우 효율적이다.

  - Ex) sendmail, apache, mysql , name server, nfs

 Xinetd

  - 서버는 클라이언트 연결시에만 서비스를 활성화하여 운영함

  - 클라이언트 연결시에만 서비스가 메모리에 상주함

  - 응답 속도가 standalone 보다 느리다.

  - '/etc/xinetd.d' 파일을 참조함

  - 서비스 요청이 적은 경우 효율적이다.

  - Ex) telnet, pop3, finger

 

 

 

 

 

2. Standalone 방식

 

클라이언트가 서버에게 서비스 요청을 하기 이전에 서버에서 해당 서버가 반드시 실행중인 상태가 되어야 한다. 즉, 데몬이 떠 있으면서 서비스하는 방식을 의미한다.

 

대부분의 서비스들은 Standalone 방식으로 운영되며, 이 방식으로 운영되는 서비스들은 다음과 같이 '/etc/init.d' 디렉토리에 있는 스크립트 파일로 관리한다.

 

[root@main /root]# ls /etc/init.d

 

 

Standalone 방식을 사용하는 서비스 : sendmail, apache, mysql , name server, nfs 기타 등등

 

 

Ex) httpd 서비스 확인

 

 - httpd 데몬 확인 및 httpd 데몬 서비스 시작


[root@main /root]# pgrep -lf httpd

 

[root@main /root]# service httpd restart

httpd 를 정지 중:                                          [  OK  ]

httpd ()를 시작 중: httpd: Could not reliably determine the server's fully qualified domain name, using 172.20.1.1 for ServerName

                                                          [  OK  ]


              

 

[root@main /root]# pgrep -lf httpd
3233 /usr/sbin/httpd
3236 /usr/sbin/httpd
3237 /usr/sbin/httpd
3238 /usr/sbin/httpd
3239 /usr/sbin/httpd
3240 /usr/sbin/httpd
3241 /usr/sbin/httpd
3242 /usr/sbin/httpd
3243 /usr/sbin/httpd

 

 

 - httpd 데몬 동작 확인

 

 

 Xwindow -> 터미널 실행 -> firefox & -> http://172.20.1.1 접속 확인

 

 

 

 

 - httpd 데몬 서비스 정지

 


[root@main /root]# service httpd stop
httpd 를 정지 중:                                          [  OK  ]


[root@main /root]# pgrep -lf httpd

 

 

 - httpd 데몬 동작 확인

 

 

Xwindow -> 터미널 실행 -> firefox & -> http://172.20.1.1 접속 확인

 

 

 

 

 

3. xinet 방식

 

 

클라이언트가 서버에게 요청시 서버에서 자동으로 서비스가 활성화된다. 즉, Standalone 방식처럼 서버에 데몬이 떠있는 것이 아니라, 클라이언트 요청을 수신하면 해당 서비스가 자동으로 실행되는 방식을 의미한다.

 

관리자가 서버에서 서비스를 올리거나 내리는 작업을 할 필요 없으며, 서비스가 항상 메모리를 점유하지 않기 때문에 메모리 사용도 효율적으로 운영된다.

 

이 방식으로 운영되는 서비스들은 다음과 같이 '/etc/xinetd.d' 디렉토리에 있는 파일로 관리한다.

 

[root@main /root]# pgrep -fl xinetd
3314 xinetd -stayalive -pidfile /var/run/xinetd.pid

[root@main /root]# ls /etc/xinetd.d/

 

 

xinet 방식을 사용하는 서비스 : telnet, pop3, finger

 

 

Ex) Telnet 서비스 확인

 

 - main은 텔넷 클리이언트가 접속되면, '/usr/sbin/in.telnetd'  텔넷 서비스를 메모리에 올려 텔넷 접속을 허용한다.

 

[root@main /root]# ls /usr/sbin/in.telnetd
/usr/sbin/in.telnetd

 

[root@main /root]# pgrep -fl in.telnetd        텔넷은 xinetd 방식이기 때문에 평상시 메모리에 올라가 있지 않는 상태이다.
[root@main /root]#

 

 

 - clone1은 '/etc/services' 파일에서 텔넷 포트 번호를 검색한다.

 - 또한, 'etc/hosts' 파일에서 IP 주소를 검색하여 main으로 텔넷 접속을 실시한다.


[root@clone1 /root]# grep -w 23 /etc/services
telnet          23/tcp
telnet          23/udp

 

[root@clone1 /root]# grep -w main /etc/hosts
172.20.1.1      main main.com

 

[root@clone1 /root]#
[root@clone1 /root]# telnet main
Trying 172.20.1.1...
Connected to main.
Escape character is '^]'.
CentOS release 6.6 (Final)
Kernel 2.6.32-504.el6.x86_64 on an x86_64
login:

 

 

 

 - main에서 실행중인 xinetd는 '/etc/services' 파일을 검색하여 클라이언트가 요청한 포트 번호를 확인한다.

 - 포트 번호를 확인한 이후 해당 서비스 설정 사항을 확인한다.

 

[root@main /root]# grep -w 23 /etc/services
telnet          23/tcp
telnet          23/udp

 

 

 

 - main는 '/etc/xinetd.conf' 파일을 참조한다.

 - 만약, '/etc/xinetd.conf' 파일에 'includedir'이 있으면 '/etc/xinetd.d' 디렉토리 안에 있는 모든 파일을 참조한다.

 - 그럼 main는 모든 파일 중에 서비스 이름이 'telnet'인 파일을 찾아서 xinetd 데몬 텔넷 서버를 실행한다.


[root@main /root]# grep includedir /etc/xinetd.conf      (#cat /etc/xinetd.conf | grep includedir)

includedir /etc/xinetd.d

 

[root@main /root]# ls /etc/xinetd.d
chargen-dgram   daytime-stream  echo-dgram   tcpmux-server  time-stream
chargen-stream  discard-dgram   echo-stream  telnet
daytime-dgram   discard-stream  rsync        time-dgram

 

 

 

 - 이때, '/etc/xinetd.d/telnet' 파일에 disable 이 'no'로 되어 있어야지만, 텔넷 접속을 허용 한다.

 

[root@main /root]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no
}

 

 

 

 - 만약, 'yes'로 되어있다면, vi 편집기를 이용하여 'no'로 수정한 다음, 'service xinetd restart'를 실시한다.

 

[root@main /root]# service xinetd restart
xinetd 를 정지 중:                                         [  OK  ]
xinetd (을)를 시작 중:                                     [  OK  ]

 

 

 

 - main은 xinetd에 의해서 텔넷 서비스 설정 파일을 이용하여 서버 옵션 설정값을 확인하여 서비스를 실행한다.

 

[root@main /root]# ls /usr/sbin/in.telnetd
/usr/sbin/in.telnetd

 

[root@main /root]# pgrep -fl in.telnetd
3553 in.telnetd: clone1

 

 

 

 - clone1이 main으로 'in.telnetd'로 로그인한다.


[root@clone1 /root]#
[root@clone1 /root]# telnet main
Trying 172.20.1.1...
Connected to main.
Escape character is '^]'.
CentOS release 6.6 (Final)
Kernel 2.6.32-504.el6.x86_64 on an x86_64
login: user1
Password: centos
Last login: Tue Mar 15 11:25:47 from clone1
[user1@main /home/user1]$

 

 

 

 - clone1에서 텔넷 접속을 해지한다.

 

[user1@main /home/user1]$ exit
                              logout
Connection closed by foreign host.
[root@clone1 /root]#

 

 

 

 - clone1이 텔넷 접속을 해지하면, main은  메모리에 올라간 telnetd 서비스를 비활성화시킨다. 

 

[root@main /root]# pgrep -fl in.telnetd
[root@main /root]#

 

 

 

 

4. xinetd 방식 특징

 

xinetd는 예전 inetd 방식에서 다음과 같은 기능이 추가되었다. 

- TCP, UDP, RPC 서비스에 대한 접근 제어가 가능하다. 
- 서비스 운영시간을 정해두고 특정 시간에만 접속 및 연결이 가능하다.
- 서비스 접속 기록 형태를 세부적으로 설정할 수 있다. 
- 일부 DOS 공격을 방어할수 있도록 구동되는 데몬 갯수를 제한할 수 있다. 

 

  
[root@main /root]# vi /etc/xinetd.d/telnet

 

  1 # default: on
  2 # description: The telnet server serves telnet sessions; it uses \
  3 #   unencrypted username/password pairs for authentication.
  4 service telnet
  5 {
  6     flags       = REUSE
  7     socket_type = stream <- TCP : stream, UDP : dgram
  8     wait        = no <- 동시 접속 가능, yes : 동시 접속 불가능
  9     user        = root <- 프로세스 소유자
 10     server      = /usr/sbin/in.telnetd <- 서버 파일 경로
 11     log_on_failure  += USERID <- 서비스 접속 실패시 사용자 계정을 포함하여 로그 저장
 12
 13     instances   = 4 <- 텔넷 접속 허용 개수(텔넷 서버 구동 개수)
 14     access_times= 9:00-18:00 <- 접속 가능 시간
 15     only_from   = 172.20.0.0/16 <- 접속 가능한 클라이언트 IP 서브넷
 16
 17     disable     = no <- 접속 허용, yes : 접속 불가능
 18 }
 19
 

: q!

 

 

 

 

5. standalone & xinetd 서비스 목록 확인

 

[root@main /root]# chkconfig --list


NetworkManager  0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
abrt-ccpp       0:해제  1:해제  2:해제 3:활성  4:해제   5:활성  6:해제
abrtd           0:해제  1:해제  2:해제 3:활성  4:해제   5:활성  6:해제
acpid           0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
atd             0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
auditd          0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
autofs          0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
blk-availability        0:해제  1:활성 2:활성  3:활성   4:활성  5:활성  6:해제
bluetooth       0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
certmonger      0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
cpuspeed        0:해제  1:활성  2:활성 3:활성  4:활성   5:활성  6:해제
crond           0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
cups            0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
dnsmasq         0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
dovecot         0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
firstboot       0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
haldaemon       0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
htcacheclean    0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
httpd           0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
ip6tables       0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
ipsec           0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
iptables        0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
irqbalance      0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
kdump           0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
lvm2-monitor    0:해제  1:활성  2:활성 3:활성  4:활성   5:활성  6:해제
mcelogd         0:해제  1:해제  2:해제 3:활성  4:해제   5:활성  6:해제
mdmonitor       0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
messagebus      0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
mysqld          0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
netconsole      0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
netfs           0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
network         0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
nfs             0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
nfslock         0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
nmb             0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
ntpd            0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
ntpdate         0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
oddjobd         0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
openct          0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
pcscd           0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
portreserve     0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
postfix         0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
psacct          0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
quota_nld       0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
rdisc           0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
restorecond     0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
rngd            0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
rpcbind         0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
rpcgssd         0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
rpcsvcgssd      0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
rsyslog         0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
saslauthd       0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
smartd          0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
smb             0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
spamassassin    0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
spice-vdagentd  0:해제  1:해제  2:해제 3:해제  4:해제   5:활성  6:해제
sshd            0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
sssd            0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
svnserve        0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
sysstat         0:해제  1:활성  2:활성 3:활성  4:활성   5:활성  6:해제
udev-post       0:해제  1:활성  2:활성 3:활성  4:활성   5:활성  6:해제
vmware-tools    0:해제  1:해제  2:활성 3:활성  4:활성   5:활성  6:해제
vmware-tools-thinprint  0:해제  1:해제 2:활성  3:활성   4:활성  5:활성  6:해제
vsftpd          0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
wdaemon         0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
winbind         0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
wpa_supplicant  0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제
xinetd          0:해제  1:해제  2:해제 3:활성  4:활성   5:활성  6:해제
ypbind          0:해제  1:해제  2:해제 3:해제  4:해제   5:해제  6:해제

 

xinetd 기반의 서비스:
        chargen-dgram:  해제
        chargen-stream: 해제
        daytime-dgram:  해제
        daytime-stream: 해제
        discard-dgram:  해제
        discard-stream: 해제
        echo-dgram:     해제
        echo-stream:    해제
        rsync:          해제
        tcpmux-server:  해제
        telnet:         활성
        time-dgram:     해제
        time-stream:    해제


 

 

 

 

6. 'setup' 메뉴를 이용한 서비스 활성화 및 해지

 

[root@main /root]# setup

 

시스템 서비스 -> 엔터

 

 

 

서비스 목록 확인 및 설정/해지 가능 -> 취소 -> 엔터

 

 

 

종료 -> 엔터

 


 

Posted by 김정우 강사(카카오톡 : kim10322)
,


Q