본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

EIS

이 페이지에 묻기

EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

EIS · SECURITY

EIS

생성 수정

정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.

29개 문서 · 3 · 어플리케이션보안 · 13 / 29

12 · FTP · 메일 보안

지도 위치 : 3과목 어플리케이션 보안 · README 4장 ③ 영역(어플리케이션) — 인터넷 응용 서비스의 공격 ↔ 대응 | 출제기준: 1. 인터넷 응용 보안 > 1. FTP 보안, 2. 메일 보안 | 이전: 11 네트워크 보안 솔루션과 분석 | 다음: 13 웹 · 앱 보안 출제 빈도 : ⭐⭐⭐ (회당 약 5.1문항 — 출제분석.md. FTP 1.92.1, 메일 2.83.5) · 변화 – 세세항목 : FTP 보안 — FTP 개념 / FTP 서비스 운영 / FTP 공격 유형 / FTP 보안기술 · 메일 보안 — 메일 개념 / 메일 서비스 운영 / 메일 서비스 공격유형(스팸 메일, 악성 메일, 웜 등)과 대책 / 메일 보안 기술

이 노트를 다 읽으면

  1. FTP의 액티브 · 패시브 모드 에서 누가 누구에게 어느 포트로 연결하는지 그림으로 그릴 수 있다.
  2. FTP 바운스 · TFTP · 익명 FTP 의 위험과 대책을 말하고, ftpusers · xferlog를 읽을 수 있다.
  3. 메일이 MUA → MTA → MDA → (POP3/IMAP) → MUA 로 흘러가는 경로와 각 단계의 포트를 말할 수 있다.
  4. 오픈 릴레이 가 왜 위험한지, sendmail access 파일의 OK · RELAY · REJECT · DISCARD를 구별할 수 있다.
  5. 스팸 대응 기술 SpamAssassin · RBL · SPF · DKIM · DMARC 를 "무엇을 근거로 판단하는가"로 가를 수 있다.
  6. PGP · S/MIME · PEM 을 신뢰 모델(CA를 쓰는가)과 제공 기능으로 비교하고, PGP가 수신 부인방지 를 제공하지 않는 이유를 말할 수 있다.

0. 이 노트의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1데이터 연결을 누가 여는가서버가 연다 (액티브)클라이언트가 연다 (패시브)FTP Active ↔ Passive이 노트의 축
2보내는 쪽인가 받는 쪽인가송신 · 중계 (SMTP)수신 · 열람 (POP3 · IMAP)메일 프로토콜 구분⑧ 하위 ↔ 상위 계층 (모두 L7 안에서의 역할 구분)
3무엇을 근거로 스팸을 거르나보낸 곳(IP · 도메인)을 본다내용(헤더 · 본문)을 본다RBL · SPF ↔ SpamAssassin · 본문 필터⑦ 오용 ↔ 이상 탐지의 응용
4키를 누가 보증하나사용자끼리 서로 보증 (신뢰의 웹)인증기관(CA)이 보증PGP ↔ S/MIME · PEM⑤ 대칭 ↔ 비대칭 (공개키 신뢰 모델)
5공격인가 방어인가FTP 바운스 · 오픈 릴레이 악용 · 메일 폭탄ftpusers · access 파일 · SPF · PGP공격기법 ↔ 대응기술① 공격 ↔ 방어

이 노트가 답하는 질문은 "오래된 인터넷 서비스(FTP · 메일)는 왜 기본 상태로 위험하고, 무엇을 덧대어 지키는가" 입니다. 두 서비스 모두 인터넷 초기에 인증 · 암호화 없이 설계됐습니다. 그래서 보안은 늘 "덧대는" 방식(설정 파일로 막기, 위에 암호를 씌우기)입니다. 앞에서 배운 포트 번호와 TCP 연결(06번 노트), 방화벽(11번 노트)을 알아야 액티브 · 패시브 문제가 풀리고, 앞에서 배운 전자서명과 공개키(18 · 19번 노트)를 알아야 PGP · S/MIME이 풀립니다.


1. FTP의 구조 — 연결이 두 개다

1.1 정의와 포트

FTP (File Transfer Protocol) — [파일 전송 프로토콜]인데, [ 명령을 주고받는 제어 연결과 파일을 실어 나르는 데이터 연결을 따로 연다 ]는 점에서 연결 하나로 끝나는 TFTP · SFTP와 구별된다.

연결서버 포트하는 일살아 있는 기간
제어 연결TCP 21USER, PASS, PORT, PASV, RETR 같은 명령세션 내내
데이터 연결TCP 20 (액티브) / 1024 이상 임의 포트 (패시브)파일 내용, 디렉터리 목록전송 한 번마다 열고 닫음

