📚 네트워크 · 패킷 분석 › 02. 포트 · 프로토콜 분석 — 56편
이전 글: 55. Dynamic Port · 다음 글: 57. Destination Port

1. 개념

Source Port(출발지 포트, sport) 는 TCP·UDP 헤더의 첫 16비트 필드로, 이 패킷을 보낸 프로세스가 사용하는 포트 번호입니다. 받는 쪽의 Destination Port와 짝을 이루므로, 두 필드를 함께 놓고 설명합니다.

필드위치크기의미
Source Port (sport)헤더 0~1바이트16비트이 패킷을 보낸 프로세스의 포트
Destination Port (dport)헤더 2~3바이트16비트이 패킷을 받을 프로세스의 포트

두 필드는 TCP·UDP에서 위치와 크기가 같아서, 도구들이 전송 계층 종류와 관계없이 같은 방식으로 포트를 읽을 수 있습니다. 헤더의 나머지 필드는 01. TCP/IP 구조 이해 영역 40. TCP와 UDP 헤더 비교 — 신뢰성과 속도의 차이에서 다룹니다.

출발지 포트는 누가 정할까요? 클라이언트가 접속할 때는 보통 운영체제가 임시(Dynamic) 포트 범위에서 자동으로 골라 붙입니다(55. Dynamic Port). 서버가 응답할 때는 자신이 LISTEN하던 서비스 포트(예: 80)가 출발지 포트가 됩니다. 즉 같은 연결 안에서도 패킷 방향이 바뀌면 sport 값이 바뀝니다. 이 글은 출발지 포트의 이런 성질과 관제에서의 해석에 집중하고, 목적지 포트 쪽 해석은 다음 글 57. Destination Port에서 다룹니다.


2. 동작 원리

          클라이언트 192.168.10.30            서버 192.168.10.20 (nginx :80)
요청 ①   sport 51200 ─────────────────────→ dport 80
응답 ②   dport 51200 ←───────────────────── sport 80
요청 ③   sport 51200 ─────────────────────→ dport 80
                 ↓
패킷 단위: ①③은 sport=51200/dport=80, ②는 sport=80/dport=51200
세션 단위: "192.168.10.30:51200 → 192.168.10.20:80" 하나의 연결
           (Initiator = 클라이언트, 서비스 포트 = 80)

로그와 도구는 이 둘 중 하나의 관점으로 기록합니다.

기록 주체기록 단위sport·dport의 의미
tcpdump·Wireshark패킷각 패킷의 실제 헤더 값 (방향마다 바뀜)
Stateful 방화벽 세션 로그세션보통 첫 패킷(연결 시작) 기준 — Initiator 쪽이 src
IDS Alert탐지된 패킷(또는 흐름)룰이 걸린 패킷 기준이라 응답 패킷이면 서버가 src로 찍힐 수 있음
NetFlow 등 흐름 기록흐름단방향 흐름이면 요청·응답이 별도 레코드

특히 IDS에서 "서버 응답 내용"을 보는 룰(예: 에러 메시지, 유출 의심 데이터)은 Alert의 src가 내부 서버, sport가 80 으로 나타납니다. 이것을 "내부 서버가 외부를 공격"으로 읽으면 방향을 거꾸로 해석한 것입니다(06. 방화벽 · IDS 기초 영역 295. IDS Alert의 Source/Destination 분석에서 다룸).


3. 주요 특징

출발지 포트를 보고 "이 패킷이 요청인가 응답인가"를 가늠하는 기준입니다. 한 가지 기준만으로 확정하지 않고 여러 개를 함께 봅니다.

판단 기준서비스 쪽일 가능성이 높은 포트예외
번호 크기낮은 번호 (Well-Known·Registered)8080·50000 같은 고번호 서비스, 양쪽 모두 낮은 번호(NTP 123↔123)
번호의 변화여러 연결에서 고정한 클라이언트의 고정 출발지 포트 프로토콜
첫 패킷SYN을 받은 쪽의 포트캡처가 연결 도중부터 시작된 경우
LISTEN 여부해당 호스트에서 LISTEN 중인 포트호스트 확인이 불가능한 외부 IP

출발지 포트가 고정되는 정상 프로토콜도 알아 둡니다.

