Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge

Unitas Network GmbH

This Slogan Viewlet registered to Chameleon Theme
Sie sind hier: Startseite / Wissenswertes / Anleitungen / Cisco / ASA / Remote Access VPN

Remote Access VPN

Internas zum Remote Access VPN mit IPSec und SSL

Abgrenzung

Die folgenden Abschnitte gelten für die Version 8.4, bei anderen Versionen kann es Abweichungen geben. Es werden immer nur die relevanten Abschnitte der Konfiguration dargestellt, welche für sich allein nicht funktionieren.

Tunnel-Groups und Group-Policies

Tunnel-Groups

Wichtige Bestandteile der VPN-Definition einer ASA sind die Tunnel-Groups und Group-Policies. Weitreichendere Möglichkeiten der Zugriffskontrolle bieten darüber hinaus die "Dynamic Access Policies" (DAP), welche hier aber nicht behandelt werden.

Die Tunnel-Goup definiert die zum Aufbau der Verbindung benötigten Parameter:

tunnel-group TG_IPSec_1 type remote-access
tunnel-group TG_IPSec_1 general-attributes
address-pool RA-Pool-Clients
authentication-server-group Radius LOCAL
tunnel-group TG_IPSec_1 ipsec-attributes
ikev1 pre-shared-key *****

Im obigen Beispiel werden nur wenige wichtige Parameter definiert:

  • Die Tunnel-Group heißt "TG_IPSec_1". Dieser Name entspicht bei Verwendung des IPSec-Clients dem zur Authentifizierung genutzten Gruppennamen, das zugehörige Paßwort folgt nach "ikev1 pre-shared-key"
  • Die an den Client vergebene IP-Adresse wird dem Pool "RA-Pool-Clients" entnommen
  • Die Authentifizierung erfolgt über einen in der Gruppe "Radius" definierten RADIUS-Server. Ist dieser nicht erreichbar, erfolgt eine lokale Authentifizierung.

Alle anderen Parameter sind dann die Default-Werte.

Group-Policy

In der Group-Policy werden client- bzw. benutzerseitige Parameter der Verbindung definiert:

group-policy GP_RA_1 internal
group-policy GP_RA_1 attributes
dns-server value 10.1.1.16 10.1.1.17
vpn-tunnel-protocol ikev1 ssl-client ssl-clientless
split-tunnel-policy tunnelspecified
split-tunnel-network-list value acl_splittunnel_ra
default-domain value nl1.beispiel.de
webvpn
url-list value Intern

In diesem Beispiel wurden folg. Parameter definiert:

  • Die Group-Policy heißt "GP_RA_1". Dieser Name kann über den Eintrag "default-group-policy" unter den general-attributes der Tunnel-Group referenziert werden. Oder er wird bei der Authentifizierung mittels RADIUS übergeben (s.u.).
  • Der Client arbeitet mit den Nameservern 10.1.1.16 und 10.1.1.17, die Suchdomäne lautet nl1.beispiel.de
  • Als Tunnelprotokolle können IKEv1 (IPSec-Client), SSL-Client (AnyConnect) und SSL-Clientless (Web-Portal) genutzt werden.
  • Splittunnel: Es werden nur die in der ACL "acl_splittunnel_ra" definierten Pakete im Tunnel übertragen
  • Im WebVPN-Portal werden die in "Intern" definierten URLs angezeigt.

Alle anderen hier nicht definierten Parameter werden der Default Group-Policy mit dem Namen "DfltGrpPolicy" entnommen. Ist diese in der Konfiguration nicht vorhanden gelten die generellen Default-Werte.

Auswahl der Tunnel-Group

Beim Aufbau einer IPSec VPN Verbindung wird zuerst eine Tunnel-Group gewählt. Dies erfolgt anhand folgender Kriterien:

IPSec:

  • Defaultmäßig könnte die immer vorhandene TunnelGroup DefaultRAgroup genutzt werden (eher ungewöhnlich)
  • Ansonsten wird die als Gruppe im VPN-Client angegebene Tunnel-Group verwendet (je nach Client kann dies dort z.B. auch "ID" heißen)

