DNS-based access control lists
A DNS-based access control list is a wireless network security feature that
-
allows administrators to permit or deny wireless client access to resources based on DNS domain names
-
dynamically learns allowed or denied IP addresses through DNS snooping on access points, and
-
enables pre-authentication and post-authentication URL filtering for enhanced client security.
DNS-based ACLs are used for wireless client devices. You can set pre-authentication ACLs on the Cisco Catalyst 9800 Series Wireless Controller to determine which data requests are allowed or blocked.
To enable DNS-based ACLs on the controller, configure the allowed or denied URLs for the ACLs. The URLs need to be pre-configured on the ACL.
During the registration phase, DNS-based ACLs allow the client to connect to the configured URLs. The controller is configured with the ACL name provided by the AAA server. If the AAA server returns the ACL name, the controller applies the ACL to the client for web redirection.
During client authentication, the AAA server returns the pre-authentication ACL (url-redirect-acl), which is the attribute name assigned to the ACL by the AAA server. The AP performs DNS snooping for each client until registration is complete and the client reaches the SUPPLICANT PROVISIONING state. When the controller receives the ACL configured with URLs, it sends a CAPWAP payload to the access point to enable DNS snooping for those URLs.
After URL snooping is enabled, the access point learns the IP address of the resolved domain name from the DNS response. If the domain name matches the configured URL, the access point parses the DNS response for the IP address and sends the IP address to the controller as a CAPWAP payload. The controller adds the IP address to the allowed list, which enables the client to access the configured URLs.
URL filtering allows access to the IP address for DNS ports 80 or 443.
During pre-authentication or post-authentication, the DNS ACL is applied to the client in the AP. If the client roams from one AP to another AP, tthe DNS-learned IP addresses from the previous access point remain valid on the new AP.
Note |
Standard URL filtering is used for local mode, whereas enhanced URL filtering is used for FlexConnect local switching. |
Note |
Attach the URL filter to a policy profile for local mode. In FlexConnect mode, attach the URL filter to the flex profile; attaching it to a policy profile is not required. Use the urlfilter enhanced-list command only with FlexConnect local switching mode. Do not configure enhanced-list in policy profiles for local mode or Flex central switching, as this may cause client connection issues. |
Note |
DNS-based URLs require an active DNS query from the client. For URL filtering to work, configure DNS settings correctly. |
Note |
The URL filter takes precedence over punt or redirect ACLs, as well as custom or static pre-authentication ACLs. |
Restrictions on DNS-based access control lists
Restrictions for DNS-based ACLs
-
In local modes, both Pre-authentication and Post-authentication filters are supported. In Flex (Fabric) mode, only the Pre-authentication filter is supported. ACL override pushed from ISE is not supported.
-
FlexConnect Local Switching with External Web authentication, using URL filtering, is not supported until Cisco IOS XE Gibraltar 16.12.x.
-
Fully qualified domain name (FQDN) ACLs and DNS-based ACLs are not supported on Cisco Wave 1 Access Points.
-
The URL filter considers only the first 20 URLs, though you can add more. It uses regular regex patterns and permits wildcard characters only at the beginning or at the end of an URL. URL ACLs are defined and added to the FlexConnect policy profile, which is then associated with a WLAN. URL ACL creation follows a mechanism similar to local mode URL ACLs.
-
In FlexConnect mode, the URL domain ACL works only when it is connected to a FlexConnect policy profile. The ACL can be attached to a WLAN by associating the policy profile with either the WLAN or local policies. However, you can override it using 'url-redirect-acl'. When the Cisco AV pair is received from ISE, the required policy for a client is pushed as part of the ADD MOBILE message.
-
When an AP joins or when an existing URL ACL is modified and applied to a FlexConnect profile, the ACL definition, along with the mapped URL filter list, is pushed to the AP. The AP stores the URL ACL definition with the mapped ACL name and snoops DNS packets to learn the first IP address for each URL in the ACL. When the AP learns the IP addresses, it updates the controller of the URL and IP bindings. The controller records this information in the client database for future use.
-
When a client roams to another AP during the pre-authentication state, the learned IP addresses are pushed to a new AP. Otherwise, these learned IP addresses are purged when a client enters the post-authentication state or when the TTL for the learned IP address expires.
-
The urlfilter enhanced-list command is intended only for use with FlexConnect local switching mode. Do not configure enhanced-list in policy profiles for local mode or FlexConnect central switching, as this may cause client connection issues.
Restrictions on Wildcard Support in URLs
-
The generic wildcard URL, such as *.* is not allowed.
-
Wildcards between the domain names, such as *a.cisco.com, a.cisco*.com, a.b.c.test*.apply.play are not allowed.
-
Multiple wildcards, such as test.*.cisco.*.com are not allowed in a URL.
-
The wildcard *.cisco.com is allowed in the URL.
-
The wildcard with a suffix such as wpr.cisco.* is a valid configuration.
-
A maximum of 16 wildcard-based URLs must be configured for a given ACL.
Define ACLs
Extended ACLs are similar to standard ACLs, but they identify traffic more precisely.
-
These commands allow you to define ACLs by name or by identification number. Device(config)#ip access-list extended ? <100-199> Extended IP access-list number <2000-2699> Extended IP access-list number (expanded range) WORD Access-list name -
This is the structure of a CLI ACL statement:
<sequence number> [permit/deny] <protocol> <address or any> eq <port number> <subnet> <wildcard> -
For example:
1 permit tcp any eq www 192.168.1.0 0.0.0.255
The sequence number specifies where to insert the Access Control List Entry (ACE) in the order of ACEs within the ACL. You can define your statements using sequence numbers such as 10, 20, 30, 40, and so on.
The controller GUI allows you to write a complete ACL by going to the Configuration > Security > ACL page. You can view a list of protocols to choose from and make changes to an existing ACL.
Methods for applying ACLs
Security ACL: A security ACL defines the types of traffic to allow through the device and the types to block or drop. A security ACL can be applied in various scenarios:
-
On SVI interfaces: The ACL is evaluated only against traffic routed through the interface. Device(config)# interface Vlan<number>Device(config-if)# ip access-group myACL in/out -
On a physical interface of the controller: The ACL is evaluated against all traffic passing through the interface. This method also restricts traffic on the controller management plane, along with SVI interface application. Device(config)#interface GigabitEthernet1Device(config-if)#ip access-group myACL in/out
In the wireless policy profile or WLAN. You can configure an ACL to apply to wireless client traffic in cases of central or local traffic switching. These ACLs are supported only in the inbound direction.
On the AP during FlexConnect local switching. The ACL is configured and applied from the policy profile on the controller. The ACL must be downloaded to the AP through the FlexConnect profile before it can be applied. Fabric mode APs in Software Defined Access also use Flex ACLs, even though these APs are not operating in FlexConnect mode.
A punt ACL or redirect ACL specifies which traffic is sent to the CPU for further processing instead of normal handling by the dataplane. For example, the Central Web Authentication (CWA) redirect ACL determines which traffic is intercepted and redirected to the web login portal. The ACL does not define traffic to drop or allow. It follows normal processing or forwarding rules and identifies what is sent to the CPU for interception.
A redirect ACL includes an implicit deny statement at the end. This security access list entry drops any traffic not explicitly allowed or sent to the CPU.
Configure ISE for central web authentication (GUI)
Perform these steps to configure ISE for Central Web Authentication using the GUI.
Procedure
|
Step 1 |
Login to the Cisco Identity Services Engine (ISE). Click Policy and then click Policy Elements. Click Results. |
||
|
Step 2 |
Expand Authorization and click Authorization Profiles. |
||
|
Step 3 |
Click Add to create a new authorization profile for URL filter. |
||
|
Step 4 |
Enter a name for the profile in the Name field. For example, CentralWebauth. |
||
|
Step 5 |
Select ACCESS_ACCEPT option from the Access Type drop-down list. Alternatively, in the Common Tasks section, check Web Redirection. |
||
|
Step 6 |
Select the Centralized Web Auth option from the drop-down list. Specify the ACL and select the ACL value from the drop-down list. |
||
|
Step 7 |
In the Advanced Attributes Setting section, select Cisco:cisco-av-pair from the drop-down list.
|
||
|
Step 8 |
Enter these one by one and click (+) icon after each of them:
|
||
|
Step 9 |
Verify contents in the Attributes Details section and click Save. |
View DNS-based access control lists
To view details of a specified wireless URL filter, use this command:
Device# show wireless urlfilter details <urllist_flex_preauth>
To view the summary of all wireless URL filters, use this command:
Device# show wireless urlfilter summary
To view the URL filter applied to the client in the resultant policy section, use this command:
Device# show wireless client mac-address <MAC_addr> detail
Configuration examples for DNS-based access control lists
FlexConnect Mode
Example: Defining URL Filter ListThis example shows how to define URL list in FlexConnect mode:
Device# configure terminal
Device(config)# urlfilter enhanced-list urllist_flex_pre
Device(config-urlfilter-params)# url www.dns.com preference 1 action permit
Device(config-urlfilter-params)# endExample: Applying URL Filter List to Flex ProfileThis example shows how to apply an URL list to the FlexConnect profile in FlexConnect mode:
Device# configure terminal
Device(config)# wireless profile flex default-flex-profile
Device(config-wireless-flex-profile)# acl-policy acl_name
Device(config-wireless-flex-profile-acl)# urlfilter list urllist_flex_preauth
Device(config-wireless-flex-profile-acl)# end
Local Mode
Example: Defining Preauth URL Filter ListThis example shows how to define URL filter list (pre-authentication):
Device# configure terminal
Device(config)# urlfilter list urllist_local_preauth
Device(config-urlfilter-params)# action permit
Device(config-urlfilter-params)# redirect-server-ipv4 9.1.0.101
Device(config-urlfilter-params)# redirect-server-ipv6 2001:300:8::82
Device(config-urlfilter-params)# url url1.dns.com
Device(config-urlfilter-params)# end
Example: Defining Postauth URL Filter ListThis example shows how to define URL filter list (post-authentication):
Device# configure terminal
Device(config)# urlfilter list urllist_local_postauth
Device(config-urlfilter-params)# action permit
Device(config-urlfilter-params)# filter-type post-authentication
Device(config-urlfilter-params)# redirect-server-ipv4 9.1.0.101
Device(config-urlfilter-params)# redirect-server-ipv6 2001:300:8::82
Device(config-urlfilter-params)# url url1.dns.com
Device(config-urlfilter-params)# end
Example: Applying URL Filter List to Policy ProfileThis example shows how to apply an URL list to the policy profile in local mode:
Device# configure terminal
Device(config)# wireless profile policy default-policy-profile
Device(config-wireless-policy)# urlfilter list pre-auth-filter urllist_local_preauth
Device(config-wireless-policy)# urlfilter list post-auth-filter urllist_local_postauth
Device(config-wireless-policy)# end
Verify DNS snoop agent (DSA)
To view details of the DNS snooping agent client, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client
To view details of the DSA enabled interface, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client enabled-intf
To view the pattern list in uCode memory, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client hw-pattern-list
To view the OpenDNS string for the pattern list, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client hw-pattern-list odns_string
To view the FQDN filter for the pattern list, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client hw-pattern-list fqdn-filter <fqdn_filter_ID>
Note |
The valid range of fqdn_filter_ID is from 1 to 16. |
To view details of the DSA client, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client info
To view the pattern list in CPP client, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client pattern-list
To view the OpenDNS string for the pattern list, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client pattern-list odns_string
To view the FQDN filter for the pattern list, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent client pattern-list fqdn-filter <fqdn_filter_ID>
Note |
The valid range of fqdn_filter_ID is from 1 to 16. |
To view details of the DSA datapath, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath
To view details of the DSA IP cache table, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath ip-cache
To view details of the DSA address entry, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath ip-cache address {ipv4 <IPv4_addr> | ipv6 <IPv6_addr>}
To view details of all the DSA IP cache address, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath ip-cache all
To view details of the DSA IP cache pattern, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath ip-cache pattern <pattern>
To view details of the DSA datapath memory, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath memory
To view the DSA regular expression table, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath regexp-table
To view the DSA statistics, use this command:
Device# show platform hardware chassis active qfp feature dns-snoop-agent datapath stats
Feedback