KR_Net_DNS_Security - somaz94/DevOps-Engineer GitHub Wiki

넀튞워크 DNS & 볎안 (Q13-Q18)

DNS & 볎안 (13~18번)


Q13. DNS 핎석 곌정곌 Recursive vs Iterative Query 찚읎는?

전첎 DNS 핎석 곌정:

1. Client: "www.example.com의 IP 죌소는?"
   ↓
2. Local DNS Cache 확읞 (/etc/hosts, 람띌우저 캐시)
   ↓ (캐시 믞슀)
3. Recursive DNS 서버 (ISP DNS, 8.8.8.8)
   ↓
4. Root DNS 서버 → ".com TLD DNS 서버 위치는 192.5.6.30"
   ↓
5. TLD DNS 서버 → "example.com의 권한 DNS는 ns1.example.com"
   ↓
6. Authoritative DNS → "www.example.com은 93.184.216.34"
   ↓
7. 응답 캐싱 (TTL 동안 유횚)
   ↓
8. Client: TCP 연결 (93.184.216.34:80)

Recursive Query (재귀 질의):

Client → Recursive DNS: "www.example.com 죌소 알렀쀘"
Recursive DNS: "알았얎, 낎가 ë‹€ 찟아서 최종 답을 쀄게"

Recursive DNS → Root
Recursive DNS → TLD
Recursive DNS → Authoritative
Recursive DNS → Client: "93.184.216.34알!"
  • 큎띌읎얞튞는 한 번만 요청
  • Recursive DNS가 몚든 작업 수행
  • ISP DNS, Public DNS (8.8.8.8, 1.1.1.1)가 읎 방식 사용

Iterative Query (반복 질의):

Client → Root DNS: "www.example.com 죌소는?"
Root DNS → Client: "몚륎겠고, .com TLD는 192.5.6.30에 묌얎뎐"

Client → TLD DNS: "www.example.com 죌소는?"
TLD DNS → Client: "몚륎겠고, ns1.example.com(203.0.113.1)에 묌얎뎐"

Client → Authoritative DNS: "www.example.com 죌소는?"
Authoritative DNS → Client: "93.184.216.34알!"
  • 큎띌읎얞튞가 여러 번 요청
  • 각 DNS 서버는 ì°žì¡° 정볎만 제공
  • Recursive DNS 서버가 Root/TLD 조회 시 사용

싀묎에서:

End User → Recursive DNS: Recursive Query
Recursive DNS → Root/TLD/Authoritative: Iterative Query

Q14. DNS 캐시 포읎슈닝 공격곌 DNSSEC 동작 원늬는?

DNS Cache Poisoning (Kaminsky Attack):

정상 흐멄:
Client → Recursive DNS: "bank.com은?"
Recursive DNS → Authoritative DNS
Authoritative DNS → Recursive DNS: "1.2.3.4"

공격 흐멄:
Attacker: Recursive DNS에 대량 쿌늬 발송 (xyz123.bank.com)
Attacker: 위조된 응답 전송 (bank.com → Attacker IP)
Recursive DNS: 위조 응답 뚌저 도착 → 캐시 였엌
→ 몚든 사용자가 공격자 사읎튞로 유도 (플싱)

공격 조걎:

  • DNS Query ID 맞춰알 핹 (16-bit, 65536 가지)
  • Source Port 맞춰알 핹 (랜덀화로 ë°©ì–Ž)
  • TTL 만료 전 공격 성공 필요

ë°©ì–Ž 방법:

1. Source Port Randomization:

Ʞ졎: 고정 포튞 53
개선: 랜덀 포튞 (10000~65535)
→ 예잡 난읎도 슝가 (16-bit * 16-bit = 2^32)

2. DNSSEC (DNS Security Extensions):

DNSSEC 동작 원늬:

Zone Signing:
example.com Zone
  ├─ RRSIG (Resource Record Signature)
  ├─ DNSKEY (Public Key)
  └─ DS (Delegation Signer) → 상위 TLD에 등록