1.2 ⭐ 액티브 ↔ 패시브

액티브 (Active, 기본 모드)패시브 (Passive)
제어 연결클라이언트(임의 포트 N) → 서버 21같음
클라이언트가 보내는 명령PORT — "내 N+1 포트로 접속해"PASV — "데이터 포트 하나 열어 줘"
데이터 연결 방향서버 20 → 클라이언트 N+1 (서버가 연다)클라이언트 N+1 → 서버의 임의 포트 P (클라이언트가 연다)
서버 응답200 PORT command successful227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
곤란한 쪽클라이언트 쪽 방화벽 · NAT — 밖에서 안으로 들어오는 연결이라 막힘서버 쪽 방화벽 — 1024 이상 포트를 열어 둬야 함
모드를 정하는 쪽클라이언트클라이언트

💡 포트 계산: PORT 192,168,0,10,7,138 또는 227 (...,7,138)의 데이터 포트는 p1 × 256 + p2 = 7 × 256 + 138 = 1930 입니다.

📝 기출 포인트 — "FTP의 기본 모드는 액티브이며 모드를 바꾸는 주체는 클라이언트 "가 7회 이상 반복된 단골 문항입니다. "패시브를 쓰는 이유 = 클라이언트가 방화벽 뒤에 있어 서버가 안으로 접속할 수 없기 때문 ", "액티브의 데이터 포트는 서버 20번", PORT 인자로 포트 번호를 계산하는 유형도 나왔습니다.

⚠️ 반례: "패시브 모드에서는 서버 20번 포트를 쓴다" ❌. 20번은 액티브 모드의 서버 데이터 포트 입니다. 패시브는 서버가 고른 임의 포트입니다. 그래서 vsftpd에서는 pasv_min_port · pasv_max_port로 그 범위를 좁혀 방화벽 구멍을 줄입니다.

💡 비유는 마지막에 — 액티브는 "내가 전화번호를 줄 테니 네가 걸어 줘 ", 패시브는 " 네 번호를 알려 줘, 내가 걸게 "입니다. 수신 전화를 막아 둔 사람(방화벽 뒤 클라이언트)은 패시브를 씁니다.

1.3 FTP 명령과 응답

명령기능헷갈리는 짝
USER / PASS계정 · 비밀번호 전송 ( 평문 )—
RETR서버 → 클라이언트 다운로드STOR (업로드)
STOR클라이언트 → 서버 업로드APPE (이어 붙이기)
LIST / NLST디렉터리 목록—
ABOR진행 중인 전송 중단QUIT (세션 종료)

📝 기출 포인트 — "FTP 명령의 기능 중 틀린 것" 유형. ABOR를 "로그아웃", STOR를 "다운로드"처럼 바꿔 놓은 보기를 찾습니다.

1.4 FTP의 형제들 — TFTP · SFTP · FTPS

프로토콜전송 계층 · 포트인증암호화정체
FTPTCP 21 / 20계정 · 비밀번호 (평문)없음원조
TFTPUDP 69없음없음목록 보기 · 인증 없이 파일 받기/보내기만. 네트워크 장비 설정 백업 · 디스크 없는 장비 부팅용
SFTPTCP 22SSH 인증있음SSH의 하위 기능 (FTP가 아님)
FTPSTCP 21 (명시적 AUTH TLS) / 990 (암묵적)FTP와 같음TLSFTP에 TLS를 씌운 것

TFTP — [파일 전송 프로토콜]인데, [ UDP를 쓰고 사용자 인증이 없다 ]는 점에서 TCP와 계정 인증을 쓰는 FTP와 구별된다.

📝 기출 포인트 — TFTP는 5회 이상: " UDP 69 · 인증 없음 · 디렉터리 목록 불가 ". 보안 대책으로 " 불필요하면 비활성화 , 필요하면 secure 모드(-s, 지정 디렉터리로 제한)". "FTP 대신 TFTP를 쓰는 것이 안전하다"는 보기는 ❌입니다.


2. FTP 공격과 운영 보안

2.1 ⭐ FTP 바운스 (FTP Bounce)

FTP 바운스 공격 — [FTP 프로토콜 악용 공격]인데, [ PORT 명령에 클라이언트 자신이 아닌 제3 호스트의 IP · 포트를 넣어 FTP 서버가 대신 접속하게 만든다 ]는 점에서 FTP 계정 비밀번호를 대입하는 무차별 대입 공격과 구별된다.

공격자 ──(제어 21)──> FTP 서버 : PORT 10,0,0,5,0,25   ← 내 주소가 아니라 내부 메일서버:25
                      FTP 서버 ──(데이터)──> 10.0.0.5:25  ← 서버가 "대신" 접속

