📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 268편
이전 글: 267. Default Deny · 다음 글: 269. Port Forwarding

1. 개념

Firewall NAT는 방화벽이 패킷의 주소(및 포트)를 바꾸는 기능입니다. NAT·PAT의 기본 원리는 49. 사설 IP · 공인 IP와 NAT — 로그의 IP가 서로 다른 이유, 방화벽에서 SNAT·DNAT 규칙을 구성하는 방법은 04 영역 186. Firewall NAT 정책에서 다뤘습니다.

이 글의 초점은 NAT 때문에 "누가 누구와 통신했는가"가 어떻게 가려지고, 로그로 어떻게 되찾는가입니다.

NAT 종류바뀌는 값관제에서 가려지는 것
SNAT / PAT (내부 → 외부)출발지 IP(와 포트)외부에서는 내부 호스트가 모두 같은 공인 IP로 보임
DNAT (외부 → 내부 공개 서버)목적지 IP(와 포트)외부 로그에는 공인 IP만, 내부 서버 로그에는 내부 IP만
1:1 NATIP만 1:1 대응대응표만 있으면 역추적 쉬움

2. 동작 원리

내부 PC가 외부 서버에 접속할 때 방화벽 양쪽에서 보이는 주소는 다음과 같습니다.

내부 PC 192.168.10.57:51544
   ↓ 방화벽 SNAT/PAT
   ↓ 출발지 변환: 192.168.10.57:51544 → 203.0.113.5:40211
외부 서버에는 203.0.113.5:40211 → 198.51.100.140:443 으로 보임
   ↓ 응답
198.51.100.140:443 → 203.0.113.5:40211
   ↓ 방화벽이 세션 기록으로 역변환
198.51.100.140:443 → 192.168.10.57:51544

외부 기관이나 서비스 제공자에게서 "203.0.113.5에서 공격이 왔다"는 통보를 받으면, 같은 공인 IP를 수백 대의 내부 PC가 공유하므로 IP만으로는 내부 호스트를 특정할 수 없습니다. 다음 세 가지가 필요합니다.

  1. 변환 후 출발지 포트(위의 40211)
  2. 정확한 시각(시간대 포함)
  3. 그 시각의 NAT 변환 기록(세션 로그 또는 NAT 로그)

3. 주요 특징

방화벽 세션 로그는 보통 변환 전·후 주소를 함께 기록합니다. 필드 이름은 제품마다 다르므로 의미 기준으로 정리합니다.

의미흔한 필드 표현 예내용
원래 출발지src, srcip192.168.10.57
변환된 출발지nat_src, transip, xlatesrc203.0.113.5
변환된 출발지 포트nat_sport, transport40211
원래 목적지(DNAT 전)dst203.0.113.10
변환된 목적지(DNAT 후)nat_dst10.30.0.10
  • 어떤 필드가 "변환 전"이고 어떤 필드가 "변환 후"인지는 장비 문서로 확인해야 합니다. 같은 dst라는 이름이 제품에 따라 다른 시점의 값을 가리킬 수 있습니다.
  • PAT의 변환 포트는 세션이 끝나면 다른 연결에 재사용됩니다. 수 초의 시간 차이로 전혀 다른 호스트를 지목할 수 있어, 장비 간 시간 동기화(NTP) 가 필수입니다.
  • NAT 로그는 양이 많아 별도로 켜야 하거나 짧게 보관되는 경우가 있습니다. 보관 기간이 사건 조사 가능 기간을 결정합니다.

4. 예시

Linux 방화벽의 연결 추적 테이블에서 변환 전후 주소를 확인하는 실습 예시입니다(Rocky는 conntrack-tools, Ubuntu는 conntrack 패키지, 값은 환경마다 다름).

# SNAT가 적용된 연결만 표시
sudo conntrack -L --src-nat

# 연결 생성·종료 이벤트를 실시간으로 확인 (NAT 기록 확보용)
sudo conntrack -E -e NEW,DESTROY
# 출력 형식 예시 (값은 환경마다 다름)
tcp 6 431999 ESTABLISHED src=192.168.10.57 dst=198.51.100.140 sport=51544 dport=443 src=198.51.100.140 dst=203.0.113.5 sport=443 dport=40211 [ASSURED] mark=0 use=1

분석 방법 — 한 줄에 주소 묶음이 두 번 나옵니다. 앞쪽은 원래 방향(내부 PC가 보낸 그대로), 뒤쪽은 응답 방향에서 기대하는 값입니다. 응답 방향의 dst=203.0.113.5 dport=40211이 바로 외부에 보인 변환 주소·포트입니다. 따라서 외부 통보의 "203.0.113.5:40211, 해당 시각"은 이 기록을 통해 192.168.10.57로 연결됩니다.


5. 보안 관점

  • NAT는 내부 주소를 숨기지만 보안 통제가 아닙니다. 허용 여부는 필터 정책이 결정합니다.
  • NAT 기록이 없으면 외부 통보, 법적 요청, 침해 조사에서 내부 책임 호스트를 특정할 수 없습니다. 로그 보관 정책에 NAT 기록을 포함합니다.
  • DNAT 규칙은 곧 외부 공개입니다. DNAT 규칙과 필터 허용 규칙을 함께 검토해야 의도치 않은 공개를 찾을 수 있습니다(269. Port Forwarding).
  • 프록시·로드밸런서도 주소를 바꿉니다. 서버 로그에 원 클라이언트 IP를 남기려면 X-Forwarded-For 같은 헤더 기록을 설정합니다(단, 헤더는 위조 가능).

6. SOC 관점

관제자가 확인할 질문

  • 이 로그의 IP 필드는 변환 전인가, 변환 후인가?
  • 외부에서 받은 정보에 공인 IP·포트·시각(시간대) 이 모두 있는가? 포트가 없으면 후보 호스트를 좁히기 어렵습니다.
  • 방화벽·IDS·서버의 시각이 NTP로 맞춰져 있는가? 시간대(UTC/KST) 표기를 통일했는가?
분석 상황연결 방법
외부 IDS Alert의 출발지가 우리 공인 IP공인 IP·포트·시각 → 방화벽 NAT 기록 → 내부 IP
내부 IDS(NAT 안쪽)의 Alert이미 내부 IP → 방화벽 로그로 외부 목적지 확인
DMZ 서버 로그의 출발지DNAT만 적용 시 원 클라이언트 IP 유지(환경에 따라 다름)

오탐 주의: 같은 공인 IP에서 온 여러 Alert를 한 호스트의 행위로 묶으면 안 됩니다. 반드시 내부 IP까지 역추적한 뒤 호스트 단위로 판단합니다. IDS 센서 위치에 따른 IP 차이는 295. IDS Alert의 Source/Destination 분석에서 다룹니다.


7. 핵심 정리

  • NAT는 내부 호스트를 공인 IP 뒤로 숨겨, 외부에서 본 IP만으로는 내부 호스트를 특정할 수 없게 만듭니다.
  • 역추적에는 변환된 IP·포트, 정확한 시각, 당시의 NAT 기록이 모두 필요합니다.
  • 로그 필드가 변환 전·후 중 어느 값인지는 장비 문서로 확인합니다.
  • conntrack 한 줄의 원래 방향·응답 방향 튜플에서 변환 전후 주소를 읽을 수 있습니다.
  • PAT 포트는 재사용되므로 시간 동기화와 NAT 기록 보관이 조사 가능성을 결정합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글