📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 260편
이전 글: 259. Destination IP 정책 · 다음 글: 261. Destination Port 정책

1. 개념

Source Port 정책은 패킷의 출발지 포트를 조건으로 삼는 규칙입니다. 결론부터 말하면, 대부분의 방화벽 정책은 출발지 포트를 any로 둡니다. 클라이언트의 출발지 포트는 운영체제가 연결마다 임시로 고르는 값이어서 예측할 수 없고, 보내는 쪽이 마음대로 정할 수도 있기 때문입니다.

출발지 포트의 개념과 할당 방식은 02 영역 56. Source Port와 55. Dynamic Port에서 다뤘습니다. 이 글은 정책 조건으로서의 출발지 포트와 로그에서 출발지 포트가 주는 정보를 다룹니다.

구분출발지 포트목적지 포트
누가 정하는가보내는 쪽(클라이언트 OS 또는 공격자)서비스가 열어 둔 포트
값의 성격임시·가변고정·서비스 식별
정책 조건으로거의 쓰지 않음핵심 조건 (261. Destination Port 정책)
로그 분석 용도세션·NAT 매핑 식별서비스 식별

2. 동작 원리

출발지 포트 기반 허용이 위험한 이유는 Stateless 필터에서 잘 드러납니다(253. Packet Filtering Firewall).

의도: 내부 DNS 조회의 "응답"을 통과시키려고
규칙: 외부 → 내부  UDP  sport 53  허용
   ↓
정상 응답  203.0.113.53:53 → 192.168.10.25:53001  → 허용 (의도대로)
   ↓
위조 패킷  198.51.100.9:53 → 192.168.10.30:161    → 허용 (의도하지 않음)
   ↓ 출발지 포트를 53으로 맞추기만 하면
     내부의 어떤 UDP 포트에도 도달 가능

Stateful 방화벽에서는 응답을 세션 테이블로 처리하므로 이런 규칙이 필요 없습니다(254. Stateful Firewall). 따라서 출발지 포트로 응답을 허용하는 규칙이 남아 있다면 과거 Stateless 설계의 흔적일 가능성이 높고, 검토 대상입니다.


3. 주요 특징

출발지 포트가 고정되거나 의미를 갖는 예외적인 경우도 있습니다.

프로토콜출발지 → 목적지 포트비고
DHCP클라이언트 68 → 서버 67양쪽 포트 고정
IKE(IPsec)500 → 500 (NAT 통과 시 4500)VPN 장비 간 정책에 사용
NTP서버 간 123 → 123인 경우 있음클라이언트는 임시 포트 사용이 일반적
능동 모드 FTP 데이터서버 20 → 클라이언트 임의 포트서버가 연결을 시작
  • 운영체제별 임시 포트 범위는 다릅니다. IANA 권고 동적 포트 범위는 49152–65535이고, Linux 기본값은 net.ipv4.ip_local_port_range로 확인하며 보통 32768–60999입니다. Windows(Vista 이후)는 기본 49152–65535를 씁니다.
  • PAT(포트 변환) 를 거치면 출발지 포트가 바뀝니다. 방화벽 내부 로그의 출발지 포트와 외부 서버 로그의 출발지 포트가 다르므로, NAT 로그로 연결해야 합니다(268. Firewall NAT).

4. 예시

로그에서 출발지 포트 패턴을 해석하는 형식 예시입니다(값은 환경마다 다름).

# 형식 예시 — 같은 출발지의 차단 로그
10:31:02 deny tcp 198.51.100.61:40123 → 10.30.0.10:22
10:31:02 deny tcp 198.51.100.61:40123 → 10.30.0.10:23
10:31:02 deny tcp 198.51.100.61:40123 → 10.30.0.10:3389
10:31:03 deny tcp 198.51.100.61:40123 → 10.30.0.10:5900

분석 방법

  • 일반 클라이언트는 연결마다 다른 임시 포트를 씁니다. 하나의 출발지 포트로 여러 목적지 포트에 SYN을 보내는 패턴은 연결을 정상적으로 만들지 않는 도구(패킷을 직접 만드는 스캐너)에서 흔히 보입니다. 단, 도구·옵션에 따라 출발지 포트가 바뀌기도 하므로 단독 근거로 쓰지 않습니다.
  • 반대로 출발지 포트가 1씩 증가하며 짧은 간격으로 연결이 이어지면 한 호스트에서 연속 연결을 만드는 프로그램일 수 있습니다.

실습 예시 — Linux의 임시 포트 범위를 확인합니다(Rocky/Ubuntu 공통).

sysctl net.ipv4.ip_local_port_range

5. 보안 관점

  • 출발지 포트로 허용하는 규칙은 우회 경로가 됩니다. 응답 허용은 상태 추적으로 대체합니다.
  • 서비스 간 고정 포트가 필요한 경우(IKE 등)에도 출발지·목적지 IP를 함께 제한해 범위를 좁힙니다.
  • 출발지 포트 1024 미만을 쓰는 클라이언트 연결은 일반적인 OS 동작과 다릅니다. 특정 서비스(예: 일부 NFS·rsh 계열 전통 서비스)가 아니라면 확인 대상입니다.
  • 출발지 포트 무작위화는 DNS 캐시 포이즈닝 같은 위조 공격을 어렵게 만드는 방어 수단이기도 합니다.

6. SOC 관점

관제자가 확인할 질문

  • 정책에 출발지 포트 조건이 있는 허용 규칙이 있는가? 그 규칙으로 허용된 트래픽은 정말 응답이었는가?
  • 로그의 출발지 포트는 NAT 이전 값인가, 이후 값인가?
  • 같은 출발지 포트가 여러 목적지 포트·IP에 반복되는가?
출발지 포트 패턴해석
연결마다 다른 임시 포트일반 클라이언트 동작
고정 포트로 다수 목적지 SYN패킷 생성형 스캐너 가능성
외부 sport 53·123으로 내부 비서비스 포트 도달위조·반사 트래픽, 규칙 우회
내부 서버의 출발지 포트가 서비스 포트(예: 443)서버의 응답 방향 트래픽

오탐 주의: 방화벽 로그의 출발지 포트만 보고 "내부 호스트가 443으로 연결을 시작했다"고 오해하기 쉽습니다. 출발지 포트가 서비스 포트라면 대개 서버가 보낸 응답 방향입니다. 방향 판단은 세션 시작 로그로 확인합니다.


7. 핵심 정리

  • 출발지 포트는 보내는 쪽이 정하는 임시 값이라 대부분의 정책에서 any로 둡니다.
  • 출발지 포트로 응답을 허용하는 규칙은 위조 패킷의 우회 경로가 되며, 상태 추적으로 대체합니다.
  • DHCP·IKE처럼 출발지 포트가 고정되는 예외 프로토콜은 IP 조건과 함께 제한합니다.
  • PAT를 거치면 출발지 포트가 바뀌므로 NAT 로그로 연결해야 합니다.
  • 로그에서 출발지 포트는 세션 식별, 도구 특성, 트래픽 방향 판단의 단서가 됩니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글