🔍 읽는 포인트 : PORT 인자의 IP가 제어 연결을 맺은 클라이언트 IP와 다르다 는 점이 공격의 핵심입니다. RFC 959는 이 값을 검증하라고 요구하지 않았습니다.

목적방법
포트 스캔 (가장 많이 출제)접속 성공/실패 응답으로 제3 호스트의 열린 포트 확인. 출발지가 FTP 서버라 공격자가 숨고, 방화벽 안쪽도 스캔 가능 (nmap -b)
가짜 메일 · 우회 전송익명 FTP에 SMTP 명령이 담긴 파일을 올린 뒤, 그 파일을 메일 서버 25번으로 "전송"시킴

대책 : PORT 인자의 IP가 클라이언트 IP와 같은지 검사, 1024 미만 포트로의 PORT 거부 , 익명 FTP의 쓰기(업로드) 금지, 가능하면 패시브만 허용.

📝 기출 포인트 — FTP 바운스는 9회 이상 출제된 A1.1 최다 개념입니다. "주된 목적 = 포트 스캔 ", " PORT 명령 을 악용", " 목적지(PORT 인자) 미검증 "이 정답 핵심어입니다. 앞에서 배운 스캐닝(09번 노트)과 연결됩니다.

2.2 익명 FTP (Anonymous FTP)

anonymous 또는 ftp 계정으로 비밀번호 없이(관례상 이메일 주소) 접속하게 하는 공개 자료실 방식입니다.

위험대책
업로드 가능 → 불법 자료 창고(warez), 바운스 공격의 발판쓰기 권한 제거 . 업로드가 꼭 필요하면 "쓰기만 되고 목록 · 읽기는 안 되는" 별도 디렉터리
익명 홈(~ftp)이 시스템 파일과 연결익명 홈은 root 소유 , 일반 쓰기 금지, chroot로 그 밖을 못 보게
~ftp/etc/passwd에 실제 비밀번호비밀번호 필드 없는 더미 파일만 둠
# /etc/vsftpd/vsftpd.conf  (배포판에 따라 /etc/vsftpd.conf)
anonymous_enable=NO        # 익명 접속 금지
anon_upload_enable=NO      # (익명 허용 시) 익명 업로드 금지
chroot_local_user=YES      # 로컬 사용자를 홈 디렉터리에 가둠
xferlog_enable=YES         # 전송 로그 기록

🔍 읽는 포인트 : anonymous_enable=YES면 익명 FTP가 열려 있습니다. 점검표의 첫 줄입니다. 설정 파일은 /etc 아래에 있습니다.

📝 기출 포인트 — "익명 FTP 보안대책으로 틀린 것"에서 "익명 사용자에게 홈 디렉터리 쓰기 권한을 준다" 가 오답 보기. vsftpd anonymous_enable 의미, 설정 파일 위치를 묻는 문항이 최근(2024~2025)에도 나왔습니다.

2.3 ⭐ ftpusers — 이름과 반대로 "거부 목록"

ftpusers — [FTP 접근통제 파일]인데, [ 여기에 적힌 계정은 FTP 로그인이 거부된다 ]는 점에서 IP 주소로 허용/거부하는 TCP Wrapper(hosts.allow · hosts.deny)와 구별된다.

통제 수단무엇을 기준으로예
ftpusers (/etc/ftpusers, vsftpd는 /etc/vsftpd/ftpusers)계정 — 적힌 계정 거부root, bin, daemon 등 시스템 계정
vsftpd user_list계정 — userlist_deny=YES면 거부 목록, NO면 허용 목록운영 정책에 따라
TCP Wrapper접속 IP · 호스트vsftpd: 10.0.0.0/255.0.0.0

📝 기출 포인트 — "ftpusers에 등록된 사용자만 FTP를 쓸 수 있다" ❌. root 접속 차단은 ftpusers에 root를 적는 것 이며, 이것을 TCP Wrapper와 구분하는 문항이 2025년에 나왔습니다. 실기 점검 항목에서는 ftpusers 파일의 소유자 root, 권한 640 이하 도 함께 봅니다.

2.4 xferlog — FTP 전송 로그

Mon Oct 19 10:20:31 2026 3 192.168.0.10 52314 /home/kim/report.pdf b _ i r kim ftp 0 * c
필드 (순서대로)이 예의 값뜻
current-timeMon Oct 19 10:20:31 2026전송 시각
transfer-time3전송에 걸린 초
remote-host192.168.0.10상대 호스트
file-size52314바이트
filename/home/kim/report.pdf파일 경로
transfer-typeba = ASCII, b = 바이너리
special-action-flag_C 압축, U 압축 해제, T tar, _ 없음
directionio = outgoing(서버 → 클라이언트, 다운로드), i = incoming(업로드), d = 삭제
access-modera = anonymous, g = guest, r = real(실제 계정)
usernamekim사용자
service-nameftp서비스
authentication-method00 = 없음, 1 = RFC 931
authenticated-user-id*확인 불가면 *
completion-statuscc = complete, i = incomplete

