CCNP Security: Security Contexts on the Cisco ASA
These days, to hear that you can create multiple virtual firewalls out of a single Cisco appliance is probably not that much of a surprise to most readers. And this is amazing when you consider it was not that long ago that I was stunned when I heard this news.
Multiple virtual firewalls are possible on the Cisco Adaptive Security Appliance (ASA) thanks to a technology called security contexts. You create multiple security contexts in order to create your multiple virtual firewalls. In this article, when we use the term “security context,” it is safe to think “virtual firewall.”
My readers always tend to immediately think about an Internet Service Provider (ISP) when they think about security contexts. Imagine this ISP with multiple customers and the provider being able to offer firewall services to each using a single ASA box. This is certainly very appealing. But we should realize that there are other powerful drivers for this technology. For example, partitioning your device into multiple security contexts allows you to take advantage of powerful failover options using multiple ASAs. Active/Active stateful failover is even possible where each box can provide a backup context for another box, yet still be actively forwarding traffic in the network using yet another context. Non-provider enterprises might want to take advantage of multiple security contexts simply for the beauty of having different virtual firewalls controlling unique areas of the network.
We need to realize the potential power here. Each security context is able to function as an independent device. Each can have its own interfaces, its own administrators, and most importantly, its own security policies. While not every feature of the Cisco ASA is supported in multiple context mode, most are, and certainly enough power is present now to make this appealing for many, many implementations.
Context Configurations
A security context maintains its configuration in what is appropriately named a context configuration file. This file can be stored in the internal or external Flash, or it can even be downloaded to the device. The startup configuration for the device is what is termed the system configuration when you have your ASA in the multiple context mode. This system configuration does not have interfaces in it (with the exception of a specialized failover interface) and it is used by the administrator of the box itself to manage the other security contexts. For example, an administrator would log in using the system configuration in order to change the location of a context configuration file for one of the security contexts defined on the system.
Now, notice I mentioned that the system configuration does not possess interface(s) like the other security contexts will. How does an administrator in the system configuration access the network then? The system configuration uses a special purpose context called the admin context in order to access the network. The admin context is just like other contexts that you would define, except that when it is being used, the administrator can control all other contexts. Since this admin context has such power over all of the security contexts on the ASA, it is a common practice to restrict access to this important component.
When you convert your ASA to multiple context mode, the admin context is created automatically. It is stored in the internal Flash memory with a name of admin.cfg. The logical name of the security context defaults to “admin.” Both of these names can be changed, as you might expect.
Classifying Packets for Security Contexts
An immediate question you might have when you consider this single box with multiple virtual firewalls inside is, “how does the ASA determine which packet goes to which context?” The answer to this question is as follows:
- For broadcast and multicast destined packets, the packets are duplicated and sent to each context.
- For management traffic destined for an interface, the interface IP address is used for classification.
- If the ingress interface is only associated with one security context, then it is simple for the ASA, the traffic automatically goes to that context. For the Transparent firewall feature, this is the method of classification, since in Transparent mode, each security context requires a unique interface.
- In the event that multiple contexts share an interface, then the interface MAC address controls classification. The ASA allows you to configure a unique MAC address for each context that is associated with the shared interface. These new interface MAC addresses can be manually created, or can even be generated for you by the ASA. If you have what Cisco terms a cascading security context, they encourage the use of unique MAC addresses for each context. Cascading security contexts are when you have a single interface functioning as the inside interface for one context, and as the outside interface for another context. This is sometimes done so that context parameters can be shared between the multiple security contexts.
- An alternative to the MAC address technique for classifying packets is through the use of Network Address Translation (NAT). Mapped addresses in the NAT configuration can coordinate to the specific security context. Cisco does not recommend this method as it adds another layer of complexity to the configuration.
Management Access
For the system administrator, accessing the ASA for management is accomplished through the console port, or through access to the admin context via Telnet, SSH, or the Adaptive Security Device Manager (ASDM) GUI.
For a non-system administrator (therefore an admin of a single context on the device), management access must be accomplished through Telnet, SSH, or the ASDM. Obviously, when the admin connects to their appropriate context, they can only manage that specific context.
Resource Management
A much needed, relatively new, addition to the virtual firewall concept on the ASA is the concept of resource management. Obviously, an administrator does not want one context (of many) to be able to completely saturate the resources on the box itself. The ASA now permits the assignment of resource classes (with defined limits) to particular contexts. There is much flexibility offered in this configuration as administrators can assign unlimited resource access, or apply percentage-based or absolute limits for various important resource categories.
Unsupported Features
If you are considering the deployment of multiple security contexts, you might be wondering what features are not supported. Currently this list of unsupported ASA features consists of the following:
- Dynamic routing protocols
- VPN
- Multicast routing
- Threat Detection
- IP Phone Proxy
- QoS
Basic Configuration
The basic configuration for multiple security contexts on the ASA is refreshingly simple. The Global Configuration command to convert your box to multiple mode is
mode multiple
You should note a couple of important points before running this command. First, the running configuration is used as the basis for the new mode, so you will most likely want to ensure it matches your startup configuration. Second, this configuration command requires an immediate reboot.
Once your system has rebooted, the creation of new contexts is also simple. From Global Configuration mode, here is an example configuration:
context SAMPLE_CONTEXT description This is a context for test customer A allocate-interface gigabitethernet0/1 interface1 config-url flash:/sample_context.cfg
Notice the critical commands used here of allocate-interface and config-url. Obviously, the first command is used to map interfaces to security contexts, while the second command is used to specify the location of the security context configuration file.
Managing the Security Context
Another immediate question at this point becomes, “how do I actually enter a context that I created in order to configure all of the security policies and things?” The answer lies in a very simple Global Configuration Mode command:
changeto context SAMPLE_CONTEXT
Issue the show running-config command now, and you will not see the running configuration on the ASA itself, but instead you will view the running-configuration for that specific context.
I certainly hope you have enjoyed this simple introduction to the security context concept, and you are certainly well-armed now to tackle more advanced aspects of virtual firewalls on the Cisco ASA.