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

1. 개념

Protocol 정책은 IP 헤더의 Protocol 필드(IPv6에서는 Next Header)를 조건으로 삼는 규칙입니다. 포트 정책(261. Destination Port 정책)은 TCP·UDP에만 의미가 있고, ICMP·GRE·ESP처럼 포트 개념이 없는 프로토콜은 프로토콜 번호와 유형으로 통제합니다.

프로토콜IP 프로토콜 번호포트주요 용도
ICMP1없음 (Type/Code)오류 보고, ping
TCP6있음대부분의 응용 서비스
UDP17있음DNS, NTP, 스트리밍
IPv6 캡슐화(6in4)41없음IPv4 위 IPv6 터널
GRE47없음터널링
ESP / AH50 / 51없음IPsec VPN
ICMPv658없음IPv6 오류 보고, 이웃 탐색

"TCP·UDP만 허용하고 나머지 프로토콜은 기본 차단"이 일반적인 출발점이며, 필요한 프로토콜만 명시적으로 추가합니다.


2. 동작 원리

ICMP는 "전부 막거나 전부 허용"하기 쉬운데, 두 선택 모두 문제가 있습니다. 대표적인 예가 경로 MTU 탐색(PMTUD) 입니다.

서버 → 클라이언트: 1500바이트 패킷 (DF 비트 설정)
   ↓
중간 라우터: 다음 구간 MTU 1400 → 전달 불가
   ↓ ICMP Type 3 Code 4 (Fragmentation Needed) 를 서버로 보냄
[방화벽이 ICMP 전체 차단] → 서버가 오류를 받지 못함
   ↓
서버는 계속 큰 패킷 전송 → 연결은 수립되지만 큰 데이터에서 멈춤

이런 현상은 "접속은 되는데 페이지가 끝까지 안 뜬다" 같은 장애로 나타납니다. 그래서 ICMP는 유형(Type)별로 판단합니다.

ICMP 유형의미일반적 권장
Type 8 / 0Echo Request / Reply외부→내부 Echo Request는 제한, 내부 진단용은 허용
Type 3Destination Unreachable (Code 4 포함)기존 연결 관련분은 허용
Type 11Time Exceededtraceroute·경로 진단에 필요, 관련분 허용
Type 5Redirect경계에서 차단

Stateful 방화벽은 기존 연결과 관련된 ICMP 오류를 RELATED 상태로 허용할 수 있습니다(254. Stateful Firewall).


3. 주요 특징

  • ICMPv6는 IPv4의 ICMP보다 더 필수적입니다. IPv6의 이웃 탐색(NDP: Router/Neighbor Solicitation·Advertisement)과 PMTUD(Packet Too Big)가 ICMPv6로 동작하므로, 전체 차단하면 IPv6 통신 자체가 깨집니다. 권장 필터링 기준은 RFC 4890을 참고합니다.
  • 터널 프로토콜은 정책 우회 통로가 될 수 있습니다. GRE·6in4(프로토콜 41) 안에 들어 있는 내부 트래픽은 바깥 헤더만 보는 방화벽에서 포트 정책이 적용되지 않습니다. IPv4 정책만 관리하고 IPv6 터널을 허용하면 IPv6 쪽은 무방비일 수 있습니다.
  • IPsec(ESP) 은 페이로드가 암호화되어 방화벽이 내부 포트를 볼 수 없습니다. VPN 장비 간 IP로만 허용합니다.

4. 예시

프로토콜과 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 사용인지 확인이 필요합니다.


5. 보안 관점

  • 프로토콜 정책의 기본은 필요한 프로토콜만 허용입니다. 알 수 없는 프로토콜 번호는 기본 차단합니다.
  • ICMP Echo 제한은 호스트 탐색(Ping Scan)을 어렵게 하지만, 탐색 자체를 막지는 못합니다(TCP 기반 탐색 가능). ICMP 정책의 목적은 노출 최소화와 진단 기능 유지의 균형입니다.
  • ICMP·DNS는 데이터를 숨겨 보내는 터널링에 악용될 수 있습니다. 허용하되 크기·빈도 이상을 감시합니다.
  • IPv6가 기본 활성화된 운영체제가 많으므로, IPv4 정책과 같은 수준의 IPv6 정책이 있는지 확인합니다.

6. SOC 관점

관제자가 확인할 질문

  • 로그의 프로토콜 필드가 TCP·UDP·ICMP 외의 값인가? 그 프로토콜을 쓸 업무상 이유가 있는가?
  • ICMP 로그라면 유형과 코드는? Echo Request 다수는 탐색, Type 3 다수는 차단·장애 응답일 수 있습니다.
  • ICMP·DNS 패킷의 크기가 평소보다 크고 일정한 간격으로 반복되는가?
프로토콜 흔적의심 방향
외부 → 내부 대역 ICMP Echo 순차호스트 탐색(218. ICMP Scan)
내부 → 외부 큰 ICMP 반복ICMP 터널링 가능성
내부 PC → 외부 GRE·프로토콜 41비인가 터널
대량 ICMP Type 3 수신UDP 스캔 응답, 경로 장애

오탐 주의: 모니터링 시스템의 주기적 ping, 네트워크 팀의 traceroute는 정상 ICMP입니다. 출발지와 주기를 확인합니다.


7. 핵심 정리

  • Protocol 정책은 IP 헤더의 프로토콜 번호와 ICMP 유형·코드를 기준으로 통제합니다.
  • ICMP 전체 차단은 PMTUD 등 정상 기능을 깨뜨리므로 유형별로 판단합니다.
  • ICMPv6는 이웃 탐색에 필수라 IPv4 ICMP보다 신중하게 필터링해야 합니다.
  • GRE·6in4·ESP 같은 터널 프로토콜은 내부 트래픽을 방화벽 정책에서 숨길 수 있습니다.
  • 로그의 프로토콜 번호와 ICMP 유형은 탐색·터널링·장애를 구분하는 단서입니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글