🔍 읽는 포인트 : 시험은 거의 direction(o/i), access-mode(a/g/r), completion-status(c/i) 만 묻습니다. "o = 서버 입장에서 나감 = 다운로드"를 서버 기준으로 기억하세요.

📝 기출 포인트 — xferlog 필드 해석은 4회. "i는 다운로드" ❌(업로드), "a는 ASCII 전송" — 같은 a가 transfer-type에서는 ASCII, access-mode에서는 anonymous 라는 위치 함정에 주의.

앞으로 다시 만납니다 — 25번 노트(실기 취약점 점검)에서 FTP 점검 항목(익명 FTP, ftpusers, TFTP 비활성화)을 점검표로 다시 묶습니다.


3. 메일 시스템의 구조

3.1 구성요소 — 누가 무엇을 하나

구성요소정의 (유 + 종차)예
MUA (Mail User Agent)[메일 프로그램]인데, [ 사용자가 메일을 쓰고 읽는 화면 ]이라는 점에서 서버 사이를 옮기는 MTA와 구별Outlook, Thunderbird
MTA (Mail Transfer Agent)[메일 서버 프로그램]인데, [ SMTP로 메일을 다음 서버로 중계 · 전달 ]한다는 점에서 최종 메일함에 넣는 MDA와 구별sendmail, Postfix, Exchange
MDA (Mail Delivery Agent)[메일 서버 구성요소]인데, [ 받은 메일을 수신자 메일함에 넣는다 ](필터링 포함)는 점에서 중계하는 MTA와 구별procmail
MRA (Mail Retrieval Agent)[수신 도구]인데, [ POP3 · IMAP으로 메일함에서 메일을 가져온다 ]fetchmail
[보내는 사람 MUA] ─SMTP─> [보내는 쪽 MTA] ─SMTP─> [받는 쪽 MTA] ─> [MDA] ─> 메일함
                                                                         │
[받는 사람 MUA] <────────────── POP3 / IMAP ─────────────────────────────┘

🔍 읽는 포인트 : 보내는 길은 전부 SMTP , 가져오는 길만 POP3 · IMAP 입니다.

3.2 ⭐ 메일 프로토콜과 포트

프로토콜역할평문 포트암호화 포트특징
SMTP송신 · 서버 간 중계25 (제출용 587)465 (SMTPS)원래 송신자 인증 없음 → SMTP AUTH 추가
POP3수신110995메일을 내려받고 서버에서 지우는 것이 기본
IMAP수신143993메일을 서버에 두고 동기화 (여러 기기)

3.3 SMTP 대화 순서

S: 220 mail.example.com ESMTP
C: EHLO client.example.org          ← 인사 (HELO의 확장판)
C: AUTH LOGIN                       ← (인증 사용 시) 송신자 인증
C: MAIL FROM:<kim@example.org>      ← 봉투의 보낸 사람
C: RCPT TO:<lee@example.com>        ← 봉투의 받는 사람
C: DATA                             ← 본문 시작
S: 354 End data with <CR><LF>.<CR><LF>
C: (헤더 + 본문) ... .
S: 250 OK
C: QUIT

🔍 읽는 포인트 : 순서 HELO/EHLO → (AUTH) → MAIL FROM → RCPT TO → DATA → QUIT . 354는 "본문을 보내라"는 응답입니다. VRFY · EXPN(계정 존재 확인)은 계정 수집에 악용되므로 끕니다.

📝 기출 포인트 — MUA · MTA · MDA 역할 구분(6회 이상), 메일 포트 · 프로토콜 구분, SMTP 명령 순서 (2023 패킷 분석, 2024)가 반복. "메일 관련 프로토콜이 아닌 것 = SNMP (네트워크 관리, UDP 161) / IRC (채팅)"도 2회 이상.


4. 메일 서비스 운영과 공격 · 대응

4.1 ⭐ 오픈 릴레이와 sendmail access

오픈 릴레이 (Open Relay) — [메일 서버의 잘못된 설정]인데, [ 자기 도메인과 무관한 누구의 메일이든 다른 곳으로 중계해 준다 ]는 점에서 자기 사용자 메일만 중계하는 정상 MTA와 구별된다. 스패머가 출처를 숨기는 발판이 되고, 그 서버 IP가 RBL에 올라 정상 메일까지 차단됩니다.

