정보보안기사 | 리눅스 서비스 설정 파일 대략적인 구성 (1/4)

정보보안기사 | 리눅스 서비스 설정 파일 대략적인 구성 (1/4)

🗺️ 정보보안기사 | 리눅스 서비스 설정 파일 대략적인 구성 (1/4)

xinetd · inetd.conf · /etc/services · hosts.allow/deny · sshd_config · systemd 유닛까지
서비스 설정 파일이 왜 이렇게 많은지, 6단계 구조로 한번에 정리합니다.

#정보보안기사 #리눅스서비스설정 #xinetd #/etc/services #hosts.allow #systemd

📋 목차

  • 1. 왜 설정 파일이 이렇게 많은가 — 전체 구조 이해
  • 2. 6단계 계층별 파일 상세: 포트 매핑 → 슈퍼서버 → 접근 제어 → 데몬 설정 → systemd → 보조 옵션
  • 3. 정리표 — 6단계 한눈에 보기
  • 4. 시험장 암기 전략
  • → 다음 편: 슈퍼서버 xinetd·inetd와 TCP Wrapper 핵심 정리

1. 왜 설정 파일이 이렇게 많은가

정보보안기사 실기를 준비하다 보면, 리눅스의 서비스 관련 설정 파일이 왜 이렇게 흩어져 있는지 혼란스러울 때가 있습니다. /etc/xinetd.d/, /etc/services, /etc/hosts.allow, /etc/ssh/sshd_config, /etc/systemd/system/

💡 핵심 아이디어

이 파일들은 “하나의 서비스가 네트워크 요청을 받아 처리하기까지의 각 단계”를 나눠서 담당합니다. 한 파일이 모든 걸 하는 게 아니라, 역할별로 분산돼 있는 구조입니다.

파일 유형 A
포트/이름 매핑
서비스 이름과 포트 번호를 연결하는 전화번호부
파일 유형 B
서비스 실행 방식
슈퍼서버가 어떻게 데몬을 불러줄지 정의
파일 유형 C
접근 제어
누구에게 접속을 허용/차단할지 결정
파일 유형 D
데몬 상세 설정
각 서비스 자체의 보안/동작 옵션
파일 유형 E
서비스 관리
부팅 시 자동 실행, 재시작 정책 등
파일 유형 F
보조 옵션
배포판별 환경변수, 시작 인수 지정

2. 네트워크 요청이 처리되는 6단계와 관련 파일

🔄 요청 처리 흐름 — 파일이 관여하는 순서
① 포트 매핑 ② 슈퍼서버 ③ 접근 제어 ④ 데몬 설정 ⑤ systemd ⑥ 보조 옵션

① 포트 ↔ 서비스 매핑: /etc/services

파일 경로
/etc/services
서비스 이름과 포트 번호의 전화번호부. 포트를 열거나 서비스를 실행하는 기능은 전혀 없음.
작동 원리
이름 → 포트 참조
xinetd가 service telnet 정의를 읽으면, “telnet = 23번 포트”라는 정보를 이 파일에서 참조.
http    80/tcp
https   443/tcp
ssh     22/tcp
telnet  23/tcp
rsync   873/tcp
tftp    69/udp
🎯 시험 출제 포인트
  • “포트 번호와 서비스명을 매핑하는 파일은?” → /etc/services
  • Well-known 포트: FTP 20/21, SSH 22, Telnet 23, SMTP 25, DNS 53, HTTP 80, POP3 110, HTTPS 443
  • 이 파일 자체는 실행 기능 없음 — 함정 선지 단골

② 슈퍼서버 — 서비스 호출 대행: xinetd / inetd

💡 슈퍼서버 핵심 아이디어

“자주 쓰지 않는 서비스를 위해 데몬을 항상 띄워두는 것은 자원 낭비. 대신 하나의 프로세스(슈퍼서버)가 여러 포트를 대신 듣고 있다가, 요청이 올 때만 해당 데몬을 실행시키자.”

구분inetd (구형)xinetd (개선형)
설정 파일/etc/inetd.conf 한 파일/etc/xinetd.conf + /etc/xinetd.d/
설정 형식한 줄에 서비스 하나 (평문)블록 구조 (서비스별 파일 분리)
접근 제어없음 (TCP Wrapper 의존)only_from, no_access 자체 내장
로깅기본적log_on_success, log_on_failure 세분화
# inetd.conf — 한 줄 7필드
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

# xinetd.d/telnet — 블록 구조
service telnet
{
    disable     = no
    socket_type = stream
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    only_from   = 192.168.1.0/24
    no_access   = 192.168.1.100
}
🎯 시험 출제 포인트
  • inetd vs xinetd 구조적 차이가 단골 출제
  • xinetd 핵심 항목: disable, socket_type, server, only_from, no_access
  • 상세 내용은 → 시리즈 2편에서 정리

③ 접근 제어 — TCP Wrapper: hosts.allow / hosts.deny

