Cisco ASA AnyConnect SSL VPN
Configure Cisco AnyConnect SSL VPN on an ASA for remote user access — the most common remote access VPN solution in enterprise environments.
What is it?
Cisco AnyConnect is the industry-standard SSL VPN client for remote access. Users install the AnyConnect client on their laptop/phone, connect to the ASA's public IP, authenticate, and get a virtual IP from the VPN pool — giving them access to internal corporate resources as if they were physically in the office. AnyConnect uses SSL/TLS (port 443), which means it works through almost any firewall or hotel/airport network without needing special UDP ports open.
✓ When to use
- ·Employees working from home or traveling who need access to internal resources
- ·Contractors or vendors who need temporary, controlled access to specific systems
- ·When you need per-user authentication with LDAP/AD integration
- ·When users are behind restrictive firewalls that block IPsec — AnyConnect uses HTTPS (443)
✗ When NOT to use
- ·Office-to-office connectivity — use site-to-site IPsec instead
- ·When all users are already on premises — unnecessary overhead
- ·Large scale (500+ users) on older ASA hardware — check the platform's connection limit
How it compares
Prerequisites
- →AnyConnect license on the ASA (Essentials or Premium — check 'show version')
- →AnyConnect image (.pkg file) uploaded to the ASA flash: 'show flash' to verify
- →SSL certificate on the outside interface — self-signed works but users will see a certificate warning; use a trusted cert in production
- →NAT exemption configured so VPN client traffic is not NATted when going to internal resources
- →Authentication server ready (LDAP/AD for production, local users for testing)
Config Generator
Full tunnel: all user traffic goes through VPN. Split tunnel: only corporate traffic uses VPN.
Corporate networks to tunnel — only needed if split tunnel is enabled
Local user for testing — in production use LDAP/RADIUS
Verification commands
show vpn-sessiondb anyconnectShow all active AnyConnect sessions with user, IP, bytes transferred
Expected: Lists connected users with their assigned VPN IP, duration, and data stats
show webvpn anyconnectVerify AnyConnect is enabled and the correct image is loaded
Expected: Shows enabled interfaces and the AnyConnect package version
show ip local poolVerify the IP pool and how many addresses are in use
Expected: Shows pool range, available addresses, and how many are currently assigned
Debug commands
debug webvpn anyconnect 255Debug AnyConnect connection attempts — shows authentication and tunnel setup
⚠ Verbose. Use only briefly and run 'no debug all' immediately after.
Common mistakes & fixes
⚡ AnyConnect client cannot connect — 'Unable to contact server'
Cause: SSL VPN not enabled on outside interface, certificate error, or port 443 blocked by ISP
Fix: Verify 'webvpn enable outside' is configured. Check the SSL certificate. Try connecting to the ASA IP directly in a browser — you should see the AnyConnect web page.
⚡ Authentication fails
Cause: Wrong tunnel group selected, AAA server unreachable, or local user doesn't have VPN attributes
Fix: Verify the tunnel group name matches what the client is using. Check 'show aaa-server' if using LDAP. For local users, verify 'service-type remote-access' is set.
⚡ Connected but cannot reach internal resources
Cause: NAT exemption missing, split tunnel ACL too narrow, or routing issue on internal servers
Fix: Check 'show nat' — VPN pool should have a NAT exemption. Verify the VPN client's assigned IP can reach the destination. Check internal routing to the VPN pool subnet.
⚡ VPN connects but internet doesn't work (full tunnel mode)
Cause: ASA is not NATting VPN client traffic going to the internet, or DNS not resolving
Fix: Add a PAT rule for VPN clients: 'nat (inside,outside) after-auto source dynamic VPN_POOL interface'. Verify DNS servers are reachable from the VPN client.