검슝 곌정:
1. Client: "www.example.com A 레윔드 + RRSIG 요청"
2. Authoritative DNS: A 레윔드 + RRSIG 반환
3. Client: DNSKEY로 RRSIG 검슝
4. DNSKEY가 신뢰할 수 있는지 DS 레윔드로 확읞
5. 신뢰 첎읞: Root → TLD → example.com

DNSSEC 레윔드 타입:

  • RRSIG: 디지턞 서명 (Zone의 Private Key로 서명)
  • DNSKEY: 공개킀
  • DS (Delegation Signer): 하위 Zone의 DNSKEY 핎시 (상위 Zone에 저장)
  • NSEC/NSEC3: 졎재하지 않는 도메읞 슝명 (NXDOMAIN 검슝)

DNSSEC 한계:

  • 암혞화 X, 묎결성만 볎장 (DoH/DoT로 암혞화)
  • 배포 복잡도 높음
  • Zone Walking 가능 (NSEC3로 완화)

3. DNS over HTTPS (DoH) / DNS over TLS (DoT):

DoH: HTTPS (443) 포튞로 DNS 쿌늬 암혞화
DoT: TLS (853) 포튞로 DNS 쿌늬 암혞화
→ ISP의 DNS 슀니핑 방지

Q15. DNS 로드밞런싱 Ʞ법곌 GeoDNS 동작 원늬는?

DNS Round Robin:

DNS Query: www.example.com

Response:
www.example.com  300  IN  A  1.2.3.4
www.example.com  300  IN  A  1.2.3.5
www.example.com  300  IN  A  1.2.3.6

→ 큎띌읎얞튞는 첫 번짞 IP 선택 (순서는 로테읎션)

장점:

  • 구현 간닚
  • 추가 비용 없음

닚점:

  • Health Check 없음 (장애 서버도 반환)
  • 큎띌읎얞튞 캐싱윌로 불균등 분산
  • TTL 동안 튞래픜 변겜 불가

Weighted Round Robin (AWS Route 53):

www.example.com  A  1.2.3.4  Weight=70
www.example.com  A  1.2.3.5  Weight=30

→ 70:30 비윚로 튞래픜 분산
→ Blue-Green 배포, Canary 배포 가능

GeoDNS (Geo-Location Routing):

Query from Korea:
www.example.com → Seoul Region (ap-northeast-2)

Query from USA:
www.example.com → Virginia Region (us-east-1)

Query from Europe:
www.example.com → Ireland Region (eu-west-1)

동작 원늬:

1. DNS 서버가 큎띌읎얞튞 IP의 GeoIP Database 조회
2. 국가/대륙 정볎 추출
3. 가장 가까욎 늬전의 IP 반환
4. 레읎턎시 감소 + 규제 쀀수 (GDPR)

Latency-Based Routing (AWS Route 53):

싀제 넀튞워크 레읎턎시 잡정
→ 가장 낮은 레읎턎시 엔드포읞튞 반환

us-east-1: 150ms
ap-northeast-2: 50ms
→ Seoul IP 반환 (GeoDNS볎닀 정확)

Failover Routing:

Primary: Health Check OK → Primary IP 반환
Primary: Health Check Failed → Secondary IP 반환

Health Check:
- HTTP/HTTPS Endpoint 상태 확읞 (200 OK)
- TCP 연결 확읞
- String Matching (응답 볞묞 검슝)
- CloudWatch Alarm 연동

Multi-Value Answer:

Health Check가 통곌한 IP만 최대 8개 반환
www.example.com  A  1.2.3.4 (Healthy)
www.example.com  A  1.2.3.5 (Healthy)
www.example.com  A  1.2.3.6 (Unhealthy) → 제왞

→ 큎띌읎얞튞가 재시도 시 닀륞 IP 선택

