linux class 3 페이지

본문 바로가기
사이트 내 전체검색


회원로그인

linux class

서비스 운영방식(standalone /inetd(xinetd))

페이지 정보

작성자 admin 작성일15-12-23 15:23 조회167회 댓글0건

본문

서비스 운영방식 - standalone / inetd(xinetd)




*. 서비스 운영방식은 크게 두가지로 나뉜다.
standalone 방식과 inet 방식이다.

standalone 방식 - 서비스를 하려면 해당 서버가 메모리에 미리 올라와 있어야 한다.
일반적으로 여기에 해당되는 서비스는 sendmail, apache, mysql , name server, nfs 등.
이 방식으로 운영되는 서비스는 /etc/init.d/ 디렉토리 안에 있는 스크립트 파일을 보면 알 수 있다.

서비스 실행 방법
- /etc/init.d/sendmail start => sendmail 서비스 시작
/etc/init.d/sendmail stop => sendmail 서비스 종료
/etc/init.d/sendmail restart => sendmail 서비스 재 시작.

또는 servce sendmail start / service sendmail restart / service sendmail stop
*. 다른 standalone 방식의 서비스도 다 이런식으로 서비스 된다.


xinet 방식 - 이 방식의 서비스는 standalone 방식에 비하면 좀 복잡하다.
standalone 방식과 가장 다른점은 해당 서버가 클라이언트가 서비스 요청할때 그때 자동으로 올라간다는 것이다.
관리자가 서버를 올리거나 내리거나 할 필요가 없고 항상 메모리를 점유하는게 아니므로 편리하고 메모리 사용에
효율적이다.
이방식으로 운영되는 대표적인 서비스는 telnet 이나 pop3 그리고 finger 서비스이다.
이방식으로 운영되는 서비스는 /etc/xinetd.d 디렉토리의 파일을 보면 알 수 있다.

클라이언트가 telnet 으로 접속 시도할 경우

ex)
1. telnet 192.168.10.1 => 디폴트 포트 번호 23 으로 접속시도 한다.

2. xinetd 는 클라이언트가 요청하는 23번 포트가 어떤 서비스인지를 확인한다.
이때 참조하는 파일은 /etc/services 파일이다.
그 파일을 보면 23 번 포트를 사용하는 서비스는 telnet 으로 되어 있다.(기본설정)

3. 그 다음 xinetd /etc/xinetd.conf 를 참조한다. 그리고 마지막줄 includedir 이 있으면
그 디렉토리 안에 있는 모든 파일중 서비스 이름이 telnet 으로 되어 있는 파일을 찾아서
disable=no 로 되어 있으면 거기에 있는대로 텔넷 서버파일을 실행한다.

4. 클라이언트 telnet 이 서버의 telnetd 데몬과 연결이 된다.

*. 클라이언트가 telnet 접속을 끊으면 telnetd 는 메모리에서 자동으로 내려온다.
*. 다른 xinetd 방식의 서비스도 다 이런식으로 서비스 된다.


서비스 실행방법

예를 들어 telnet 서비스를 운영하려면

/etc/xinetd.d/telnet => 이 파일을 편집기로 열어서
disable = yes ====> disable = no

이렇게 변경한다음

/etc/init.d/xinetd restart 또는 service xinetd restart 이렇게 하면 된다.

*. xinetd 를 재실행하는것은 거의 모든 서버 데몬은 메모리로 올라갈때만 설정파일을 참조하기 때문이다.
xinetd 가 메모리로 올라갈때 그때 고친파일을 참조한다. 그렇지 않으면 xinetd 는 여전히 고치기 전의
내용으로 텔넷서비스를 서비스한다.


*. 당연히 부팅할때 자동으로 구동되는 데몬들은 전부 standalone 방식의 데몬이다.


inetd 데몬 프로그램은 거의 모든 유닉스 시스템에서 사용되고 있다.
그러나 redhat 리눅스 7 부터 inetd 를 확장시킨 xinetd 를 사용할 수 있다.

xinetd 는 inetd 와 비교하면 몇가지 부분이 강화되었다.

tcp, udp, rpc 서비스에 대한 접근 제어가 가능

서비스 운영시간을 지정 그 시간에만 서비스가 가능하게 할 수 있다

서비스 접속 기록 형태 세부적으로 설정할 수 있다.

Dos 공격예방을 위한 구동되는 데몬 갯수를 원하는대로 제한할 수 있다.

공식사이트 : http://www.xinetd.org

- 소스파일이나 rpm 파일을 받아서 설치할 수 있다.

아래와 같이 xinet 설치유무를 확인해보고
설치되어 있지 않으면 설치부터 해야 한다.

[root@star xinetd.d]# rpm -qa | grep xinet
xinetd-2.3.13-6
[root@star xinetd.d]#

만약 설치 안되어 있다면 rpm 이나 yum 또는 소스패키지를 내려받아 설치한다.

