📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 262편
이전 글: 261. Destination Port 정책 · 다음 글: 263. Inbound Policy
Protocol 정책은 IP 헤더의 Protocol 필드(IPv6에서는 Next Header)를 조건으로 삼는 규칙입니다. 포트 정책(261. Destination Port 정책)은 TCP·UDP에만 의미가 있고, ICMP·GRE·ESP처럼 포트 개념이 없는 프로토콜은 프로토콜 번호와 유형으로 통제합니다.
| 프로토콜 | IP 프로토콜 번호 | 포트 | 주요 용도 |
|---|---|---|---|
| ICMP | 1 | 없음 (Type/Code) | 오류 보고, ping |
| TCP | 6 | 있음 | 대부분의 응용 서비스 |
| UDP | 17 | 있음 | DNS, NTP, 스트리밍 |
| IPv6 캡슐화(6in4) | 41 | 없음 | IPv4 위 IPv6 터널 |
| GRE | 47 | 없음 | 터널링 |
| ESP / AH | 50 / 51 | 없음 | IPsec VPN |
| ICMPv6 | 58 | 없음 | IPv6 오류 보고, 이웃 탐색 |
"TCP·UDP만 허용하고 나머지 프로토콜은 기본 차단"이 일반적인 출발점이며, 필요한 프로토콜만 명시적으로 추가합니다.
ICMP는 "전부 막거나 전부 허용"하기 쉬운데, 두 선택 모두 문제가 있습니다. 대표적인 예가 경로 MTU 탐색(PMTUD) 입니다.
서버 → 클라이언트: 1500바이트 패킷 (DF 비트 설정)
↓
중간 라우터: 다음 구간 MTU 1400 → 전달 불가
↓ ICMP Type 3 Code 4 (Fragmentation Needed) 를 서버로 보냄
[방화벽이 ICMP 전체 차단] → 서버가 오류를 받지 못함
↓
서버는 계속 큰 패킷 전송 → 연결은 수립되지만 큰 데이터에서 멈춤
이런 현상은 "접속은 되는데 페이지가 끝까지 안 뜬다" 같은 장애로 나타납니다. 그래서 ICMP는 유형(Type)별로 판단합니다.
| ICMP 유형 | 의미 | 일반적 권장 |
|---|---|---|
| Type 8 / 0 | Echo Request / Reply | 외부→내부 Echo Request는 제한, 내부 진단용은 허용 |
| Type 3 | Destination Unreachable (Code 4 포함) | 기존 연결 관련분은 허용 |
| Type 11 | Time Exceeded | traceroute·경로 진단에 필요, 관련분 허용 |
| Type 5 | Redirect | 경계에서 차단 |
Stateful 방화벽은 기존 연결과 관련된 ICMP 오류를 RELATED 상태로 허용할 수 있습니다(254. Stateful Firewall).
프로토콜과 ICMP 유형을 구분하는 nftables 실습 예시입니다(Rocky/Ubuntu 공통, 값은 환경마다 다름).
# 실습 예시 (inet fw 테이블 input 체인 일부)
ct state established,related accept
ip protocol icmp icmp type echo-request limit rate 5/second accept
ip protocol icmp icmp type { destination-unreachable, time-exceeded } accept
ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit, nd-neighbor-advert, nd-router-advert, packet-too-big, echo-request } accept
meta l4proto gre log prefix "FW-GRE-DENY " drop
iptables LOG 형식에서 ICMP는 포트 대신 유형·코드가 기록됩니다.
# 형식 예시 (값은 환경마다 다름)
FW-DROP IN=ens33 OUT= SRC=198.51.100.70 DST=10.30.0.10 LEN=84 TTL=52 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=4121 SEQ=1
FW-GRE-DENY IN=ens37 OUT= SRC=192.168.10.40 DST=192.0.2.200 LEN=100 TTL=64 PROTO=47
두 번째 줄처럼 알려진 이름이 없는 프로토콜은 번호로 기록될 수 있습니다. 내부 PC(192.168.10.40)가 외부로 GRE 터널을 시도한 것으로, 업무상 VPN 사용인지 확인이 필요합니다.
관제자가 확인할 질문
| 프로토콜 흔적 | 의심 방향 |
|---|---|
| 외부 → 내부 대역 ICMP Echo 순차 | 호스트 탐색(218. ICMP Scan) |
| 내부 → 외부 큰 ICMP 반복 | ICMP 터널링 가능성 |
| 내부 PC → 외부 GRE·프로토콜 41 | 비인가 터널 |
| 대량 ICMP Type 3 수신 | UDP 스캔 응답, 경로 장애 |
오탐 주의: 모니터링 시스템의 주기적 ping, 네트워크 팀의 traceroute는 정상 ICMP입니다. 출발지와 주기를 확인합니다.