네트워크 보안 기초

네트워크 보안 기초

개요

네트워크 보안은 컴퓨터 네트워크와 데이터를 무단 접근, 오용, 변조로부터 보호하는 것입니다. 이 장에서는 방화벽, NAT, VPN, 암호화 기초 등 네트워크 보안의 핵심 개념을 학습합니다.

난이도: ⭐⭐⭐

학습 목표: - 네트워크 보안의 기본 원칙 이해 - 방화벽의 종류와 동작 원리 파악 - NAT의 개념과 보안적 역할 이해 - VPN의 종류와 활용 방법 학습 - 암호화 기초 개념 습득


목차

  1. 네트워크 보안 개요
  2. 방화벽
  3. NAT
  4. VPN
  5. 암호화 기초
  6. 연습 문제
  7. 다음 단계
  8. 참고 자료

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. 연습 문제

기초 문제

  1. 보안 기초
  2. CIA Triad의 세 요소를 설명하세요.
  3. 심층 방어(Defense in Depth)란 무엇인가요?

  4. 방화벽

  5. 패킷 필터링과 상태 기반 방화벽의 차이는?
  6. 다음 iptables 규칙은 무엇을 하나요? bash iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

  7. NAT

  8. NAT의 주요 목적 2가지는?
  9. PAT(Port Address Translation)의 동작 원리를 설명하세요.

중급 문제

  1. VPN
  2. Site-to-Site VPN과 Remote Access VPN의 차이는?
  3. IPsec의 터널 모드와 전송 모드 차이를 설명하세요.

  4. 암호화

  5. 대칭키와 비대칭키 암호화의 장단점을 비교하세요.
  6. TLS가 하이브리드 암호화를 사용하는 이유는?

  7. 실습 문제

# 다음 시나리오에 적합한 보안 솔루션을 제시하세요

# 1. 재택근무 직원이 회사 내부망에 접속해야 함
#    답:

# 2. 웹 서버로 들어오는 SQL Injection 공격을 차단해야 함
#    답:

# 3. 본사와 지사 간 안전한 통신이 필요함
#    답:

고급 문제

  1. 종합 분석
  2. 다음 네트워크에서 보안 취약점을 찾으세요: 인터넷 ─── 라우터 ─── 내부 네트워크 │ 웹 서버

  3. 암호화 적용

  4. 파일 무결성을 검증하기 위한 해시 사용법을 설명하세요.
  5. 비밀번호 저장 시 해시만 사용하면 안 되는 이유는?

7. 다음 단계

16_Security_Threats_Response.md에서 스니핑, 스푸핑, DDoS 등 구체적인 보안 위협과 대응 방안을 배워봅시다!


8. 참고 자료

표준 및 RFC

도구

  • iptables/nftables - Linux 방화벽
  • OpenVPN - 오픈소스 VPN
  • WireGuard - 현대적인 VPN
  • OpenSSL - 암호화 도구

학습 자료

to navigate between lessons