SSL-VPN Certificate Auth + Kerberos or LDAP



 ◆ SSL-VPNの設定:検証時のACL

 ACLの問題を排除するために、検証時には以下の設定通り全てを許可した上での検証をお勧めします。


 (config)#
access-list ALLOK extended permit ip any any
 (config)# access-group ALLOK global




 ◆ SSL-VPNの設定:ローカル認証

 SSL-VPN認証で最も簡単なローカル認証の設定です。以降に紹介していく証明書認証、外部AD認証の
 コンフィグレーションは以下の内容を前提として紹介します。

 ◆ IP関連 - 基本設定例

 (config)#
hostname testasa01
 (config)# domain-name infraeye.com
 (config)# clock timezone JST 9

 (config)# enable password cisco
 (config)# username admin password cisco1234 priv 15

 (config)# interface gi0/0
 (config-if)# ip address 10.1.0.254 255.255.255.0
 (config-if)# no shut

 (config)# interface gi0/1
 (config-if)# ip address 10.1.1.254 255.255.255.0
 (config-if)# no shut

 (config)# http server enable
 (config)# http 10.1.1.0 255.255.255.0 inside


 (config)# route outside 0.0.0.0 0.0.0.0 10.1.0.1


 ◆ SSL-VPN - 基本設定例

 (config)#
webvpn
 (config-webvpn)# enable outside
 (config-webvpn)# anyconnect image disk0:/anyconnect-win-3.1.05160-k9.pkg 1
 (config-webvpn)# anyconnect enable
 (config-webvpn)# tunnel-group-list enable

 (config)# username test1 password test123
 (config)# ip local pool SSLPOOL1 192.168.1.10-192.168.1.20 mask 255.255.255.0
 (config)# access-list SPLIT standard permit 10.1.1.0 255.255.255.0

 (config)# group-policy SSLG1 internal
 (config)# group-policy SSLG1 attribute
 (config-group-policy)# dns-server value 10.1.1.10 10.1.1.20
 (config-group-policy)# vpn-tunnel-protocol ssl-client
 (config-group-policy)# split-tunnel-policy tunnelspecified
 (config-group-policy)# split-tunnel-network-list value SPLIT

 (config)# tunnel-group SSLT1 type remote-access
 (config)# tunnel-group SSLT1 general-attributes
 (config-tunnel-general)# address-pool SSLPOOL1
 (config-tunnel-general)# default-group-policy SSLG1

 (config)# tunnel-group SSLT1 webvpn-attributes
 (config-tunnel-webvpn)# group-alias SSLT1 enable

 (config)# object network VPNPOOL
 (config-network-object)# subnet 192.168.0.0 255.255.0.0

 (config)# nat (inside,outside) source static any any destination static VPNPOOL VPNPOOL



 ◆ SSL-VPNの設定 : AD認証 ( Kerberosを使用 )

 Kerberosプロトコルを利用したAD認証を行う場合、以下の通りAAAグループにKerberosの定義を行います。


 (config)#
aaa-server AD protocol kerberos
 (config)# aaa-server AD (inside) host 10.1.1.10
 (config)# kerberos-realm INFRAEYE.COM


 次に、tunnel-groupのgeneral-attributeで"authentication-server-group"を上記で指定した名前で追加して
 tunnel-groupのwebvpn-attributeで認証方式"aaa"を指定し外部ADによるユーザ認証が行われるようにする。


 (config)#
