Let’s continue our tests with the ZBPF. Now I’m going to implement L3
firewall (no transparent) and block EIGRP and OSPF packets sent and
received on the outside interface (gig0/0).
Let’s try if each router sees his neighbors:
Now I create class map to match OSPF and EIGRP packets, policy map with action ‘drop & log’:
and then security zones and zone-pairs:
The last step is to add interfaces to correct security zones:
Let’s test the applied policy:
So, now on R2 we can’t see any adjacency between R2 and R1. You have to remember to implement ‘self’ policy in both directions: outside->self, self->outside. You should remember following rules for self-zone:
Device(config)# parameter-map type inspect-global Device(config-profile)# log dropped-packets enable*
OUTSIDE L3 firewall INSIDE
[10.0.0.1] [10.0.0.3]
/----\ /----\ /----\
| R1 |------| R2 |-------| R3 |
\----/ / \----/ \ \----/
gig0/0 gig0/1
<-X->| <-->
eigrp, ospf
R1:
!
interface GigabitEthernet0/0
ip address 10.0.0.1 255.255.255.0
!
!
router eigrp 1
network 0.0.0.0
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
R2:
interface GigabitEthernet0/0
ip address 10.0.0.2 255.255.255.0
!
interface GigabitEthernet0/1
ip address 20.0.0.2 255.255.255.
!
router eigrp 1
network 0.0.0.0
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
R3:
!
interface FastEthernet0/0
ip address 20.0.0.3 255.255.255.0
!
!
router eigrp 1
network 0.0.0.0
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
Let’s try if each router sees his neighbors:
r1#sh ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 10.0.0.2 Gi0/0 14 00:03:38 1 200 0 16
r1#sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
20.0.0.2 1 FULL/DR 00:00:34 10.0.0.2 GigabitEthernet0/0
r1#
r2#sh ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 10.0.0.1 Gi0/0 13 00:04:07 1 200 0 45
1 20.0.0.3 Gi0/1 14 00:35:38 1 200 0 47
r2#sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
33.33.33.33 1 FULL/DR 00:00:35 20.0.0.3 GigabitEthernet0/1
10.0.0.1 1 FULL/BDR 00:00:30 10.0.0.1 GigabitEthernet0/0
r2#
r3#sh ip eigrp neighbors
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 20.0.0.2 Fa0/0 11 00:36:02 1 300 0 17
r3#sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
20.0.0.2 1 FULL/BDR 00:00:38 20.0.0.2 FastEthernet0/0
r3#
Now I create class map to match OSPF and EIGRP packets, policy map with action ‘drop & log’:
access-list 101 permit ospf any any
access-list 101 permit eigrp any any
!
class-map type inspect match-any ZBF-L2-SELF-CLASS1
match access-group 101
!
!
policy-map type inspect ZBF-L2-SELF-POLICY
class type inspect ZBF-L2-SELF-CLASS1
drop log
class class-default
drop log
!
and then security zones and zone-pairs:
zone security INSIDE
zone security OUTSIDE
zone-pair security OUT-SELF source OUTSIDE destination self
service-policy type inspect ZBF-L2-SELF-POLICY
zone-pair security SELF-OUT source self destination OUTSIDE
service-policy type inspect ZBF-L2-SELF-POLICY
!
The last step is to add interfaces to correct security zones:
!
interface GigabitEthernet0/0
zone-member security OUTSIDE
!
interface GigabitEthernet0/1
zone-member security INSIDE
!
Let’s test the applied policy:
r1#
*Apr 16 18:54:14.809: EIGRP-IPv4(1): Neighbor 20.0.0.2 not on common subnet for GigabitEthernet0/0
*Apr 16 18:54:15.749: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 10.0.0.2 (GigabitEthernet0/0) is down: holding time expired
*Apr 16 18:54:28.509: EIGRP-IPv4(1): Neighbor 20.0.0.3 not on common subnet for GigabitEthernet0/0
*Apr 16 18:54:33.265: %OSPF-5-ADJCHG: Process 1, Nbr 20.0.0.2 on GigabitEthernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired
r1#
r1#sh ip ospf neighbor
r1#sh ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
r1#
r2(config-if)#e
*Apr 16 18:21:10.879: %FW-6-DROP_PKT: Dropping Unknown-l4 session 10.0.0.2:0 224.0.0.5:0 on zone-pair SELF-OUT class ZBF-L2-SELF-CLASS1 due to DROP action found in policy-map with ip ident 0 nd
r2#
r2#
*Apr 16 18:21:12.843: %SYS-5-CONFIG_I: Configured from console by console
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 10.0.0.2:68 => 224.0.0.5:67 (target:class)-(SELF-OUT:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 2 packets were dropped from 0.0.0.0:68 => 255.255.255.255:67 (target:class)-(OUT-SELF:class-default)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 10.0.0.1:68 => 224.0.0.5:67 (target:class)-(OUT-SELF:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 10.0.0.1:68 => 224.0.0.10:67 (target:class)-(OUT-SELF:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 10.0.0.2:68 => 224.0.0.10:67 (target:class)-(SELF-OUT:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 20.0.0.3:0 => 224.0.0.10:0 (target:class)-(OUT-SELF:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 20.0.0.2:0 => 224.0.0.10:0 (target:class)-(OUT-SELF:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:15.575: %FW-6-LOG_SUMMARY: 1 packet were dropped from 20.0.0.3:0 => 224.0.0.5:0 (target:class)-(OUT-SELF:ZBF-L2-SELF-CLASS1)
*Apr 16 18:21:18.119: EIGRP-IPv4(1): Neighbor 10.0.0.1 not on common subnet for GigabitEthernet0/1
*Apr 16 18:21:23.315: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 10.0.0.1 (GigabitEthernet0/0) is down: holding time expired
r2#sh ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 20.0.0.3 Gi0/1 13 00:57:37 1 200 0 51
r2#sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
33.33.33.33 1 FULL/DR 00:00:32 20.0.0.3 GigabitEthernet0/1
r2#
r3#sh ip eigrp neighbors
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 20.0.0.2 Fa0/0 12 00:58:01 1 200 0 23
r3#sh ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
20.0.0.2 1 FULL/BDR 00:00:30 20.0.0.2 FastEthernet0/0
r3#
So, now on R2 we can’t see any adjacency between R2 and R1. You have to remember to implement ‘self’ policy in both directions: outside->self, self->outside. You should remember following rules for self-zone:
- By default the traffic is allowed (bidirectional to and from any neighbor)
- You can either ‘drop’ or ‘pass’ the traffic, ‘inspect’ action is not valid for self-zone
- Each direction on the interface is treated separately and if you apply policy for example: OUTSIDE->SELF, the traffic from SELF to OUTSIDE is allowed without any restriction until you add the first policy
- Be careful with routing protocols and if you plan to have the policy ‘in’ and ‘out’ on self-zone, you have to permit the routing protocol explicitly
- When you work with the self-zone policy you can find that on the GNS3 some protocols are allowed despite correct configuration. I found there is a difference in processing these packet on the GNS3 and on real devices.
Device(config)# parameter-map type inspect-global Device(config-profile)# log dropped-packets enable*
- non available on all versions of IOS
Comments
Post a Comment