정보보안기사 | 슈퍼서버 xinetd·inetd와 TCP Wrapper 핵심 정리 (2/4)

정보보안기사 | 슈퍼서버 xinetd·inetd와 TCP Wrapper 핵심 정리 (2/4)

🔧 정보보안기사 | 슈퍼서버 xinetd·inetd와 TCP Wrapper 핵심 정리 (2/4)

inetd.conf 7필드 · xinetd 블록 구조 · only_from/no_access · TCP Wrapper allow→deny 순서 · 시험 3대 출제 유형까지 완벽 정리

#xinetd #inetd.conf #TCP_Wrapper #hosts.allow #only_from #정보보안기사

📋 목차

  • 1. 슈퍼서버란 — 핵심 아이디어
  • 2. inetd — 원조 슈퍼서버 · 7필드 형식
  • 3. xinetd — 블록 구조 · 설정 항목 정리
  • 4. 시험 출제 3대 유형 (문제점 발견 / 빈칸 채우기 / 변환)
  • 5. TCP Wrapper — 평가 순서 · 문법 · 와일드카드
  • 6. xinetd + TCP Wrapper 이중 방어 구조
  • 7. 최종 비교표 · 시험 직전 암기 체크리스트

1. 슈퍼서버란 — 핵심 아이디어

💡 한 문장 정의

“포트를 대신 듣고 있다가, 요청이 오면 해당 데몬을 fork해서 실행시키는 중개자 프로세스

장점
자원 절약
자주 쓰지 않는 서비스(telnet, tftp 등)의 데몬을 항상 띄울 필요 없음
단점
첫 응답 지연
요청이 와야 데몬을 실행하므로, 최초 접속 시 약간의 지연 발생

2. inetd — 원조 슈퍼서버

📄 설정 파일: /etc/inetd.conf

inetd.conf 7개 필드 순서 (반드시 암기)
서비스명 소켓타입 프로토콜 wait/nowait 사용자 서버경로 서버인수
telnet  stream  tcp  nowait  root  /usr/sbin/in.telnetd  in.telnetd
ftp     stream  tcp  nowait  root  /usr/sbin/in.ftpd     in.ftpd
tftp    dgram   udp  wait    root  /usr/sbin/in.tftpd    in.tftpd
필드의미시험 포인트
서비스명/etc/services에서 포트 참조1편의 ① 포트 매핑과 연결
소켓타입stream(TCP) / dgram(UDP)TCP=stream, UDP=dgram 암기
프로토콜tcp 또는 udp소켓타입과 짝이 맞아야 함
wait/nowait동시 접속 처리 방식wait: 한 번에 하나 / nowait: 동시 처리
사용자데몬 실행 권한최소 권한 원칙과 연결
서버경로실행할 프로그램 절대경로경로 정확히 기재 필수
서버인수프로그램에 전달할 인수보통 프로그램명 자체

3. xinetd — inetd의 진화형

📄 전체 설정: /etc/xinetd.conf

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

includedir /etc/xinetd.d
💡 핵심 구조

includedir /etc/xinetd.d가 디렉토리 안의 서비스별 개별 파일을 모두 읽어옴. 이것이 inetd(한 파일)와의 가장 큰 구조적 차이.

📁 서비스별 설정: /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
    only_from       = 192.168.1.0/24
    no_access       = 192.168.1.100
    access_times    = 08:00-18:00
    per_source      = 5
}

xinetd 서비스 설정 항목 핵심 정리

항목의미시험 빈도
disableyes = 비활성화 / no = 활성화★★★ 단골
socket_typestream(TCP) / dgram(UDP) / raw★★★
waityes = 단일 스레드 / no = 다중 스레드★★☆
user서비스 실행 사용자 권한★★☆
server실행할 데몬의 절대 경로★★★
server_args데몬에 전달할 인수★☆☆
only_from접속 허용 IP/네트워크★★★ 단골
no_access접속 차단 IP/네트워크★★★ 단골
access_times접속 허용 시간대 (예: 08:00-18:00)★★☆
per_source동일 출발지 IP의 최대 동시 접속 수★★☆
instances이 서비스의 최대 동시 인스턴스 수★★☆
cps초당 접속 제한 (cps = 25 30 → 초당 25개 초과 시 30초 대기)★★☆
log_on_success성공 시 로그 항목 (+=로 추가)★★☆
log_on_failure실패 시 로그 항목★★☆
redirect다른 호스트:포트로 포워딩★☆☆

