📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 268편
이전 글: 267. Default Deny · 다음 글: 269. Port Forwarding
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 NAT | IP만 1:1 대응 | 대응표만 있으면 역추적 쉬움 |
내부 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만으로는 내부 호스트를 특정할 수 없습니다. 다음 세 가지가 필요합니다.
방화벽 세션 로그는 보통 변환 전·후 주소를 함께 기록합니다. 필드 이름은 제품마다 다르므로 의미 기준으로 정리합니다.
| 의미 | 흔한 필드 표현 예 | 내용 |
|---|---|---|
| 원래 출발지 | src, srcip | 192.168.10.57 |
| 변환된 출발지 | nat_src, transip, xlatesrc | 203.0.113.5 |
| 변환된 출발지 포트 | nat_sport, transport | 40211 |
| 원래 목적지(DNAT 전) | dst | 203.0.113.10 |
| 변환된 목적지(DNAT 후) | nat_dst | 10.30.0.10 |
dst라는 이름이 제품에 따라 다른 시점의 값을 가리킬 수 있습니다.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로 연결됩니다.
X-Forwarded-For 같은 헤더 기록을 설정합니다(단, 헤더는 위조 가능).관제자가 확인할 질문
| 분석 상황 | 연결 방법 |
|---|---|
| 외부 IDS Alert의 출발지가 우리 공인 IP | 공인 IP·포트·시각 → 방화벽 NAT 기록 → 내부 IP |
| 내부 IDS(NAT 안쪽)의 Alert | 이미 내부 IP → 방화벽 로그로 외부 목적지 확인 |
| DMZ 서버 로그의 출발지 | DNAT만 적용 시 원 클라이언트 IP 유지(환경에 따라 다름) |
오탐 주의: 같은 공인 IP에서 온 여러 Alert를 한 호스트의 행위로 묶으면 안 됩니다. 반드시 내부 IP까지 역추적한 뒤 호스트 단위로 판단합니다. IDS 센서 위치에 따른 IP 차이는 295. IDS Alert의 Source/Destination 분석에서 다룹니다.