# /etc/mail/access
localhost              RELAY
192.168.1              RELAY          # 내부망만 릴레이 허용
spammer.example        REJECT         # 거부 + 보낸 쪽에 오류 응답
bulk@ads.example       DISCARD        # 조용히 버림 (보낸 쪽은 모름)
10.9.9.9               ERROR:"550 Access denied"
partner.example        OK             # 다른 규칙이 거부해도 수신 허용

# 수정 후 DB로 변환해야 반영됨
makemap hash /etc/mail/access.db < /etc/mail/access

🔍 읽는 포인트 : REJECT ↔ DISCARD 의 차이는 "보낸 쪽에 거부를 알리는가 "입니다. 텍스트 파일만 고치고 makemap을 안 하면 반영되지 않습니다.

지시어동작
OK수신 허용 (다른 거부 규칙보다 우선)
RELAY중계 허용 (이 호스트 · 도메인을 위해 다른 곳으로 전달)
REJECT거부, 송신 측에 오류 메시지 반환
DISCARD받은 척하고 버림 , 송신 측에 알리지 않음
ERROR:"코드 메시지"지정한 오류 코드 · 메시지로 거부

그 밖의 sendmail 하드닝: sendmail.cf의 PrivacyOptions에 novrfy,noexpn(계정 확인 차단), restrictqrun(일반 사용자의 메일 큐 처리 제한), 인사말의 버전 정보 숨김, 최신 버전 유지.

📝 기출 포인트 — sendmail access는 3회 이상(2013, 2024, 2025). REJECT · DISCARD · RELAY 의미 와 makemap 명령 을 함께 묻습니다. 실기 수행준거에 "스팸메일 릴레이가 허용되어 있는지 점검"이 그대로 있습니다.

4.2 메일 공격 유형

공격정의대응
메일 폭탄 (Mail Bomb)대량 메일로 메일함 · 서버 디스크를 채워 서비스를 마비시키는 가용성 공격크기 · 수량 제한, 송신자 차단
스팸 메일원치 않는 대량 광고 메일4.3절 필터 · 발신자 검증
Active Contents 공격HTML 메일의 스크립트 · 액티브X 등이 메일을 여는 순간 실행 되도록 한 공격메일 클라이언트의 스크립트 실행 차단, 텍스트로 보기
악성 첨부 · 웜실행 파일 · 매크로 문서 첨부, 주소록으로 자기 전파첨부 검사(Inflex 같은 첨부파일 필터, 백신), 확장자 차단
피싱 · 발신자 위조보낸 사람(From)을 은행 · 회사로 위조SPF · DKIM · DMARC (4.4절)

💡 메일 헤더의 Received: 줄은 서버를 하나 지날 때마다 위에 추가 됩니다. 실제 발송 경로를 추적하려면 맨 아래 Received부터 위로 읽습니다. From은 쉽게 위조되지만 Received의 IP는 각 서버가 기록합니다.

4.3 ⭐ 스팸 대응 — 무엇을 근거로 거르나

기술판단 근거동작0절 축 3
RBL (Real-time Blackhole List, DNSBL)보낸 서버의 IP스팸 발송 IP 목록을 DNS 질의 로 조회해 차단보낸 곳
SPF보낸 서버 IP가 그 도메인이 허락한 IP인가도메인 소유자가 DNS TXT에 발송 서버 목록 등록 → 수신 서버가 대조보낸 곳
SpamAssassin헤더 · 본문의 여러 규칙 점수 합규칙별 점수를 더해 기준점(기본 5.0) 이상이면 스팸 표시. 베이지안 학습 · RBL 조회도 규칙의 하나로 포함내용 (+ 보낸 곳)
본문 · 키워드 필터제목 · 본문 단어단순 매칭내용

SpamAssassin — [스팸 필터]인데, [ 하나의 규칙으로 판정하지 않고 여러 검사(헤더 · 본문 · 베이지안 · 블랙리스트)의 점수를 합산한다 ]는 점에서 IP 목록 하나로 차단하는 RBL과 구별된다. Perl로 만든 오픈소스입니다.

📝 기출 포인트 — SpamAssassin은 6회. " 점수(Score) 기반으로 스팸을 분류 한다"가 핵심. 최근에는 SPF · RBL · SpamAssassin의 동작을 서로 바꿔 놓은 보기 (2024 · 2025 3회)가 늘었습니다. "DNS에 등록된 발신 서버 로 확인 = SPF", " 블랙리스트 IP 조회 = RBL"로 가르세요.

4.4 발신자 인증 3종 — SPF · DKIM · DMARC

example.com.                 IN TXT "v=spf1 ip4:203.0.113.10 mx -all"
sel1._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBg..."
_dmarc.example.com.          IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

