Abrechnung von IPSec-Verbindungen mit RSA-Authentifizierung

Abrechnung von IPSec-Verbindungen mit RSA-Authentifizierung

Apple iOS verfügt über die Funktion „VPN On Demand“. Mit dieser Funktion wird die VPN-Verbindung immer dann hergestellt, wenn das Gerät versucht, eine Verbindung zu bestimmten Domänen oder zum Internet herzustellen. iOS unterstützt „VPN On Demand“ nur mit zertifikatsbasierter Authentifizierung.

Um „VPN On Demand“ für iOS-Benutzer meines Büro-VPN-Servers bereitzustellen, verwenden wir die folgende IPSec-Lösung:

  • Ubuntu 14.04 – das VPN-Server-Betriebssystem.
  • strongSwan 5.1.2 – IKE-Daemon.
  • Für jeden Peer generiere ich einen individuellen privaten Schlüssel und stelle ein passendes Zertifikat aus. Der Client (iOS IKEv1) authentifiziert per RSA und Xauth.
  • iPhone und iPad können IPSec nicht ohne Xauth verwenden (sogenanntes Cisco IPSec). Und „VPN On Demand“ kann kein VPN-Profil verwenden, das die Eingabe eines Passworts erfordert, aber Xauth verlangt normalerweise Benutzername/Passwort. Um dieses Problem zu lösen, verwenden wir xauth-noauth – einen gefälschten Xauth-Authentifikator, der jeden Benutzernamen und jedes Passwort zulässt. In diesem Fall verwenden wir zur Authentifizierung nur ein Client-Zertifikat.

Diese Lösung funktioniert für uns gut. Aber wir haben eine neue Anforderung: mehrere VPN-Server mit einer Benutzerdatenbank einrichten und die VPN-Nutzung abrechnen.

Für diese Aufgabe ist die Verwendung von RADIUS üblich und strongSwan hat ein Plugin dafür. Aber strongSwan mit IKEv1/Xauth verwendet Benutzername/Passwort zur Authentifizierung des Benutzers auf dem Backend-RADIUS-Server. Benutzername/Passwort werden in meiner Lösung nicht verwendet.

Meine Fragen:

  1. Wie verwende ich die Radius-Buchhaltung, wenn Xauth keinen Benutzernamen/kein Passwort verwendet?
  2. Ist es möglich, die RSA-Authentifizierungsprüfung an einen RADIUS-Server zu delegieren?

PS: Die meisten meiner iOS-Clients verwenden iOS 8, das IKEv2 unterstützt. In IKEv2 gibt es EAP-TLS. Kann ich EAP-TLS verwenden, um die RSA-Authentifizierungsprüfung an den RADIUS-Server zu delegieren? Oder bin ich mit EAP-TLS auf dem Holzweg?

PSPS: Meine zweite Sache betraf die VICI-Schnittstelle von strongSwan. Ich sollte Benachrichtigungen über jede neue IPSec-Verbindung erhalten, aber es sieht so aus, als ob VICI anders funktioniert.

Antwort1

RADIUS Accounting imEAP-RadiusDas Plugin erfordert keine XAuth-Authentifizierung. Es funktioniert eigentlich mit jeder Art der Authentifizierung, ob über RADIUS oder nicht, solange der Client eine virtuelle IP-Adresse anfordert (für IKEv2 kann sogar diese Anforderung deaktiviert werden). Bei einigen IKEv1-Clients gibt es jedoch einige Probleme bei der erneuten Authentifizierung (siehe Problem#937und die damit verbundenen).

EAP-TLS ermöglicht es, die Zertifikatsauthentifizierung für IKEv2-Clients an den AAA-Server zu delegieren, dies hat jedoch nichts mit RADIUS Accounting zu tun.

Antwort2

Dank ecdsa habe ich mehrere Lösungen für mein Problem gefunden.

  1. Verwenden Sie RADIUS Accounting ohne RADIUS-Authentifizierung.

Wenn das eap-radius-Plugin mit der Option aktiviert istAbrechnung = ja, strongSwan sendet eine RADIUS-Nachricht, um die Abrechnung zu starten, auch wenn eap-radius in der Datei ipsec.conf nicht verwendet wird. In meinem Fall sieht diese RADIUS-Nachricht folgendermaßen aus:

Acct-Status-Type = Start
Acct-Session-Id = 1434531934-1
NAS-Port-Type = Virtual
Service-Type = Framed-User
NAS-Port = 1
NAS-Port-Id = ios-ikev1-fakexauth
NAS-IP-Address = <nas_ip>
Called-Station-Id = <nas_ip>[4500]
Calling-Station-Id = <client_ip>[4500]
User-Name = "C=CH, O=strongSwan, [email protected]"
Framed-IP-Address = 172.20.1.1
NAS-Identifier = strongSwan

Ich kann das CN-Zertifikat aus der Nachricht erhalten und es reicht mir, eine ordnungsgemäße Abrechnung vorzunehmen. Wenn ich den Zugriff für ein CN ablehnen möchte, kann ich einfach die RADIUS-Nachricht von stronSwan ablehnen und die IPSec-Verbindung wird unterbrochen.

  1. Führen Sie eine Abrechnungs- und Zugriffskontrolle imoben untenSkript anstelle von RADIUS.

Außerdem möchte ich das curl-Plugin strongSwan für den Zugriff auf die Zertifikatsperrliste verwenden. Mir fehlt jedoch die Dokumentation zu diesem Plugin. Übersehe ich etwas?

verwandte Informationen