はじめに
このドキュメントでは、FMC経由で管理されるFTDでのSecurity Assertion Markup Language(SAML)認証について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Firepower Management Center(FMC)でのAnyConnectの設定
- SAMLおよびmetatada.xml値
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- Firepower Threat Defense(FTD)バージョン6.7.0
- FMCバージョン6.7.0
- SAML 2.0を使用したADサーバからのADFS
注:可能であれば、NTPサーバを使用してFTDとIdP間で時刻を同期してください。それ以外の場合は、手動で時刻が同期されていることを確認します。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
この設定により、AnyConnectユーザはSAML IDサービスプロバイダーとのVPNセッション認証を確立できます。
SAMLに関する現在の制限事項の一部を次に示します。
- FTDのSAMLは、認証(バージョン6.7以降)と認可(バージョン7.0以降)でサポートされています。
- DAP評価で使用可能なSAML認証属性(AAAサーバからRADIUS認証応答で送信されるRADIUS属性と同様)はサポートされていません。
- ASAは、DAPポリシーでSAML対応のトンネルグループをサポートします。ただし、username属性はSAML IDプロバイダーによってマスクされるため、SAML認証でusername属性を確認することはできません。
-
組み込みブラウザを使用したAnyConnectでは、VPNが試行されるたびに新しいブラウザセッションが使用されるため、IdPがログイン状態を追跡するためにHTTPセッションCookieを使用する場合は、毎回ユーザを再認証する必要があります。
-
この場合、Force Re-Authentication
inの設定はAnyConnectが開始したSAML認証にConfiguration > Remote Access VPN > Clientless SSL VPN Access > Advanced > Single Sign On Servers
は影響しません。
その他の制限またはSAMLについては、ここに記載されているリンクで説明しています。
SAML 2.0のガイドラインと制限事項
SAML 2.0のASAおよびFTDのガイドラインと制限事項に適用されます。
注:FTDに実装されるすべてのSAML設定は、IdPによって提供されるmetadata.xmlファイルで確認できます。
コンフィギュレーション
ここでは、FTDでSAML認証を使用してAnyConnectを設定する方法について説明します
SAML IdPパラメータの取得
次の図に、SAML IdP metadata.xmlファイルを示します。出力から、SAMLでAnyConnectプロファイルを設定するために必要なすべての値を取得できます。
FMCを介したFTDの設定
ステップ 1:FMCにIdP証明書をインストールして登録します。移動先: Devices > Certificates.
ステップ 2:Select the FTD to enroll in this certificateをクAdd.
リックします。Cert Enrollmentの下で、プラス記号+をクリックします。
セクションではAdd Cert Enrollment
、IdP証明書のラベルとして任意の名前を使用します。[保存(Manual.
CAフラグCA Only
のフィールドSkip Check
については、とを確認します。
形式IdPbase64
CA証明書を貼り付けます。
Save,
クリックして、Add.
ステップ 3:SAMLサーバの設定を行います。移動して選択Objects > Object Management > AAA Servers > Single Sign-on Server, then
しますAdd Single Sign-on Server.
ステップ 4:IdPによってすでに提供されているmetadata.xml
ファイルに基づいて、New Single Sign-on Server.
SAML Provider Entity ID: entityID from metadata.xml
SSO URL: SingleSignOnService from metadata.xml.
Logout URL: SingleLogoutService from metadata.xml.
BASE URL: FQDN of your FTD SSL ID Certificate.
Identity Provider Certificate: IdP Signing Certificate.
Service Provider Certificate: FTD Signing Certificate.
ステップ 5:こConnection Profile
の認証方式を使用するを設定します。移動Devices > Remote Access,
して現在の設定を編集しますVPN Remote Access
。
手順 6:プラス記号の+をクリックして、別の接続プロファイルを追加します。
手順 7:新しい接続プロファイルを作成し、適切なVPN、プール、またはDHCPサーバを追加します。
ステップ 8: AAAタブを選択します。オプAuthentication Method
ションでSAMLを選択します。
オプAuthentication Server
ションの下で、手順4で作成したSAMLオブジェクトを選択します。
ステップ 9: この接続プロファイルに接続をマッピングするグループエイリアスを作成します。これは、ユーザがAnyConnect Softwareドロップダウンメニューで表示できるタグです。
これが設定されている場合、OKをクリックして、完全なSAML認証VPN設定を保存します。
ステップ 10:SAML認証VPNDeploy > Deployment
の変更を適用する適切なFTDに移動して選択します。
ステップ 11 IDPにFTDのmetadata.xmlファイルを提供し、信頼できるデバイスとしてFTDを追加します。
FTD CLIで、show saml metadata SAML_TG
コマンドを実行します。ここで、SAML_TGはステップ7で作成した接続プロファイルの名前です。
正常な出力を次に示します。
> system support diagnostic-cli
Attaching to Diagnostic CLI ... Press 'Ctrl+a then d' to detach.
Type help or '?' for a list of available commands.
firepower> en
Password:
firepower# show saml metadata SAML_TG
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EntityDescriptor entityID="https://ftd.lab.local/saml/sp/metadata/SAML_TG" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIF1zCCBL+gAwIBAgITYAAAABN6dX+H0cOFYwAAAAAAEzANBgkqhkiG9w0BAQsF
ADBAMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZFgNsYWIx
EjAQBgNVBAMTCU1TMjAxMi1DQTAeFw0yMDA0MTEwMTQyMTlaFw0yMjA0MTEwMTQy
MTlaMCMxCzAJBgNVBAYTAkNSMRQwEgYDVQQDDAsqLmxhYi5sb2NhbDCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKfRmbCfWk+V1f+YlsIE4hyY6+Qr1yKf
g1wEqLOFHtGVM3re/WmFuD+4sCyU1VkoiJhf2+X8tG7x2WTpKKtZM3N7bHpb7oPc
uz8N4GabfAIw287soLM521h6ZM01bWGQ0vxXR+xtCAyqz6JJdK0CNjNEdEkYcaG8
PFrFUy31UPmCqQnEy+GYZipErrWTpWwbF7FWr5u7efhTtmdR6Y8vjAZqFddigXMy
EY4F8sdic7btlQQPKG9JIaWny9RvHBmLgj0px2i5Rp5k1JIECD9kHGj44O5lBEcv
OFY6ecAPv4CkZB6CloftaHjUGTSeVeBAvXBK24Ci9e/ynIUNJ/CM9pcCAwEAAaOC
AuUwggLhMBYGA1UdEQQPMA2CCyoubGFiLmxvY2FsMB0GA1UdDgQWBBROkmTIhXT/
EjkMdpc4aM6PTnyKPzAfBgNVHSMEGDAWgBTEPQVWHlHqxd11VIRYSCSCuHTa4TCB
zQYDVR0fBIHFMIHCMIG/oIG8oIG5hoG2bGRhcDovLy9DTj1NUzIwMTItQ0EsQ049
V0lOLTVBME5HNDkxQURCLENOPUNEUCxDTj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNl
cyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPWxhYixEQz1sb2NhbD9j
ZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlz
dHJpYnV0aW9uUG9pbnQwgbkGCCsGAQUFBwEBBIGsMIGpMIGmBggrBgEFBQcwAoaB
mWxkYXA6Ly8vQ049TVMyMDEyLUNBLENOPUFJQSxDTj1QdWJsaWMlMjBLZXklMjBT
ZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPWxhYixEQz1s
b2NhbD9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlv
bkF1dGhvcml0eTAOBgNVHQ8BAf8EBAMCBaAwPQYJKwYBBAGCNxUHBDAwLgYmKwYB
BAGCNxUIgYKsboLe0U6B4ZUthLbxToW+yFILh4iaWYXgpQUCAWQCAQMwSwYDVR0l
BEQwQgYIKwYBBQUHAwEGCCsGAQUFBwMHBggrBgEFBQcDBgYIKwYBBQUIAgIGCCsG
AQUFBwMFBggrBgEFBQcDAgYEVR0lADBfBgkrBgEEAYI3FQoEUjBQMAoGCCsGAQUF
BwMBMAoGCCsGAQUFBwMHMAoGCCsGAQUFBwMGMAoGCCsGAQUFCAICMAoGCCsGAQUF
BwMFMAoGCCsGAQUFBwMCMAYGBFUdJQAwDQYJKoZIhvcNAQELBQADggEBAKQnqcaU
fZ3kdeoE8v2Qz+3Us8tXxXaXVhS3L5heiwr1IyUgsZm/+RLJL/zGE3AprEiITW2V
Lmq04X1goaAs6obHrYFtSttz/9XlTAe1KbZ0GlRVg9LblPiF17kZAxALjLJHlCTG
5EQSC1YqS31sTuarm4WPDJyMShc6hlUpswnCokGRMMgpx2GmDgv4Zf8SzJJ0NI4y
DgMozuObwkNUXuHbiLuoXwvb2Whm11ysidpl+V9kp1RYamyjFUo+agx0E+L1zp8C
i0YEwYKXgKk3CZdwJfnYQuCWjmapYwlLGt5S59Uwegwro6AsUXY335+ZOrY/kuLF
tzR3/S90jDq6dqk=
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ftd.lab.local/+CSCOE+/saml/sp/acs?tgname=SAML_TG" />
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://ftd.lab.local/+CSCOE+/saml/sp/logout"/><SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://ftd.lab.local/+CSCOE+/saml/sp/logout"/></SPSSODescriptor>
</EntityDescriptor>
FTDからのmetadata.xmlがIdPに提供され、信頼できるデバイスとして提供された後、VPN接続の下でテストを実行できます。
確認
次に示すコマンドを使用して、認証方式としてSAMLを使用してVPN AnyConnect接続が確立されたことを確認します。
firepower# show vpn-sessiondb detail AnyConnect
Session Type: AnyConnect Detailed
Username : xxxx Index : 4
Assigned IP : 10.1.1.1 Public IP : 192.168.1.104
Protocol : AnyConnect-Parent SSL-Tunnel DTLS-Tunnel
License : AnyConnect Premium
Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 DTLS-Tunnel: (1)AES-GCM-256
Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 DTLS-Tunnel: (1)SHA384
Bytes Tx : 12772 Bytes Rx : 0
Pkts Tx : 10 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Group Policy : SAML_GP Tunnel Group : SAML_TG
Login Time : 18:19:13 UTC Tue Nov 10 2020
Duration : 0h:03m:12s
Inactivity : 0h:00m:00s
VLAN Mapping : N/A VLAN : none
Audt Sess ID : c0a80109000040005faad9a1
Security Grp : none Tunnel Zone : 0
AnyConnect-Parent Tunnels: 1
SSL-Tunnel Tunnels: 1
DTLS-Tunnel Tunnels: 1
AnyConnect-Parent:
Tunnel ID : 4.1
Public IP : 192.168.1.104
Encryption : none Hashing : none
TCP Src Port : 55130 TCP Dst Port : 443
Auth Mode : SAML
Idle Time Out: 30 Minutes Idle TO Left : 26 Minutes
Client OS : linux-64
Client OS Ver: Ubuntu 20.04.1 LTS (Focal Fossa)
Client Type : AnyConnect
Client Ver : Cisco AnyConnect VPN Agent for Linux 4.9.03047
Bytes Tx : 6386 Bytes Rx : 0
Pkts Tx : 5 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
SSL-Tunnel:
Tunnel ID : 4.2
Assigned IP : 10.1.1.1 Public IP : 192.168.1.104
Encryption : AES-GCM-256 Hashing : SHA384
Ciphersuite : ECDHE-RSA-AES256-GCM-SHA384
Encapsulation: TLSv1.2 TCP Src Port : 55156
TCP Dst Port : 443 Auth Mode : SAML
Idle Time Out: 30 Minutes Idle TO Left : 28 Minutes
Client OS : Linux_64
Client Type : SSL VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Linux 4.9.03047
Bytes Tx : 6386 Bytes Rx : 0
Pkts Tx : 5 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
DTLS-Tunnel:
Tunnel ID : 4.3
Assigned IP : 10.1.1.1 Public IP : 192.168.1.104
Encryption : AES-GCM-256 Hashing : SHA384
Ciphersuite : ECDHE-ECDSA-AES256-GCM-SHA384
Encapsulation: DTLSv1.2 UDP Src Port : 40868
UDP Dst Port : 443 Auth Mode : SAML
Idle Time Out: 30 Minutes Idle TO Left : 28 Minutes
Client OS : Linux_64
Client Type : DTLS VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Linux 4.9.03047
Bytes Tx : 0 Bytes Rx : 0
Pkts Tx : 0 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
トラブルシュート
FTD CLIの一部の確認コマンドは、ブラケットに示されているように、SAMLおよびリモートアクセスVPN接続のトラブルシューティングに使用できます。
firepower# show run webvpn
firepower# show run tunnel-group
firepower# show crypto ca certificate
firepower# debug webvpn saml 25
注:DARTのトラブルシューティングは、AnyConnectユーザのPCからでも実行できます。