🔍 읽는 포인트 : 셋 다 DNS TXT 레코드 에 공개합니다. SPF의 -all은 "목록 밖 IP는 실패", DKIM의 p=는 공개키 , DMARC의 p=는 정책 (none · quarantine · reject)입니다.

SPFDKIMDMARC
무엇을 확인보낸 서버 IP 가 허가된 것인가메일이 서명 후 바뀌지 않았고 그 도메인이 서명했는가SPF/DKIM 결과가 From 도메인과 맞는지(정렬) + 실패 시 처리
수단IP 목록전자서명 (송신 서버 개인키로 서명, DNS의 공개키로 검증)정책 선언 + 보고서(rua)
지키는 것발신 서버 위조 방지무결성 + 도메인 인증둘을 묶는 정책 · 가시성

⚠️ 반례: DKIM은 전자서명을 쓰지만 PGP · S/MIME처럼 사용자 개인이 서명하는 것이 아닙니다. 도메인(메일 서버)이 서명하며, 본문을 암호화하지도 않습니다.

📝 기출 포인트 — SPF 정의가 2022년 이후 반복. 최근 후기에 실기에서 SPF · DKIM · DMARC 구분이 나왔다는 언급이 있습니다. "DNS 기반 · IP 대조 = SPF", "서명 = DKIM", "정책 · 보고 = DMARC".


5. 메일 보안 기술 — PGP · S/MIME · PEM

5.1 ⭐ PGP — 이 노트의 최다 출제 개념

PGP (Pretty Good Privacy) — [전자우편 보안 프로그램]인데, [ 인증기관 없이 사용자들이 서로의 공개키를 보증하는 신뢰의 웹(Web of Trust)을 쓴다 ]는 점에서 X.509 인증서와 CA에 기대는 S/MIME · PEM과 구별된다. 1991년 필 짐머만(Phil Zimmermann) 이 만들었고, 표준화된 형태가 OpenPGP (RFC 4880)입니다.

송신 처리 순서 — 앞에서 배운 전자서명(18번 노트)과 하이브리드 암호(19번 노트)를 그대로 조립한 것입니다.

① 서명   : 메시지 해시 → 송신자 개인키로 서명          (인증 · 무결성 · 송신 부인방지)
② 압축   : 서명 + 메시지를 ZIP 압축                    (서명 "후" 압축)
③ 암호화 : 일회용 세션키 생성 → 대칭키로 암호화         (기밀성)
④ 키 포장: 세션키를 수신자 공개키로 암호화             (키 전달)
⑤ 변환   : Radix-64로 ASCII 변환                      (메일 호환성)  (+ 긴 메시지는 분할)

🔍 읽는 포인트 : 서명 → 압축 → 암호화 → Radix-64 . 세션키는 메시지마다 새로 만들고, 수신자 공개키 로 감쌉니다.

기능쓰는 알고리즘 (판본에 따라)
서명RSA, DSS(DSA) / 해시 MD5(초기) · SHA-1 · SHA-2
메시지 암호화 (대칭)IDEA(초기), CAST-128, 3DES, 이후 AES
세션키 암호화 (공개키)RSA, ElGamal
압축 / 호환성ZIP / Radix-64
PGP가 제공 ⭕PGP가 제공하지 않음 ❌
기밀성, 메시지 무결성, 송신자 인증, 송신 부인방지 , 압축, 호환성, 분할수신 부인방지 (받았다는 증거), 가용성, 접근통제, 재전송 방지

왜 수신 부인방지가 없나 — 송신 부인방지는 송신자가 자기 개인키로 서명 했으니 "안 보냈다"고 못 하는 것입니다. 반대로 "받았다"를 증명하려면 수신자가 수신 확인에 서명해 돌려보내는 절차가 있어야 하는데, PGP는 메일을 한 방향으로 보내는 도구라 그 절차가 없습니다.

📝 기출 포인트 — PGP는 A1.2 최다(14회). "PGP가 제공하지 않는 기능 = 수신 부인방지" 가 2018 · 2024 · 2025에 반복됐고, 세션키를 암호화하는 알고리즘(RSA) , 처리 순서(서명 → 압축 → 암호화) , 신뢰 모델(CA 미사용) , 개발자(짐머만)도 나왔습니다.

5.2 S/MIME과 PEM

S/MIME — [전자우편 보안 표준]인데, [ MIME 형식에 X.509 v3 인증서 기반 서명 · 암호화를 더했다 ]는 점에서 신뢰의 웹을 쓰는 PGP와 구별된다. RSA Data Security사 가 개발했고 이후 IETF 표준(CMS 기반)이 되었습니다. 기능은 암호화(Enveloped data), 서명(Signed data), 서명만 보이게(Clear-signed data), 서명 + 암호화입니다.

