320x100
320x100

 

chapter 7. 슈퍼데몬

 

슈퍼데몬 : 다른 데몬을 관리하고 제어하는 역할의 inetd 데몬

 

 

inetd

: 사용자에 요청이 있을 때 해당 데몬을 불러와 메모리에 상주시키는 방식.

: /etc/inetd.conf를 통해 telnet, rlogin, rsh, tftp, ftp 등 네트워크 서비스 제어

: 접근 제어기능 미제공

 

 

tcpwrapper

: tcpd 데몬을 통해 inetd에 의해 수행되는 서비스들의 접근제어를 제공하는 프로그램

: telnet, ftp, rlogin, rsh 등을 감시하고 필터링

: sshd, vsftpd, smbd, gdm 등의 일부 단독 데몬에 대한 접근제어도 가능

: /etc/hosts.allow 파일과 /etc/hosts.deny 파일을 읽어들여 제어

 

 

/etc/hosts.allow /etc/hosts.deny 설정법

daemon_list : client_list [ : shell_command ]

ㆍ줄 바꿈은 엔터가 아닌 \으로. 빈줄이나 #은 주석 처리

 

daemon_list : 한 개 이상의 데몬 및 프로세스, 예약어 기재

 

 

 

/etc/hosts.allow /etc/hosts.deny 예약어

ALL : 모든 서비스 또는 모든 호스트

LOCAL : 같은 도메인에 있는 호스트. “.”을 포함하지 않는 모든 호스트

KNOWN : 이름이 KNOWN인 호스트 혹은 이름(주소)을 알고 있는 호스트

UNKNOWN : 이름이 UNKNOWN인 호스트 혹은 이름(주소)을 모르는 호스트

PARANOID : 호스트명과 주소가 일치되지 않는 호스트

A EXCEPT B : 리스트 A에서 B를 제외한 리스트

client_list : 한 개 이상의 호스트 이름, 주소, 패턴 혹은 예약어 사용가능.

ex) 192.168.1

192.168.1.0/255.255.255.0

.example.com

ex)

vi /etc/hosts.allow

ALL : localhost, .posein.org

in.telnetd : 192.168.5.13

in.telnetd@192.168.1.254: 192.168.1.

sshd : .posein.com EXCEPT cracker.posein.com

ALL EXCEPT vsftpd : .ihd.or.kr EXCEPT bad.ihd.or.kr

in.telnetd, vsftpd : 203.247.40., hnu.kr

ALL : ALL : DENY # hosts.deny대신 사용. 위 설정된 호스트 외 전부 불허용

 

shell_command : 프로세스의 실행방식. spawn=fork, twist=exec

shell_command 확장 옵션

%a (%A) : 클라이언트(서버)의 주소

%c : 클라이언트의 정보 (user@host 또는 user@address)

%d : 데몬 프로세스 이름

%h (%H) : 클라이언트(서버)의 호스트명 또는 주소

%n (%N) : 클라이언트(서버)의 호스트명 (unknown, paranoid)

%p : 데몬의 프로세스 아이디

%s : 서버의 정보 (daemon@host 또는 daemon@address)

%u : 클라이언트 사용자명 (또는 unknown)

ex)

vi /etc/hosts.deny

ALL : cracker.posein.com : twist (finger l @%h | mail s %d -%h root) &

 

 

 

xinetd

: 리눅스 커널 2.4부터 inetd를 대체하기 위해 적용된 데몬

: TCP Wrapper없이 환경설정 파일을 이용하여 접근제어 가능

: IP 주소당 접속 수 제한, 시간대별 서비스 제한, DoS 공격에 대비한 설정 등을 제공

 

/etc/xinetd.conf : xinetd 데몬의 전체적인 환경 설정

 

/etc/xinetd.d : xinetd에 의해 관리 되는 서비스 파일이 위치한 디렉터리.

 

.etc.rc.d/init.d/xinetd : xinetd를 제어하는 데몬 스크립트. stop, start, restart

 

 

/etc.xinetd.conf log_type