🔒 TCP Wrapper 평가 순서 (반드시 암기)
① /etc/hosts.allow 확인 → 매칭되면 허용 (끝)
② /etc/hosts.deny 확인 → 매칭되면 차단 (끝)
③ 둘 다 미매칭 → 기본 정책: 허용
# 화이트리스트 방식 (가장 안전, 가장 많이 출제)
# /etc/hosts.allow
sshd: 192.168.1.0/255.255.255.0
in.telnetd: 10.10.10.

# /etc/hosts.deny
ALL: ALL
⚠️ 시험 함정 주의

TCP Wrapper는 모든 서비스에 적용되는 게 아닙니다. libwrap을 링크한 데몬에만 적용됩니다.

확인 방법: ldd /usr/sbin/sshd | grep libwrap

🎯 시험 출제 포인트
  • 평가 순서: allow → deny → 기본 허용 (순서 자체가 단골)
  • 화이트리스트 공식: deny에 ALL: ALL, allow에 필요한 것만 등록
  • TCP Wrapper = libwrap 연동 데몬만 적용 (함정 선지)

④ 데몬별 상세 설정: 각 서비스 고유 설정 파일

데몬설정 파일 경로최다출제 항목
SSH/etc/ssh/sshd_configPermitRootLogin, Protocol
Apache (RHEL)/etc/httpd/conf/httpd.confServerTokens, Options -Indexes
Apache (Debian)/etc/apache2/apache2.conf동일 항목
vsftpd/etc/vsftpd/vsftpd.confanonymous_enable, chroot
DNS (BIND)/etc/named.confallow-transfer, recursion
NFS/etc/exportsno_root_squash
Samba/etc/samba/smb.confhosts allow, security
rsync/etc/rsyncd.confsecrets file (권한 600)
예시 SSH에서 PermitRootLogin yes → 무엇이 문제인가?
→ root 계정으로 직접 원격 로그인 가능. brute force 공격의 최우선 표적. 조치: PermitRootLogin no로 변경. 일반 계정 로그인 후 su/sudo 사용.
예시 NFS에서 no_root_squash → 무엇이 문제인가?
→ 클라이언트의 root가 NFS 서버에서도 root 권한으로 동작. 전체 파일 조작 가능. 조치: root_squash(기본값)로 변경. 원격 root → nfsnobody로 매핑.

→ 데몬별 전체 보안 설정 항목은 시리즈 3편에서 상세 정리합니다.


⑤ 현대 서비스 관리: systemd 유닛 파일

서비스 유닛
.service 파일
데몬 시작/중지/재시작 방법 정의. 부팅 시 항상 상주하는 서비스용. (SSH, 웹서버 등)
소켓 유닛
.socket 파일
포트를 열어두고 요청 시에만 서비스 기동. xinetd의 현대적 대체.
# 유닛 파일 위치
/etc/systemd/system/          ← 관리자 직접 생성 (우선순위 높음)
/usr/lib/systemd/system/      ← 패키지 설치 기본값

→ .service와 .socket의 상세 구조, xinetd 대응 관계는 시리즈 4편에서 정리합니다.


⑥ 보조 실행 옵션: 배포판별 환경설정

RHEL 계열
/etc/sysconfig/
예: /etc/sysconfig/sshd
OPTIONS="-p 2222"
Debian 계열
/etc/default/
예: /etc/default/rsync
RSYNC_ENABLE=true

3. 정리표 — 6단계 한눈에 보기

단계역할대표 파일시험 빈도
① 포트 매핑서비스명 ↔ 포트/etc/services★★☆
② 슈퍼서버요청 시 데몬 기동/etc/xinetd.conf · /etc/xinetd.d/★★★
③ 접근 제어IP 기반 허용/차단/etc/hosts.allow · /etc/hosts.deny★★★
④ 데몬 설정서비스별 상세 동작sshd_config · httpd.conf★★★
⑤ 서비스 관리시작/중지/자동실행.service · .socket★★☆
⑥ 보조 옵션환경변수/시작 옵션/etc/sysconfig/ · /etc/default/★☆☆

4. 시험장 암기 전략

📝 6단계를 한 문장으로

“포트 확인 → 슈퍼서버가 대신 띄움 → 접근 허용 여부 체크 → 데몬이 자기 설정대로 동작 → systemd가 생명주기 관리”

🎯 1편 절대 암기 포인트
  • /etc/services = 포트-서비스 매핑 전화번호부 (실행 기능 없음)
  • 슈퍼서버: inetd = 한 줄 평문 / xinetd = 블록 구조 + 접근 제어 내장
  • TCP Wrapper: allow → deny → 기본 허용 / libwrap 연동 데몬만 적용
  • 데몬 설정: 시험에서 가장 넓은 범위. 설정값 → 위험 → 조치 패턴
  • systemd: .service = 상주형 / .socket = 온디맨드형 (xinetd 대체)
  • 보조 옵션: RHEL = /etc/sysconfig/ / Debian = /etc/default/