PEM (Privacy Enhanced Mail) — [전자우편 보안 표준]인데, [ IETF가 만들고 계층적 CA로 키를 중앙집중 관리한다 ]는 점에서 분산형인 PGP와 구별된다. 구현이 복잡해 널리 쓰이지 못했습니다(오늘날 "PEM 형식"은 인증서 파일 인코딩 이름으로 남았습니다).

PGPS/MIMEPEM
만든 곳필 짐머만 (개인)RSA Data Security → IETFIETF
키 신뢰 모델신뢰의 웹 (CA 없음, 분산)X.509 v3 인증서 + CA계층형 CA (중앙집중)
보급개인 사용자기업 · 메일 클라이언트 내장거의 안 쓰임
구현 난이도쉬움중간어려움

⚠️ 반례: SSL/TLS · IPsec은 이메일 보안 표준이 아닙니다. SMTP 구간을 TLS로 감쌀 수는 있지만(STARTTLS), 이는 서버 사이 구간 보호 이고 메시지 자체에 서명 · 암호화를 남기는 PGP · S/MIME과 다릅니다. "보안 전자우편이 아닌 것"의 정답 보기로 반복됐습니다.

📝 기출 포인트 — S/MIME 10회: " RSA사 개발 , X.509 v3 인증서 "가 정답 핵심어. PEM 5회: " IETF , 중앙집중식 키 관리 , 구현 어려움". 세 기술 중 "아닌 것"으로 SSL · IPsec이 섞여 나옵니다.

💡 비유는 마지막에 — PGP는 친구 소개로 쌓은 신뢰 , S/MIME · PEM은 관공서가 발급한 신분증 입니다.


6. 실기 연결

관련 수행준거 : 1-3 서비스별 보안특성 파악(FTP · 메일 동작절차와 환경 설정), 2-2 서비스 보안설정 점검(FTP 서버 접근 권한, 메일 서버 스팸 릴레이 허용 여부, SMTP · POP · IMAP 보안 설정 ), 3-1 서비스별 로그 모니터링(FTP · 메일).

필답형 서술 답안에 들어가야 할 핵심어

예상 질문답안 핵심어
FTP 액티브와 패시브 모드의 차이제어 21, 액티브 = 서버 20 → 클라이언트 (PORT), 패시브 = 클라이언트 → 서버 임의 포트 (PASV, 227), 클라이언트 방화벽
FTP 바운스 공격 원리와 대책PORT 명령에 제3 호스트 지정 , 포트 스캔 · 우회, PORT IP 검증, 1024 미만 포트 거부, 익명 쓰기 금지
오픈 릴레이 점검과 조치외부 → 외부 중계 허용 여부 확인, access 파일에 내부망만 RELAY , makemap
PGP의 동작 순서해시 · 서명 → 압축 → 세션키 대칭 암호화 → 세션키를 수신자 공개키 로 암호화 → Radix-64

점검표 예시 (Unix 서버)

점검 항목확인 방법양호 기준
익명 FTPgrep anonymous_enable /etc/vsftpd/vsftpd.confNO
root FTP 접속cat /etc/vsftpd/ftpusersroot가 적혀 있음 (거부)
ftpusers 파일 권한ls -l /etc/vsftpd/ftpusers소유자 root, 640 이하
TFTP서비스 · 포트 확인 (ss -ulnp | grep :69)미사용 시 중지
스팸 릴레이/etc/mail/access, sendmail.cf 릴레이 규칙내부 대역만 RELAY
SMTP 계정 확인PrivacyOptionsnovrfy,noexpn 포함

7. 확인 문제

1. FTP 패시브 모드에 대한 설명으로 옳은 것은? ① 서버가 20번 포트에서 클라이언트로 데이터 연결을 연다 ② 클라이언트가 PASV 명령을 보내고, 서버가 알려 준 포트로 클라이언트가 데이터 연결을 연다 ③ 모드 변경은 서버 관리자만 할 수 있다 ④ 클라이언트가 방화벽 뒤에 있으면 사용할 수 없다

2. xferlog의 한 줄이 ... 2048 /pub/a.zip b _ o a ftp ftp 0 * c 일 때 옳은 해석은? ① 실제 계정 사용자의 업로드가 완료됐다 ② 익명 사용자의 다운로드가 완료됐다 ③ ASCII 모드로 익명 업로드가 중단됐다 ④ 게스트 사용자의 다운로드가 중단됐다

3. sendmail access 파일에서 "메일을 받지 않되 보낸 쪽에는 아무것도 알리지 않는" 지시어는? ① OK ② RELAY ③ REJECT ④ DISCARD

