はじめに
このドキュメントでは、FDMを介してCSFでAzure as IdPを使用して、リモートアクセスVPNの複数の接続プロファイルのSAML認証を設定する方法について説明します。
前提条件
要件
次の項目に関する基本的な知識が推奨されます。
- Secure Socket Layer(SSL)証明書
- OpenSSL
- リモートアクセス仮想プライベートネットワーク(RAVPN)
- Cisco Secure Firewall Device Manager(FDM)
- Security Assertion Markup Language(SAML)
- Microsoft Azure
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアのバージョンに基づいています。
- OpenSSL
- Cisco Secure Firewall(CSF)バージョン7.4.1
- Cisco Secure Firewall Device Managerバージョン7.4.1
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
SAML(Security Assertion Markup Language)は、パーティ(特にアイデンティティプロバイダー(IdP)とサービスプロバイダー(SP)間で認証および認可情報を交換するためのオープンスタンダードです。 リモートアクセスVPN(RAVPN)接続やその他のさまざまなアプリケーションに対するSAML認証の使用は、数多くの利点があるため、ますます普及しています。Firepower Management Center(FMC)では、接続プロファイル設定メニューで使用可能なOverride Identity Provider Certificateオプションにより、複数の接続プロファイルで異なるIdP保護アプリケーションを使用するように設定できます。この機能を使用すると、管理者は、接続プロファイルごとに特定のIdP証明書を使用して、シングルサインオン(SSO)サーバオブジェクトのプライマリIdP証明書を上書きできます。ただし、Firepower Device Manager(FDM)では同様のオプションが提供されないため、この機能は制限されます。2つ目のSAMLオブジェクトが構成されている場合、最初の接続プロファイルに接続しようとすると認証エラーが発生し、「Authentication failed due to a problem retrieving the single sign-on cookie」というエラーメッセージが表示されます。 この制限を回避するために、カスタムの自己署名証明書を作成してAzureにインポートし、すべてのアプリケーションで使用できます。これにより、FDMにインストールする必要がある証明書は1つだけになり、複数のアプリケーションに対するシームレスなSAML認証が可能になります。
設定
ステップ1:OpenSSLを使用して自己署名証明書とPKCS#12ファイルを作成する
ここでは、OpenSSLを使用して自己署名証明書を作成する方法について説明します
- OpenSSLライブラリがインストールされているエンドポイントにログインします。
注:このドキュメントではLinuxマシンが使用されているため、一部のコマンドはLinux環境に固有です。ただし、OpenSSLのコマンドは同じです。
b. touch .conf
コマンドを使用して、コンフィギュレーションファイルを作成します。
root@host# touch config.conf
c.テキストエディタでファイルを編集します。この例では、Vimを使用し、vim .conf
コマンドを実行します。他のテキストエディタも使用できます。
root@host# vim config.conf
d.自己署名に含める情報を入力します。
< >の間の値は、必ず組織の情報で置き換えてください。
[req]
distinguished_name = req_distinguished_name
prompt = no
[req_distinguished_name]
C =
ST =
L =
O =
OU =
CN =
e.このコマンドを使用すると、.conf
ファイルで指定された設定に基づいて、新しい2048ビットRSA秘密キーと、SHA-256アルゴリズムを使用する3650日間有効な自己署名証明書が生成されます。秘密キーは.pem
に保存され、自己署名証明書は.crt
に保存されます。
root@host# openssl req -newkey rsa:2048 -nodes -keyout .pem -x509 -sha256 -days 3650 -config .conf -out .crt

f.秘密キーと自己署名証明書を作成した後、それらをPKCS#12ファイルにエクスポートします。このファイルの形式には、秘密キーと証明書の両方を含めることができます。
root@host# openssl pkcs12 -export -inkey .pem -in .crt -name -out .pfx

パスワードを書き留めます。
手順2: AzureとFDMにPKCS#12ファイルをアップロードします
FDMでSAML認証を使用している接続プロファイルごとに、Azureでアプリケーションを作成してください。

「手順1:OpenSSLを使用して自己署名証明書とPKCS#12ファイルを作成する」からのPKCS#12ファイルを取得したら、これを複数のアプリケーション用にAzureにアップロードして、FDM SSO構成で設定する必要があります。
ステップ 2.1:Azureへの証明書のアップロード
a. Azure Portalにログインし、SAML認証で保護するEnterpriseアプリケーションに移動して、シングルサインオンを選択します。
b. SAML Certificates セクションまでスクロールダウンして、More Options > Editの順に選択します。

c.ここで、Import certificateオプションを選択します。

d.以前に作成したPKCS#12ファイルを検索し、PKCS#12ファイルの作成時に入力したパスワードを使用します。

e.最後に、Make Certificate Activeオプションを選択します。

注:各アプリケーションに対して、「手順2.1:証明書をAzureにアップロードする」を必ず実行してください。
ステップ 2.2:証明書のFDMへのアップロード
a. Objects > Certificates > Click Add Trusted CA certificate
に移動します。

b.任意のトラストポイント名を入力し、(PKCS#12ファイルではなく)IdPからID証明書だけをアップロードして、Skip CA Certificate Check
にチェックマークを付けます。

c. SAMLオブジェクトに新しい証明書を設定します。

d. SAMLを認証方法として使用し、Azureでアプリケーションを作成した別の接続プロファイルでSAMLオブジェクトを設定します。変更を展開します。


確認
show running-config
webvpnコマンドとshow running-config tunnel-group
コマンドを実行して設定をレビューし、同じIDP URLが異なる接続プロファイルで設定されていることを確認します。
firepower#show running-confuting webvpn
webvpn
enable outside
http-headers
hsts-server
enable
max-age 31536000
include-sub-domains
no preload
hsts-client
enable
x-content-type-options
x-xss-protection
content-security-policy
anyconnect image disk0:/anyconnpkgs/anyconnect-win-4.10.08029-webdeploy-k9.pkg 2
anyconnect profiles defaultClientProfile disk0:/anyconncprofs/defaultClientProfile.xml
anyconnect enable
saml idp https://saml.lab.local/af42bac0/
url sign-in https://login.saml.lab.local/af42bac0/saml2
url sign-out https://login.saml.lab.local/af42bac0/saml2
base-url https://Server.cisco.com
trustpoint idp Azure_SSO
trustpoint sp FWCertificate
no signature
force re-authentication
tunnel-group-list enable
cache
disable
error-recovery disable
firepower#
firepower# show running-config tunnel-group
tunnel-group SAML_TG_Admin type remote-access
tunnel-group SAML_TG_Admin general-attributes
address-pool Admin_Pool
default-group-policy SAML_GP_Admin
tunnel-group SAML_TG_Admin webvpn-attributes
authentication saml
group-alias SAML_TG_Admin enable
saml identity-provider https://saml.lab.local/af42bac0/
tunnel-group SAML_TG_IT type remote-access
tunnel-group SAML_TG_IT general-attributes
address-pool IT_Pool
default-group-policy SAML_GP_IT
tunnel-group SAML_TG_IT webvpn-attributes
authentication saml
group-alias SAML_TG_IT enable
saml identity-provider https://saml.lab.local/af42bac0/
firepower#