4. 시험 출제 3대 유형

유형1 “다음 설정의 보안 문제점과 조치 방안을 쓰시오”
service telnet
{
    disable     = no
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
}
→ only_from/no_access가 없어 모든 IP에서 접속 가능. 접근 제어 부재. 조치: only_from = 허용IP 추가하거나, telnet을 disable = yes로 비활성화하고 SSH 사용 권장.
유형2 “빈칸에 들어갈 설정 항목을 쓰시오”
service rsync
{
    (  A  )       = no
    socket_type   = stream
    server        = /usr/bin/rsync
    (  B  )       = 192.168.1.0/24
}
→ A: disable (서비스 활성화 여부) / B: only_from (접속 허용 대역)
유형3 “inetd.conf를 xinetd 설정으로 변환하시오”
inetd.conf 원본:
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
→ xinetd 변환 결과:
service telnet
{
    disable     = no
    socket_type = stream    ← stream
    wait        = no        ← nowait
    user        = root      ← root
    server      = /usr/sbin/in.telnetd
}

5. TCP Wrapper — 접근 제어 계층

🔒 TCP Wrapper 평가 순서 (최우선 암기)
① /etc/hosts.allow → 매칭 시 허용
② /etc/hosts.deny → 매칭 시 차단
③ 미매칭 → 기본 허용

설정 문법

데몬명: 클라이언트 [: 셸 명령]

설정 예시별 해설

예시1 화이트리스트 방식 (가장 많이 출제)
# /etc/hosts.allow
sshd: 192.168.1.0/255.255.255.0
sshd: 10.10.10.5

# /etc/hosts.deny
ALL: ALL
→ SSH는 192.168.1.x와 10.10.10.5만 허용. 나머지 모든 서비스·IP 차단.
예시2 셸 명령 연동 (고급)
# /etc/hosts.deny
ALL: ALL: twist /bin/echo "접속 거부: %c → %s"
%c = 클라이언트 정보, %s = 서버(데몬) 정보. 차단 시 메시지 전송.

주요 와일드카드

키워드의미
ALL모든 서비스 / 모든 호스트
LOCAL점(.)이 없는 호스트명 (같은 도메인)
KNOWN호스트명이 확인된 클라이언트
UNKNOWN호스트명이 확인 안 되는 클라이언트
PARANOID정방향/역방향 DNS 결과가 다른 클라이언트
EXCEPT예외 지정 (예: ALL EXCEPT sshd)

6. xinetd + TCP Wrapper 이중 방어 구조

🛡️ 동시 설정 시 적용 순서
① TCP Wrapper → 먼저 평가 (hosts.allow/deny)
② xinetd 접근 제어 → 그 다음 평가 (only_from/no_access)
⚠️ 시험 핵심

TCP Wrapper에서 차단되면 xinetd 접근 제어까지 도달하지 못합니다. 즉 이중 방어 구조입니다.

“xinetd 서비스에 접근 제어를 적용하는 두 가지 방법을 설명하시오” → TCP Wrapper와 xinetd 자체 접근 제어 모두 언급 필수.


7. 최종 비교표 · 시험 직전 암기 체크리스트

구분inetdxinetdTCP Wrapper
역할서비스 대리 기동대리 기동 + 접근 제어접근 제어 전용
설정 파일/etc/inetd.conf/etc/xinetd.conf
+ /etc/xinetd.d/
hosts.allow
hosts.deny
형식한 줄 평문블록 구조한 줄 (데몬: 클라이언트)
접근 제어없음only_from / no_accessallow/deny 파일
시간 제어없음access_times없음
DoS 방어없음cps / per_source없음
로깅기본적세분화 가능syslog 연동
🎯 2편 절대 암기 포인트
  • inetd.conf = 7필드 한 줄: 서비스명·소켓타입·프로토콜·wait/nowait·사용자·서버경로·서버인수
  • xinetd = 블록 구조 + 접근 제어 내장 (only_from, no_access)
  • xinetd 빈출 5항목: disable, socket_type, server, only_from, no_access
  • TCP Wrapper 순서: allow → deny → 기본 허용
  • 화이트리스트: hosts.denyALL: ALL
  • TCP Wrapper = libwrap 연동 데몬만 적용
  • 이중 방어: TCP Wrapper 먼저 → xinetd 접근 제어 다음