📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 39편
이전 글: 38. TCP란 무엇인가 · 다음 글: 40. TCP와 UDP 헤더 비교 — 신뢰성과 속도의 차이

1. 개념

UDP(User Datagram Protocol)는 전송 계층 프로토콜로, IP 헤더의 Protocol 번호 17을 사용하며 RFC 768(1980)에 정의되어 있습니다. 명세가 몇 쪽에 불과할 만큼 단순하며, IP에 포트 번호와 선택적 체크섬만 더해 줍니다.

UDP가 하는 일UDP가 하지 않는 일
포트로 애플리케이션(프로세스) 구분연결 수립·해제
체크섬으로 손상 검출 (IPv4에서는 선택)유실 시 재전송
메시지 경계 보존순서 보장
—흐름 제어·혼잡 제어

UDP가 보내는 단위인 Datagram의 구조와 크기는 30. UDP Datagram, 헤더 필드를 TCP와 나란히 비교하는 내용은 40. TCP와 UDP 헤더 비교 — 신뢰성과 속도의 차이에서 다룹니다. 이 글은 UDP라는 선택이 무엇을 의미하는지에 집중합니다.


2. 동작 원리

UDP 통신에는 "연결"이 없습니다. 보내는 쪽은 상대가 준비됐는지 확인하지 않고 바로 데이터를 보내고, 받는 쪽은 해당 포트에 대기 중인 소켓이 있으면 전달합니다.

[DNS 질의 예: 클라이언트 192.168.10.10 → 리졸버 192.168.10.53]

클라이언트 (임의 포트 53001)                     리졸버 (UDP 53)
     │ ── 질의 Datagram (Transaction ID=0x1a2b) ──→ │
     │                                              │ 처리
     │ ←── 응답 Datagram (같은 ID, 53 → 53001) ──── │
     ↓
  응답이 안 오면? → UDP는 아무것도 하지 않음
                 → DNS 클라이언트(애플리케이션)가 타이머 후 재질의

[닫힌 포트로 보낸 경우]
     │ ── Datagram → 192.168.10.20:9999 (대기 소켓 없음) ──→
     │ ←── ICMP 3/3 Port Unreachable (호스트가 보냄, 설정·방화벽에 따라 없을 수 있음)
  • 요청과 응답을 짝짓는 일은 애플리케이션 몫입니다. DNS의 Transaction ID처럼 프로토콜마다 자기 방식이 있습니다.
  • 신뢰성이 필요하면 애플리케이션이 직접 구현합니다. 재질의, 순번 관리, 자체 확인 응답 등이 여기에 해당합니다. HTTP/3이 사용하는 QUIC은 UDP 위에서 신뢰성·암호화를 스스로 구현한 대표적인 예입니다.
  • 닫힌 UDP 포트에 대해서는 TCP의 RST 대신 ICMP Port Unreachable이 돌아오는 것이 일반적입니다(ICMP는 34. ICMP와 ping — 오류 보고 프로토콜 읽는 법).

3. 주요 특징

UDP를 선택하는 이유는 대체로 세 가지입니다. 빠른 짧은 요청·응답(연결 수립 비용이 아까움), 실시간성(늦게 도착한 데이터는 쓸모가 없음), 브로드캐스트·멀티캐스트(1:N 전송은 연결 개념과 맞지 않음).

서비스포트UDP를 쓰는 이유
DNS53짧은 질의·응답 (응답이 크거나 영역 전송이면 TCP 사용)
DHCP67(서버) / 68(클라이언트)IP가 없는 상태에서 브로드캐스트로 요청
NTP123짧은 시간 교환, 지연 측정
SNMP161 / 162(Trap)장비 상태 조회·알림
Syslog514로그를 가볍게 전송 (전달 보장 없음)
TFTP69단순 파일 전송 (자체 확인 응답 사용)
QUIC (HTTP/3)443자체 신뢰성·암호화 구현
VoIP·스트리밍(RTP 등)동적재전송보다 실시간성이 중요

Syslog를 UDP로 받는 경우 네트워크 혼잡 시 로그가 조용히 유실될 수 있다는 점은 관제 인프라 설계에서도 중요합니다. 전달 보장이 필요하면 TCP·TLS 기반 전송을 검토합니다.

보안상 성질결과
연결 수립이 없음출발지 IP를 위조한 요청이 그대로 처리됨 → 응답이 위조된 주소(피해자)로 감
요청보다 큰 응답을 주는 서비스 존재반사·증폭(Reflection/Amplification) DDoS에 악용
열린 포트도 응답하지 않을 수 있음스캔 결과가 "열림 또는 필터됨"처럼 모호함
상태가 없음방화벽은 타임아웃으로 가상의 세션을 만들어 추적

4. 예시

실습 예시 — 본인 소유 Linux VM에서 UDP 소켓과 통신을 확인합니다.