SSL-VPN:

  • Per Default wird die Tunnel-Group "DefaultWEBVPNGroup" genutzt
  • In der Tunnel-Group kann ein Alias angegeben werden. Wird dieser an die URL des Webportals angehängt, wird direkt diese Tunnel-Group aufgerufen. Zusätzlich kann in den globalen WebVPN-Einstellungen  mittels "tunnel-group-list enable" die Anzeige einer Auswahlliste auf dem Login-Bildschirm aktiviert werden.
webvpn
tunnel-group-list enable
tunnel-group Unitas webvpn-attributes
group-alias Unitas enable
  • Sollen alle Nutzer eine identische URL zum Login nutzen und nicht selbst eine Tunnel-Group auswählen dürfen, bleibt somit nur die Nutzung der Tunnel-Group "DefaultWEBVPNGroup".
  • Soll eine Auswahlliste angezeigt werden, der Zugriff auf die einzelnen Tunnel-Groups je nach Benutzer eingeschränkt werden, kann in der Group-Policy ein "group-lock" konfiguriert werden. Damit ist der Login nur bei den Tunnel-Groups erfolgreich, bei denen anschließend auf eine Group-Policy verwiesen wird, welche keinen oder einen Group-Lock auf die gewählte Tunnel-Group besitzt. Ansonsten erscheint "Login failed". Da jedem Nutzer sowieso nur eine Group-Policy zugewiesen werden kann, erscheint dieses Verfahren (Anzeige einer Auswahlliste mit Einschränkung über Group-Lock) nicht sehr sinnvoll.

Auswahl der Group-Policy

  • Per Default wird die Group-Policy "DfltGrpPolicy" genutzt
  • Mittels "default-group-policy" kann in der Tunnel-Group die gewünschte Group-Policy gewählt werden.
tunnel-group TG_RA_1 general-attributes
default-group-policy GP_RA_1
  • Lokalen Benutzern kann eine Group-Policy fest zugeordnet werden:
