RSA 認証による IPSec 接続のアカウンティング

RSA 認証による IPSec 接続のアカウンティング

Apple iOS には「VPN オンデマンド」機能があります。この機能により、デバイスが特定のドメインまたはインターネットに接続しようとするたびに VPN 接続が確立されます。iOS は、証明書ベースの認証でのみ「VPN オンデマンド」をサポートします。

私のオフィスの VPN サーバーの iOS ユーザーに「VPN オンデマンド」を提供するために、次の IPSec ソリューションを使用しています。

  • Ubuntu 14.04 - VPN サーバー OS。
  • strongSwan 5.1.2 - IKE デーモン。
  • 各ピアに対して個別の秘密鍵を生成し、一致する証明書を発行します。クライアント (iOS IKEv1) は RSA と Xauth を使用して認証します。
  • iPhone と iPad は、Xauth (いわゆる Cisco IPSec) なしでは IPSec を使用できません。また、「VPN On Demand」はパスワード入力を必要とする VPN プロファイルを使用できませんが、Xauth では通常ユーザー名とパスワードが必要です。この問題に対処するために、任意のユーザー名とパスワードを許可する偽の Xauth 認証子である xauth-noauth を使用しています。この場合、認証にはクライアント証明書のみを使用しています。

このソリューションは当社では問題なく機能しています。しかし、1 つのユーザー データベースで複数の VPN サーバーを設定し、VPN の使用状況を記録するという新たな要件が生まれました。

このタスクでは RADIUS を使用するのが一般的で、strongSwan にはそのためのプラグインがあります。ただし、IKEv1/Xauth を使用した strongSwan は、バックエンド RADIUS サーバーでユーザーを認証するためにユーザー名/パスワードを使用します。私のソリューションではユーザー名/パスワードは使用されません。

私の質問:

  1. Xauth がユーザー名/パスワードを使用していない場合、Radius アカウンティングを使用するにはどうすればよいでしょうか?
  2. RSA 認証チェックを RADIUS サーバーに委任することは可能ですか?

PS 私の iOS クライアントのほとんどは、IKEv2 をサポートする iOS 8 を使用しています。IKEv2 には EAP-TLS があります。EAP-TLS を使用して RSA 認証チェックを RADIUS サーバーに委任できますか? それとも、EAP-TLS で間違った方向に進んでいるのでしょうか?

PSPS 2 つ目は、strongSwan の VICI インターフェイスについてです。新しい IPSec 接続ごとに通知を受け取るはずでしたが、VICI の動作が異なっているようです。

答え1

RADIUSアカウンティングEAP 半径プラグインは XAuth 認証を必要としません。クライアントが仮想 IP アドレスを要求する限り、RADIUS 経由かどうかに関係なく、あらゆる種類の認証で動作します (IKEv2 ではこの要件を無効にすることもできます)。ただし、一部の IKEv1 クライアントでは再認証の際に問題が発生します (問題を参照)。#937および関連事項。

EAP-TLS を使用すると、IKEv2 クライアントの証明書認証を AAA サーバーに委任できますが、これは RADIUS アカウンティングとは関係ありません。

答え2

ecdsa のおかげで、私は自分の問題に対するいくつかの解決策を見つけることができました。

  1. RADIUS 認証なしで RADIUS アカウンティングを使用します。

eap-radiusプラグインがオプションで有効になっている場合会計 = はいipsec.conf ファイルで eap-radius が使用されていない場合でも、strongSwan はアカウンティングを開始するために RADIUS メッセージを送信します。私の場合、この RADIUS メッセージは次のようになります。

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

メッセージから証明書 CN を取得できるので、適切なアカウンティングを行うのに十分です。一部の CN のアクセスを拒否したい場合は、stronSwan からの RADIUS メッセージを拒否するだけで、ipsec 接続が中断されます。

  1. 会計とアクセスチェックを上下RADIUS を使用する代わりにスクリプトを使用します。

また、証明書失効リストにアクセスするために strongSwan curl プラグインを使用したいと思います。しかし、このプラグインに関するドキュメントが不足していることがわかりました。何か見落としているのでしょうか?

関連情報