Week 06 — TCP/IP 네트워크 프로토콜 분석 및 실무 적용

상세 기술 보고서 (PDF) 는 GitHub에서 확인할 수 있습니다. hojjang98 / skshielders-rookies-28 — projects/week_06


개요

Week 6 는 TCP/IP 네트워크의 동작 원리와 보안 기초를 학습한 주간이다. 이번 주의 산출물도 Week 5 와 마찬가지로 기술 보고서 형태로 정리하였다.

“서버가 아무리 안정적으로 구축되어 있어도, 네트워크 통신이 원활하지 않으면 서비스를 제공할 수 없다.”

네트워크 계층의 문제는 전체 시스템의 가용성에 직접 영향을 미친다. 보안 전문가가 패킷을 읽지 못하면 공격 흔적을 남겨도 알아채지 못한다. Wireshark 로 실제 패킷을 분석하며 추상적인 개념을 구체화하는 과정이 이번 주의 핵심이었다.


1. 네트워크 계층 모델

OSI 7계층 vs TCP/IP 4계층

OSI 7계층 (이론 참조 모델)         TCP/IP 4계층 (실제 인터넷 표준)
──────────────────────────         ──────────────────────────────
7. 응용 계층 (Application)  ─┐
6. 표현 계층 (Presentation) ─┤ => 4. 응용 계층 (Application)
5. 세션 계층 (Session)      ─┘         HTTP, HTTPS, DNS, FTP, SSH

4. 전송 계층 (Transport)    ──── => 3. 전송 계층 (Transport)
                                          TCP, UDP
3. 네트워크 계층 (Network)  ──── => 2. 인터넷 계층 (Internet)
                                          IP, ICMP, ARP
2. 데이터링크 계층           ─┐
1. 물리 계층 (Physical)     ─┘ => 1. 네트워크 접근 계층 (Network Access)
                                          Ethernet, Wi-Fi

OSI 7계층 은 이론적 참조 모델로, 프로토콜 설계와 장애 분석의 사고 틀을 제공한다. TCP/IP 4계층 은 실제 인터넷에서 동작하는 프로토콜 스택으로, 실무에서 더 자주 사용한다.

계층화의 핵심 가치

  • 모듈화 — 각 계층은 독립적으로 동작하여 한 계층의 변경이 다른 계층에 영향을 주지 않는다
  • 표준화 — 제조사가 달라도 같은 계층끼리 통신 가능
  • 장애 격리 — 문제 발생 시 어느 계층에서 발생했는지 범위를 좁혀 진단 가능

2. 주요 프로토콜 동작 원리

ARP — IP 주소를 MAC 주소로 변환

같은 네트워크(LAN) 내에서 통신하려면 IP 주소만으로는 부족하다. 실제 프레임 전송에는 MAC 주소가 필요하기 때문에, ARP 가 이 변환을 담당한다.

1. 송신 측: "192.168.1.10 의 MAC 주소를 알려주세요!" (브로드캐스트)
   => ARP Request: 네트워크 전체에 뿌림 (FF:FF:FF:FF:FF:FF)

2. 수신 측 (192.168.1.10): "제 MAC 주소는 AA:BB:CC:DD:EE:FF 입니다." (유니캐스트)
   => ARP Reply: 요청자에게만 응답

3. 송신 측: MAC 주소를 ARP 캐시에 저장 후 통신 시작
   => arp -a 명령으로 현재 캐시 확인 가능

보안 위협 — ARP 스푸핑 (ARP Spoofing): ARP 는 인증 없이 누구나 Reply 를 보낼 수 있다. 공격자가 가짜 ARP Reply 를 전송하면 피해자의 ARP 캐시가 오염되어 중간자 공격(Man-in-the-Middle) 이 가능해진다.

정상:  피해자 => 게이트웨이 => 인터넷
ARP 스푸핑: 피해자 => 공격자 => 게이트웨이 => 인터넷  (모든 트래픽 도청 가능)

ICMP — 네트워크 상태 진단 프로토콜

IP 프로토콜의 보조 역할을 하며, 데이터 전송이 아닌 네트워크 상태 진단 및 오류 보고가 목적이다.

주요 ICMP 메시지:

타입 이름 용도
8 / 0 Echo Request / Reply ping 명령의 기반
3 Destination Unreachable 목적지 도달 불가 (포트 차단 포함)
11 Time Exceeded TTL 초과 (traceroute 의 기반)
5 Redirect 더 나은 경로 안내

보안 관점:

  • ICMP Flood (Ping Flood) — 대량의 Echo Request 로 서버 자원 고갈 (DDoS)
  • ICMP Redirect 악용 — 가짜 Redirect 메시지로 트래픽 경로 조작
  • 방화벽에서 ICMP 를 완전히 차단하면 오히려 장애 진단이 어려워짐 (적절한 허용 정책 필요)