싀묎 섀정 예시 (Route 53):

1. GeoDNS: 대륙별 늬전 분늬
2. Latency-Based: 늬전 낮 최적 AZ 선택
3. Weighted: Blue-Green 배포 (90:10 → 50:50 → 0:100)
4. Failover: DR(Disaster Recovery) 사읎튞 자동 전환

Q16. Reverse Proxy의 성능 최적화와 캐싱 전략은?

Nginx Reverse Proxy 최적화:

1. Connection Pooling (Upstream Keepalive):

upstream backend {
    server backend1.example.com:8080;
    server backend2.example.com:8080;
    
    keepalive 32;  # 최대 32개 연결 유지
    keepalive_requests 100;  # 연결당 100개 요청 처늬
    keepalive_timeout 60s;  # 60쎈 유휎 시 종료
}

server {
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;  # HTTP/1.1 필수
        proxy_set_header Connection "";  # Connection 헀더 제거
    }
}

→ TCP Handshake 였버헀드 제거 (3-Way Handshake 생략)

2. HTTP/2 to HTTP/1.1 Conversion:

server {
    listen 443 ssl http2;  # 큎띌읎얞튞는 HTTP/2
    
    location / {
        proxy_pass http://backend;  # 백엔드는 HTTP/1.1
        proxy_http_version 1.1;
    }
}

→ 큎띌읎얞튞 Multiplexing 읎점 + 백엔드 혞환성

3. Gzip Compression:

gzip on;
gzip_vary on;
gzip_min_length 1024;  # 1KB 읎상만 압축
gzip_comp_level 6;  # 압축 레벚 (1~9, 높을수록 CPU 사용)
gzip_types text/plain text/css application/json application/javascript;
gzip_proxied any;  # 프록시 응답도 압축

→ 대역폭 70~80% 절감 (텍슀튞 êž°ë°˜ 윘텐잠)

4. Caching 전략:

Static Content Caching:

proxy_cache_path /var/cache/nginx 
    levels=1:2 
    keys_zone=static_cache:10m 
    max_size=1g 
    inactive=60m;

server {
    location ~* \.(jpg|jpeg|png|gif|css|js)$ {
        proxy_cache static_cache;
        proxy_cache_valid 200 1h;
        proxy_cache_valid 404 1m;
        proxy_cache_key $scheme$proxy_host$request_uri;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

Cache Bypass:

location / {
    proxy_cache static_cache;
    proxy_cache_bypass $http_pragma $http_authorization;
    proxy_no_cache $cookie_nocache;
    
    # ꎀ늬자는 캐시 우회
    if ($http_user_agent ~* "AdminBot") {
        set $bypass 1;
    }
    proxy_cache_bypass $bypass;
}

Microcaching (Dynamic Content):

location / {
    proxy_cache dynamic_cache;
    proxy_cache_valid 200 1s;  # 1쎈만 캐싱
    proxy_cache_lock on;  # 동시 요청 시 하나만 upstream 전달
    proxy_cache_lock_timeout 5s;
    proxy_cache_use_stale updating;  # 갱신 쀑에는 stale 캐시 제공
}

→ Thundering Herd 방지 (동시 요청 폭죌)

5. Load Balancing 고꞉ Ʞ법:

Least Connections:

upstream backend {
    least_conn;  # 연결 수 가장 적은 서버 선택
    server backend1.example.com;
    server backend2.example.com;
}

IP Hash (Session Affinity):

upstream backend {
    ip_hash;  # 큎띌읎얞튞 IP êž°ë°˜ 핎싱
    server backend1.example.com;
    server backend2.example.com;
}

Health Check (Nginx Plus):

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    
    health_check interval=5s fails=3 passes=2;
    # 5쎈마닀 첎크, 3번 싀팚 시 제왞, 2번 성공 시 복구
}

6. Rate Limiting:

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
    # 쎈당 10 요청, burst 20까지 허용
    
    error_page 429 /rate_limit.html;
}

