소개
이 문서에서는 C8300 플랫폼의 자동 모드에서 FQDN ACL 패턴 일치를 사용하여 ZBFW를 구성하는 절차에 대해 설명합니다.
사전 요구 사항
요구 사항
Cisco에서는 다음 항목에 대해 알고 있는 것이 좋습니다.
- ZBFW(Zone-Based Policy Firewall)
- VRF(Virtual Routing and Forwarding)
- NAT(Network Address Translation)
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
ZBFW(Zone-Based Policy Firewall)는 Cisco IOS® 및 Cisco IOS XE 디바이스에서 네트워크 내에 보안 영역을 생성할 수 있는 고급 방화벽 컨피그레이션 방법입니다.
ZBFW를 사용하면 관리자가 인터페이스를 영역으로 그룹화하고 이러한 영역 사이를 이동하는 트래픽에 방화벽 정책을 적용할 수 있습니다.
Cisco 라우터의 ZBFW와 함께 사용되는 FQDN ACL(Fully Qualified Domain Name Access Control Lists)을 사용하면 관리자가 IP 주소만 아니라 도메인 이름을 기반으로 트래픽과 일치하는 방화벽 규칙을 생성할 수 있습니다.
이 기능은 서비스와 연결된 IP 주소가 자주 변경될 수 있는 AWS 또는 Azure와 같은 플랫폼에서 호스팅된 서비스를 처리할 때 특히 유용합니다.
액세스 제어 정책의 관리를 간소화하고 네트워크 내에서 보안 구성의 유연성을 향상합니다.
구성
네트워크 다이어그램
이 문서에서는 이 다이어그램을 기반으로 ZBFW의 컨피그레이션 및 확인을 소개합니다. BlackJumboDog를 DNS 서버로 사용하는 시뮬레이션된 환경입니다.
네트워크 다이어그램
설정
클라이언트에서 웹 서버로의 통신을 허용하는 컨피그레이션입니다.
1단계. (선택 사항) VRF 구성
VRF(Virtual Routing and Forwarding) 기능을 사용하면 단일 라우터 내에서 여러 독립적인 라우팅 테이블을 생성하고 관리할 수 있습니다. 이 예에서는 WebVRF라는 VRF를 생성하고 관련 통신을 위한 라우팅을 수행합니다.
vrf definition WebVRF
rd 65010:10
!
address-family ipv4
route-target export 65010:10
route-target import 65010:10
exit-address-family
!
address-family ipv6
route-target export 65010:10
route-target import 65010:10
exit-address-family
ip route vrf WebVRF 8.8.8.8 255.255.255.255 GigabitEthernet0/0/3 192.168.99.10
ip route vrf WebVRF 192.168.10.0 255.255.255.0 Port-channel1.2001 192.168.1.253
ip route vrf WebVRF 192.168.20.0 255.255.255.0 GigabitEthernet0/0/3 192.168.99.10
2단계. 인터페이스 구성
내부 및 외부 인터페이스에 대한 영역 멤버, VRF, NAT 및 IP 주소와 같은 기본 정보를 구성합니다.
interface GigabitEthernet0/0/1
no ip address
negotiation auto
lacp rate fast
channel-group 1 mode active
interface GigabitEthernet0/0/2
no ip address
negotiation auto
lacp rate fast
channel-group 1 mode active
interface Port-channel1
no ip address
no negotiation auto
interface Port-channel1.2001
encapsulation dot1Q 2001
vrf forwarding WebVRF
ip address 192.168.1.1 255.255.255.0
ip broadcast-address 192.168.1.255
no ip redirects
no ip proxy-arp
ip nat inside
zone-member security zone_client
interface GigabitEthernet0/0/3
vrf forwarding WebVRF
ip address 192.168.99.1 255.255.255.0
ip nat outside
zone-member security zone_internet
speed 1000
no negotiation auto
3단계. (선택 사항) NAT 구성
내부 및 외부 인터페이스에 대한 NAT를 구성합니다. 이 예에서는 클라이언트의 소스 IP 주소(192.168.10.1)가 192.168.99.100으로 변환됩니다.
ip access-list standard nat_source
10 permit 192.168.10.0 0.0.0.255
ip nat pool natpool 192.168.99.100 192.168.99.100 prefix-length 24
ip nat inside source list nat_source pool natpool vrf WebVRF overload
4단계. FQDN ACL 구성
대상 트래픽과 일치하도록 FQDN ACL을 구성합니다. 이 예에서는 대상 FQDN을 매칭하려면 FQDN 객체 그룹의 패턴 매칭에서 와일드카드 '*'를 사용합니다.
object-group network src_net
192.168.10.0 255.255.255.0
object-group fqdn dst_test_fqdn
pattern .*\.test\.com
object-group network dst_dns
host 8.8.8.8
ip access-list extended Client-WebServer
1 permit ip object-group src_net object-group dst_dns
5 permit ip object-group src_net fqdn-group dst_test_fqdn
5단계. ZBFW 구성
ZBFW에 대한 영역, 클래스 맵, 정책 맵을 구성합니다. 이 예에서는 parameter-map을 사용하여 ZBFW에서 트래픽을 허용할 때 로그가 생성됩니다.
zone security zone_client
zone security zone_internet
parameter-map type inspect inspect_log
audit-trail on
class-map type inspect match-any Client-WebServer-Class
match access-group name Client-WebServer
policy-map type inspect Client-WebServer-Policy
class type inspect Client-WebServer-Class
inspect inspect_log
class class-default
drop log
zone-pair security Client-WebServer-Pair source zone_client destination zone_internet
service-policy type inspect Client-WebServer-Policy
다음을 확인합니다.
1단계. 클라이언트에서 HTTP 연결 시작
클라이언트에서 웹 서버로의 HTTP 통신이 성공했는지 확인합니다.
HTTP 연결
2단계. IP 캐시 확인
명령을 실행하여show platform hardware qfp active feature dns-snoop-agent datapath ip-cache all 대상 FQDN의 IP 캐시가 C8300-2N2S-6T에서 생성되는지 확인합니다.
02A7382#show platform hardware qfp active feature dns-snoop-agent datapath ip-cache all
IP Address Client(s) Expire RegexId Dirty VRF ID Match
------------------------------------------------------------------------------------------------------
192.168.20.1 0x1 117 0xdbccd400 0x00 0x0 .*\.test\.com
3단계. ZBFW 로그 확인
IP 주소(192.168.20.1)가 FQDN(.*\.test\.com)과 일치하는지 확인하고 1단계의 HTTP 통신이 ZBFW에서 허용되는지 확인합니다.
*Mar 7 11:08:23.018: %IOSXE-6-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:003 TS:00000551336606461468 %FW-6-SESS_AUDIT_TRAIL_START: (target:class)-(Client-WebServer-Pair:Client-WebServer-Class):Start http session: initiator (192.168.10.1:51468) -- responder (192.168.20.1(.*\.test\.com):80) from Port-channel1.2001
*Mar 7 11:08:24.566: %IOSXE-6-PLATFORM: R0/0: cpp_cp: QFP:0.0 Thread:002 TS:00000551338150591101 %FW-6-SESS_AUDIT_TRAIL: (target:class)-(Client-WebServer-Pair:Client-WebServer-Class):Stop http session: initiator (192.168.10.1:51468) sent 943 bytes -- responder (192.168.20.1:80) sent 101288 bytes, from Port-channel1.2001
4단계. 패킷 캡처 확인
대상 FQDN에 대한 DNS 확인 및 클라이언트와 웹 서버 간의 HTTP 연결이 성공적인지 확인합니다.
내부 패킷 캡처:
내부의 DNS 패킷
내부의 HTTP 패킷
온사이드의 패킷 캡처(192.168.10.1은 192.168.19.100에 대한 NAT):
외부 DNS 패킷
외부 HTTP 패킷
문제 해결
FQDN ACL 패턴 일치를 사용하여 ZBFW와 관련된 통신 문제를 해결하려면 문제 중에 로그를 수집하여 Cisco TAC에 제공할 수 있습니다. 문제 해결을 위한 로그는 문제의 특성에 따라 달라집니다.
수집할 로그의 예:
!!!! before reproduction
!! Confirm the IP cache
show platform hardware qfp active feature dns-snoop-agent datapath ip-cache all
!! Enable packet-trace
debug platform packet-trace packet 8192 fia-trace
debug platform packet-trace copy packet both
debug platform condition ipv4 access-list Client-WebServer both
debug platform condition feature fw dataplane submode all level verbose
!! Enable debug-level system logs and ZBFW debug logs
debug platform packet-trace drop
debug acl cca event
debug acl cca error
debug ip domain detail
!! Start to debug
debug platform condition start
!! Enable packet capture on the target interface (both sides) and start the capture
monitor capture CAPIN interface Port-channel1.2001 both
monitor capture CAPIN match ipv4 any any
monitor capture CAPIN buffer size 32
monitor capture CAPIN start
monitor capture CAPOUT interface g0/0/3 both
monitor capture CAPOUT match ipv4 any any
monitor capture CAPOUT buffer size 32
monitor capture CAPOUT start
!! (Optional) Clear the DNS cache on the client
ipconfig/flushdns
ipconfig /displaydns
!! Run the show command before reproduction
show platform hardware qfp active feature firewall drop all
show policy-map type inspect zone-pair Client-WebServer-Pair sessions
show platform packet-trace statistics
show platform packet-trace summary
show logging process cpp_cp internal start last boot
show platform hardware qfp active feature dns-snoop-agent client hw-pattern-list
show platform hardware qfp active feature dns-snoop-agent client info
show platform hardware qfp active feature dns-snoop-agent datapath stats
show ip dns-snoop all
show platform hardware qfp active feature dns-snoop-agent datapath ip-cache all
show platform software access-list F0 summary
!!!! Reproduce the issue - start
!! During the reproductionof the issue, run show commands at every 10 seconds
!! Skip show ip dns-snoop all command if it is not supported on the specific router
show ip dns-snoop all
show platform hardware qfp active feature dns-snoop-agent datapath ip-cache all
!!!! After reproduction
!! Stop the debugging logs and packet capture
debug platform condition stop
monitor capture CAPIN stop
monitor capture CAPOUT stop
!! Run the show commands
show platform hardware qfp active feature firewall drop all
show policy-map type inspect zone-pair Client-WebServer-Pair sessions
show platform packet-trace statistics
show platform packet-trace summary
show logging process cpp_cp internal start last boot
show platform hardware qfp active feature dns-snoop-agent client hw-pattern-list
show platform hardware qfp active feature dns-snoop-agent client info
show platform hardware qfp active feature dns-snoop-agent datapath stats
show ip dns-snoop all
show platform hardware qfp active feature dns-snoop-agent datapath ip-cache all
show platform software access-list F0 summary
show platform packet-trace packet all decode
show running-config
자주 묻는 질문(FAQ)
Q: 라우터에서 IP 캐시의 시간 초과 값은 어떻게 결정됩니까?
A: IP 캐시의 시간 초과 값은 DNS 서버에서 반환된 DNS 패킷의 TTL(Time-To-Live) 값에 따라 결정됩니다. 이 예에서는 120초입니다. IP 캐시가 시간 초과되면 라우터에서 자동으로 제거됩니다. 패킷 캡처의 세부 정보입니다.
DNS 확인의 패킷 세부사항
Q: DNS 서버가 A 레코드가 아닌 CNAME 레코드를 반환할 때 허용됩니까?
A: 네, 문제 없어요. CNAME 레코드가 DNS 서버에 의해 반환되면 DNS 확인 및 HTTP 통신이 문제 없이 진행됩니다. 패킷 캡처의 세부 정보입니다.
내부의 DNS 패킷
DNS 확인의 패킷 세부사항
내부의 HTTP 패킷
Q: C8300 라우터에서 수집한 패킷 캡처를 FTP 서버로 전송하는 명령은 무엇입니까?
A: monitor capture <capture name> export bootflash:<capture name>.pcap 및 copy bootflash:<capture name>.pcap ftp://<user>:<password>@<FTP IP Address> 명령을 사용하여 패킷 캡처를 FTP 서버로 전송합니다. CAPIN을 FTP 서버로 전송하는 예입니다.
monitor capture CAPIN export bootflash:CAPIN.pcap
copy bootflash:CAPIN.pcap ftp://<user>:<password>@<FTP IP Address>
참조
영역 기반 정책 방화벽 설계 이해