サーバー証明書を使用してeap-mschapv2認証でstrongswanを実行できました。ここで、Windows 2012 R2サーバーで実行されているNPSでeap-radiusプラグインを使用して、Active Directoryに対して認証したいと思います。
ドメインコントローラーで、新しいユーザーとリモートアクセス用のグループ(VPN_USERS)を作成しました。
VPNサーバーでsyslogをチェックアウトすると、次のようになります。
vpn charon: 08[IKE] received cert request for "C=US,O=CR-51 Test,CN=Root CA"
...
vpn charon: 09[CFG] selected peer config 'ikev2-vpn'
...
vpn charon: 09[IKE] authentication of 'vpn.cr-51-test.local' (myself) with pre-shared key
...
vpn charon: 09[ENC] generating IKE_AUTH response 1 [ IDr AUTH EAP/REQ/ID ]
...
vpn charon: 09[IKE] successfully created shared key MAC
....
vpn charon: 11[JOB] deleting half open IKE_SA after timeout
Windows 10クライアントでは、接続試行中に次のエラーが発生します。
dialed a connection named IKEv2 which has failed. The error code returned on failure is 13801.
EventviewerのNPSサーバーには、ネットワークポリシーサーバーがユーザーへのアクセスを拒否し、アクセスを許可するか、NPSがアクセスを制御できるようにADでユーザーのダイヤルイン設定を変更することを提案するエントリがあります。これは元々、NPSがアクセスを制御できるように設定されていましたが、アクセスを許可するように設定しても失敗します。
また、NPSをセットアップした後、ドメイン管理者アカウント以外のドメインコントローラーのアカウントでログインできません。
現在の構成はこちら
ipsec.conf:
config setup
charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
ike=aes256-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha1,3des-sha1-modp1024!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftauth=pubkey
[email protected]
leftcert=/etc/ipsec.d/certs/vpn.cr-51-test.local.crt.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
lefthostaccess=yes
leftfirewall=yes
right=%any
rightid=%any
rightauth=eap-radius
rightgroups="CN=VPN_USERS/CN=Users"
rightsourceip=10.10.0.0/24
rightdns=192.150.150.10
rightsendcert=never
rightfirewall=yes
eap_identity=%identity
/etc/strongswan.d/charon/eap-radius.conf:
(私が変更したセクションだけ)
load = yes
...
secret = testpass
server = 192.150.150.20
ipsec.secrets:
vpn : RSA "/path/to/key"
: PSK "testpass"
NPS構成:
NPSサーバーがドメインに登録されています。
Freindly name: vpn
Addresss (IP or DNS): 192.150.150.11
Shared secret: testpass
接続要求ポリシー
Type of network access server: Remote Access Server(VPN-Dialup)
Conditions:
NAS Port Type: VPN
Client Friendly Name: vpn
ネットワークアクセスポリシー
Type of network access server: vpn
Conditions:
NAS Port Type: VPN
Client Friendly Name: vpn
User Groups: VPN_USERS
Constraints:
Authentication Methods: EAP-MSCHAP v2
NAS Port Type: VPN
ログ名:セキュリティソース:Microsoft-Windows-Security-Auditing日付:6/22/2018 5:25:02 PMイベントID:6273タスクカテゴリ:ネットワークポリシーサーバーレベル:情報キーワード:失敗の監査ユーザー:N/Aコンピューター:nps.cr-51-test.local説明:ネットワークポリシーサーバーがユーザーへのアクセスを拒否しました。
詳細については、ネットワークポリシーサーバーの管理者に問い合わせてください。
ユーザー:セキュリティID:CR-51-TEST\tuserアカウント名:[email protected]アカウントドメイン:CR-51-TEST完全修飾アカウント名:CR-51-TEST\tuser
クライアントマシン:セキュリティID:NULL SIDアカウント名:-完全修飾アカウント名:-OS-バージョン:-呼び出されたステーションの識別子:192.250.250.11 [4500]呼び出しステーションの識別子:192.173.1.90 [4500]
NAS:NAS IPv4アドレス:192.250.250.11 NAS IPv6アドレス:-NAS識別子:strongSwan NASポートタイプ:仮想NASポート:4
RADIUSクライアント:クライアントフレンドリー名:vpnクライアントIPアドレス:192.250.250.11
認証の詳細:接続要求ポリシー名:すべてのユーザーにWindows認証を使用しますネットワークポリシー名:-認証プロバイダー:Windows認証サーバー:nps.cr-51-test.local認証タイプ:EAP EAPタイプ:-アカウントセッション識別子:-ログ結果:アカウンティング情報がローカルログファイルに書き込まれました。理由コード:48理由:接続要求が、構成されているネットワークポリシーと一致しませんでした。
イベントXml:6273 1 0 12552 0 0x8010000000000000 531セキュリティnps.cr-51-test.local S-1-5-21-2365315230-2476318153-1929964036-1111 [email protected] CR-51-TEST CR -51-TEST\tuser S-1-0-0---192.250.250.11 [4500] 192.173.1.90 [4500] 192.250.250.11-strongSwan Virtual 4 vpn 192.250.250.11すべてのユーザーにWindows認証を使用-Windows nps.cr -51-test.local EAP--48接続要求が、構成されたどのネットワークポリシーとも一致しませんでした。アカウンティング情報はローカルログファイルに書き込まれました。
そこで、NPSサーバーでVPN接続用に作成したポリシーを無効にし、NPSが最小限の制約で作成したデフォルトのポリシーを変更し、strongswan vpn経由でActive Directoryユーザーを正常に認証することができました。これらのポリシーは、テストの開始点として問題ないはずです。
Ecdsaがipsec.conf
で提案したように、leftauth=pubkey
を設定しました。
それが必要かどうかはわかりませんが、strongswanがログで文句を言っていたため、ipsec.conf
ファイルで設定したrightgroups
パラメータもコメント化しました。
EAPと事前共有キー認証の組み合わせは、 RFC 7296 に従って厳密に有効ではありません。
通常、これらの方法は非対称であり(サーバーに対してユーザーを認証するために設計されています)、相互に異なる場合があります。このため、これらのプロトコルは通常、レスポンダに対してイニシエータを認証するために使用され、イニシエータに対するレスポンダの公開鍵署名ベースの認証と組み合わせて使用する必要があります。
StrongSwanなどの一部の実装では構成が許可されていますが、他の多くの構成では許可されておらず、証明書によるサーバーの認証が要求されます。
すでに証明書と秘密鍵を持っているように見えるので、leftauth=pubkey
。クライアントにすでにCA証明書がインストールされている場合。
NPSサーバーへのすべての種類の接続を単に許可するよりも堅牢なソリューションを探している人のために、変更が必要なシンプルな設定があり、strongSwanと完全に連携します。
これがすべてを変える理由については、なぜだかわかりません。これは単に、ウィザードで作成されたポリシーが、クライアント(VPNサーバー)がOEM標準ハードウェアであることを前提としているためだと考えています。このハードウェアには、「リモートアクセスサーバー(VPNダイヤルアップ)」。本当にその時点まで、誰かがそれについて明確な説明があれば、本当にありがたいです。回答を変更するか、コメントを残してください。ありがとう。
したがって、最初からやり直すには、[NPS(ローカル)]ルートノードをクリックし、次にメインウィンドウで[VPNまたはダイヤルアップの構成]をクリックします。通常どおりに手順を実行します。ウィザードが完了すると、指定した名前で2つのポリシーが作成されます。 1つは「接続要求ポリシー」、もう1つは「ネットワークポリシー」にあります。両方のポリシーの[概要]タブの[ネットワーク接続方法]セクションで、[ネットワークアクセスサーバーの種類]が[リモートアクセスサーバー(VPNダイヤルアップ)]に設定されています。このオプションを「未指定」に変更します。そして、それだけです。クライアントに適切にアクセスをリクエストさせるには、この変更を加えることだけが必要です。その後、両方のポリシーが考慮されます。
それが役に立てば幸い。