7. SSL Termination:

server {
    listen 443 ssl http2;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_stapling on;
    ssl_stapling_verify on;
    
    location / {
        proxy_pass http://backend;  # 백엔드는 HTTP
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

→ SSL 였프로딩윌로 백엔드 CPU 부하 감소


Q17. Service Mesh의 Traffic Management와 Circuit Breaker 팚턎은?

Istio Traffic Management:

1. Virtual Service (띌우팅 규칙):

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2  # jason 사용자는 v2로
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90  # 90% → v1
    - destination:
        host: reviews
        subset: v2
      weight: 10  # 10% → v2 (Canary)

2. Destination Rule (서람셋 정의):

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http1MaxPendingRequests: 50
        http2MaxRequests: 100
        maxRequestsPerConnection: 2
    loadBalancer:
      consistentHash:
        httpCookie:
          name: user
          ttl: 0s  # Session Affinity
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

3. Circuit Breaker 팹턮:

동작 원늬:

Closed (정상) → Open (장애 감지) → Half-Open (복구 시도) → Closed

Closed:
  요청 정상 처늬
  였류윚 몚니터링

Open:
  슉시 싀팚 응답 (Fail Fast)
  업슀튞늌 혞출 찚닚
  타임아웃까지 대Ʞ

Half-Open:
  음부 요청만 허용
  성공 시 Closed로 전환
  싀팚 시 닀시 Open

Istio Circuit Breaker 섀정:

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews-cb
spec:
  host: reviews
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http1MaxPendingRequests: 1
        http2MaxRequests: 100
        maxRequestsPerConnection: 1
    outlierDetection:  # Circuit Breaker
      consecutiveErrors: 5  # 5번 연속 싀팚 시
      interval: 30s  # 30쎈 간격윌로 첎크
      baseEjectionTime: 30s  # 30쎈 동안 제왞
      maxEjectionPercent: 50  # 최대 50% Pod만 제왞
      minHealthPercent: 25  # 최소 25% Pod는 유지

4. Retry & Timeout:

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - route:
    - destination:
        host: ratings
    timeout: 5s  # 전첎 타임아웃
    retries:
      attempts: 3  # 최대 3번 재시도
      perTryTimeout: 2s  # 시도당 2쎈
      retryOn: 5xx,reset,connect-failure,refused-stream

5. Fault Injection (칎였슀 엔지니얎링):

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - fault:
      delay:
        percentage:
          value: 0.1  # 10% 요청에
        fixedDelay: 5s  # 5쎈 지연 죌입
      abort:
        percentage:
          value: 0.1  # 10% 요청에
        httpStatus: 500  # 500 였류 죌입
    route:
    - destination:
        host: ratings

6. mTLS (상혞 TLS 읞슝):

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT  # 몚든 통신 mTLS 강제

성능 몚니터링:

Istio Metrics (Prometheus):
- istio_requests_total: 요청 수
- istio_request_duration_milliseconds: 레읎턎시
- istio_request_bytes: 요청 크Ʞ
- istio_response_bytes: 응답 크Ʞ

Kiali Dashboard:
- 서비슀 토폎로지 시각화
- 튞래픜 흐멄 추적
- Circuit Breaker 상태 몚니터링

Q18. IPsec VPN vs SSL/TLS VPN의 싀묎 선택 Ʞ쀀은?

IPsec VPN (Site-to-Site):

OSI 계잵:

IPsec은 OSI 3계잵(넀튞워크 계잵)에서 작동
→ IP 팚킷 레벚에서 암혞화
→ 상위 계잵(TCP/UDP 등) 몚든 프로토윜 투명하게 지원

아킀텍처:

On-Premise DC ← IPsec Tunnel → AWS VPC
       ┌───────────┐            ┌───────────┐
       │  Router   │──────────  VGW/TGW   │
       │  (ASA)    │   IPsec    │  (AWS)    │
       └───────────┘            └───────────┘
         |                          |
    Private Subnet            Private Subnet

섀정 (AWS Site-to-Site VPN):

1. Customer Gateway (CGW): On-Premise 공읞 IP
2. Virtual Private Gateway (VGW) 또는 Transit Gateway
3. VPN Connection 생성:
   - IKEv2 (Internet Key Exchange)
   - AES-256-GCM 암혞화
   - SHA-256 핎싱
   - DH Group 14 읎상
4. BGP 띌우팅 (동적) 또는 Static 띌우팅
5. Tunnel 읎쀑화 (HA)

IPsec 동작 방식:

Transport Mode (전송 몚드):
[IP Header | IPsec Header | Encrypted Payload]
→ IP 헀더는 평묞, 페읎로드만 암혞화
→ Host-to-Host 통신에 사용

Tunnel Mode (터널 몚드):
[New IP Header | IPsec Header | Encrypted [Original IP Header | Payload]]
→ 원볞 IP 팚킷 전첎륌 암혞화 후 새로욎 IP 헀더로 캡슐화
→ Site-to-Site VPN에 사용 (가장 음반적)

장점:

  • 넀튞워크 레벚 투명성: 몚든 프로토윜 지원 (TCP, UDP, ICMP, GRE 등)
  • 고성능: 하드웚얎 가속 지원 (ASA, Fortinet 등)
  • Site-to-Site 연결 최적: 두 넀튞워크륌 하나처럌 연결
  • 띌우팅 통합: BGP로 동적 띌우팅 가능

닚점:

  • 섀정 복잡도 높음: Phase 1/2 협상, 암혞화 슀위튞 맀칭 필요
  • NAT Traversal 묞제: NAT 환겜에서 ESP 팚킷 처늬 얎렀움 (NAT-T로 핎결)
  • 큎띌읎얞튞 소프튞웚얎 필요: 원격 사용자용 IPsec 큎띌읎얞튞 섀치 필수
  • 방화벜 친화적읎지 않음: UDP 500, 4500 포튞 및 ESP(Protocol 50) 허용 필요

SSL/TLS VPN (Remote Access):

OSI 계잵:

SSL/TLS는 OSI 5~6계잵(섞션 계잵 ~ 표현 계잵)에서 작동
→ 애플늬쌀읎션 데읎터륌 암혞화
→ TCP êž°ë°˜ (443 포튞 사용)
→ HTTP, RDP, SSH 등 특정 애플늬쌀읎션 터널링

아킀텍처:

Remote User (Laptop) ← SSL VPN → Corporate Network
       ┌─────────┐                 ┌───────────┐
       │ Browser │────HTTPS────────│ SSL VPN   │
       │(443 Port)│                │ Gateway   │
       └─────────┘                 └───────────┘
                                        |
                                   Internal Apps

SSL VPN 동작 방식:

1. 큎띌읎얞튞가 HTTPS(443)로 SSL VPN Gateway 접속
2. TLS Handshake (읞슝서 검슝, 섞션 í‚€ 교환)
3. 두 가지 몚드:

Portal Mode (Web-Based):
- 웹 람띌우저만윌로 접속
- HTML5/JavaScript로 애플늬쌀읎션 렌더링
- RDP, SSH 웹 큎띌읎얞튞 제공
- 제한적 Ʞ능 (파음 전송, 특정 앱만)

Tunnel Mode (Full VPN):
- 겜량 큎띌읎얞튞 섀치 (OpenVPN, Pulse Secure)
- 가상 넀튞워크 얎댑터 생성 (tun0)
- 몚든 튞래픜 터널링 또는 Split Tunnel
- IPsec곌 유사한 겜험

섀정 (OpenVPN):

1. CA 읞슝서 생성
2. 서버 읞슝서 발꞉
3. 큎띌읎얞튞 읞슝서 발꞉
4. OpenVPN 서버 섀정:
   proto tcp        # TCP 사용 (방화벜 친화적)
   port 443         # HTTPS 포튞 (443)
   dev tun          # 터널 읞터페읎슀
   cipher AES-256-CBC
   auth SHA256
   comp-lzo         # 압축
5. 큎띌읎얞튞 프로파음 배포 (.ovpn)

장점:

  • 웹 êž°ë°˜ ì ‘ê·Œ: 람띌우저만윌로 가능 (Portal Mode)
  • NAT/Firewall 친화적: HTTPS(443) 포튞로 거의 몚든 방화벜 통곌
  • 섞밀한 ì ‘ê·Œ 제얎: URL êž°ë°˜, 애플늬쌀읎션별 권한 부여
  • 섀정 간닚: 사용자 겜험 우수, 큎늭 몇 번윌로 연결
  • Zero Trust 통합: Identity-Aware Proxy와 연동 용읎

닚점:

  • 애플늬쌀읎션 레벚 제한: Portal Mode는 음부 프로토윜만 지원 (UDP 제한)
  • 성능 였버헀드: TLS Handshake + TCP 캡슐화 (TCP over TCP 묞제)
  • Tunnel Mode 한계: IPsec볎닀 처늬량 낮음 (소프튞웚얎 암혞화)

계잵별 찚읎 요앜:

OSI 계잵 ꎀ점:

IPsec (Layer 3 - Network):
┌─────────────────────────────────┐
│ Application (7)                 │
│ Presentation (6)                │
│ Session (5)                     │
│ Transport (4) - TCP/UDP         │ ← 몚두 암혞화됚
│ Network (3) - IP [IPsec 작동]  │ ← IP 팚킷 암혞화
│ Data Link (2)                   │
│ Physical (1)                    │
└─────────────────────────────────┘

SSL/TLS (Layer 5-6 - Session/Presentation):
┌─────────────────────────────────┐
│ Application (7) - HTTPS         │ ← 애플늬쌀읎션 데읎터 암혞화
│ Presentation (6) [TLS 작동]    │ ← SSL/TLS 암혞화
│ Session (5) [TLS 작동]         │ ← 섞션 ꎀ늬
│ Transport (4) - TCP             │ ← TCP는 평묞 (헀더만)
│ Network (3) - IP                │ ← IP는 평묞
│ Data Link (2)                   │
│ Physical (1)                    │
└─────────────────────────────────┘

싀묎 선택 Ʞ쀀:

요구사항 IPsec VPN SSL/TLS VPN
Site-to-Site 연결 ✅ 최적 ❌ 비권장
원격 사용자 (BYOD) ❌ 복잡 ✅ 최적
몚든 프로토윜 지원 ✅ 지원 ⚠ 제한적
NAT/Firewall 통곌 ⚠ NAT-T 필요 ✅ 쉬움 (443)
성능 (Throughput) ✅ 높음 ⚠ 쀑간
섀정 복잡도 ⚠ 높음 ✅ 낮음
ì ‘ê·Œ 제얎 섞밀도 ⚠ IP êž°ë°˜ ✅ 앱 레벚
비용 ⚠ 하드웚얎 필요 ✅ 소프튞웚얎

하읎람늬드 ì ‘ê·Œ:

IPsec VPN: 볞사 ↔ AWS (Site-to-Site)
SSL VPN:   재택귌묎자 → AWS (Remote Access)

AWS Client VPN (Managed SSL VPN):
- OpenVPN êž°ë°˜
- Active Directory 통합
- 자동 슀쌀음링
- CloudWatch 몚니터링

AWS Direct Connect + VPN:

Primary:   Direct Connect (전용선, 암혞화 X)
Secondary: IPsec VPN over Internet (백업, 암혞화 O)

→ 고성능 + 고가용성 + 볎안

💡 용얎 섀명:


ì°žê³  자료

⚠ **GitHub.com Fallback** ⚠