はじめに
このドキュメントでは、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)では、複数の接続プロファイルで異なるIdPで保護されたアプリケーションを使用するように設定できます。これは、接続プロファイルの設定メニューにあるOverride Identity Provider Certificateオプションが有効なためです。この機能を使用すると、管理者は、接続プロファイルごとに特定のIdP証明書を使用して、シングルサインオン(SSO)サーバオブジェクトのプライマリIdP証明書を上書きできます。ただし、Firepower Device Manager(FDM)では同様のオプションが提供されないため、この機能は制限されます。2つ目のSAMLオブジェクトが設定されている場合、最初の接続プロファイルに接続しようとすると認証エラーが発生し、「シングルサインオン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
ファイルで指定された設定に基づいて、3650日間有効なSHA-256アルゴリズムを使用する、新しい2048ビットRSA秘密キーと自己署名証明書が生成されます。秘密キーは
.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ポータルにログインし、SAML認証で保護するエンタープライズアプリケーションに移動して、シングルサインオンを選択します。
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ファイルではなく)Id証明書のみをIdPからアップロードし、Skip CA Certificate Check
にチェックマークを付けます。
c. SAMLオブジェクトに新しい証明書を設定します。
d. SAMLオブジェクトを、SAMLを認証方法として使用し、Azureでアプリケーションが作成された別の接続プロファイルに設定します。変更を展開します
確認
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#