TCP 3-Way Handshake — 신뢰성 있는 연결 수립

TCP 는 데이터를 보내기 전에 반드시 3단계 핸드셰이크로 양방향 연결을 먼저 확립한다.

클라이언트                            서버
     │                                   │
     │  ── SYN (seq=x) ──────────────>  │  "연결 요청합니다"
     │                                   │
     │  <── SYN-ACK (seq=y, ack=x+1) ── │  "확인했습니다, 저도 연결 요청합니다"
     │                                   │
     │  ── ACK (ack=y+1) ─────────────>  │  "확인했습니다, 연결 확립!"
     │                                   │
     │  ═══════ 데이터 전송 시작 ══════ │

연결 종료는 4-Way Handshake (FIN -> ACK -> FIN -> ACK) 로 이루어진다.

보안 위협 — SYN Flood 공격: 대량의 SYN 패킷을 보내되 ACK 를 보내지 않으면, 서버는 수많은 반개방 연결(Half-Open Connection) 을 유지하다 자원이 고갈된다.

대응 방법:
- SYN Cookie 활성화: 완전한 연결 전까지 서버 자원 미할당
- Rate Limiting: IP당 SYN 패킷 수 제한
- 방화벽 임계치 설정

HTTPS & TLS — 안전한 통신의 기반

HTTPS 는 HTTP 에 TLS(Transport Layer Security) 보안 계층을 추가한 것이다.

TLS 가 제공하는 3가지 보안 속성:

  • 기밀성 (Confidentiality) — 대칭키 암호화로 데이터 내용을 보호
  • 무결성 (Integrity) — MAC(Message Authentication Code) 로 데이터 변조 탐지
  • 인증 (Authentication) — 서버 인증서(X.509) 로 신뢰할 수 있는 서버임을 확인

TLS Handshake 흐름 (TLS 1.3 기준):

1. Client Hello  => 지원하는 암호화 방식 목록 전송
2. Server Hello  => 선택된 암호화 방식 + 인증서 전송
3. 인증서 검증   => 클라이언트가 CA(인증기관) 서명 확인
4. 키 교환       => ECDHE 로 세션키 협의
5. 데이터 전송   => 협의된 대칭키로 암호화 통신 시작

DNS — 도메인을 IP 로 변환

브라우저에서 www.google.com 입력 시:

1. 로컬 DNS 캐시 확인 (이미 알고 있으면 바로 사용)
2. Recursive Resolver (ISP 제공) 에 질의
3. Root DNS => .com TLD DNS => Google 권한 DNS 순으로 위임 질의
4. 최종 IP 주소 반환 => 브라우저가 해당 IP 로 HTTP 연결

보안 위협 — DNS 스푸핑 / DNS 캐시 포이즈닝: 가짜 DNS 응답을 캐시에 주입하면 피해자가 정상 도메인을 입력해도 가짜 사이트로 유도된다. 대응: DNSSEC (DNS 응답에 디지털 서명 추가)


3. 네트워크 보안 기초

방화벽 (Firewall)

미리 정의된 보안 정책(ACL) 에 따라 트래픽을 허용하거나 차단한다.

방화벽 종류별 특성:
- 패킷 필터링    : IP / 포트 기반 단순 차단. 빠르지만 응용 계층 탐지 불가
- 상태 기반 (Stateful): 연결 상태(SYN/ACK/FIN)를 추적하여 비정상 패킷 차단
- 응용 계층(WAF): HTTP 요청 내용(SQL Injection, XSS 등) 까지 검사

IDS vs IPS — 탐지와 차단의 차이

구분 IDS (Intrusion Detection System) IPS (Intrusion Prevention System)
역할 침입 탐지 후 경고 침입 탐지 + 실시간 차단
성격 수동적 (Passive) — 트래픽 복사본 분석 능동적 (Inline) — 트래픽 경로에 삽입
오탐 영향 경고만 발생, 서비스 영향 없음 오탐 시 정상 트래픽도 차단 위험
배치 위치 네트워크 미러 포트 / TAP 인라인 (방화벽과 서버 사이)

보안관제(SOC) 에서는 IDS 와 IPS 를 상호 보완적으로 함께 운영하는 것이 일반적이다.

포트 스캔과 방어

포트 스캔은 열린 포트를 탐지하여 서비스 정보를 수집하는 기법이다. 공격 전 정찰(Reconnaissance) 단계에서 필수적으로 사용된다.

