📚 네트워크 · 패킷 분석 › 02. 포트 · 프로토콜 분석 — 91편
이전 글: 90. 정상 포트로 위장한 통신 — 443을 쓰는 비정상 트래픽 · 다음 글: 92. Port + Protocol 분석

1. 개념

로그 한 줄에서 가장 먼저 읽는 것은 보통 출발지(Source) 입니다. 출발지 IP는 "누가"를, 출발지 포트는 "그 주체가 연결을 어떤 방식으로 만들었는가"를 알려 줍니다. 두 값을 따로 보면 놓치는 정보가 함께 보면 드러납니다.

출발지·목적지 포트의 기본 개념은 57. Destination Port에서 다뤘으므로, 이 글은 분석 관점에만 집중합니다.

값알려 주는 것한계
출발지 IP연결을 시작한 호스트(또는 NAT 장비), 위치(내부·외부·구간)위조·NAT·프록시로 실제 주체와 다를 수 있음
출발지 포트클라이언트인지 서버 응답인지, OS 특성, 연결 순서단독으로는 의미가 약함
둘의 조합한 호스트 안의 개별 연결(소켓) 식별시간 범위를 함께 봐야 함

2. 동작 원리

클라이언트가 연결을 만들 때 OS는 임시(Ephemeral) 포트를 골라 출발지 포트로 씁니다. 이 선택 방식이 OS마다 달라, 출발지 포트 범위가 출발지 IP의 성격을 확인하는 보조 단서가 됩니다.

 이벤트: 203.0.113.50:51734 → 192.168.10.20:22
      ↓
 ① 출발지 IP 분류: 사설? 공인? 어느 구간? 자산 대장에 있는가?
      ↓
 ② 출발지 포트 분류:
      ├─ 1024 이상 임시 범위 → 클라이언트가 시작한 연결 (일반적)
      ├─ 서비스 포트(53, 80, 123 등) → 서버의 응답이거나 특수한 경우
      └─ 고정값 반복 → 도구·설정에 의한 연결 가능성
      ↓
 ③ 같은 출발지 IP의 다른 이벤트: 포트가 어떻게 변하는가? (증가·고정·무작위)
      ↓
 ④ NAT 여부: 이 IP가 실제 호스트인가, 여러 사용자를 대표하는 장비인가?

대표적인 OS별 기본 임시 포트 범위는 다음과 같습니다(55. Dynamic Port 참고).

OS기본 범위확인 명령
Linux32768~60999sysctl net.ipv4.ip_local_port_range
Windows (Vista 이후)49152~65535netsh int ipv4 show dynamicport tcp
macOS49152~65535sysctl net.inet.ip.portrange.first

3. 주요 특징

출발지 포트 패턴별 해석입니다.

출발지 포트 패턴가능한 해석추가 확인
임시 범위, 연결마다 바뀜일반 클라이언트 연결출발지 IP 평판·자산
서비스 포트(예: 80, 443)에서 출발서버의 응답 패킷(방향 해석 주의)앞선 요청 패킷이 있었는가
53 → 53, 123 → 123DNS 서버 간 질의, NTP 대칭 모드 등 일부 프로토콜의 정상 동작출발지가 DNS·NTP 서버인가
67 → 68DHCP 서버 응답인가된 DHCP 서버인가
고정된 비임시 포트가 여러 목적지에 반복도구나 특수 설정이 만든 패킷 가능성목적지 포트 분포, 응답 여부
같은 출발지에서 포트가 1씩 증가짧은 시간에 연속으로 새 연결 생성연결 수·목적지 수
출발지 포트 0정상 TCP/UDP 통신에서는 쓰이지 않음. 조작된 패킷이나 조각화 패킷 해석 문제원본 패킷 확인

출발지 IP 쪽에서는 "이 IP가 무엇을 대표하는가" 를 먼저 정합니다.

출발지 IP 유형의미주의
내부 사용자 PC 대역개별 사용자DHCP로 시간에 따라 다른 PC일 수 있음 → DHCP 로그 확인
내부 서버 대역특정 서버서버가 먼저 연결을 시작하는 것이 정상인지
방화벽·프록시·로드밸런서 IP여러 사용자를 대표원래 출발지는 장비 로그나 X-Forwarded-For 같은 헤더에
외부 공인 IP인터넷 사용자·서비스평판 조회, 클라우드·VPN·Tor 대역 여부
사설 IP가 외부 인터페이스로 유입위조 또는 라우팅 설정 오류들어온 인터페이스 확인

4. 예시

실습 예시 — 본인 실습망 서버에서 들어온 연결의 출발지 IP와 출발지 포트를 함께 보고, Linux 임시 포트 범위를 확인합니다(Rocky/Ubuntu 공통).

# 임시 포트 범위
sysctl net.ipv4.ip_local_port_range