: 어떠한 형태로 로그를 저장할 것인지 설정. SYSLOG (syslog에 로그 위임), FILE (별도 파일 지정)

: log_type = SYSLOG syslog_facility [syslog_level]

: log_type = FILE 파일명 [soft_limit[hard_limit]]

ex) log_type = SYSLOG daemon info

log_type = FILE /ver/log/xinetd.log

 

 

 

/etc.xinetd.conf log_on_failure

: 접속 실패시 기록될 속성 값

: log_on_failure = 속성값

: HOST = 원격 호스트 IP주소

: USERID = 원격 사용자 아이디

: ATTEMPT = 실패한 시도

 

 

 

/etc.xinetd.conf log_on_success

: 접속 성공시 기록될 속성 값

: log_on_success = 속성값

: PID = 실행된 서버의 PID

: HOST = 원격 호스트의 IP 주소

: USERID = 원격 사용자 아이디

: EXIT = 관련 서비스가 종료될 때의 상태

: DURATION = 서비스의 세션 지속 상태

: TRAFFIC = 리다이렉트 서비스를 위한 전체 바이트 수

 

 

 

/etc.xinetd.conf cps

: 초당 요청받은 수에 대한 제한 설정

: cps = 초당_요청수 제한시간

ex) cps = 50 10 : 초당 요청수가 50개일 경우 10초동안 연결 중단

 

 

 

/etc.xinetd.conf instances

: 동시에 서비스 할 수 있는 서버의 최대 개수. UNLIMITED시 제한 없음

: instances = 서버_최대갯수

ex) instances = 50

 

 

 

/etc.xinetd.conf per_source

: 특정 IP 주소에서 접속할 수 있는 최대 개수

: per_source =

ex) per_source = 5

 

 

 

/etc.xinetd.conf only_from / no_access

: 서비스를 이용할 수 있는(/없는) 원격 호스트 설정. 허가할 호스트 IP주소와 네트워크 대역 주소 등

: only_from = IP_주소 [네트워크_대역_주소]

ex) only_from = 192.168.5.13 192.168.6.0/24

 

 

 

/etc.xinetd.conf enabled / disabled

: 사용 가능한 서비스의 목록 지정. 나열된 서비스만 이용 가능

: 각 서비스의 설정파일의 disable=yes를 무시하고 실행하나 disabled에 중복 설정시 차단

ex) enabled = telnet rlogin

 

/etc.xinetd.conf /etc/xinetd.d : 각 서비스들의 설정 파일들이 위치하는 디렉터리

 

 

 

xinetd 관련 서비스 설정

: xinetd와 관련된 서비스는 /etc/xinetd.d 디렉터리에 저장. /etc/services 파일에 등록된 서비스명만 등록 가능

: /etc/xinetd.d에 생성하는 파일의 내용은 “service 서비스명 { }” 형식

ex) cat etc/xinetd.d/telnet

service telnet

{

disable = no

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

}

 

 

 

/etc/xinetd.d/서비스명 항목

disable = no/yes # 해당 서비스의 실행 유무 지정. no=실행

flags = REUSE # 서비스 운영관련. REUSE=계속적 재사용 (대부분 기본 값)

socket_type = stream / dgram(datagram) / raw(IP 직접접근) / seqpacket(신뢰성 있는 연속적인 데이터 그램)

# 네트워크 소켓타입

wait = no/yes # 단일스레드 / 다중스레드 여부. no=다중스레드. yes=하나의 서비스만 실행

user = root/UID # 서버 프로세스의 UID

server = /usr/sbin/in.telnetd # 해당 서비스를 실행하는 데몬 파일의 경로 지정

log_on_failure += USERID # 로그 관련 설정. /etc/xinietd.conf에 지정된 설정에 +,-로 추가 지정

access_times = 01:00-07:00 # 서비스 이용 시간 설정

redirect = 192.168.12.22 23 # 해당 서비스를 다른 서버로 포워딩 할 때

port = 8080 # 해당 서비스의 포트번호

nice = 10 # 서버의 우선순위

 

300x250
728x90