Understanding Policy Enforcement of Permissions and Attributes
The ASA supports several methods of applying user authorization attributes (also called user entitlements or permissions) to VPN connections. You can configure the ASA to obtain user attributes from a Dynamic Access Policy (DAP) on the ASA, from an external authentication and/or authorization AAA server (RADIUS or LDAP), from a group policy on the ASA, or from all three.
If the ASA receives attributes from all sources, the attributes are evaluated, merged, and applied to the user policy. If there are conflicts between attributes coming from the DAP, the AAA server, or the group policy, those attributes obtained from the DAP always take precedence.
The ASA applies attributes in the following order (see Figure C-1).
1. DAP attributes on the ASA—Introduced in Version 8.0(2), these attributes take precedence over all others. If you set a bookmark or URL list in DAP, it overrides a bookmark or URL list set in the group policy.
2. User attributes on the AAA server—The server returns these attributes after successful user authentication and/or authorization. Do not confuse these with attributes that are set for individual users in the local AAA database on the ASA (User Accounts in ASDM).
3. Group policy configured on the ASA—If a RADIUS server returns the value of the RADIUS CLASS attribute IETF-Class-25 (OU= group-policy) for the user, the ASA places the user in the group policy of the same name and enforces any attributes in the group policy that are not returned by the server.
For LDAP servers, any attribute name can be used to set the group policy for the session. The LDAP attribute map that you configure on the ASA maps the LDAP attribute to the Cisco attribute IETF-Radius-Class.
4. Group policy assigned by the Connection Profile (called tunnel-group in the CLI)—The Connection Profile has the preliminary settings for the connection, and includes a default group policy applied to the user before authentication. All users connecting to the ASA initially belong to this group, which provides any attributes that are missing from the DAP, user attributes returned by the server, or the group policy assigned to the user.
5. Default group policy assigned by the ASA (DfltGrpPolicy)—System default attributes provide any values that are missing from the DAP, user attributes, group policy, or connection profile.
Figure C-1 Policy Enforcement Flow
Configuring an External LDAP Server
The VPN 3000 concentrator and the ASA/PIX 7.0 software required a Cisco LDAP schema for authorization operations. Beginning with Version 7.1.x, the ASA performs authentication and authorization using the native LDAP schema, and the Cisco schema is no longer needed.
You configure authorization (permission policy) using an LDAP attribute map. For examples, see the “Active Directory/LDAP VPN Remote Access Authorization Examples” section.
This section describes the structure, schema, and attributes of an LDAP server and includes the following topics:
The specific steps of these processes vary, depending on which type of LDAP server that you are using.
Note For more information about the LDAP protocol, see RFCs 1777, 2251, and 2849.
Organizing the ASA for LDAP Operations
This section describes how to search within the LDAP hierarchy and perform authenticated binding to the LDAP server on the ASA and includes the following topics:
Your LDAP configuration should reflect the logical hierarchy of your organization. For example, suppose an employee at your company, Example Corporation, is named Employee1. Employee1 works in the Engineering group. Your LDAP hierarchy could have one or many levels. You might decide to set up a single-level hierarchy in which Employee1 is considered a member of Example Corporation. Or you could set up a multi-level hierarchy in which Employee1 is considered to be a member of the department Engineering, which is a member of an organizational unit called People, which is itself a member of Example Corporation. See Figure C-2 for an example of a multi-level hierarchy.
A multi-level hierarchy has more detail, but searches return results more quickly in a single-level hierarchy.
Figure C-2 A Multi-Level LDAP Hierarchy
Searching the LDAP Hierarchy
The ASA lets you tailor the search within the LDAP hierarchy. You configure the following three fields on the ASA to define where in the LDAP hierarchy that your search begins, the extent, and the type of information it is looking for. Together these fields allow you to limit the search of the hierarchy to only the part that includes the user permissions.
- LDAP Base DN defines where in the LDAP hierarchy that the server should begin searching for user information when it receives an authorization request from the ASA.
- Search Scope defines the extent of the search in the LDAP hierarchy. The search proceeds this many levels in the hierarchy below the LDAP Base DN. You can choose to have the server search only the level immediately below it, or it can search the entire subtree. A single level search is quicker, but a subtree search is more extensive.
- Naming Attribute(s) defines the RDN that uniquely identifies an entry in the LDAP server. Common naming attributes can include cn (Common Name), sAMAccountName, and userPrincipalName.
Figure C-2 shows a sample LDAP hierarchy for Example Corporation. Given this hierarchy, you could define your search in different ways. Table C-1 shows two sample search configurations.
In the first example configuration, when Employee1 establishes the IPsec tunnel with LDAP authorization required, the ASA sends a search request to the LDAP server, indicating it should search for Employee1 in the Engineering group. This search is quick.
In the second example configuration, the ASA sends a search request indicating that the server should search for Employee1 within Example Corporation. This search takes longer.
Table C-1 Example Search Configurations
|
|
|
|
|
1 |
group= Engineering,ou=People,dc=ExampleCorporation, dc=com |
One Level |
cn=Employee1 |
Quicker search |
2 |
dc=ExampleCorporation,dc=com |
Subtree |
cn=Employee1 |
Longer search |
Binding the ASA to the LDAP Server
Some LDAP servers (including the Microsoft Active Directory server) require the ASA to establish a handshake via authenticated binding before they accept requests for any other LDAP operations. The ASA uses the Login Distinguished Name (DN) and Login Password to establish a trust relationship (bind) with an LDAP server before a user can search. The Login DN represents a user record in the LDAP server that the administrator uses for binding.
When binding, the ASA authenticates to the server using the Login DN and the Login Password. When performing a Microsoft Active Directory read-only operation (such as for authentication, authorization, or group search), the ASA can bind with a Login DN with fewer privileges. For example, the Login DN can be a user whose AD “Member Of” designation is part of Domain Users. For VPN password management write operations, the Login DN needs elevated privileges and must be part of the Account Operators AD group. Microsoft Active Directory group search (also called “MemberOf retrieval”) was added in ASA Version 8.0.4.
An example of a Login DN includes the following entries:
cn=Binduser1,ou=Admins,ou=Users,dc=company_A,dc=com
See your LDAP Administrator guide for specific Login DN requirements for read and write operations.
The ASA supports the following features:
- Simple LDAP authentication with an unencrypted password using the default port 389. You can also use other ports instead of the default port.
- Secure LDAP (LDAP-S) using the default port 636. You can also use other ports instead of the default port.
- Simple Authentication and Security Layer (SASL) MD5
- SASL Kerberos
The ASA does not support anonymous authentication.
Note As an LDAP client, the ASA does not support the transmission of anonymous binds or requests.
Defining the ASA LDAP Configuration
This section describes how to define the LDAP AV-pair attribute syntax and includes the following topics:
Note The ASA enforces the LDAP attributes based on attribute name, not numeric ID. RADIUS attributes, on the other hand, are enforced by numeric ID, not by name.
Authorization refers to the process of enforcing permissions or attributes. An LDAP server defined as an authentication or authorization server enforces permissions or attributes if they are configured.
For software Version 7.0, LDAP attributes include the cVPN3000 prefix. For software Versions 7.1 and later, this prefix was removed.
Supported Cisco Attributes for LDAP Authorization
This section provides a complete list of attributes (see Table C-2 ) for the ASA 5500, VPN 3000 concentrator, and PIX 500 series ASAs. The table includes attribute support information for the VPN 3000 concentrator and PIX 500 series ASAs to assist you in configuring networks with a combination of these devices.
Table C-2 ASA Supported Cisco Attributes for LDAP Authorization
|
|
|
|
|
|
|
Access-Hours |
Y |
Y |
Y |
String |
Single |
Name of the time-range (for example, Business-Hours) |
Allow-Network-Extension- Mode |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
Authenticated-User-Idle- Timeout |
Y |
Y |
Y |
Integer |
Single |
1 - 35791394 minutes |
Authorization-Required |
Y |
|
|
Integer |
Single |
0 = No 1 = Yes |
Authorization-Type |
Y |
|
|
Integer |
Single |
0 = None 1 = RADIUS 2 = LDAP |
Banner1 |
Y |
Y |
Y |
String |
Single |
Banner string for clientless and client SSL VPN, and IPsec clients. |
Banner2 |
Y |
Y |
Y |
String |
Single |
Banner string for clientless and client SSL VPN, and IPsec clients. |
Cisco-AV-Pair |
Y |
Y |
Y |
String |
Multi |
An octet string in the following format: [Prefix] [Action] [Protocol] [Source] [Source Wildcard Mask] [Destination] [Destination Wildcard Mask] [Established] [Log] [Operator] [Port] For more information, see the “Cisco AV Pair Attribute Syntax” section.” |
Cisco-IP-Phone-Bypass |
Y |
Y |
Y |
Integer |
Single |
0 = Disabled 1 = Enabled |
Cisco-LEAP-Bypass |
Y |
Y |
Y |
Integer |
Single |
0 = Disabled 1 = Enabled |
Client-Intercept-DHCP- Configure-Msg |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
Client-Type-Version-Limiting |
Y |
Y |
Y |
String |
Single |
IPsec VPN client version number string |
Confidence-Interval |
Y |
Y |
Y |
Integer |
Single |
10 - 300 seconds |
DHCP-Network-Scope |
Y |
Y |
Y |
String |
Single |
IP address |
DN-Field |
Y |
Y |
Y |
String |
Single |
Possible values: UID, OU, O, CN, L, SP, C, EA, T, N, GN, SN, I, GENQ, DNQ, SER, and use-entire-name. |
Firewall-ACL-In |
|
Y |
Y |
String |
Single |
Access list ID |
Firewall-ACL-Out |
|
Y |
Y |
String |
Single |
Access list ID |
Group-Policy |
|
Y |
Y |
String |
Single |
Sets the group policy for the remote access VPN session. For version 8.2 and later, use this attribute instead of IETF-Radius-Class. You can use one of the three following formats:
- group policy name
- OU= group policy name
- OU= group policy name :
|
IE-Proxy-Bypass-Local |
|
|
|
Boolean |
Single |
0=Disabled 1=Enabled |
IE-Proxy-Exception-List |
|
|
|
String |
Single |
A list of DNS domains. Entries must be separated by the new line character sequence (\n). |
IE-Proxy-Method |
Y |
Y |
Y |
Integer |
Single |
1 = Do not modify proxy settings 2 = Do not use proxy 3 = Auto detect 4 = Use ASA setting |
IE-Proxy-Server |
Y |
Y |
Y |
Integer |
Single |
IP address |
IETF-Radius-Class |
Y |
Y |
Y |
|
Single |
Sets the group policy for the remote access VPN session. For versions 8.2 and later, we recommend that you use the Group-Policy attribute. You can use one of the three following formats:
- group policy name
- OU= group policy name
- OU= group policy name :
|
IETF-Radius-Filter-Id |
Y |
Y |
Y |
String |
Single |
Access list name that is defined on the ASA. The setting applies to VPN remote access IPsec and SSL VPN clients. |
IETF-Radius-Framed-IP-Address |
Y |
Y |
Y |
String |
Single |
An IP address. The setting applies to VPN remote access IPsec and SSL VPN clients. |
IETF-Radius-Framed-IP-Netmask |
Y |
Y |
Y |
String |
Single |
An IP address mask. The setting applies to VPN remote access IPsec and SSL VPN clients. |
IETF-Radius-Idle-Timeout |
Y |
Y |
Y |
Integer |
Single |
Seconds |
IETF-Radius-Service-Type |
Y |
Y |
Y |
Integer |
Single |
1 = Login 2 = Framed 5 = Remote access 6 = Administrative 7 = NAS prompt |
IETF-Radius-Session-Timeout |
Y |
Y |
Y |
Integer |
Single |
Seconds |
IKE-Keep-Alives |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
IPsec-Allow-Passwd-Store |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
IPsec-Authentication |
Y |
|
|
|
|
0 = None
1 = RADIUS
2 = LDAP (authorization only)
3 = NT Domain
4 = SDI (RSA)
5 = Internal
6 = RADIUS with Expiry
7 = Kerberos or Active Directory
|
IPsec-Auth-On-Rekey |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
IPsec-Backup-Server-List |
Y |
Y |
Y |
String |
Single |
Server addresses (space delimited) |
IPsec-Backup-Servers |
Y |
Y |
Y |
String |
Single |
1 = Use client-configured list 2 = Disabled and clear client list 3 = Use backup server list |
IPsec-Client-Firewall-Filter- Name |
Y |
|
|
String |
Single |
Specifies the name of the filter to be pushed to the client as firewall policy. |
IPsec-Client-Firewall-Filter- Optional |
Y |
Y |
Y |
Integer |
Single |
0 = Required 1 = Optional |
IPsec-Default-Domain |
Y |
Y |
Y |
String |
Single |
Specifies the single default domain name to send to the client (1 - 255 characters). |
IPsec-Extended-Auth-On-Rekey |
|
Y |
Y |
String |
Single |
String |
IPsec-IKE-Peer-ID-Check |
Y |
Y |
Y |
Integer |
Single |
1 = Required 2 = If supported by peer certificate 3 = Do not check |
IPsec-IP-Compression |
Y |
Y |
Y |
Integer |
Single |
0 = Disabled 1 = Enabled |
IPsec-Mode-Config |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
IPsec-Over-UDP |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
IPsec-Over-UDP-Port |
Y |
Y |
Y |
Integer |
Single |
4001 - 49151; The default is 10000. |
IPsec-Required-Client-Firewall- Capability |
Y |
Y |
Y |
Integer |
Single |
0 = None 1 = Policy defined by remote FW Are-You-There (AYT) 2 = Policy pushed CPP 4 = Policy from server |
IPsec-Sec-Association |
Y |
|
|
|
|
Name of the security association
|
IPsec-Split-DNS-Names |
Y |
Y |
Y |
String |
Single |
Specifies the list of secondary domain names to send to the client (1 - 255 characters). |
IPsec-Split-Tunneling-Policy |
Y |
Y |
Y |
Integer |
Single |
0 = Tunnel everything 1 = Split tunneling 2 = Local LAN permitted |
IPsec-Split-Tunnel-List |
Y |
Y |
Y |
String |
Single |
Specifies the name of the network or access list that describes the split tunnel inclusion list. |
IPsec-Tunnel-Type |
Y |
Y |
Y |
Integer |
Single |
1 = LAN-to-LAN 2 = Remote access |
L2TP-Encryption |
Y |
|
|
Integer |
Single |
Bitmap: 1 = Encryption required 2 = 40 bit 4 = 128 bits 8 = Stateless-Req 15 = 40/128-Encr/Stateless-Req |
L2TP-MPPC-Compression |
Y |
|
|
Integer |
Single |
0 = Disabled 1 = Enabled |
MS-Client-Subnet-Mask |
Y |
Y |
Y |
String |
Single |
An IP address |
PFS-Required |
Y |
Y |
Y |
Boolean |
Single |
0 = No 1 = Yes |
Port-Forwarding-Name |
Y |
Y |
|
String |
Single |
Name string (for example, “Corporate-Apps”) |
PPTP-Encryption |
Y |
|
|
Integer |
Single |
Bitmap: 1 = Encryption required 2 = 40 bits 4 = 128 bits 8 = Stateless-Required Example: 15 = 40/128-Encr/Stateless-Req |
PPTP-MPPC-Compression |
Y |
|
|
Integer |
Single |
0 = Disabled 1 = Enabled |
Primary-DNS |
|
|
|
|
|
|
Primary-WINS |
|
|
|
|
|
|
Privilege-Level |
|
|
|
Integer |
Single |
For usernames, 0 - 15 |
Required-Client- Firewall-Vendor-Code |
Y |
Y |
Y |
Integer |
Single |
1 = Cisco Systems (with Cisco Integrated Client) 2 = Zone Labs 3 = NetworkICE 4 = Sygate 5 = Cisco Systems (with Cisco Intrusion Prevention Security Agent) |
Required-Client-Firewall- Description |
Y |
Y |
Y |
String |
Single |
— |
Required-Client-Firewall- Product-Code |
Y |
Y |
Y |
Integer |
Single |
Cisco Systems Products: 1 = Cisco Intrusion Prevention Security Agent or Cisco Integrated Client (CIC) Zone Labs Products: 1 = Zone Alarm 2 = Zone AlarmPro 3 = Zone Labs Integrity NetworkICE Product: 1 = BlackIce Defender/Agent Sygate Products: 1 = Personal Firewall 2 = Personal Firewall Pro 3 = Security Agent |
Require-HW-Client-Auth |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
Require-Individual-User-Auth |
Y |
Y |
Y |
Integer |
Single |
0 = Disabled 1 = Enabled |
Secondary-DNS |
|
|
|
|
|
|
Secondary-WINS |
|
|
|
|
|
|
SEP-Card-Assignment |
|
|
|
|
|
|
Simultaneous-Logins |
|
|
|
|
|
|
Strip-Realm |
Y |
Y |
Y |
Boolean |
Single |
0 = Disabled 1 = Enabled |
TACACS-Authtype |
Y |
Y |
Y |
Interger |
Single |
— |
TACACS-Privilege-Level |
Y |
Y |
Y |
Interger |
Single |
— |
Tunnel-Group-Lock |
|
Y |
Y |
String |
Single |
Name of the tunnel group or “none” |
Tunneling-Protocols |
Y |
Y |
Y |
|
|
1 = PPTP 2 = L2TP 4 = IPSec (IKEv1) 8 = L2TP/IPSec 16 = WebVPN 32 = SVC 64 = IPsec (IKEv2) 8 and 4 are mutually exclusive (0 - 11, 16 - 27, 32 - 43, 48 - 59 are legal values). |
Use-Client-Address |
Y |
|
|
Boolean |
Single |
0 = Disabled 1 = Enabled |
User-Auth-Server-Name |
Y |
|
|
String |
Single |
IP address or hostname |
User-Auth-Server-Port |
Y |
|
|
Integer |
Single |
Port number for server protocol |
User-Auth-Server-Secret |
Y |
|
|
String |
Single |
Server password |
WebVPN-ACL-Filters |
|
Y |
|
String |
Single |
Webtype access list name |
WebVPN-Apply-ACL-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled With Version 8.0 and later, this attribute is not required. |
WebVPN-Citrix-Support-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled With Versions 8.0 and later, this attribute is not required. |
WebVPN-Enable-functions |
|
|
|
Integer |
Single |
Not used - deprecated |
WebVPN-Exchange-Server- Address |
|
|
|
String |
Single |
Not used - deprecated |
WebVPN-Exchange-Server- NETBIOS-Name |
|
|
|
String |
Single |
Not used - deprecated |
WebVPN-File-Access-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-File-Server-Browsing- Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-File-Server-Entry- Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-Forwarded-Ports |
|
Y |
|
String |
Single |
Port-forward list name |
WebVPN-Homepage |
Y |
Y |
|
String |
Single |
A URL such as http://www.example.com |
WebVPN-Macro-Substitution- Value1 |
Y |
Y |
|
String |
Single |
See the SSL VPN Deployment Guide for examples at the following URL: http://supportwiki.cisco.com/ViewWiki/index.php/Cisco_ASA_5500_SSL_VPN_Deployment_Guide%2C_Version_8.x |
WebVPN-Macro-Substitution- Value2 |
Y |
Y |
|
String |
Single |
See the SSL VPN Deployment Guide for examples at the following URL: http://supportwiki.cisco.com/ViewWiki/index.php/Cisco_ASA_5500_SSL_VPN_Deployment_Guide%2C_Version_8.x |
WebVPN-Port-Forwarding- Auto-Download-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-Port-Forwarding- Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-Port-Forwarding- Exchange-Proxy-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-Port-Forwarding- HTTP-Proxy-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-Single-Sign-On- Server-Name |
|
Y |
|
String |
Single |
Name of the SSO Server (1 - 31 characters). |
WebVPN-SVC-Client-DPD |
Y |
Y |
|
Integer |
Single |
0 = Disabled n = Dead peer detection value in seconds (30 - 3600) |
WebVPN-SVC-Compression |
Y |
Y |
|
Integer |
Single |
0 = None 1 = Deflate compression |
WebVPN-SVC-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-SVC-Gateway-DPD |
Y |
Y |
|
Integer |
Single |
0 = Disabled n = Dead peer detection value in seconds (30 - 3600) |
WebVPN-SVC-Keepalive |
Y |
Y |
|
Integer |
Single |
0 = Disabled n = Keepalive value in seconds (15 - 600) |
WebVPN-SVC-Keep-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-SVC-Rekey-Method |
Y |
Y |
|
Integer |
Single |
0 = None 1 = SSL 2 = New tunnel 3 = Any (sets to SSL) |
WebVPN-SVC-Rekey-Period |
Y |
Y |
|
Integer |
Single |
0 = Disabled n = Retry period in minutes (4 - 10080) |
WebVPN-SVC-Required-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-URL-Entry-Enable |
Y |
Y |
|
Integer |
Single |
0 = Disabled 1 = Enabled |
WebVPN-URL-List |
|
Y |
|
String |
Single |
URL list name |
Cisco AV Pair Attribute Syntax
The Cisco Attribute Value (AV) pair (ID Number 26/9/1) can be used to enforce access lists from a RADIUS server (like Cisco ACS), or from an LDAP server via an LDAP attribute map.
The syntax of each Cisco-AV-Pair rule is as follows:
[Prefix] [Action] [Protocol] [Source] [Source Wildcard Mask] [Destination] [Destination Wildcard Mask] [Established] [Log] [Operator] [Port]
Table C-3 describes the syntax rules.
Table C-3 AV-Pair Attribute Syntax Rules
|
|
Action |
Action to perform if the rule matches a deny or a permit. |
Destination |
Network or host that receives the packet. Specify it as an IP address, a hostname, or the any keyword. If using an IP address, the source wildcard mask must follow. |
Destination Wildcard Mask |
The wildcard mask that applies to the destination address. |
Log |
Generates a FILTER log message. You must use this keyword to generate events of severity level 9. |
Operator |
Logic operators: greater than, less than, equal to, not equal to. |
Port |
The number of a TCP or UDP port in the range of 0 - 65535. |
Prefix |
A unique identifier for the AV pair (for example: ip:inacl#1= for standard access lists or webvpn:inacl# = for clientless SSL VPN access lists). This field only appears when the filter has been sent as an AV pair. |
Protocol |
Number or name of an IP protocol. Either an integer in the range of 0 - 255 or one of the following keywords: icmp, igmp, ip, tcp, udp. |
Source |
Network or host that sends the packet. Specify it as an IP address, a hostname, or the any keyword. If using an IP address, the source wildcard mask must follow. This field does not apply to Clientless SSL VPN because the ASA has the role of the source or proxy. |
Source Wildcard Mask |
The wildcard mask that applies to the source address. This field does not apply to Clientless SSL VPN because the ASA has the role of the source or proxy. |
Cisco AV Pairs ACL Examples
Table C-4 shows examples of Cisco AV pairs and describes the permit or deny actions that result.
Note Each ACL # in inacl# must be unique. However, they do not need to be sequential (for example, 1, 2, 3, 4). That is, they could be 5, 45, 135.
Table C-4 Examples of Cisco AV Pairs and Their Permitting or Denying Action
|
Permitting or Denying Action
|
ip:inacl#1=deny ip 10.155.10.0 0.0.0.255 10.159.2.0 0.0.0.255 log
|
Allows IP traffic between the two hosts using a full tunnel IPsec or SSL VPN client. |
ip:inacl#2=permit TCP any host 10.160.0.1 eq 80 log
|
Allows TCP traffic from all hosts to the specific host on port 80 only using a full tunnel IPsec or SSL VPN client. |
webvpn:inacl#1=permit url http://www.example.com
webvpn:inacl#2=deny url smtp://server
webvpn:inacl#3=permit url cifs://server/share
|
Allows clientlessSSL VPN traffic to the URL specified, denies SMTP traffic to a specific server, and allows file share access (CIFS) to the specified server. |
webvpn:inacl#1=permit tcp 10.86.1.2 eq 2222 log
webvpn:inacl#2=deny tcp 10.86.1.2 eq 2323 log
|
Denies Telnet access and permits SSH access on non-default ports 2323 and 2222, respectively, or other application traffic flows using these ports for clientless SSL VPN. |
webvpn:inacl#1=permit url ssh://10.86.1.2
webvpn:inacl#35=permit tcp 10.86.1.5 eq 22 log
webvpn:inacl#48=deny url telnet://10.86.1.2
webvpn:inacl#100=deny tcp 10.86.1.6 eq 23
|
Allows clientless SSL VPN SSH access to default port 22 and denies Telnet access to port 23, respectively. This example assumes that you are using Telnet or SSH Java plug-ins enforced by these ACLs. |
URL Types Supported in ACLs
The URL may be a partial URL, contain wildcards for the server, or include a port.
The following URL types are supported.
any All URLs |
https:// |
post:// |
ssh:// |
cifs:// |
ica:// |
rdp:// |
telnet:// |
citrix:// |
imap4:// |
rdp2:// |
vnc:// |
citrixs:// |
ftp:// |
smart-tunnel:// |
|
http:// |
pop3:// |
smtp:// |
|
Note The URLs listed in this table appear in CLI or ASDM menus based on whether or not the associated plug-in is enabled.
Guidelines for Using Cisco-AV Pairs (ACLs)
- Use Cisco-AV pair entries with the ip:inacl# prefix to enforce access lists for remote IPsec and SSL VPN Client (SVC) tunnels.
- Use Cisco-AV pair entries with the webvpn:inacl# prefix to enforce access lists for SSL VPN clientless (browser-mode) tunnels.
- For webtype ACLs, you do not specify the source because the ASA is the source.
Table C-5 lists the tokens for the Cisco-AV-pair attribute:
Table C-5 ASA-Supported Tokens
|
|
|
ip:inacl# Num = |
N/A (Identifier) |
(Where Num is a unique integer.) Starts all AV pair access control lists. Enforces access lists for remote IPsec and SSL VPN (SVC) tunnels. |
webvpn:inacl# Num = |
N/A (Identifier) |
(Where Num is a unique integer.) Starts all clientless SSL AV pair access control lists. Enforces access lists for clientless (browser-mode) tunnels. |
deny |
Action |
Denies action. (Default) |
permit |
Action |
Allows action. |
icmp |
Protocol |
Internet Control Message Protocol (ICMP) |
1 |
Protocol |
Internet Control Message Protocol (ICMP) |
IP |
Protocol |
Internet Protocol (IP) |
0 |
Protocol |
Internet Protocol (IP) |
TCP |
Protocol |
Transmission Control Protocol (TCP) |
6 |
Protocol |
Transmission Control Protocol (TCP) |
UDP |
Protocol |
User Datagram Protocol (UDP) |
17 |
Protocol |
User Datagram Protocol (UDP) |
any |
Hostname |
Rule applies to any host. |
host |
Hostname |
Any alpha-numeric string that denotes a hostname. |
log |
Log |
When the event occurs, a filter log message appears. (Same as permit and log or deny and log.) |
lt |
Operator |
Less than value |
gt |
Operator |
Greater than value |
eq |
Operator |
Equal to value |
neq |
Operator |
Not equal to value |
range |
Operator |
Inclusive range. Should be followed by two values. |
Active Directory/LDAP VPN Remote Access Authorization Examples
This section presents example procedures for configuring authentication and authorization on the ASA using the Microsoft Active Directory server. It includes the following topics:
Other configuration examples available on Cisco.com include the following TechNotes.
- ASA/PIX: Mapping VPN Clients to VPN Group Policies Through LDAP Configuration Example at the following URL:
http://www.cisco.com/en/US/products/ps6120/products_configuration_example09186a008089149d.shtml
- PIX/ASA 8.0: Use LDAP Authentication to Assign a Group Policy at Login at the following URL:
http://www.cisco.com/en/US/partner/products/ps6120/products_configuration_example09186a00808d1a7c.shtml
User-Based Attributes Policy Enforcement
You can map any standard LDAP attribute to a well-known Vendor-Specific Attribute (VSA) as well as map one or more LDAP attribute(s) to one or more Cisco LDAP attributes.
The following example shows how to configure the ASA to enforce a simple banner for a user configured on an AD LDAP server. On the server, use the Office field in the General tab to enter the banner text. This field uses the attribute named physicalDeliveryOfficeName. On the ASA, create an attribute map that maps physicalDeliveryOfficeName to the Cisco attribute Banner1. During authentication, the ASA retrieves the value of physicalDeliveryOfficeName from the server, maps the value to the Cisco attribute Banner1, and displays the banner to the user.
This example applies to any connection type, including the IPsec VPN client, AnyConnect SSL VPN client, or clientless SSL VPN. In the example, User1 connects through a clientless SSL VPN connection.
To configure the attributes for a user on the AD or LDAP Server, perform the following steps:
Step 1 Right-click a user.
The Properties dialog box appears (see Figure C-3).
Step 2 Click the General tab and enter banner text in the Office field, which uses the AD/LDAP attribute physicalDeliveryOfficeName.
Figure C-3 LDAP User Configuration
Step 3 Create an LDAP attribute map on the ASA.
The following example creates the map Banner and maps the AD/LDAP attribute physicalDeliveryOfficeName to the Cisco attribute Banner1:
hostname(config)# ldap attribute-map Banner
hostname(config-ldap-attribute-map)# map-name physicalDeliveryOfficeName Banner1
Step 4 Associate the LDAP attribute map to the AAA server.
The following example enters the aaa server host configuration mode for the host 10.1.1.2 in the AAA server group MS_LDAP, and associates the attribute map Banner that you created in Step 3:
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map Banner
Step 5 Test the banner enforcement.
The following example shows a clientless SSL connection and the banner enforced through the attribute map after the user authenticates (see Figure C-4).
Figure C-4 Banner Displayed
Placing LDAP Users in a Specific Group Policy
The following example shows how to authenticate User1 on the AD LDAP server to a specific group policy on the ASA. On the server, use the Department field of the Organization tab to enter the name of the group policy. Then create an attribute map and map Department to the Cisco attribute IETF-Radius-Class. During authentication, the ASA retrieves the value of Department from the server, maps the value to the IETF-Radius-Class, and places User1 in the group policy.
This example applies to any connection type, including the IPsec VPN client, AnyConnect SSL VPN client, or clientless SSL VPN. In this example, User1 is connecting through a clientless SSL VPN connection.
To configure the attributes for the user on the AD LDAP server, perform the following steps:
Step 1 Right-click the user.
The Properties dialog box appears (see Figure C-5).
Step 2 Click the Organization tab and enter Group-Policy-1 in the Department field.
Figure C-5 AD/LDAP Department Attribute
Step 3 Define an attribute map for the LDAP configuration shown in Step 1.
The following example shows how to map the AD attribute Department to the Cisco attribute IETF-Radius-Class.
hostname(config)# ldap attribute-map group_policy
hostname(config-ldap-attribute-map)# map-name Department IETF-Radius-Class
Step 4 Associate the LDAP attribute map to the AAA server.
The following example enters the aaa server host configuration mode for the host 10.1.1.2 in the AAA server group MS_LDAP, and associates the attribute map group_policy that you created in Step 3:
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map group_policy
Step 5 Add the new group-policy on the ASA and configure the required policy attributes that will be assigned to the user. The following example creates Group-policy-1, the name entered in the Department field on the server:
hostname(config)# group-policy Group-policy-1 external server-group LDAP_demo
hostname(config-aaa-server-group)#
Step 6 Establish the VPN connection as the user would, and verify that the session inherits the attributes from Group-Policy1 (and any other applicable attributes from the default group-policy).
Step 7 Monitor the communication between the ASA and the server by enabling the debug ldap 255 command from privileged EXEC mode. The following is sample output from this command, which has been edited to provide the key messages:
[29] Authentication successful for user1 to 10.1.1.2
[29] Retrieving user attributes from server 10.1.1.2
[29] Retrieved Attributes:
[29] department: value = Group-Policy-1
[29] mapped to IETF-Radius-Class: value = Group-Policy-1
Enforcing Static IP Address Assignment for AnyConnect Tunnels
In this example, configure the AnyConnect client user Web1 to receive a static IP address. then enter the address in the Assign Static IP Address field of the Dialin tab on the AD LDAP server. This field uses the msRADIUSFramedIPAddress attribute. Create an attribute map that maps this attribute to the Cisco attribute IETF-Radius-Framed-IP-Address.
During authentication, the ASA retrieves the value of msRADIUSFramedIPAddress from the server, maps the value to the Cisco attribute IETF-Radius-Framed-IP-Address, and provides the static address to User1.
The following example applies to full-tunnel clients, including the IPsec client and the SSL VPN clients (AnyConnect client 2.x and the SSL VPN client).
To configure the user attributes on the AD/LDAP server, perform the following steps:
Step 1 Right-click the username.
The Properties dialog box appears (see Figure C-6).
Step 2 Click the Dialin tab, check the Assign Static IP Address check box, and enter an IP address of 10.1.1.2.
Figure C-6 Assign Static IP Address
Step 3 Create an attribute map for the LDAP configuration shown in Step 1.
The following example shows how to map the AD attribute msRADIUSFramedIPAddress used by the Static Address field to the Cisco attribute IETF-Radius-Framed-IP-Address:
hostname(config)# ldap attribute-map static_address
hostname(config-ldap-attribute-map)# map-name msRADIUSFramedIPAddress IETF-Radius-Framed-IP-Address
Step 4 Associate the LDAP attribute map to the AAA server.
The following example enters the aaa server host configuration mode for the host 10.1.1.2, in the AAA server group MS_LDAP, and associates the attribute map static_address that you created in Step 3:
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map static_address
Step 5 Verify that the vpn-address-assignment command is configured to specify AAA by viewing this part of the configuration with the show run all vpn-addr-assign command:
hostname(config)# show run all vpn-addr-assign
vpn-addr-assign aaa << Make sure this is configured >>
Step 6 Establish a connection to the ASA with the AnyConnect client. Observe the following:
- The banner is received in the same sequence as a clientless connection (see Figure C-7).
- The user receives the IP address configured on the server and mapped to the ASA (see Figure C-8).
Figure C-7 Verify the Banner for the AnyConnect Session
Figure C-8 AnyConnect Session Established
Step 7 Use the show vpn-sessiondb svc command to view the session details and verify the address assigned:
hostname# show vpn-sessiondb svc
Username : web1 Index : 31
Assigned IP : 10.1.1.2 Public IP : 10.86.181.70
Protocol : Clientless SSL-Tunnel DTLS-Tunnel
Encryption : RC4 AES128 Hashing : SHA1
Bytes Tx : 304140 Bytes Rx : 470506
Group Policy : VPN_User_Group Tunnel Group : Group1_TunnelGroup
Login Time : 11:13:05 UTC Tue Aug 28 2007
VLAN Mapping : N/A VLAN : none
Enforcing Dial-in Allow or Deny Access
The following example creates an LDAP attribute map that specifies the tunneling protocols allowed by the user. You map the allow access and deny access settings on the Dialin tab to the Cisco attribute Tunneling-Protocol, which supports the bitmap values shown in Table C-6 :
Table C-6 Bitmap Values for Cisco Tunneling-Protocol Attribute
|
|
1 |
PPTP |
2 |
L2TP |
4 |
IPsec (IKEv1) |
8 |
L2TP/IPsec |
16 |
Clientless SSL |
32 |
SSL client—AnyConnect or SSL VPN client |
64 |
IPsec (IKEv2) |
Use this attribute to create an Allow Access (TRUE) or a Deny Access (FALSE) condition for the protocols and enforce the method for which the user is allowed access.
For this simplified example, by mapping the tunnel protocol IPsec/IKEv1 (4), you can create an allow (true) condition for the Cisco VPN client. You also map WebVPN (16) and SVC/AC (32), which are mapped as a value of 48 (16+32) and create a deny (false) condition. This allows the user to connect to the ASA using IPsec, but any attempt to connect using clientless SSL or the AnyConnect client is denied.
Another example of enforcing dial-in allow access or deny access is available in the Tech Note ASA/PIX: Mapping VPN Clients to VPN Group Policies Through LDAP Configuration Example at the following URL:
http://www.cisco.com/en/US/products/ps6120/products_configuration_example09186a008089149d.shtml
To configure the user attributes on the AD/LDAP server, perform the following steps:
Step 1 Right-click the user.
The Properties dialog box appears.
Step 2 Click the Dial-in tab, then click the Allow Access radio button (Figure C-9).
Figure C-9 AD/LDAP User1 - Allow Access
Note If you select the Control access through the Remote Access Policy option, then a value is not returned from the server, and the permissions that are enforced are based on the internal group policy settings of the ASA.
Step 3 Create an attribute map to allow both an IPsec and AnyConnect connection, but deny a clientless SSL connection.
The following example shows how to create the map tunneling_protocols, and map the AD attribute msNPAllowDialin used by the Allow Access setting to the Cisco attribute Tunneling-Protocols using the map-name command, and add map values with the map-value command:
hostname(config)# ldap attribute-map tunneling_protocols
hostname(config-ldap-attribute-map)# map-name msNPAllowDialin Tunneling-Protocols
hostname(config-ldap-attribute-map)# map-value msNPAllowDialin FALSE 48
hostname(config-ldap-attribute-map)# map-value msNPAllowDialin TRUE 4
Step 4 Associate the LDAP attribute map to the AAA server.
The following example enters the aaa server host configuration mode for the host 10.1.1.2, in the AAA server group MS_LDAP, and associates the attribute map tunneling_protocols that you created in Step 2:
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map tunneling_protocols
Step 5 Verify that the attribute map works as configured.
Step 6 Try connections using clientless SSL, the AnyConnect client, and the IPsec client. The clientless and AnyConnect connections should fail, and the user should be informed that an unauthorized connection mechanism was the reason for the failed connection. The IPsec client should connect because IPsec is an allowed tunneling protocol according to the attribute map (see Figure C-10 and Figure C-11).
Figure C-10 Login Denied Message for Clientless User
Figure C-11 Login Denied Message for AnyConnect Client User
Enforcing Logon Hours and Time-of-Day Rules
The following example shows how to configure and enforce the hours that a clientless SSL user (such as a business partner) is allowed to access the network.
On the AD server, use the Office field to enter the name of the partner, which uses the physicalDeliveryOfficeName attribute. Then we create an attribute map on the ASA to map that attribute to the Cisco attribute Access-Hours. During authentication, the ASA retrieves the value of physicalDeliveryOfficeName and maps it to Access-Hours.
To configure the user attributes on the AD /LDAP server, perform the following steps:
Step 1 Select the user, and right-click Properties.
The Properties dialog box appears (see Figure C-12).
Step 2 Click the General tab.
Figure C-12 Active Directory Properties Dialog Box
Step 3 Create an attribute map.
The following example shows how to create the attribute map access_hours and map the AD attribute physicalDeliveryOfficeName used by the Office field to the Cisco attribute Access-Hours.
hostname(config)# ldap attribute-map access_hours
hostname(config-ldap-attribute-map)# map-name physicalDeliveryOfficeName Access-Hours
Step 4 Associate the LDAP attribute map to the AAA server.
The following example enters the aaa server host configuration mode for the host 10.1.1.2, in the AAA server group MS_LDAP, and associates the attribute map access_hours that you created in Step 3:
hostname(config)# aaa-server MS_LDAP host 10.1.1.2
hostname(config-aaa-server-host)# ldap-attribute-map access_hours
Step 5 Configure time ranges for each value allowed on the server.
The following example configures Partner access hours from 9am to 5pm Monday through Friday:
hostname(config)# time-range Partner
hostname(config-time-range)# periodic weekdays 09:00 to 17:00