공부/정보보안기사

<정보보안기사> 1. 시스템 이론 - xinetd 슈퍼데몬

Richard_Hoon 2024. 11. 21. 23:54
반응형

 

목차

     

     

    xinetd 슈퍼데몬 개요

     

     - eXtended Internet Services daemon의 약자로, 리눅스 시스템에서 다야한 네트워크 서비스를 관리하는 슈퍼데몬

     - 기존의 inetd 슈퍼데몬의 비효율적 자원관리와 보안문제를 개선

     - TCP wrapper 기능뿐만 아니라 다양한 서비스별 접근제어 가능

     

    설정파일 설명
    /etc/xinetd.conf    모든 서비스에 적용되는 xinetd 설정 파일
    /etc/xinetd.d/각종 서비스 설정파일    각 서비스에 적용되는 xinetd 설정 파일

     

     

    설정 파일 형식

     

     설정 항목 의미
    service    서비스 이름
    socket_type    소켓 유형 (stream = TCP / dgram = UDP)
    wait    서비스 요청 처리방식 (no = 비동기 / yes=동기)
    user    서비스 실행 사용자
    server    서비스 실행 프로그램 경로
    disable    서비스 비활성화 (yes = 비활성화 / no = 활성화)

     

    service http
    {
    	socket_type		= stream
       	wait			= no
        	user			= nobody
        	server			= /usr/sbin/httpd
        	disable			= no
    }

     

     

    `disable = no`

    >> 만약 불필요한 서비스라면 `yes`로 설정하여 비활성화하고, xinetd 데몬을 재실행한다.

     

     

     

     

    설정 파일 형식(접근제어 측면)

     

     설정 항목 의미
    only_from    접근 허용 IP 또는 IP 대역
    no_access    접근 불가 IP 또는 IP 대역
    max_connections    동시 최대 접속 허용 수
       (하나의 서버 인스턴스에서 허용되는 동시 연결의 최대 개수)
    cps    초당 최대 접속 수
    access_time    접근 허용 시간
    instances    동시 서비스 가능 최대 프로세스 수
       (xinetd가 관리하는 서버 프로그램의 인스턴스 최대 개수)
    per_source    IP 별 최대 연결 수

     

     

    service http
    {
    	only_from	= 192.168.1.0/24	# 해당 IP 대역만 HTTP 접속 가능
        	no_access	= 10.0.0.0/8		# 해당 IP 대역은 HTTP 접속 불가
        	max_connections	= 40			# 동시에 최대 40대 연결만 허용
       	cps		= 15 5			# 초당 최대 15개 연결만 허용, 초과하면 5초간 연결을 제한
        	access_time	= 09:00-18:00		# 오전 9시부터 오후 6시까지만 서비스 접속 가능
       	instances	= 30			# 최대 30개의 HTTP 서버 인스터스만 실행
        	per_source	= 5			# 개별 IP 주소당 최대 5개의 연결만 허용
    }

     

     

    `max_connections`는 `insteances`와 함께 사용하면 들어오는 요청을 여러 인스턴스에 분산하여 처리할 수 있음(로드밸런싱)

     

    웹 서버의 경우, max_connections를 100으로 설정하면 하나의 웹 서버 인스턴스에서 동시에 100개의 클라이언트 연결을 처리할 수 있음

     

     

    메뉴판

     

     설정 항목 의미
    log_on_faulure    서비스 접속에 실패했을 때, 기록할 정보를 지정
    log_on_succes    서비스 접속에 성공했을 때, 기록할 정보를 지정
    log_type    로그를 기록하는 방식을 지정

     

     

    service http
    {
    	log_on_failure	+= UserID		# 서비스 접속 실패 시, 사용자 ID를 시스템 로그에 기록
       	log_on_success	+= HOST PID DURATION	# 서비스 접속 성공 시, 클라이언트 호스트 이름, 프로세스 ID, 접속 지속시간을 시스템 로그에 기록
       	log_type	= SYSLOG authpriv	# 로그를 시스템 로그의 `authpriv` facility에 기록
    }

     

     

     

    로그에 기록할 수 있는 정보

    `HOST` : 클라이언트 호스트 이름 or IP 주소

    `PID` : 프로세스 ID

    `USERID` : 서비스를 실행하는 사용자 ID

    `EXIT` : 프로세스 종료 상태

    `DURATION` : 서비스 접속 지속 시간

    `TRAFFIC` : 전송된 데이터량

    반응형