Zone Based Firewall 구성 예제
Zone Based Firewall(ZBF) 는 Cisco IOS 라우터에서 사용 가능한 가장 고급 stateful 방화벽 방법입니다. ZBF의 기본 아이디어는 인터페이스에 access-list를 할당하지 않고, 다른 영역(zone) 을 만든다는 것입니다. 인터페이스는 다른 영역에 할당되며, 보안 정책은 영역 사이의 트래픽에 할당됩니다. ZBF가 왜 유용한지 보여드리기 위해 그림을 보여드리겠습니다.
위에서 LAN, DMZ, 두 ISP가 있는 WAN을 가진 작은 네트워크를 볼 수 있습니다. 보안 정책이 다음과 같다고 가정해 봅시다.
- LAN의 트래픽은 WAN으로 허용되지만, HTTP와 HTTPS 서버에만 허용됩니다.
- LAN의 트래픽은 DMZ로 제한 없이 허용됩니다.
- DMZ의 트래픽은 LAN으로 허용되지 않습니다.
- DMZ의 트래픽은 WAN으로 허용되지만, DNS와 HTTP 서버에만 허용됩니다.
- WAN의 트래픽은 LAN으로 허용되지만, FTP 서버에만 허용됩니다.
access-list로 이를 달성하려면, 여러 access-list를 만들고 다른 인터페이스에 인바운드 및/또는 아웃바운드로 연결해야 합니다. 적게 말해도, 이를 하는 것은 관리상 고통이 됩니다. 가능하지만 짜증납니다.
zone-based firewall로는 보안 정책을 인터페이스가 아니라 보안 영역에 적용합니다. 인터페이스는 다른 영역의 멤버가 됩니다.
위에서 LAN, WAN, DMZ 세 영역을 볼 수 있습니다. 인터페이스는 적절한 영역에 할당되며, 이제 영역 사이의 트래픽에 보안 정책을 적용할 수 있습니다. 예를 들어:
- LAN to WAN
- LAN to DMZ
- WAN to LAN
- WAN to DMZ
- DMZ to WAN
- DMZ to LAN
영역 사이의 트래픽에 대한 보안 정책을 만들기 위해 영역 페어(zone pair) 를 만들어야 합니다. 영역 페어를 구성하고 그것에 보안 정책을 적용해 한 영역에서 다른 영역으로 어떤 트래픽이 허용되는지 결정합니다. 모든 보안 정책은 영역 페어에 연결됩니다.
참고: Zone Based Firewall은 멀티캐스트 트래픽을 지원하지 않습니다. 이런 종류의 트래픽은 검사되지 않습니다. 운영 환경에서 사용하려면 염두에 두어야 할 점입니다.
1. 구성
다음 토폴로지를 사용합니다.
위에서 라우터 세 개와 LAN과 WAN이라는 두 영역을 볼 수 있습니다. R2에 ZBF를 구성하겠습니다. 연결성을 위해, R1과 R3에서 R2를 가리키는 정적 라우트를 만듭니다.
R1(config)# ip route 0.0.0.0 0.0.0.0 192.168.12.2
R3(config)# ip route 0.0.0.0 0.0.0.0 192.168.23.2이제 방화벽을 구성할 수 있습니다.
2. 영역 구성
먼저 두 영역을 만듭니다.
R2(config)# zone security LAN
R2(config)# zone security WAN둘째, 인터페이스를 적절한 영역에 할당합니다.
R2(config)# interface fastEthernet 0/0
R2(config-if)# zone-member security LAN
R2(config)# interface fastEthernet 0/1
R2(config-if)# zone-member security WAN영역 구성을 검증해 봅시다.
R2# show zone security
zone self
Description: System defined zone
zone LAN
Member Interfaces:
FastEthernet0/0
zone WAN
Member Interfaces:
FastEthernet0/1영역이 활성화되었고 인터페이스가 할당되었습니다. 이제 영역 페어를 만들 수 있습니다.
3. 영역 페어 구성
R2(config)# zone-pair security LAN-TO-WAN source LAN destination WAN
R2(config-sec-zone-pair)# description LAN-TO-WAN TRAFFIC
R2(config)# zone-pair security WAN-TO-LAN source WAN destination LAN
R2(config-sec-zone-pair)# description WAN-TO-LAN TRAFFIC위에서 영역 페어 두 개를 만듭니다. 하나는 LAN에서 WAN으로 가는 트래픽용이고, 다른 하나는 WAN에서 LAN으로 가는 트래픽용입니다. 설명은 선택사항이지만 영역이 많을 때 권장됩니다. 구성을 검증해 봅시다.
R2# show zone-pair security
Zone-pair name LAN-TO-WAN
Description: LAN-TO-WAN TRAFFIC
Source-Zone LAN Destination-Zone WAN
service-policy not configured
Zone-pair name WAN-TO-LAN
Description: WAN-TO-LAN TRAFFIC
Source-Zone WAN Destination-Zone LAN
service-policy not configured이제 영역, 영역 페어, 영역에 할당된 인터페이스가 있습니다. 기본적으로 모든 트래픽은 차단됩니다. 이것이 사실인지 확인해 봅시다.
R1# ping 192.168.23.3
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.23.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)영역에 인터페이스만 넣어둔 상태에서는 “영역 페어는 있지만 service-policy가 없다 = 모두 드롭”이 기본 동작이기 때문에 LAN↔WAN 간 핑이 실패합니다.
4. 보안 정책
이제 “LAN에서 WAN으로 나가는 트래픽은 허용(검사)” 하는 실제 정책을 만들어 봅시다. ZBF는 MQC와 똑같이 class-map → policy-map → service-policy 구조를 따릅니다. 차이는 inspect 타입을 쓰고, 적용 지점이 영역 페어라는 점입니다.
먼저 어떤 트래픽을 검사할지 class-map으로 정의합니다. 여기서는 ICMP, HTTP, HTTPS를 LAN→WAN으로 허용하겠습니다.
R2(config)# class-map type inspect match-any LAN-TO-WAN-CLASS
R2(config-cmap)# match protocol icmp
R2(config-cmap)# match protocol http
R2(config-cmap)# match protocol https다음으로 policy-map을 만들어 위 트래픽을 inspect(stateful 허용) 시킵니다.
R2(config)# policy-map type inspect LAN-TO-WAN-POLICY
R2(config-pmap)# class type inspect LAN-TO-WAN-CLASS
R2(config-pmap-c)# inspect
R2(config-pmap-c)# exit
R2(config-pmap)# class class-default
R2(config-pmap-c)# drop마지막으로 이 policy-map을 LAN→WAN 영역 페어에 연결합니다.
R2(config)# zone-pair security LAN-TO-WAN source LAN destination WAN
R2(config-sec-zone-pair)# service-policy type inspect LAN-TO-WAN-POLICY이제 동일한 핑을 다시 시도하면 정상적으로 동작합니다.
R1# ping 192.168.23.3
!!!!!
Success rate is 100 percent (5/5)WAN→LAN 방향에는 service-policy를 걸지 않았으므로 외부에서 LAN으로 들어오는 트래픽은 계속 거부됩니다. 다만 ZBF는 stateful이기 때문에, LAN→WAN으로 나간 트래픽의 리턴 트래픽은 자동으로 허용됩니다. 별도의 “리턴용 ACL”을 만들 필요가 없다는 점이 access-list 기반 방식 대비 가장 큰 장점입니다.
세션 상태는 다음 명령으로 확인할 수 있습니다.
R2# show policy-map type inspect zone-pair sessions각 영역 페어별로 활성 세션과 바이트 카운터가 표시되어, 어떤 트래픽이 실제로 통과하고 있는지 바로 보입니다.
5. Zone Self
show zone security를 보면 만든 적도 없는 self 라는 영역이 기본으로 존재합니다. 이 영역은 “라우터 자기 자신”을 의미합니다. 즉 R2로 들어오거나(R2가 목적지인 트래픽), R2에서 나가는(R2가 출발지인 트래픽) 관리 트래픽이 속하는 가상 영역입니다.
기본 규칙은 다음과 같습니다.
- self에서 다른 영역, 또는 다른 영역에서 self로 가는 트래픽은 기본적으로 허용 됩니다. 이 덕분에 ZBF를 켜도 R2에 대한 SSH/관리 세션이 끊기지 않습니다.
- 만약 이 트래픽도 제한하고 싶다면,
self를 소스 또는 목적지로 하는 영역 페어를 만들고 검사 정책을 걸면 됩니다.
예를 들어 “WAN에서 R2로 들어올 수 있는 것은 SSH만” 으로 묶으려면 다음과 같이 구성합니다.
R2(config)# class-map type inspect match-any MGMT-CLASS
R2(config-cmap)# match protocol ssh
!
R2(config)# policy-map type inspect TO-SELF-POLICY
R2(config-pmap)# class type inspect MGMT-CLASS
R2(config-pmap-c)# inspect
R2(config-pmap-c)# class class-default
R2(config-pmap-c)# drop
!
R2(config)# zone-pair security WAN-TO-SELF source WAN destination self
R2(config-sec-zone-pair)# service-policy type inspect TO-SELF-POLICY이제 WAN 측에서 R2로 들어올 수 있는 것은 SSH뿐이고, 나머지는 모두 드롭됩니다.
참고: ZBF는 멀티캐스트/브로드캐스트 트래픽과 일부 컨트롤 플레인 트래픽을 검사하지 못합니다. OSPF, EIGRP, HSRP처럼 라우터 자신을 출발/목적지로 하는 프로토콜은 대부분 self 영역으로 분류되어 기본 허용되지만, 그 외의 멀티캐스트 애플리케이션을 통과시켜야 한다면
pass액션을 사용한 별도 정책을 고려해야 합니다.
6. 결론
- Zone Based Firewall은 Cisco IOS 라우터에서 사용할 수 있는 가장 정교한 stateful 방화벽 이며, 인터페이스 기준이 아닌 영역(zone) + 영역 페어(zone-pair) + 검사 정책(type inspect policy-map) 구조로 트래픽을 제어합니다.
- 구성 순서는 ①
zone security로 영역 생성 → ② 인터페이스를zone-member로 할당 → ③zone-pair로 방향 정의 → ④class-map/policy-map type inspect로 정책 작성 → ⑤service-policy type inspect로 영역 페어에 연결 입니다. - 같은 영역 내부의 트래픽은 별도의 영역 페어를 만들지 않는 한 자동 허용, 다른 영역 사이의 트래픽은 서비스 정책이 없는 한 자동 거부가 기본입니다.
self영역은 라우터 자신을 가리키는 시스템 예약 영역으로, 관리 트래픽까지 포함해 방화벽 정책에 넣을 수 있습니다.- 별도의 전용 방화벽을 두기 힘들고 트래픽 양이 많지 않은 브랜치급 ISR에서 특히 유용하며, 기존 access-list로는 관리하기 어려웠던 “다수 인터페이스 × 양방향 ACL” 구조를 훨씬 깔끔하게 대체할 수 있습니다.
출처: networklessons.com - Zone Based Firewall Configuration Example
태그: Firewall, Security