# 22번으로 들어온 연결의 출발지 IP:포트
ss -Htn state established '( sport = :22 )' | awk '{print $4}'

# 방화벽 로그(ufw 예)에서 출발지 IP별 출발지 포트 최솟값·최댓값·건수
grep -o 'SRC=[^ ]*.*SPT=[0-9]*' /var/log/ufw.log |
  awk '{ip=$1; sub("SRC=","",ip); n=split($NF,a,"="); p=a[n]+0;
        c[ip]++; if(!(ip in mn)||p<mn[ip])mn[ip]=p; if(p>mx[ip])mx[ip]=p}
       END{for(i in c) print c[i], i, mn[i]"-"mx[i]}' | sort -rn | head

Rocky Linux에서 firewalld 차단 로그는 /var/log/ufw.log가 아니라 커널 로그(journalctl -k, /var/log/messages)에 남으며, firewall-cmd --set-log-denied=all처럼 로깅을 켜야 기록됩니다.

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

38 203.0.113.50 40000-40000
 5 198.51.100.7 49812-61230
 2 10.10.99.5 33120-58811
출발지해석
203.0.113.50, 38건 모두 포트 40000연결마다 같은 출발지 포트 → 일반 OS 동작과 다름. 목적지 포트가 다양한지 확인(95. Firewall Log의 Port)
198.51.100.7, 49812~61230Windows·macOS 계열 범위와 일치하는 일반 클라이언트 모습
10.10.99.5, 33120~58811Linux 기본 범위와 일치. 관리망 배스천이면 기준선 안

출발지 포트 범위로 OS를 추정할 수는 있지만 설정 변경, NAT(PAT)의 포트 변환 때문에 확정 근거로 쓰지 않습니다.


5. 보안 관점

  • 출발지 IP 위조: UDP나 TCP SYN 한 개는 출발지를 쉽게 위조할 수 있습니다. 반면 TCP 연결이 수립되고 데이터가 오갔다면 그 출발지 IP가 응답을 받았다는 뜻이므로 신뢰도가 높아집니다.
  • NAT·PAT: 방화벽이 출발지 IP와 포트를 바꾸면, 외부 서버 로그의 출발지는 방화벽 공인 IP입니다. 내부의 실제 PC를 찾으려면 방화벽 NAT 세션 로그의 "변환 전·후 IP:포트" 대응이 필요합니다(04. 네트워크 장비 실습 영역 177. PAT에서 다룸).
  • 출발지 포트 기반 허용 규칙: "출발지 포트 53이면 허용" 같은 규칙은 출발지 포트를 조작하면 우회될 수 있어 권장되지 않습니다(06. 방화벽 · IDS 기초 영역 260. Source Port 정책에서 다룸).

6. SOC 관점

흔적 위치출발지 분석에 쓰는 값
방화벽 로그원본·변환 후 출발지 IP·포트, 인터페이스
웹·프록시 로그클라이언트 IP, X-Forwarded-For
DHCP·VPN 로그시간대별 IP ↔ 호스트·사용자 매핑
IDS Alertsrc_ip, src_port (방향은 트리거 패킷 기준)

관제자가 확인할 질문

  • 출발지 IP는 실제 호스트인가, NAT·프록시·로드밸런서인가?
  • 이벤트 시각에 그 IP를 쓰던 호스트·사용자는 누구인가?
  • 출발지 포트가 일반 OS의 임시 범위와 변화 패턴을 따르는가?
  • 같은 출발지 IP가 다른 시간·다른 목적지에서 어떤 이벤트를 남겼는가?

오탐 주의: 서버 응답 패킷만 보고 "출발지 포트 443에서 공격"이라고 읽는 방향 착오가 흔합니다. 또 NAT 공인 IP나 프록시 IP는 많은 사용자를 대표하므로 이 IP를 바로 차단하면 정상 사용자까지 막을 수 있습니다. 출발지 IP 자체의 심화 분석은 05. 네트워크 스캔 징후 분석 영역 240. Source IP 분석에서 다룹니다.


7. 핵심 정리

  • 출발지 IP는 "누가", 출발지 포트는 "어떤 방식으로 연결을 만들었는가"를 알려 주므로 함께 읽습니다.
  • 임시 범위의 바뀌는 포트는 일반 클라이언트, 서비스 포트에서의 출발은 응답이거나 특수 프로토콜 동작입니다.
  • 고정 출발지 포트 반복, 포트 0, 외부 인터페이스로 들어온 사설 IP는 추가 확인 대상입니다.
  • NAT·프록시가 있으면 실제 출발지는 변환 로그·헤더·DHCP 로그로 찾아야 합니다.
  • 출발지 포트로 OS를 추정할 수는 있지만 확정 근거로 쓰지 않습니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글