username user1 password xxxxxxxxx encrypted
username user1 attributes
vpn-group-policy GP_RA_1
service-type remote-access
  • Bei der Authentifizierung mittels RADIUS kann als Class "OU=<Group-Policy-Name>;" übergeben werden. Die dort angegebene Group-Policy wird dann genutzt.
  • Mögliche Szenarien

    Im Folgenden werden einige der möglichen Szenarien vorgestellt:

    IPSec mit unterschiedlichen Benutzergruppen und lokaler Authentifizierung

    Das war und ist noch häufig der Standard für Remote Access VPN

    username user1 password aaaaaaaaa
    username user2 password bbbbbbbbb
    group-policy GP_RA_1 internal
    group-policy GP_RA_1 attributes
    dns-server value 10.1.1.16 10.1.1.17
    vpn-tunnel-protocol ikev1
    split-tunnel-policy tunnelspecified
    split-tunnel-network-list value acl_splittunnel_ra
    default-domain value nl1.beispiel.de

    group-policy GP_RA_2 internal
    group-policy GP_RA_2 attributes
    dns-server value 10.1.1.16 10.1.1.17
    vpn-filter value ACL_RA_2
    vpn-tunnel-protocol ikev1
    split-tunnel-policy tunnelspecified
    split-tunnel-network-list value acl_splittunnel_ra
    default-domain value nl1.beispiel.de

    tunnel-group TG_IPSec_1 type remote-access
    tunnel-group TG_IPSec_1 general-attributes
    address-pool RA-Pool-Clients
    default-group-policy GP_RA_1
    tunnel-group TG_IPSec_1 ipsec-attributes
    ikev1 pre-shared-key xxxxxxxxx

    tunnel-group TG_IPSec_2 type remote-access
    tunnel-group TG_IPSec_2 general-attributes
    address-pool RA-Pool-Clients
    default-group-policy GP_RA_2
    tunnel-group TG_IPSec_2 ipsec-attributes
    ikev1 pre-shared-key yyyyyyyyy

    Es wurden 2 Benutzer (user1 und user2), 2 Tunnel-Groups (TG_IPSec_1 und TG_IPSec_2) sowie 2 Group-Policies (GP_RA_1 und GP_RA_2) definiert. Dem user1 werden der Name der Tunnel-Group TG_IPSec_1 und der zugehörige Pre-Shared Key bekanntgegeben. Damit kann er seinen Client konfigurieren und landet beim VPN-Login in Tunnel-Group TG_IPSec_1. Dort ist als Default die Group-Policy GP_RA_1 angegeben, welche  user1 damit zugewiesen wird. So erhält er unbeschränkten Zugriff aud alle mittels acl_splittunnel_ra frigegebenen Netze.

    Der user2 erhält die Zugangsdaten für Tunnel-Group TG_IPSec_2 und erreicht über diese die Group-Policy GP_RA_2. Damit hat er nur einen eingeschränkten Zugriff durch den dort definierten VPN-Filter mit der ACL_RA_2.

    Soll auch user2 unbeschränkten Zugriff erhalten, werden ihm einfach die Zugangsdaten für Tunnel-Group TG_IPSec_1 mitgeteilt. Nachdem er seinen VPN-Client entsprechend umkonfiguriert hat, kann er dann auch auf alle Netze zugreifen.

    Als Alternative könnte auch mit einer einzigen Tunnel-Group gearbeitet werden und die Group-Policy dem Benutzer in der Konfiguration fest zugewiesen werden (s.o.).

    IPSec mit unterschiedlichen Benutzergruppen und RADIUS-Authentifizierung

    Dieses Szenario könnte wie folgt konfiguriert werden:

    aaa-server Radius protocol radius
    aaa-server Radius (internal) host radius.nl1.beispiel.de
    key *****
    authentication-port 1812
    accounting-port 1813
    radius-common-pw *****

    group-policy GP_RA_1 internal
    group-policy GP_RA_1 attributes
    dns-server value 10.1.1.16 10.1.1.17
    vpn-tunnel-protocol ikev1
    split-tunnel-policy tunnelspecified
    split-tunnel-network-list value acl_splittunnel_ra
    default-domain value nl1.beispiel.de

    group-policy GP_RA_2 internal
    group-policy GP_RA_2 attributes
    dns-server value 10.1.1.16 10.1.1.17
    vpn-filter value ACL_RA_2
    vpn-tunnel-protocol ikev1
    split-tunnel-policy tunnelspecified
    split-tunnel-network-list value acl_splittunnel_ra
    default-domain value nl1.beispiel.de

    tunnel-group TG_IPSec type remote-access
    tunnel-group TG_IPSec general-attributes
    address-pool RA-Pool-Clients
    authentication-server-group Radius LOCAL
    default-group-policy GP_RA_2
    tunnel-group TG_IPSec ipsec-attributes
    ikev1 pre-shared-key xxxxxxxxx

    Anstelle der lokalen Benutzer wird hier eine Radius-Servergroup definiert, welche der einzigen Tunnel-Group zugewiesen wird. Deren Zugangsdaten (Name und Pre-shared Key) werden in den Clients aller Benutzer hinterlegt. Nach erfolgreicher RADIUS-Authentifizierung wird den Benutzern die als Default hinterlegte Group-Policy GP_RA_2 mit der einschränkenden ACL_RA_2 zugewiesen. Übermittels der RADIUS-Server allerdings das Attribut "Class" mit dem Value "OU=GP_RA_1;", wird die Group-Policy GP_RA_1 aktiv, welche vollen Zugriff auf alle Netze gewährt.

    SSL-VPN mit unterschiedlichen Benutzergruppen und RADIUS-Authentifizierung

    Bei der Verwendung mehrerer Benutzergruppen mit unterschiedlichen Zugriffrechten ist es nicht sinnvoll, mittels "tunnel-group-list enable" die Anzeige einer Liste der Tunnel-Group Aliase zu aktivieren, da am Ende jeder Benutzer sowieso nur Zugriff auf eine Group-Policy erhalten kann (Zuweisung mehrerer möglicher Group-Policies per RADIUS oder auch lokal ist nicht möglich). Deswegen wird folgende Konfiguration vorgeschlagen:

    aaa-server Radius protocol radius
    aaa-server Radius (internal) host radius.nl1.beispiel.de
    key *****
    authentication-port 1812
    accounting-port 1813
    radius-common-pw *****

    webvpn
    enable outside
    anyconnect image disk0:/anyconnect-win-2.5.3055-k9.pkg 1
    anyconnect image disk0:/anyconnect-linux-64-2.5.3055-k9.pkg 2
    anyconnect image disk0:/anyconnect-linux-2.5.3055-k9.pkg 3
    anyconnect image disk0:/anyconnect-macosx-i386-2.5.3055-k9.pkg 4
    anyconnect enable

    group-policy GP_RA_1 internal
    group-policy GP_RA_1 attributes
    dns-server value 10.1.1.16 10.1.1.17
    vpn-tunnel-protocol ikev1 ssl-client ssl-clientless
    split-tunnel-policy tunnelspecified
    split-tunnel-network-list value acl_splittunnel_ra
    default-domain value nl1.beispiel.de
    webvpn
    url-list value UL_RA_1

    group-policy GP_RA_2 internal
    group-policy GP_RA_2 attributes
    dns-server value 10.1.1.16 10.1.1.17
    vpn-filter value ACL_RA_2
    vpn-tunnel-protocol ikev1 ssl-client ssl-clientless
    split-tunnel-policy tunnelspecified
    split-tunnel-network-list value acl_splittunnel_ra
    default-domain value nl1.beispiel.de
    webvpn
    url-list value UL_RA_2

    tunnel-group DefaultWEBVPNGroup general-attributes
    address-pool RA-Pool-Clients
    authentication-server-group Radius LOCAL

    Alle Benutzer gelangen also in die in die Tunnel-Group "DefaultWEBVPNGroup". Jedem Benutzer wird vom RADIUS-Server das Attribut "Class" mit dem Value "OU=GP_RA_1;" oder "OU=GP_RA_2;" mitgegeben, womit er die entsprechende Group-Policy zugewiesen bekommt. Beim Zugriff mittels AnyConnect-Client wirkt hier wieder der VPN-Filter der GP_RA_2, beim Zugriff auf das Portal werden unterschiedliche URL-Listen (UL_RA_1 oder UL_RA_2) angezeigt.

    RADIUS

    Allgemeines

    In größeren Umgebungen ist es nicht praktikabel, jeden VPN-Benutzer lokal auf der ASA zu hinterlegen. Dazu sollte besser ein zentraler Server genutzt werden. Das kann ein LDAP-Server sein (auch Active Directory), oder aber ein RADIUS-Server. An RADIUS-Servern gibt es eine große Auswahl, angefangen beim IAS von Microsoft, über FreeRADIUS bis zu Einmalpaßwort-Lösungen (RSA SecurID, OpenOTP, LinOTP) mit integrierten RADIUS-Server.

    Attribute

    Nach erfolgreicher Authentifizierung können RADIUS-Server benutzer- oder gruppenabhängig die verschiedensten Attribute an die ASA übermitteln. Das kann, wie bereits oben beschrieben, zum Zuweisen einer Group-Policy genutzt werden. Neben den Standard-RADIUS-Attributen versteht die ASA noch eine Reihe Cisco-spezifischer Attribute. Die zur Verfügung stehenden Attribute sind im Configuration Guide von Cisco aufgeführt. Hierbei nutzt Cisco die Vendor-Id 3076, welche in den Dictionaries der RADIUS-Server meist als "Cisco-VPN3000" definiert ist. Aktuell versteht die ASA die in Tabelle C-7 (ASA Supported RADIUS Attributes and Values) des Configuration Guides aufgeführten Attribute.

    Beispiel: IP-Pool

    Wie oben bereits beschrieben, kann beim SSL-VPN nur die eine Tunnel-Group "DefaultWEBVPNGroup" sinnvoll genutzt werden. Damit kann auch nur ein IP-Adreßpool verwendet werden, da dieser in der Tunnel-Group und nicht in der Group-Policy definiert wird. Soll nun aber trotzdem abhängig vom Benutzer ein bestimmter IP-Adreßpool ausgewählt werden, kann dies über ein RADIUS-Attribut erfolgen. Dabei muß der RADIUS-Server eine Antwort mit dem Typ 26 (Vendor-spezifisch), der Vendor-Id 3076 (Cisco-VPN3000) und dem Attribut  217 (Address-Pools) an die ASA senden, der Inhalt von Attribut 217 muß dem Namen eines auf der ASA definierten Adreßpools entsprechen.

    Artikelaktionen

    abgelegt unter: ,