[c-nsp] Cisco IOS 15.2(4)M1 - ZBFW, NAT NVI, VRF = Broken TCP state?
JP Senior
SeniorJ at bennettjones.com
Wed Sep 12 22:59:47 EDT 2012
Hey, everyone.
I'm wondering if I'm hitting some obscure bug here or I've just flatly configured something incorrectly causing one-way tcp and udp sessions. L7 traffic inspection just is not working properly with this configuration. I'm using ZBFW, NAT NVI, and VRF for a 2921 running 15.2(4)M1 - the latest downloadable stable IOS.
With the configuration below, all return traffic from the "LAB" zone to the "Outside" zone is dropped by the OUTSIDE->SELF policy. This seems like session state is breaking somewhere. As soon as I remove the OUTSIDE->SELF policy, the return traffic works. The expected behavior is for ZBFW to punch a hole from the LAB->OUTSIDE network and permit all reply traffic regardless of the policy configured on OUTSIDE->SELF. Without the outside->self policy the router is exposed with basically a permit ip any any from the internet.
COPP is not a desired solution to get around this problem due to configuration complexity and supportability. Using access-lists on the inbound interface fail as well because ZBFW cannot punch holes through ACLS like CBAC can. Using another policy to permit tcp any eq 80 host 203.0.113.1 type access-lists could work but this is not the intent of using ZBFW in the first place.
All the return traffic is being dropped by zbfw.
[Snip from show log | i 4.2.2.3]
%FW-6-DROP_PKT: Dropping udp session 4.2.2.3:53 203.0.113.1:21423 on zone-pair OUTSIDE->SELF class class-default due to DROP action found in policy-map with ip ident 0
%FW-6-DROP_PKT: Dropping tcp session 4.2.2.3:80 203.0.113.1:19448 on zone-pair OUTSIDE->SELF class class-default due to DROP action found in policy-map with ip ident 0
[Snip from show policy-firewall session zone-pair LAB->OUTSIDE]
Session 313B30C0 (192.168.1.15:60133)=>(4.2.2.2:53) dns:udp SIS_OPENING
Created 00:00:00, Last heard 00:00:00
Bytes sent (initiator:responder) [55:0]
Session 313B61C0 (192.168.1.15:29502)=>4.2.2.3:80) http:tcp SIS_OPENING/TCP_SYNSENT
Created 00:00:00, Last heard 00:00:00
Bytes sent (initiator:responder) [0:0]
No sessions from show policy-firewall session zone-pair OUTSIDE->SELF - everything blank. An icmp ping or whatever else I explicitly permit (SIP for example) work fine if it would have been configured.
As soon as the zone-pair OUTSIDE->SELF is removed everything works as expected, tcp flows great, dns responses work as expected.
[Snip from show policy-firewall session zone-pair LAB->OUTSIDE after no zone-pair security OUTSIDE->SELF source OUTSIDE destination self is configured]
Session 313BD540 (192.168.1.15:62059)=>(4.2.2.3:53) dns:udp SIS_OPEN
Created 00:00:00, Last heard 00:00:00
Bytes sent (initiator:responder) [44:234]
Session 313B99C0 (92.168.1.15:34318)=>(4.2.2.3:80) http:tcp SIS_OPEN/TCP_ESTAB
Created 00:00:06, Last heard 00:00:03
Bytes sent (initiator:responder) [350:0]
A simplified, stripped-down configuration:
!Deny nat loopback issues
ip access-list extended LAB_NAT
deny ip 192.168.1.0 0.0.0.255 192.168.1.0 0.0.0.255
permit ip 192.168.1.0 0.0.0.255 any
!Define the VRF - this lab network should not be in the global routing table
ip vrf LAB
rd 100:1
zone security LAB
zone security OUTSIDE
interface GigabitEthernet0/0
ip nat enable
ip vrf forwarding LAB
ip address 192.168.1.1 255.255.255.0
zone-member security LAB
!
!RFC5735 - 203.0.113.0/24 TEST-NET-3 assists in clear documentation of what we consider 'inside' and 'outside' :)
interface GigabitEthernet0/1
ip nat enable
ip vrf forwarding LAB
ip address 203.0.113.1 255.255.255.0
zone-member security OUTSIDE
!Simple NAT within the VRF.
ip nat source list LAB_NAT interface GigabitEthernet0/1 vrf LAB overload
!Simple internet access - dns, http, icmp.
class-map type inspect LAB->OUTSIDE-PROTOCOLS
match protocol dns
match protocol http
match protocol icmp
!Only allow ping traffic sent to the router
class-map type inspect OUTSIDE->SELF-PROTOCOLS
match protocol icmp
policy-map type inspect LAB->OUTSIDE
class LAB->OUTSIDE-PROTOCOLS
inspect
class class-default
drop log
policy-map type inspect OUTSIDE->SELF
class type inspect OUTSIDE->SELF-PROTOCOLS
inspect
class class-default
drop log
zone-pair security LAB->OUTSIDE source LAB destination OUTSIDE
service-policy type inspect LAB->OUTSIDE
zone-pair security OUTSIDE->SELF source OUTSIDE destination self
service-policy type inspect OUTSIDE->SELF
Thanks for your time, everyone!
-JP Senior
CCIE #24838 (R&S)
The contents of this message may contain confidential and/or privileged
subject matter. If this message has been received in error, please contact
the sender and delete all copies. Like other forms of communication,
e-mail communications may be vulnerable to interception by unauthorized
parties. If you do not wish us to communicate with you by e-mail, please
notify us at your earliest convenience. In the absence of such
notification, your consent is assumed. Should you choose to allow us to
communicate by e-mail, we will not take any additional security measures
(such as encryption) unless specifically requested.
More information about the cisco-nsp
mailing list