네트워크 보안 기초
네트워크 보안 기초¶
개요¶
네트워크 보안은 컴퓨터 네트워크와 데이터를 무단 접근, 오용, 변조로부터 보호하는 것입니다. 이 장에서는 방화벽, NAT, VPN, 암호화 기초 등 네트워크 보안의 핵심 개념을 학습합니다.
난이도: ⭐⭐⭐
학습 목표: - 네트워크 보안의 기본 원칙 이해 - 방화벽의 종류와 동작 원리 파악 - NAT의 개념과 보안적 역할 이해 - VPN의 종류와 활용 방법 학습 - 암호화 기초 개념 습득
목차¶
1. 네트워크 보안 개요¶
보안의 3대 요소 (CIA Triad)¶
┌─────────────────────────────────────────────────────────────────┐
│ CIA Triad (보안 3요소) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ Confidentiality │ │
│ │ (기밀성) │ │
│ └────────┬────────┘ │
│ │ │
│ 인가된 사용자만 │
│ 정보에 접근 │
│ │ │
│ ┌─────────────────┼─────────────────┐ │
│ │ │ │ │
│ ┌───────▼───────┐ │ ┌───────▼───────┐ │
│ │ Integrity │ │ │ Availability │ │
│ │ (무결성) │◀───────┼────────▶│ (가용성) │ │
│ └───────────────┘ │ └───────────────┘ │
│ │ │
│ 정보가 정확하고 │ 필요할 때 │
│ 변조되지 않음 │ 정보에 접근 가능 │
│ │
└─────────────────────────────────────────────────────────────────┘
보안 요소 상세¶
| 요소 | 설명 | 위협 예시 | 대응 방법 |
|---|---|---|---|
| 기밀성 | 인가된 자만 접근 | 도청, 스니핑 | 암호화, 접근 제어 |
| 무결성 | 데이터 변조 방지 | 중간자 공격, 변조 | 해시, 디지털 서명 |
| 가용성 | 서비스 지속 제공 | DoS/DDoS 공격 | 이중화, 로드밸런싱 |
추가 보안 요소¶
┌─────────────────────────────────────────────────────────────────┐
│ 추가 보안 요소 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 인증 (Authentication) │
│ └─ 사용자/시스템 신원 확인 │
│ 예: 비밀번호, 인증서, 생체인식 │
│ │
│ 인가 (Authorization) │
│ └─ 접근 권한 부여 │
│ 예: 역할 기반 접근 제어 (RBAC) │
│ │
│ 부인 방지 (Non-repudiation) │
│ └─ 행위 사실 부인 불가 │
│ 예: 디지털 서명, 감사 로그 │
│ │
│ 책임추적성 (Accountability) │
│ └─ 행위자 추적 가능 │
│ 예: 로깅, 모니터링 │
│ │
└─────────────────────────────────────────────────────────────────┘
심층 방어 (Defense in Depth)¶
┌─────────────────────────────────────────────────────────────────┐
│ 심층 방어 전략 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 물리적 보안 │ │
│ │ (서버실, 출입 통제) │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ 경계 보안 │ │ │
│ │ │ (방화벽, IDS/IPS) │ │ │
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
│ │ │ │ 네트워크 보안 │ │ │ │
│ │ │ │ (VLAN, 네트워크 분리) │ │ │ │
│ │ │ │ ┌─────────────────────────────────┐ │ │ │ │
│ │ │ │ │ 호스트 보안 │ │ │ │ │
│ │ │ │ │ (OS 보안, 안티바이러스) │ │ │ │ │
│ │ │ │ │ ┌─────────────────────────┐ │ │ │ │ │
│ │ │ │ │ │ 애플리케이션 보안 │ │ │ │ │ │
│ │ │ │ │ │ (입력 검증, 인증) │ │ │ │ │ │
│ │ │ │ │ │ ┌─────────────────┐ │ │ │ │ │ │
│ │ │ │ │ │ │ 데이터 보안 │ │ │ │ │ │ │
│ │ │ │ │ │ │ (암호화, 백업) │ │ │ │ │ │ │
│ │ │ │ │ │ └─────────────────┘ │ │ │ │ │ │
│ │ │ │ │ └─────────────────────────┘ │ │ │ │ │
│ │ │ │ └─────────────────────────────────┘ │ │ │ │
│ │ │ └─────────────────────────────────────────┘ │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2. 방화벽¶
방화벽 개요¶
방화벽은 네트워크 트래픽을 모니터링하고 보안 규칙에 따라 트래픽을 허용하거나 차단하는 네트워크 보안 장치입니다.
┌─────────────────────────────────────────────────────────────────┐
│ 방화벽 위치 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [인터넷] │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 경계 라우터 │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 방화벽 │◀─ 트래픽 필터링 │
│ │ (외부 방화벽) │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ DMZ │◀─ 웹 서버, 메일 서버 │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 방화벽 │◀─ 내부 보호 │
│ │ (내부 방화벽) │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ 내부 네트워크 │◀─ 직원 PC, 내부 서버 │
│ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
방화벽 유형¶
1. 패킷 필터링 방화벽 (Packet Filtering)¶
┌─────────────────────────────────────────────────────────────────┐
│ 패킷 필터링 방화벽 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 동작 계층: L3 (네트워크), L4 (전송) │
│ │
│ 검사 항목: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 출발지 IP │ 목적지 IP │ 프로토콜 │ 출발지 포트 │ 목적지 포트 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 규칙 예시: │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ # 규칙 출발지IP 목적지IP 포트 프로토콜 동작 ││
│ │ 1 192.168.1.0/24 any 80 TCP ALLOW ││
│ │ 2 any 192.168.1.10 22 TCP ALLOW ││
│ │ 3 10.0.0.0/8 any any any DENY ││
│ │ 4 any any any any DENY ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ 장점: 빠른 속도, 간단한 구현 │
│ 단점: 패킷 내용 검사 불가, 상태 추적 불가 │
│ │
└─────────────────────────────────────────────────────────────────┘
2. 상태 기반 방화벽 (Stateful Inspection)¶
┌─────────────────────────────────────────────────────────────────┐
│ 상태 기반 방화벽 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 동작 계층: L3, L4 + 연결 상태 추적 │
│ │
│ 상태 테이블 (State Table): │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 출발지IP:포트 목적지IP:포트 프로토콜 상태 타임아웃 ││
│ │ 192.168.1.10:45000 93.184.216.34:80 TCP ESTABLISHED 3600││
│ │ 192.168.1.10:45001 8.8.8.8:53 UDP ACTIVE 60 ││
│ │ 192.168.1.20:52000 10.0.0.5:22 TCP ESTABLISHED 7200││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ TCP 상태 추적: │
│ │
│ [클라이언트] [방화벽] [서버] │
│ │ │ │ │
│ │──── SYN ────────▶│──── SYN ───────▶│ │
│ │ (NEW) │ │ │
│ │ │◀─── SYN-ACK ────│ │
│ │◀─── SYN-ACK ─────│ │ │
│ │──── ACK ────────▶│──── ACK ───────▶│ │
│ │ (ESTABLISHED) │ │ │
│ │ │ │ │
│ │
│ 장점: 연결 상태 추적, 반환 트래픽 자동 허용 │
│ 단점: 패킷 내용 검사 불가 │
│ │
└─────────────────────────────────────────────────────────────────┘
3. 애플리케이션 계층 방화벽 (Application Layer)¶
┌─────────────────────────────────────────────────────────────────┐
│ 애플리케이션 계층 방화벽 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 동작 계층: L7 (애플리케이션) │
│ │
│ 검사 항목: │
│ - HTTP 메서드, URL, 헤더, 바디 │
│ - DNS 쿼리 내용 │
│ - FTP 명령어 │
│ - SQL 쿼리 패턴 │
│ │
│ 기능: │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ - 웹 애플리케이션 방화벽 (WAF) ││
│ │ - SQL Injection 차단 ││
│ │ - XSS 공격 차단 ││
│ │ - 악성 파일 업로드 차단 ││
│ │ - API 요청 검증 ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ 장점: 상세한 트래픽 분석, 애플리케이션 수준 보호 │
│ 단점: 높은 처리 부하, 복잡한 설정 │
│ │
└─────────────────────────────────────────────────────────────────┘
차세대 방화벽 (NGFW)¶
┌─────────────────────────────────────────────────────────────────┐
│ 차세대 방화벽 (Next-Generation Firewall) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ NGFW 기능 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐│ │
│ │ │ 패킷 필터링 │ │ 상태 기반 검사 │ │ 애플리케이션 ││ │
│ │ │ │ │ │ │ 인식 (DPI) ││ │
│ │ └───────────────┘ └───────────────┘ └───────────────┘│ │
│ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐│ │
│ │ │ IPS 통합 │ │ SSL 복호화 │ │ 사용자 인식 ││ │
│ │ │ │ │ │ │ ││ │
│ │ └───────────────┘ └───────────────┘ └───────────────┘│ │
│ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐│ │
│ │ │ 위협 인텔리전스 │ │ 샌드박싱 │ │ URL 필터링 ││ │
│ │ │ │ │ │ │ ││ │
│ │ └───────────────┘ └───────────────┘ └───────────────┘│ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 주요 벤더: Palo Alto, Fortinet, Check Point, Cisco │
│ │
└─────────────────────────────────────────────────────────────────┘
방화벽 규칙 예시 (iptables)¶
# 기본 정책 설정
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 로컬호스트 허용
iptables -A INPUT -i lo -j ACCEPT
# 기존 연결 허용 (상태 기반)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH 허용 (포트 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# HTTP/HTTPS 허용
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 특정 IP에서만 SSH 허용
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
# ICMP (ping) 허용
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# 규칙 확인
iptables -L -n -v
# 규칙 저장
iptables-save > /etc/iptables.rules
3. NAT¶
NAT 개요¶
NAT(Network Address Translation)는 IP 주소를 다른 IP 주소로 변환하는 기술입니다.
┌─────────────────────────────────────────────────────────────────┐
│ NAT 기본 개념 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 사설 네트워크 ││
│ │ 192.168.1.0/24 ││
│ │ ││
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ││
│ │ │ PC-1 │ │ PC-2 │ │ PC-3 │ ││
│ │ │.10 │ │.20 │ │.30 │ ││
│ │ └────┬────┘ └────┬────┘ └────┬────┘ ││
│ │ │ │ │ ││
│ │ └─────────┬──┴────────────┘ ││
│ │ │ ││
│ │ ┌─────┴─────┐ ││
│ │ │ 라우터 │ ││
│ │ │ NAT │ ││
│ │ │ 192.168.1.1 (내부) ││
│ │ │ 203.0.113.1 (외부) ││
│ │ └─────┬─────┘ ││
│ └─────────────────┼──────────────────────────────────────────┘│
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐
│ │ 인터넷 │
│ │ │
│ │ 모든 PC가 203.0.113.1로 표시됨 │
│ └─────────────────────────────────────────────────────────────┘
│ │
└─────────────────────────────────────────────────────────────────┘
NAT 유형¶
1. Static NAT (1:1)¶
┌─────────────────────────────────────────────────────────────────┐
│ Static NAT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 고정 매핑: 사설 IP ↔ 공인 IP (1:1) │
│ │
│ 매핑 테이블: │
│ ┌────────────────────┬────────────────────┐ │
│ │ 사설 IP │ 공인 IP │ │
│ ├────────────────────┼────────────────────┤ │
│ │ 192.168.1.10 │ 203.0.113.10 │ │
│ │ 192.168.1.20 │ 203.0.113.20 │ │
│ │ 192.168.1.30 │ 203.0.113.30 │ │
│ └────────────────────┴────────────────────┘ │
│ │
│ 용도: 외부에서 내부 서버 접근 필요 시 │
│ │
└─────────────────────────────────────────────────────────────────┘
2. Dynamic NAT (N:N)¶
┌─────────────────────────────────────────────────────────────────┐
│ Dynamic NAT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 동적 매핑: 사설 IP 풀 → 공인 IP 풀 │
│ │
│ 사설 IP 풀 공인 IP 풀 │
│ 192.168.1.10 203.0.113.10 │
│ 192.168.1.20 ───▶ 203.0.113.11 │
│ 192.168.1.30 203.0.113.12 │
│ 192.168.1.40 (사용 가능한 IP 할당) │
│ │
│ 특징: │
│ - 선착순 할당 │
│ - 공인 IP 수만큼만 동시 연결 가능 │
│ │
└─────────────────────────────────────────────────────────────────┘
3. PAT/NAPT (N:1) - 가장 일반적¶
┌─────────────────────────────────────────────────────────────────┐
│ PAT (Port Address Translation) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 하나의 공인 IP로 여러 사설 IP 공유 (포트로 구분) │
│ │
│ [사설 네트워크] [NAT 라우터] │
│ │
│ 192.168.1.10:45000 ──────▶ 203.0.113.1:10001 ──────▶ 인터넷 │
│ 192.168.1.20:45001 ──────▶ 203.0.113.1:10002 ──────▶ 인터넷 │
│ 192.168.1.30:45002 ──────▶ 203.0.113.1:10003 ──────▶ 인터넷 │
│ │
│ NAT 테이블: │
│ ┌────────────────────────┬───────────────────────┐ │
│ │ 내부 주소:포트 │ 외부 주소:포트 │ │
│ ├────────────────────────┼───────────────────────┤ │
│ │ 192.168.1.10:45000 │ 203.0.113.1:10001 │ │
│ │ 192.168.1.20:45001 │ 203.0.113.1:10002 │ │
│ │ 192.168.1.30:45002 │ 203.0.113.1:10003 │ │
│ └────────────────────────┴───────────────────────┘ │
│ │
│ 용도: 가정, 소규모 기업 (공유기) │
│ │
└─────────────────────────────────────────────────────────────────┘
NAT 동작 과정¶
┌─────────────────────────────────────────────────────────────────┐
│ NAT 패킷 변환 과정 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 내부 → 외부 (Outbound) │
│ ───────────────────────── │
│ │
│ [PC] [NAT 라우터] [웹 서버] │
│ 192.168.1.10:45000 203.0.113.1 93.184.216.34 │
│ │ │ │ │
│ │──────────────────────▶│ │ │
│ │ 출발: 192.168.1.10:45000 │ │
│ │ 도착: 93.184.216.34:80 │ │
│ │ │ │ │
│ │ [NAT 변환] │───────────────────────▶│ │
│ │ │ 출발: 203.0.113.1:10001│ │
│ │ │ 도착: 93.184.216.34:80 │ │
│ │ │ │ │
│ │
│ 2. 외부 → 내부 (Inbound - 응답) │
│ ────────────────────────────── │
│ │ │ │ │
│ │ │◀───────────────────────│ │
│ │ │ 출발: 93.184.216.34:80 │ │
│ │ │ 도착: 203.0.113.1:10001│ │
│ │ │ │ │
│ │◀──────────────────────│ [NAT 역변환] │ │
│ │ 출발: 93.184.216.34:80│ │ │
│ │ 도착: 192.168.1.10:45000 │ │
│ │
└─────────────────────────────────────────────────────────────────┘
NAT의 보안적 역할¶
┌─────────────────────────────────────────────────────────────────┐
│ NAT의 보안 특성 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 장점 (보안 측면): │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 1. 내부 IP 주소 은닉 │ │
│ │ - 외부에서 내부 네트워크 구조 파악 어려움 │ │
│ │ │ │
│ │ 2. 자연스러운 방화벽 효과 │ │
│ │ - 외부에서 직접 내부 접근 불가 │ │
│ │ - 내부 시작 연결만 허용 (기본) │ │
│ │ │ │
│ │ 3. 세션 기반 필터링 │ │
│ │ - NAT 테이블에 없는 패킷 차단 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 주의: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ⚠ NAT는 보안 기능이 아닌 주소 변환 기술 │ │
│ │ ⚠ 방화벽과 함께 사용해야 함 │ │
│ │ ⚠ 포트 포워딩 시 내부 노출 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
포트 포워딩¶
┌─────────────────────────────────────────────────────────────────┐
│ 포트 포워딩 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 외부에서 내부 서버 접근을 위한 NAT 설정 │
│ │
│ [인터넷] [NAT 라우터] [내부 서버] │
│ 203.0.113.1 192.168.1.100 │
│ │ │ │ │
│ │───────────────────────▶│ │ │
│ │ 도착: 203.0.113.1:80 │ │ │
│ │ │ │ │
│ │ [포트 포워딩] │───────────────────────▶│ │
│ │ │ 도착: 192.168.1.100:80 │ │
│ │ │ │ │
│ │
│ 설정 예시: │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 외부 포트 내부 IP 내부 포트 프로토콜 ││
│ │ 80 192.168.1.100 80 TCP ││
│ │ 443 192.168.1.100 443 TCP ││
│ │ 22 192.168.1.200 22 TCP ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ Linux iptables 예시: │
│ iptables -t nat -A PREROUTING -p tcp --dport 80 \ │
│ -j DNAT --to-destination 192.168.1.100:80 │
│ │
└─────────────────────────────────────────────────────────────────┘
4. VPN¶
VPN 개요¶
VPN(Virtual Private Network)은 공용 네트워크를 통해 안전한 사설 네트워크 연결을 제공합니다.
┌─────────────────────────────────────────────────────────────────┐
│ VPN 기본 개념 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ VPN 없이 (공용 인터넷) │
│ ────────────────────── │
│ [PC] ───── 평문 데이터 ───────▶ [인터넷] ───────▶ [서버] │
│ 도청 가능 │
│ │
│ VPN 사용 시 │
│ ──────────── │
│ [PC] ═══ 암호화된 터널 ═══▶ [인터넷] ═══▶ [VPN 서버] ──▶ [서버] │
│ 보안 연결 │
│ │
│ VPN 기능: │
│ - 데이터 암호화 (기밀성) │
│ - 데이터 무결성 검증 │
│ - 사용자 인증 │
│ - IP 주소 은닉 │
│ │
└─────────────────────────────────────────────────────────────────┘
VPN 유형¶
1. Site-to-Site VPN¶
┌─────────────────────────────────────────────────────────────────┐
│ Site-to-Site VPN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ ┌────────────────┐ │
│ │ 본사 네트워크 │ │ 지사 네트워크 │ │
│ │ 10.1.0.0/16 │ │ 10.2.0.0/16 │ │
│ │ │ │ │ │
│ │ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │ │
│ │ │PC │ │서버│ │ │ │PC │ │서버│ │ │
│ │ └──┬─┘ └──┬─┘ │ │ └──┬─┘ └──┬─┘ │ │
│ │ └──┬───┘ │ │ └──┬───┘ │ │
│ │ │ │ │ │ │ │
│ │ ┌─────┴─────┐ │ │ ┌─────┴─────┐ │ │
│ │ │VPN 게이트웨이│ │ │ │VPN 게이트웨이│ │ │
│ │ └─────┬─────┘ │ │ └─────┬─────┘ │ │
│ └───────┼───────┘ └───────┼───────┘ │
│ │ │ │
│ │ ┌──────────────────┐ │ │
│ └──────│ 인터넷 │──────────┘ │
│ │ │ │
│ │ ═══ VPN 터널 ═══ │ │
│ └──────────────────┘ │
│ │
│ 용도: 본사-지사 연결, 데이터센터 연결 │
│ │
└─────────────────────────────────────────────────────────────────┘
2. Remote Access VPN¶
┌─────────────────────────────────────────────────────────────────┐
│ Remote Access VPN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [원격 사용자] │
│ │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ PC1 │ │ PC2 │ │ PC3 │ │
│ │ VPN │ │ VPN │ │ VPN │ │
│ │클라이언트│ │클라이언트│ │클라이언트│ │
│ └──┬──┘ └──┬──┘ └──┬──┘ │
│ │ │ │ │
│ │ ┌────┴────────┴────┐ │
│ └───│ 인터넷 │ │
│ │ │ │
│ │ ═══ VPN 터널 ═══ │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ VPN 서버 │ │
│ └──────┬──────┘ │
│ │ │
│ ┌───────────────┼───────────────────┐ │
│ │ 회사 네트워크 │ │
│ │ ┌────┐ ┌────┐ ┌────┐ │ │
│ │ │서버│ │DB │ │파일 │ │ │
│ │ └────┘ └────┘ └────┘ │ │
│ └───────────────────────────────────┘ │
│ │
│ 용도: 재택근무, 출장 시 회사 네트워크 접속 │
│ │
└─────────────────────────────────────────────────────────────────┘
VPN 프로토콜¶
| 프로토콜 | 계층 | 특징 | 보안 |
|---|---|---|---|
| PPTP | L2 | 오래됨, 빠름 | 취약 (사용 비권장) |
| L2TP/IPsec | L2+L3 | 일반적 | 강함 |
| IPsec | L3 | 표준, 호환성 | 강함 |
| OpenVPN | L3/L4 | 오픈소스, 유연 | 강함 |
| WireGuard | L3 | 최신, 빠름, 간단 | 강함 |
| SSL/TLS VPN | L4-L7 | 브라우저 기반 | 강함 |
IPsec VPN¶
┌─────────────────────────────────────────────────────────────────┐
│ IPsec 프로토콜 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IPsec 구성 요소: │
│ │
│ 1. IKE (Internet Key Exchange) │
│ - 키 교환 및 SA(Security Association) 설정 │
│ - Phase 1: IKE SA 설정 (인증, 암호화 협상) │
│ - Phase 2: IPsec SA 설정 (실제 터널 설정) │
│ │
│ 2. AH (Authentication Header) │
│ - 데이터 무결성, 출처 인증 │
│ - 암호화 없음 │
│ │
│ 3. ESP (Encapsulating Security Payload) │
│ - 데이터 암호화 + 무결성 + 인증 │
│ - 가장 많이 사용 │
│ │
│ IPsec 모드: │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 터널 모드 (Tunnel Mode) ││
│ │ - 전체 IP 패킷을 암호화 ││
│ │ - Site-to-Site VPN에 사용 ││
│ │ ││
│ │ 원본: [IP 헤더][데이터] ││
│ │ 결과: [새 IP 헤더][ESP 헤더][암호화된 원본 패킷][ESP Trailer]││
│ ├────────────────────────────────────────────────────────────┤│
│ │ 전송 모드 (Transport Mode) ││
│ │ - 데이터 페이로드만 암호화 ││
│ │ - 호스트 간 통신에 사용 ││
│ │ ││
│ │ 원본: [IP 헤더][데이터] ││
│ │ 결과: [IP 헤더][ESP 헤더][암호화된 데이터][ESP Trailer] ││
│ └────────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────────┘
WireGuard¶
┌─────────────────────────────────────────────────────────────────┐
│ WireGuard VPN │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 특징: │
│ - 최신 암호화 (ChaCha20, Poly1305, Curve25519) │
│ - 코드 약 4,000줄 (IPsec 대비 100배 적음) │
│ - 빠른 연결, 낮은 지연 │
│ - 리눅스 커널 내장 (5.6+) │
│ │
│ 설정 예시 (/etc/wireguard/wg0.conf): │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ [Interface] ││
│ │ PrivateKey = <서버 개인키> ││
│ │ Address = 10.0.0.1/24 ││
│ │ ListenPort = 51820 ││
│ │ ││
│ │ [Peer] ││
│ │ PublicKey = <클라이언트 공개키> ││
│ │ AllowedIPs = 10.0.0.2/32 ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ 명령어: │
│ wg-quick up wg0 # VPN 시작 │
│ wg-quick down wg0 # VPN 중지 │
│ wg show # 상태 확인 │
│ │
└─────────────────────────────────────────────────────────────────┘
5. 암호화 기초¶
암호화 개요¶
┌─────────────────────────────────────────────────────────────────┐
│ 암호화 기본 개념 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 평문 (Plaintext) 암호화 (Encryption) 암호문 (Ciphertext)│
│ │
│ "Hello World" ──────────────────▶ "Xj2#kL9@mP" │
│ │ │
│ [키] │
│ │ │
│ "Hello World" ◀────────────────── "Xj2#kL9@mP" │
│ │
│ 복호화 (Decryption) │
│ │
└─────────────────────────────────────────────────────────────────┘
대칭키 암호화 (Symmetric Encryption)¶
┌─────────────────────────────────────────────────────────────────┐
│ 대칭키 암호화 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 같은 키로 암호화/복호화 │
│ │
│ [발신자] [수신자] │
│ │ │ │
│ │ 평문: "Hello" │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────┐ │ │
│ │ │ 암호화 │◀──── 비밀키 ────────────▶│ │
│ │ └──┬───┘ "secretkey" │ │
│ │ │ │ │
│ │ ▼ ▼ │
│ │ 암호문: "Xj2#k" ─────────▶ ┌──────┐ │
│ │ │ 복호화 │ │
│ │ └──┬───┘ │
│ │ │ │
│ │ ▼ │
│ │ 평문: "Hello" │
│ │
│ 대표 알고리즘: │
│ - AES (Advanced Encryption Standard) - 현재 표준 │
│ - ChaCha20 - 모바일에 최적화 │
│ - 3DES - 레거시 (사용 비권장) │
│ │
│ 장점: 빠른 속도 │
│ 단점: 키 전달 문제 (어떻게 안전하게 키를 공유할 것인가?) │
│ │
└─────────────────────────────────────────────────────────────────┘
비대칭키 암호화 (Asymmetric Encryption)¶
┌─────────────────────────────────────────────────────────────────┐
│ 비대칭키 암호화 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 공개키/개인키 쌍 사용 │
│ │
│ [수신자 키 쌍] │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 공개키 │ │ 개인키 │ │
│ │ (누구나 접근) │ │ (본인만 보관) │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ 암호화 시나리오: │
│ │
│ [발신자 Alice] 공개 채널 [수신자 Bob] │
│ │ │ │
│ │ Bob의 공개키 요청 │ │
│ │◀────────────────────────────────────│ │
│ │ │ │
│ │ 평문: "Hello" │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌────────────┐ │ │
│ │ │Bob 공개키로 │ │ │
│ │ │ 암호화 │ │ │
│ │ └─────┬──────┘ │ │
│ │ │ │ │
│ │ ▼ ▼ │
│ │ 암호문 ──────────────────▶ ┌────────────┐ │
│ │ │Bob 개인키로 │ │
│ │ │ 복호화 │ │
│ │ └─────┬──────┘ │
│ │ │ │
│ │ ▼ │
│ │ 평문: "Hello" │
│ │
│ 대표 알고리즘: │
│ - RSA (2048+ bit) │
│ - ECC (Elliptic Curve Cryptography) │
│ - Ed25519 (디지털 서명에 특화) │
│ │
│ 장점: 키 배포 문제 해결 │
│ 단점: 대칭키보다 느림 (100~1000배) │
│ │
└─────────────────────────────────────────────────────────────────┘
하이브리드 암호화¶
┌─────────────────────────────────────────────────────────────────┐
│ 하이브리드 암호화 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 비대칭키로 대칭키를 안전하게 교환, 이후 대칭키로 통신 │
│ │
│ [클라이언트] [서버] │
│ │ │ │
│ │ ───(1) 서버 공개키 요청 ────▶ │ │
│ │ │ │
│ │ ◀─(2) 서버 공개키 전송 ───── │ │
│ │ │ │
│ │ ┌───────────────────────┐ │ │
│ │ │ 1. 대칭키(세션키) 생성 │ │ │
│ │ │ (예: AES-256) │ │ │
│ │ │ │ │ │
│ │ │ 2. 서버 공개키로 │ │ │
│ │ │ 세션키 암호화 │ │ │
│ │ └───────────────────────┘ │ │
│ │ │ │
│ │ ───(3) 암호화된 세션키 ─────▶ │ │
│ │ │ │
│ │ ┌───────────────────────┐ │
│ │ │ 개인키로 세션키 복호화 │ │
│ │ └───────────────────────┘ │
│ │ │ │
│ │ ═══(4) 세션키로 암호화된 통신 ════▶│ │
│ │ ◀══════════════════════════════│ │
│ │
│ ※ TLS/SSL이 이 방식 사용 │
│ │
└─────────────────────────────────────────────────────────────────┘
해시 함수¶
┌─────────────────────────────────────────────────────────────────┐
│ 해시 함수 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 입력 데이터를 고정 길이 해시값으로 변환 (단방향) │
│ │
│ 입력 (가변 길이) 해시 (고정 길이) │
│ ───────────────────────────────────────────────── │
│ "Hello" ──▶ a591a6d40bf... (SHA-256) │
│ "Hello World" ──▶ b94d27b9934... │
│ "hello" ──▶ 2cf24dba5fb... │
│ (작은 변화에도 완전히 다른 결과) │
│ │
│ 특성: │
│ 1. 단방향: 해시에서 원본 복원 불가 │
│ 2. 결정적: 같은 입력 → 항상 같은 해시 │
│ 3. 충돌 저항: 다른 입력이 같은 해시를 가지기 어려움 │
│ 4. 눈사태 효과: 입력의 작은 변화 → 해시의 큰 변화 │
│ │
│ 대표 알고리즘: │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 알고리즘 │ 출력 길이 │ 상태 ││
│ ├────────────────────────────────────────────────────────────┤│
│ │ MD5 │ 128 bit │ 취약 (사용 금지) ││
│ │ SHA-1 │ 160 bit │ 취약 (사용 금지) ││
│ │ SHA-256 │ 256 bit │ 안전 (권장) ││
│ │ SHA-3 │ 가변 │ 안전 (최신) ││
│ │ BLAKE2 │ 가변 │ 안전 (빠름) ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ 용도: │
│ - 비밀번호 저장 (해시 + 솔트) │
│ - 데이터 무결성 검증 │
│ - 디지털 서명 │
│ - 파일 체크섬 │
│ │
└─────────────────────────────────────────────────────────────────┘
디지털 서명¶
┌─────────────────────────────────────────────────────────────────┐
│ 디지털 서명 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 서명 생성 (발신자) │
│ ───────────────── │
│ │
│ 원본 문서 │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ 해시 │──▶ 문서 해시값 │
│ └─────────┘ │ │
│ ▼ │
│ ┌───────────┐ │
│ │발신자 개인키│ │
│ │ 로 암호화 │──▶ 디지털 서명 │
│ └───────────┘ │
│ │
│ 전송: [원본 문서] + [디지털 서명] │
│ │
│ 서명 검증 (수신자) │
│ ───────────────── │
│ │
│ [원본 문서] [디지털 서명] │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────┐ ┌───────────┐ │
│ │ 해시 │ │발신자 공개키│ │
│ └────┬────┘ │ 로 복호화 │ │
│ │ └─────┬─────┘ │
│ │ │ │
│ ▼ ▼ │
│ 계산된 해시값 =? 복호화된 해시값 │
│ │
│ 일치 → 무결성 확인 + 발신자 인증 완료 │
│ │
└─────────────────────────────────────────────────────────────────┘
6. 연습 문제¶
기초 문제¶
- 보안 기초
- CIA Triad의 세 요소를 설명하세요.
-
심층 방어(Defense in Depth)란 무엇인가요?
-
방화벽
- 패킷 필터링과 상태 기반 방화벽의 차이는?
-
다음 iptables 규칙은 무엇을 하나요?
bash iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT -
NAT
- NAT의 주요 목적 2가지는?
- PAT(Port Address Translation)의 동작 원리를 설명하세요.
중급 문제¶
- VPN
- Site-to-Site VPN과 Remote Access VPN의 차이는?
-
IPsec의 터널 모드와 전송 모드 차이를 설명하세요.
-
암호화
- 대칭키와 비대칭키 암호화의 장단점을 비교하세요.
-
TLS가 하이브리드 암호화를 사용하는 이유는?
-
실습 문제
# 다음 시나리오에 적합한 보안 솔루션을 제시하세요
# 1. 재택근무 직원이 회사 내부망에 접속해야 함
# 답:
# 2. 웹 서버로 들어오는 SQL Injection 공격을 차단해야 함
# 답:
# 3. 본사와 지사 간 안전한 통신이 필요함
# 답:
고급 문제¶
- 종합 분석
-
다음 네트워크에서 보안 취약점을 찾으세요:
인터넷 ─── 라우터 ─── 내부 네트워크 │ 웹 서버 -
암호화 적용
- 파일 무결성을 검증하기 위한 해시 사용법을 설명하세요.
- 비밀번호 저장 시 해시만 사용하면 안 되는 이유는?
7. 다음 단계¶
16_Security_Threats_Response.md에서 스니핑, 스푸핑, DDoS 등 구체적인 보안 위협과 대응 방안을 배워봅시다!
8. 참고 자료¶
표준 및 RFC¶
도구¶
- iptables/nftables - Linux 방화벽
- OpenVPN - 오픈소스 VPN
- WireGuard - 현대적인 VPN
- OpenSSL - 암호화 도구