# UDP로 대기 중인 소켓 (-u UDP, -l 대기, -n 숫자, -p 프로세스)
sudo ss -ulnp

# 현재 UDP 소켓 전체 (연결 상태 개념이 없어 대부분 UNCONN)
ss -uan

# DNS 질의를 UDP로 보내고 캡처 (Rocky: bind-utils, Ubuntu: dnsutils 패키지의 dig)
sudo tcpdump -nn -i ens33 'udp port 53' &
dig @192.168.10.53 example.com A

ss -ulnp 출력 형식 예시(값은 환경마다 다름):

State    Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Process
UNCONN   0      0       127.0.0.53%lo:53          0.0.0.0:*      users:(("systemd-resolve",...))
UNCONN   0      0             0.0.0.0:68          0.0.0.0:*      users:(("dhclient",...))
UNCONN   0      0             0.0.0.0:123         0.0.0.0:*      users:(("chronyd",...))
출력 요소읽는 법
UNCONNUDP 소켓의 일반 상태. TCP의 LISTEN/ESTAB 같은 구분이 없음
127.0.0.53%lo:53Ubuntu의 로컬 DNS 스텁(systemd-resolved) 예시
0.0.0.0:123모든 인터페이스에서 NTP 수신 대기

tcpdump에서는 IP 192.168.10.10.53001 > 192.168.10.53.53: 6699+ A? example.com. (29)처럼 질의 한 줄, 응답 한 줄로 끝나는 형태가 보입니다(형식 예시).


5. 보안 관점

  • 반사·증폭 공격: 공격자가 출발지를 피해자 IP로 위조해 증폭률이 큰 UDP 서비스에 요청하면, 큰 응답이 피해자에게 몰립니다. DNS(개방형 리졸버), NTP(구형 monlist 기능), SSDP(1900), Memcached(11211), CLDAP(389) 등이 사례로 알려져 있습니다. 대응은 불필요한 UDP 서비스의 외부 노출 차단, 개방형 리졸버 제거, 출발지 위조 패킷을 막는 네트워크 필터링(BCP 38) 등입니다.
  • UDP 기반 은닉 통신: DNS 질의 이름에 데이터를 담는 DNS 터널링처럼, 허용된 UDP 서비스를 통로로 쓰는 방식이 있습니다(02. 포트 · 프로토콜 분석 영역에서 다룸).
  • UDP 스캔의 모호함: 열린 포트가 응답하지 않는 경우가 많고, 응답이 없으면 "열림"과 "필터됨"을 구분하기 어렵습니다. ICMP 오류 생성 빈도 제한 때문에 스캔 속도도 느립니다(05. 네트워크 스캔 징후 분석 영역 217. UDP Port Scan 특징에서 다룸).

6. SOC 관점

흔적 위치확인할 수 있는 것
방화벽 로그UDP 흐름(타임아웃 기반 세션)의 5-tuple, 패킷·바이트 수
DNS·NTP 서버 로그질의 출발지, 질의 유형, 응답 크기 (로그 설정 필요)
IDS/IPS증폭 공격, DNS 이상, UDP 스캔 관련 시그니처
NetFlow요청 대비 응답 바이트 비율, 출발지 수

관제자가 확인할 질문

  • 이 UDP 서비스는 외부에 공개되어야 하는 서비스인가?
  • 외부로 나가는 UDP 응답량이 들어온 요청량보다 비정상적으로 큰가? (우리 서버가 반사 공격에 이용되는 중일 수 있음)
  • 내부 호스트가 지정된 DNS 서버가 아닌 외부 53번으로 직접 질의하는가?

오탐 주의: UDP 흐름에는 종료 신호가 없어 방화벽 세션의 지속 시간·종료 사유는 타임아웃 설정에 따라 결정됩니다. 스트리밍·VoIP·QUIC(443/udp)은 정상적으로 대량 UDP를 만들며, 출발지 IP는 위조 가능하므로 UDP 단독 로그의 출발지를 "실제 공격자"로 단정하지 않습니다.


7. 핵심 정리

  • UDP는 IP Protocol 17번의 전송 계층 프로토콜로, 포트·길이·체크섬만 제공하는 단순한 구조입니다(RFC 768).
  • 연결·재전송·순서 보장이 없으며, 필요한 신뢰성은 애플리케이션(DNS 재질의, QUIC 등)이 구현합니다.
  • 짧은 요청·응답, 실시간성, 브로드캐스트가 필요한 DNS·DHCP·NTP·SNMP·Syslog 등이 UDP를 씁니다.
  • 연결 수립이 없어 출발지 위조가 쉽고, 이를 이용한 반사·증폭 공격이 대표적인 위협입니다.
  • UDP 로그의 출발지 IP는 위조 가능성을, 세션 시간은 방화벽 타임아웃 영향을 고려해 해석합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글