출처 : 대전국제IT교육센터 정성재 강사
1. xinetd란?
RedHat Linux7에서부터 제공되는 것으로 슈퍼 데몬인 inetd를 확장한 즉, eXetnd inetd를 데몬이다.
기존의
inetd는 슈퍼데몬인 inetd와 Tcp Wrapper와 관련있는 tcpd 두가지로 나뉘어 관리되었는데
xinetd는 이 두가지를
하나로 통합하여 사용한다.
2. xinetd의 역할
xinetd의
역할도 역시 기존의 inetd의 역할과 유사하다. 네트워크서비스에 대한 접근제어, login에
대한 접근제어 등을
한다.
3. xinet의 구성
(1) 환경설정파일 :
/etc/xinetd.conf
(2) xinetd에서 제공하는 서비스를 모아두는 디렉토리 : /etc/xinetd.d
=> xinetd에서 제공하는 서비스는 모두 이 디렉토리안에 파일로 나열되어 있다. 해당서비스의
설정은 해당파일에서
설정해야 한다.
4. /etc/xinetd.conf
(1) 개요: 자세한
설정은 man으로 확인하고 기본설정만 확인해보도록 하자.
(2)기본설정
#
# 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
RECORD
cps = 25 30
}
includedir /etc/xinetd.d
(3)설명
1)instances : 동시에 서비스할 수 있는 서버의 최대 개수를
지정한다. 만일 접속에 제한을 두지
않으려면 UNLIMITED로 지정하면 된다.
2)log_type
: 어떠한 형태로 로그 기록을 저장할 것인가를 지정하는 속성으로 SYSLOG와 FILE 두
형태로
사용가능하다.
ㄱ. SYSLOG : 지정된 facility에서 syslog로 로그기록이 전달된다. 이 때 사용가능한
facility
는 daemon, auth, authpriv, user, local0~7이 있으며, 가능한
레벨수준으로는
emerg, alert!, crit, err, warnning, notice, info,
debug등이 있다. 레벨수준이 지
정되지 않았을 때는 info수준으로 지정된다.
-사용예 :
SYSLOG syslog_facility [syslog_level]
ㄴ. FILE: 지정된 크기를 가진 파일명에 로그 기록이
저장된다. 파일크기는 soft limit와 hard
limit 두 옵션을 선택적으로 사용하여 지정할 수 있는데,
soft limit에서 지정된 크기
의 파일에 로그가 기록되며, 이 값이 초과하게 되면 경고와 같은 수준의
메시지가 전
달되며, hard limit 값이 초과할 경우에는 문제 있는 서비스에 대한 로그를
저장하지
않고 이에 대한 정보만을 기록하게 된다.
-사용예 : FILE soft_limit
[hard_limit]
3)log_on_success : 서버가 시작될 때와 끝날 때 기록될 것을 지정한다. 이 속성에는 5가지의
값
을 조합하여 설정할 수 있다.
-속성값
PID : xinetd
프로세스 ID
HOST : 원격 호스트의 IP
USERID : 원격 사용자의 ID
EXIT : 서비스가 빠져 나갈 때의 상태
DURATION : 서버 세션(session)지속 상태
4)log_on_failure : 서버가 리소스 부족으로 시작될 수 없거나 설정 파일내의 규칙에 의한
접근이
거부되었을 때 기록될 값들을 지정하는 속성이다.
-속성값
HOST : 원격의 호스트의 아이피주소
USERID : 원격 사용자 ID]
ATTEMPT : 실패한
시도가 있을 경우
RECORD : 클라이언트에 대한 가능한 정보
5) cps : 초당 요청받은 수에 대한 제한
설정이다.
ㄱ. 기본구성
cps = 초당_요구수 초당요구수_이상_발생시_제한시간
ㄴ. 사용예
cps = 25 30
=> 초당 요구가 25개
이상될 경우에 30초동안 접속 연결을 중단한다.
6)only_from: 특정서비스를 이용 가능한 원격호스트를 설정한다. 이 속성에
값이 주어지지 않으면
모든 접속이 허용되지 않는다. 서버에 접속이 가능한 원격 호스트는 도메인이
아닌
아이피주소로 지정한다. 이 때 설정되는 IP주소형태는 IP주소(192.168.0.1)나 또는
네트워크 주소/넷마스크(192.168.0.24)형태로 지정가능하다.
7)per_source :
똑같은 IP주소로 로컬서비스에 접속할 수 있는 최대 접속수를 지정해 준다. 무제
한 접근을 허용하려면
UNLIMITED로 설정한다.
8)enable : enable속성은 실행 가능한 서비스의 목록을 표시할 수 있게 한다. 이 속성에서
나열된
서비스명만 실행 가능하며 그렇지 않은 서비스들은 실행되지 않는다. 그러나,
disable
속성과 DISABLE플래그가 존재할 경우 이 속성은 무시된다.
9)no_access: 서버
서비스를 이용하지 못하도록 서버에 접근하지 못하게 할 원격 호스트의 주소를
지정해준다.
10)disable: 서비스 값들이 실행되지 못하도록 지정한다. enable 속성과 같이 존재할 경우 enable
속성이 무시되어 실행되지 않는다.
11)includedir /etc/xinetd.d : 각각 해당 서비스에 대한 지정을
/etc/xinetd.conf에서 하지 않고
해당서비스마다 하나의 파일로 지정할
때 쓴다. 이 속성을 사용할
경우 xinetd.conf에서는 해당
service를 설정할 수 없다.
5. 해당 service section에서 사용되는 주요 속성과
속성값
1)service telnet : service속성으로 설정하고자 하는 서비스의 이름을 지정해준다. 여기서
지정해
주는 서비스들은 /etc/services파일 리스트에 있어야 한다.
2)disable=yes : 해당 서비스가 실행되지 못하도록 설정한다. 해당서비스를 하지 않거나 httpd와
같이 standalone상태로 데몬이 작동하는 경우에 속성값을 yes로 지정하고,
teln
et이나 POP3처럼 항상 서비스가 작동하도록 하기위해서는 속성값을 no로
지정해야
한다.
3)flags=REUSE
ㄱ. 속성값
a.
REUSE : 서비스 소켓에 SO_REUSEADDR플래그를 설정하도록 한다.
b. INTERCEPT : 패킷이나 허용된 접속을
가로채어 허가된 위치에서 접속하는지 인증하고자 할
때 사용한다.
c. NORETRY :
프로세스가 새롭게 생기지 못할 경우 재시도하지 못하도록 한다.
d. IDONLY : 원격호스트가 원격사용자를 인증할 때만 접속을
허용한다. 이 플래그는 접속기반
서비스에 적용되며, USER log옵션을 사용하지 않을 경우 효과를 내지
못한다.
e. NAMEINARGS : 서버가 작동될 때 서버내에 지정한 것과 같이 server_args내의 첫번째 인수가
arg[0]이 되도록 하는 플래그이다. 이 플래그는 서버내에 tcpd를 넣어 tcpd를
사용할 수 있게 하고, inetd처럼 server-args내에 서버이름을 넣을 수 있게
한
다.
f. NODELAY : TCP서비스에 이 플래그를 설정하면
TCP_NODELAY플래그가 소켓에 설정된다. 이 플
래그는 TCP서비스에 한해서 적용된다.
g. DISABLE : 서비스가 실행되지 않게 한다.
h. KEEPALIVE : TCP서비스에 이 플래그가 설정되면
SO_KEEPALIVE소켓 플래그가 소켓에 설정된다.
이 플래그도 TCP서비스에 한해서
작용한다.
4)protocol = tcp: 서비스가 사용한 프로토콜을 설정한다. 이 프로토콜은 /etc/protocols내에
있
어야 한다. 이 속성을 지정하지 않으면 서비스가 사용하는 기본 프로토콜을
사용한다.
5)socket_type = stream
ㄱ.
속성값
a. stream : stream기반의 서비스
b. dgram : dgram기반의 서비스
c. raw : 아이피에 직접 접근을 요하는 서비스
d. seqpacket : 신뢰성있는 연속적인 데이터그램 전송을 요구하는
서비스
6)wait = no : 서비스가 단일 쓰레드(single thread)인지 다중쓰레도(multi-thread)를 결정하는
플래그로 yes인 경우는 단일 쓰레드로 실행되어 오직 하나의 서비스만 작동하게
하
며, no인 경우는 다중 쓰레드로 서버가 새로운 서비스 요청을 받아 들이게 된다.
7)user
= root : 서버 프로세스를 실행할 수 있는 사용자의 ID를 나타내는 것으로 슈퍼유저일 경
우에만
가능하다.
8)server = /usr/sbin/in.telnetd : 해당서비스를 실행할 데몬프로그램을 지정한다.
9)access time = 01:00-07:00 : 지정된 시간에서만 서비스를 이용할 수 있게 해준다.
10)redirect =
192.168.1.10 23 : TCP서비스를 다른 호스트에게 이양하고자 할 때 사용한다.
즉
192.168.1.1의 FTP서비스를 192.168.1.10호스트에게
FTP서비스를
할 수 있도록 해주는 설정이다. 설정방법은 "IP_Address
port"이
다.
11)port = 8080 : 서비스 포트를
명시해준다. 이 포트는 /etc/services파일 목록내의 서비스포트와
일치해야 한다.
12)nice=10 : 서버의 예약우선권을 나타내는 속성으로 -20~19까지의 범위를 갖는다. -20은 가장
빠른 우선권을 나타내며, 19는 가장 느린 우선권을 갖는다.