tunnel-group SSLT1 general-attributes
 (config-tunnel-general)# authentication-server-group AD

 (config)# tunnel-group SSLT1 webvpn-attributes
 (config-tunnel-webvpn)# authentication aaa


 ちなみに、証明書認証とAD認証を組み合わせたい場合、"authentication aaa certificate"と指定します。




 ◆ SSL-VPNの設定 : AD認証(LDAPを使用)

 単純なAD認証の場合、設定が簡単なKerberos認証がお勧めですが、例えばADの"グループ"や"OU"などの
 情報に基づいて制御したい場合にはLDAP認証を使用する。LDAP認証が行われるかを最小限の構成で確認。


 (config)# aaa-server LDAP protocol ldap
 (config-aaa-server-group)# aaa-server LDAP (inside) host 10.1.1.10

 (config-aaa-server-host)# ldap-base-dn dc=infraeye, dc=com
 (config-aaa-server-host)# ldap-scope subtree
 (config-aaa-server-host)# ldap-naming-attribute sAMAccountName
 (config-aaa-server-host)# ldap-login-password *****
 (config-aaa-server-host)# ldap-login-dn cn=administrator, cn=users, dc=infraeye, dc=com
 (config-aaa-server-host)# server-type microsoft

 (config)# tunnel-group SSLT1 general-attributes
 (config-tunnel-general)# authentication-server-group LDAP


コマンド 説明
 ldap-base-dn  許可要求を受信したサーバに検索を開始させる LDAP 階層の位置を指定。ドメイン名を指定。
 ldap-scope  許可要求を受信したサーバに検索させる LDAP 階層の範囲を指定。一般的にsubtreeを指定。
 ldap-naming-attribute  LDAPサーバ上でエントリが一意に識別される相対識別名アトリビュート
 
sAMAccountNameは、Microsoft Active Directory 内のデフォルトのアトリビュート
 ldap-login-password  以下のDNアカウントのパスワード
 ldap-login-dn  バインド時にシステムに使用させるディレクトリオブジェクト名を指定。要するに、AD上にある
 管理者権限のユーザー。設定例は、"infraeye.com"ドメインにある"users"コンテナに存在する
 "administrator"ということ ⇒ ldap-login-dn cn=administrator, cn=users, dc=infraeye, dc=com
 server-type  MicrosoftなどLDAPサーバのタイプ。LDAPサーバにADを使用する場合は"microsoft"と指定。


 testコマンドにより以上の設定が正しいかどうか確認できます。実際にテスト要求がADに送信されます。

 @ そもそもASAとADと連携するための"administrator"が正しい情報かを確認
 # test aaa-server authentication LDAP host 10.1.1.10 username administrator password cisco123


 A 利用者が実際にユーザ認証の際に使用するAD上の"ユーザ名"と"パスワード"を入力して認証確認
 # test aaa-server authentication LDAP host 10.1.1.10 username cool password cisco456


 紹介した以上の設定は認証が成功しやすい"ゆるい"設定例なので、先ず認証成功するかと思いますが、
 正常に動作しない場合、以下の手順により
debug ldap 255コマンドによりデバッグをかけてみましょう。

 # debug ldap 255




 ◆ SSL-VPNの設定 : AD認証 ( LDAPを使用 )

 ◇ グループIDにひもづいたIPアドレスの割り当て

 ldap attribute-map CISCOMAP
 map-name memberOf IETF-Radius-Class
 map-value memberOf CN=ADGroup1,CN=Users,DC=infraeye,DC=com SSLG1
 map-value memberOf CN=ADGroup2,CN=Users,DC=infraeye,DC=com SSLG2

 aaa-server LDAP (inside) host 10.1.1.10
 ldap-attribute-map CISCOMAP

 group-policy SSLG1 attributes
 address-pools value VPNPOOL1

 group-policy SSLG2 attributes
  address-pools value VPNPOOL2

 上記設定の場合は、ADGroup1、ADGroup2に所属していないAD上のユーザーは認証に失敗します。


 ASAのLDAP設定で 「 CN=ADGroup1,CN=Users,DC=infraeye,DC=com 」と定義した場合は、ドメインの
 「infraeye.com」のコンテナ「Users」のグループ「ADGroup1」に配置された全てのユーザーを示している
 ことが分かりますね。これをASAで定義したTunnel-Groupの"SSLG1"に結び付けているのです。



SSL/TLS、SSLサーバ証明書、SSL-VPN

ネットワークエンジニアとして

Copyright (C) 2002-2019 ネットワークエンジニアとして All Rights Reserved.