A design mistake I have seen on more then one occasion is where a firewall is used for default gateways on data centre subnets instead of a
layer 3 switch "just because it's there" and there is no other layer 3 functionality available for whatever reason (procedural or technical).
This causes a major
administrative headaches to the network team, as every time a new subnet
(and in some cases a new host!) is added the firewall, the security policy needs to be amended and this can be majorly complex if the traffic flows are large between several different subnets.
A
specific issue with this is where application servers are located
within different subnets with the default gateways on the firewall and
they need to join one or more Active Directory Domains. Another example could be where a telephony system needs to integrate with a contact center, voicemail, MS Exchange server etc.
This type of design causes the following issues:
- The amount of time it takes to prepare change templates to be approved by change management is excessive.
- This can result in the engineering team working silly hours to enable basic connectivity between servers, which demotivates staff and time could be used in more constructive ways to develop the network!
- When managing a firewall through a GUI it doesn't tell the full
story in regard to how many ACLs are being generated by a rule being
implemented.
- One rule in the GUI can result in hundreds of ACLs in the CLI i.e. Permit multiple hosts to multiple hosts to multiple TCP / UDP protocols
- Firewalls run in multi-context mode for a shared service for example split resources across the different contexts and if one customer's rule set is huge it could potentially exhaust the resources for other customers and I've seen this happen where there was no space for any more rules on a shared service!
- This actually raises the design question around how do you size that type of service and what network management tools should be included into the design to monitor the utilisation.
So what is the solution for this type of scenario where every subnet uses the firewall for L3 gateways?
Well in true network architecture style I guess the answer to that is "it depends" on the customer and the requirements.
It may be that some servers need to be segregated into different security zones for PCI compliance or some other regulatory compliance, but typically I find that servers can normally be grouped into a number of common groups where it is not an issue if they are able to communicate with each other within their own group, but should not be able to communicate with servers in another group.
The solution I've typically used is below
- Group the app servers into common groups which allows them to communicate with each other
- Create an interface on the firewall per group which has a routed link (physical or logical) to a VRF aware data centre switch.
- The VRF aware data centre switch is configured with a routed interface to the firewall on a /29 or /30 depending if any inline appliances or HSRP etc is required.
- Each group has a VRF is defined on the DC switch with the routed link being enabled for the appropriate group's VRF
- The gateways that were previously hosted on the firewall are removed and added onto the DC switch using the same IP address and subnet mask.
- This ensures the servers do not need to have their IP addresses changed!
In my experience the above approach takes the number of firewall interfaces down significantly and reduces / simplifies the rule base.
If the design was for a hosting environment with multiple customers hosted on the samephysical environment and overlapping IP addresses were present on the different customer networks, this could be addressed by implementing a firewall that could be virtualised like the ASA to run multiple contexts or Fortinet's can run VDOMs which are the equivalent to contexts.
Malcolm