주요 스캔 기법:
- TCP SYN Scan (Half-Open)  : 3-Way Handshake 를 완성하지 않아 로그 최소화
- TCP Connect Scan          : 완전한 연결 후 끊음. 탐지되기 쉬움
- UDP Scan                  : 응답 없음 = 열림, ICMP Unreachable = 닫힘
- Null / FIN / Xmas Scan    : 비정상 플래그 조합으로 방화벽 우회 시도

방어 전략:

  • 불필요한 서비스 전부 중지 (필요한 포트만 열기)
  • Nmap 탐지 시 차단 또는 경보 발령 (IDS 규칙 설정)
  • 포트 넘버 변경으로 자동화 스캔 일부 우회 (SSH 22 -> 비표준 포트)

4. 실무 진단 도구

Wireshark — 패킷 분석의 표준

Wireshark 를 통해 배운 것:

  • 실제 TCP 핸드셰이크 패킷에서 SYN / SYN-ACK / ACK 플래그 확인
  • HTTP 요청 / 응답의 평문 노출 확인 (=> HTTPS 의 필요성 체감)
  • ARP 브로드캐스트 패턴과 스푸핑 패킷 구별 방법

리눅스 네트워크 진단 명령어

# 연결 상태 및 포트 확인
ss -tulnp           -- 현재 열린 포트와 연결 상태 (netstat 대체)
netstat -an         -- 모든 연결 목록

# 경로 추적
traceroute 8.8.8.8  -- 패킷 경로 상 모든 라우터 홉 표시 (ICMP TTL 활용)
ping -c 4 host      -- 연결성 및 RTT (왕복 시간) 확인

# 패킷 캡처
tcpdump -i eth0 port 80   -- eth0 인터페이스에서 80번 포트 트래픽 캡처
tcpdump -w capture.pcap   -- pcap 파일로 저장 후 Wireshark 분석

# 네트워크 설정 확인
ip addr                   -- IP 주소 및 인터페이스 정보
ip route                  -- 라우팅 테이블
nmap -sV target_ip        -- 대상 서버 열린 포트 및 서비스 버전 스캔

5. 계층별 장애 진단 접근법

실무에서 네트워크 문제가 발생하면 하위 계층부터 상위 계층 순으로 접근한다.

[1계층] 물리/링크 계층 점검
   -> 케이블 연결 확인, NIC 상태 확인 (ip link show)

[2계층] 네트워크 계층 점검
   -> ping 으로 로컬 / 원격 IP 도달 가능 여부 확인
   -> 라우팅 테이블 확인 (ip route)

[3계층] 전송 계층 점검
   -> 목적지 포트 열려 있는지 확인 (nmap, telnet, nc)
   -> 방화벽 정책 확인

[4계층] 응용 계층 점검
   -> 서비스 프로세스 실행 여부 (systemctl status)
   -> 로그 확인 (/var/log/nginx/error.log 등)
   -> DNS 해석 확인 (dig, nslookup)

6. 보안관제 연계 — 네트워크 이상 징후 탐지

이상 징후 원인 가능성 대응
대량 ARP Reply ARP 스푸핑 공격 ARP 스푸핑 탐지 도구 (arpwatch) 운영
다수 포트 스캔 시도 공격 전 정찰 IDS 경보 + IP 차단 정책
대량 SYN 패킷 SYN Flood (DDoS) SYN Cookie 활성화, Rate Limiting
DNS 쿼리 급증 DNS 터널링 / C2 통신 DNS 로그 분석, 비정상 도메인 탐지
ICMP 대용량 트래픽 Ping Flood / 스머프 공격 ICMP Rate Limiting

학습 성과 정리

영역 학습 내용
계층 모델 OSI 7계층 vs TCP/IP 4계층 비교, 계층화의 목적과 가치
프로토콜 이해 ARP / ICMP / TCP / DNS / HTTPS 의 동작 원리
보안 기초 방화벽 / IDS / IPS 차이, ARP 스푸핑 / SYN Flood / DNS 포이즈닝
실무 역량 Wireshark 패킷 분석, 리눅스 네트워크 진단 명령어 활용
장애 진단 계층별 Top-down / Bottom-up 접근법 체득

향후 학습 방향

  • SSL/TLS 심화 — 인증서 체인, HSTS, Certificate Pinning
  • BGP / OSPF — 인터넷 라우팅 프로토콜과 BGP Hijacking 위협
  • 네트워크 포렌식 — pcap 파일 분석으로 침해 사고 재현 및 증거 수집
  • Zero Trust Network — 경계 보안 모델을 넘어선 현대적 네트워크 보안 아키텍처
  • SDN (Software Defined Networking) — 클라우드 인프라에서의 네트워크 가상화