🔧 정보보안기사 | 슈퍼서버 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 서비스 설정 항목 핵심 정리
| 항목 | 의미 | 시험 빈도 |
|---|---|---|
| disable | yes = 비활성화 / no = 활성화 | ★★★ 단골 |
| socket_type | stream(TCP) / dgram(UDP) / raw | ★★★ |
| wait | yes = 단일 스레드 / 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. 최종 비교표 · 시험 직전 암기 체크리스트
| 구분 | inetd | xinetd | TCP Wrapper |
|---|---|---|---|
| 역할 | 서비스 대리 기동 | 대리 기동 + 접근 제어 | 접근 제어 전용 |
| 설정 파일 | /etc/inetd.conf | /etc/xinetd.conf+ /etc/xinetd.d/ | hosts.allowhosts.deny |
| 형식 | 한 줄 평문 | 블록 구조 | 한 줄 (데몬: 클라이언트) |
| 접근 제어 | 없음 | only_from / no_access | allow/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.deny에 ALL: ALL - TCP Wrapper = libwrap 연동 데몬만 적용
- 이중 방어: TCP Wrapper 먼저 → xinetd 접근 제어 다음