4. 스팸 대응 기술의 설명으로 틀린 것은? ① RBL은 스팸 발송 IP 목록을 DNS 질의로 조회한다 ② SPF는 도메인이 DNS에 등록한 발송 서버 IP와 실제 발송 IP를 대조한다 ③ SpamAssassin은 여러 규칙의 점수를 합산해 스팸 여부를 판단한다 ④ DKIM은 수신자의 공개키로 메일 본문을 암호화해 기밀성을 보장한다

5. PGP가 제공하지 않는 보안 서비스는? ① 메시지 기밀성 ② 송신자 인증 ③ 수신 부인방지 ④ 메시지 무결성

6. 보안 전자우편 기술의 비교로 옳은 것은? ① PGP는 X.509 인증서와 계층형 CA를 필수로 쓴다 ② S/MIME은 RSA Data Security사가 개발했고 X.509 v3 인증서를 쓴다 ③ PEM은 분산형 신뢰의 웹을 쓴다 ④ IPsec은 대표적인 보안 전자우편 표준이다

정답과 해설

#정답해설 (판별 축)
1②축 1(누가 데이터 연결을 여는가): 패시브는 클라이언트가 연다 . ①은 액티브, ③ 모드는 클라이언트가 정함, ④ 오히려 방화벽 뒤 클라이언트 때문에 쓰는 모드
2②direction o = 서버에서 나감(다운로드), access-mode a = anonymous, 마지막 c = complete. b는 바이너리
3④REJECT ↔ DISCARD는 " 알리는가 "로 갈림. OK는 허용, RELAY는 중계 허용
4④DKIM은 송신 도메인의 개인키로 서명 (무결성 · 도메인 인증)하며 본문을 암호화하지 않음. 기밀성은 PGP · S/MIME의 영역
5③송신자 서명은 있으나 수신 확인 서명 절차가 없음 . ①②④는 서명 · 암호화로 제공
6②축 4(키를 누가 보증하나): PGP = 신뢰의 웹, S/MIME · PEM = CA. ③은 반대, ④ IPsec은 네트워크 계층 보안(10번 노트)

부록 A. 스스로 확인하기

#질문답이 있는 곳
1FTP 기본 모드, 모드를 바꾸는 주체, 패시브를 쓰는 이유는? 227 (...,4,1)의 포트는?1.2
2TFTP · SFTP · FTPS를 전송 계층 · 인증 · 암호화로 구분하면?1.4
3FTP 바운스 공격의 주 목적과 대책 세 가지는?2.1
4ftpusers와 TCP Wrapper는 무엇을 기준으로 통제하나?2.3
5xferlog의 direction · access-mode · completion-status 값은?2.4
6MUA · MTA · MDA의 역할, SMTP · POP3 · IMAP 포트, SMTP 명령 순서는?3.1~3.3
7access 파일의 REJECT와 DISCARD의 차이, 반영 명령은?4.1
8RBL · SPF · SpamAssassin · DKIM · DMARC는 각각 무엇을 근거로 판단하나?4.3, 4.4
9PGP의 처리 순서와 수신 부인방지가 없는 이유는?5.1
10PGP · S/MIME · PEM의 키 신뢰 모델과 개발 주체는?5.2

부록 B. 자주 하는 실수 · 함정

실수바로잡기
"패시브 모드도 서버 20번 포트를 쓴다"❌ 20번은 액티브 의 서버 데이터 포트. 패시브는 서버가 고른 1024 이상 포트
"FTP 모드는 서버가 정한다"❌ 클라이언트 가 PORT/PASV로 정함
"SFTP = FTP + SSL"❌ SFTP는 SSH 기반 . FTP + TLS는 FTPS
"ftpusers = FTP 허용 사용자 목록"❌ 거부 목록 . root를 적어 root 접속 차단
"xferlog의 a는 항상 ASCII"⚠️ transfer-type 위치에서는 ASCII, access-mode 위치에서는 anonymous
"SPF는 메일 본문을 검사한다"❌ 발송 서버 IP 만 대조
"DKIM은 메일을 암호화한다"❌ 서명 (무결성 · 도메인 인증)만. 기밀성 없음
"PGP는 수신 부인방지까지 제공한다"❌ 송신 부인방지만
"PGP는 암호화 후 압축한다"❌ 서명 → 압축 → 암호화 (암호문은 압축이 잘 안 됨)

부록 C. AI · NotebookLM 복습 프롬프트

이 12번 노트(FTP · 메일 보안)만 근거로 4지선다 6문제를 내줘. 노트 밖 내용은 쓰지 마.
FTP 액티브/패시브, FTP 바운스, xferlog 해석, sendmail access, SPF/RBL/SpamAssassin 구분, PGP 기능은 반드시 포함해줘.
내가 답하면 채점하고, 틀린 보기가 0절의 어느 판별 축 반대편에 있는지 절 번호와 함께 설명해줘.