1. rpm 으로 설치할 경우.
씨디를 자동 마우트 또는 수동 마운트 한다음

rpm -ivh xinetd*

2. yum 으로 설치할 경우
yum install xinetd

*. yum 은 더 간편하지만 인터넷이 사용가능한 상태이어야 하며
인터넷으로 내려받아서 설치하는 것이기 때문에 인터넷 연결상태가 나쁘거나
패키지가 저장된 서버 상태에 따라서설치가 잘 안될 수 있다.

3. 공식사이트에서 소스패키지를 내려받아서 설치할 수 있다.
그러나 이것은 권장하지 않는다. 소스패키지는 설치과정이 번거롭다.
소스 패키지를 내려받아서 설치하는 경우는 세밀한 설정이나 최적화 시키기
위함이다. xinetd 는 굳이 그렇게 설치할 필요는 없다.


xinetd 데몬설정 파일

/etc/xinetd.conf

형식

Default 또는 Service service_name
{
속성 연산자 값
속성 연산자 값
....
}

ex) cat /etc/xinetd.conf

#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/


defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}

includedir /etc/xinetd.d


# => 주석(comment)

instances : 동시에 실행될 수 있는 같은 타입의 서비스. 이 숫자를 초과할 경우
해당 데몬이 더이상 메모리에 적재되지 못한다.

log_type : 로그기록 설정부분이다. SYSLOG 데몬을 통해서 로그를 남긴다는 의미
log_on_failure : 해당 서버 데몬에 로그시 실패한경우 남기게 될 로그기록.
cps : 서버로 접속하는 연결범위 지정.

includedir : 추가 설정 디렉토리 => 이 디렉토리 안에 있는 파일내용을 포함하라는 의미

ex)

[root@star xinetd.d]# cat 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
}

[root@star xinetd.d]#

socket_type : 서비스 타입이 tcp 기반이면 stream udp 기반이면 dgram 으로 설정해야 한다.
wait : no 이면 동시접속 가능. yes 이면 동시접속 불가.
user : 서버 데몬의 프로세스 소유자를 여기 적혀 있는 계정으로 한다는 의미
server : 서버파일이 있는 경로
disable : 서비스 사용가능 유무. no 이면 서비스 사용 가능, yes 이면 서비스 사용불가.
log_on_failure += USERID : 서비스 접속에 실패할경우 기존 log 설정에 접속에 실패한
사용자 id 를 포함해서 기록한다. 기존 log 설정은 /etc/xinetd.conf 파일에 설정되어 있다
only_from : 서비스를 사용할 수 있는 클라이언트를 지정하기 위한 부분.
ex) only_from 192.168.xxx.xxx/24 => 192.168.xxx.xxx/24 에서만 접속가능함.


ex2)

service telnet
{
socket_type = stream => telnet 서비스는 tcp 기반의 서비스
wait = no => 다수의 사용자가 ftp 서비스에 동시접속 가능
user = root => telnet 서버 데몬(/usr/sbin/in.telnetd)의 프로세스 소유자는 root
server = /usr/sbin/in.telnetd => telnet 서버 데몬 파일의 경로
instances = 4 => telnet 서버 구동 갯수 (최대 4개까지)
access_times = 7:00-12:00 13:00-17:00 => telnet 서비스 이용가능 시간
only_from = 192.168.10.0/24 => telnet 서비스에 접속할 수 있는 클라이언트 주소

}

*. 이 옵션들이 다 필요한 것은 아니며 여기서 생략해도 되는 것은
server_args, instances, access_time, only_from 이다.








관리자 12-06-12 12:50

61.42.166.121 답변 수정 삭제

* 데몬 스크립트 파일 예제.
#! /bin/sh
start()
{
/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
}
stop()
{
killall -9 vsftpd
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage $0 { start| stop| restart }"
esac

---------------------------------------------------
위에 소스파일을 작성하거나 복사해서 붙여 넣기 한다음
/etc/init.d/ftpd 등으로 이름을 주고
chmod 755 /etc/init.d/ftpd 를 해서 실행 권한을 줘야 한다.
그리고 테스트를 위해서는 기존의 vsftpd 스크립트 파일은 잠시
다른곳에 옮겨둔다 (예를들면 mv /etc/init.d/vsftpd /root )

그리고 runlevel 5 일때 ftp 서비스가 자동 start 되게 하려면
/etc/rc5.d 디렉토리로 이동하여
ln -s /etc/init.d/ftpd Sftpd (이런식으로 첫글자 S를 붙여주면 된다)
그러면 runlevel 5 로 부팅이 될때 vsftpd 서비스가 자동 실행된다.

댓글목록

등록된 댓글이 없습니다.


접속자집계

오늘
19
어제
62
최대
611
전체
452,978
개인정보취급방침 서비스이용약관 twoseven.kr All rights reserved.
상단으로