프로토콜출발지 → 목적지비고
DHCP68 → 67 (응답 67 → 68)UDP, 브로드캐스트 (48. DHCP DORA 과정 — IP를 받는 4단계)
NTP123 → 123 (구현에 따라 임시 포트 사용)78. NTP와 로그 시간 동기화
IKE (IPsec VPN)500 → 500, NAT 통과 시 4500 → 4500UDP
NetBIOS Name Service137 → 137UDP

4. 예시

실습 예시 — tcpdump 필터로 포트 방향을 구분해 봅니다(Rocky/Ubuntu 공통, 인터페이스 ens33은 예시).

# 목적지 포트가 80인 패킷만 = 클라이언트 → 서버 방향
sudo tcpdump -nn -i ens33 'tcp dst port 80'

# 출발지 포트가 80인 패킷만 = 서버 → 클라이언트 방향
sudo tcpdump -nn -i ens33 'tcp src port 80'

# 방향 무관, 80이 어느 쪽이든
sudo tcpdump -nn -i ens33 'tcp port 80'

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

192.168.10.30.51200 > 192.168.10.20.80: Flags [S], seq 1000, length 0
192.168.10.20.80 > 192.168.10.30.51200: Flags [S.], seq 5000, ack 1001, length 0

같은 연결이 방화벽 세션 로그에서는 한 줄로 요약되는 형식 예시입니다(필드명은 장비마다 다름).

src=192.168.10.30 sport=51200 dst=192.168.10.20 dport=80 proto=tcp action=allow sent=812 rcvd=15320

sent·rcvd처럼 방향별 바이트가 있으면 "Initiator가 보낸 양"과 "받은 양"을 구분할 수 있습니다.


5. 보안 관점

  • 출발지 포트는 보내는 쪽이 마음대로 정합니다. 따라서 "출발지 포트가 53(또는 20, 80)이면 응답이니 허용" 같은 상태 비저장(Stateless) ACL은 출발지 포트를 조작한 패킷을 그대로 통과시킬 수 있습니다. Stateful 방화벽이 연결 상태로 응답 여부를 판단하는 이유입니다(06. 방화벽 · IDS 기초 영역 260. Source Port 정책에서 다룸).
  • 출발지 포트의 무작위성은 방어 요소입니다. 예측 가능한 출발지 포트는 응답 위조를 쉽게 만듭니다(55. Dynamic Port).
  • 출발지 포트 자체가 공격 지표가 되는 경우는 드뭅니다. 다만 1024 미만의 출발지 포트를 쓰는 비정상 연결, 여러 연결에서 같은 출발지 포트가 반복되는 경우(일부 스캔 도구의 기본 동작)는 참고 신호가 될 수 있습니다. 단정하지 않고 다른 로그와 함께 봅니다.

6. SOC 관점

흔적 위치확인할 수 있는 것
방화벽 세션 로그Initiator 기준 src·dst, 방향별 바이트
IDS Alert룰에 걸린 패킷의 sport·dport (응답 패킷일 수 있음)
패킷 캡처첫 SYN 방향으로 Initiator 확정
NAT 로그변환 전·후 출발지 포트

관제자가 확인할 질문

  • 이 로그는 패킷 단위인가, 세션 단위인가? src는 Initiator를 뜻하는가?
  • 출발지 포트가 임시 포트 범위인가, 서비스 포트(응답 패킷)인가?
  • 출발지 포트가 비정상적으로 고정되거나 1024 미만인데, 고정 포트 프로토콜이 아닌가?

오탐 주의: IDS Alert의 src가 내부 서버라고 해서 내부에서 시작된 통신으로 단정하지 않습니다. 응답 패킷에 걸린 룰인지 룰 내용과 방화벽 세션 로그로 교차 확인합니다. IP와 포트를 묶어 보는 분석은 91. IP + Port 분석에서 이어집니다.


7. 핵심 정리

  • Source Port는 TCP·UDP 헤더 맨 앞의 16비트 필드이며, 클라이언트 요청에서는 보통 OS가 고른 임시 포트, 서버 응답에서는 서비스 포트입니다.
  • 패킷 단위 기록(캡처, IDS)과 세션 단위 기록(방화벽)은 src의 의미가 다를 수 있습니다.
  • DHCP, NTP, IKE, NetBIOS처럼 출발지 포트가 고정되는 정상 프로토콜이 있습니다.
  • 출발지 포트는 조작 가능하므로 이를 신뢰하는 Stateless 정책은 우회될 수 있습니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글