目次
- 目次
- 概要
- バージョン情報
- Microsoft 365のテナント制限の概要
- BIG-IPでのテナント制限の要素
- BIG-IPでのMicrosoft 365のドメインのSSL復号化
- テナント情報の確認
- テナント制限を行うiRules
- SSL Forward Proxy向けVirtual ServerへのiRulesの適用
- BIG-IP Forward Proxyの証明書の信頼設定
- テナント制限の確認
- 参考情報
概要
SSLO (SSL Orchestrator)モジュールの v17.0.0.1-10.1 以前では、BIG-IP Forward Proxy構成でMicrosoft 365 (MS365)のテナント制限は標準機能にはありませんでした。 そのため、iRulesによるコード拡張での実装が必要になります。
SSLOの v17.0.0.1-10.1 からはServiceの一つとして実装されたため、下記の記事を参考にiRulesによる実装と適宜使い分けてください。
本記事では下記のSSLOモジュールを利用した実装 (SSLO実装)をベースにしております。
バージョン情報
本記事は下記のバージョンで検証を行っております。
F5 BIG-IP Virtual Edition Version 16.1.2
BIG-IPのモジュールは、LTM, APM, SSLOを有効化しております。SSL Orchestrator Package Version 16.1.0
SSLOはiApps LXのパッケージとして提供されているため、個別のバージョン情報があります。
Microsoft 365のテナント制限の概要
Microsoft 365は多数のテナントを収容していますが、
Microsoft 365のログイン画面はどのテナントにも共通しています。
そのため、単にForward ProxyでMicrosoft 365サービスを許可対象としてるだけでは、
悪意あるものがシステム管理者が把握していないテナントにログインして、情報の持ち出しを行えてしまう可能性があります。
その対策として、Microsoft 365に接続する際に、接続許可対象のテナントをHTTP Headerに書き加えて、 管理外のテナントへの接続を防ぐのがテナント制限になります。
BIG-IPでのテナント制限の要素
MS365のドメインをSSL復号化の対象にします。 HTTP Headerの情報を書き換えるため、MS365のドメインをSSL復号化"除外"にしてしまうと暗号化通信を紐解いて書き換えが行えなくなります。
SSL Forward Proxy向けVirtual Serverに、HTTP Headerを書き換えるiRulesを適用します。
BIG-IPがSSL通信を紐解く挙動となるため、Client (Web Browser)にはBIG-IPのSSL復号化用の証明書を信頼する設定が必要になります。
BIG-IPでのMicrosoft 365のドメインのSSL復号化
SSLOのGuided Configurationで設定をデプロイすると、基本的にはSSL復号化を行う状態となります。
そして、SSL復号化"除外"を行いたい対象を個別に指定するイメージとなります。
そのため、設定を個別に調整していなければ、Microsoft 365関連ドメインはSSL復号化の対象になります。
補足情報ですが、デフォルトでSSL復号化"除外"の対象になっているのは URL Categories: Pinners
になります。
URL Categories: Pinners
の設定は、SSL復号化してしまうと通信影響が出そうなメジャーな通信先がリストされています。
下記はSSLOのGuided ConfigurationのSecurity Policyの設定画面です。
SSL Proxy Actionで Bypass
(SSL復号化"除外")として設定されているのが URL Categories: Pinners
だと判断できます。
また、URL Categories: Pinners
以外の通信 (All Traffic)は、Intercept
(SSL復号化)として設定されています。
下記は URL Categories: Pinners
の設定画面です。デフォルトではMicrosoft 365関連ドメインは含まれてません。
テナント情報の確認
Microsoft Azure PortalのDashboardで情報を確認できます。
テナント制限を行うiRules
iRulesによるコード拡張を行うと、実装次第でアクセス制御をバイパスされる可能性があるので、本記事のコードはあくまでもサンプルとして扱ってください。
iRulesのサンプル コード
iRules名:
Rule_MS365_Tenant_Restriction
(適宜修正してください。)設定箇所 例示用の設定値 備考 Restrict-Access-To-Tenants samplecorp.test テナントに紐付くドメインを指定します。 Restrict-Access-Context XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX テナントに紐付く Tenant ID を指定します。
when HTTP_REQUEST {
set domain [string tolower [HTTP::host]]
if { $domain equals "login.microsoftonline.com"
|| $domain equals "login.microsoft.com"
|| $domain equals "login.windows.net" } {
HTTP::header remove Restrict-Access-To-Tenants
HTTP::header remove Restrict-Access-Context
HTTP::header replace Restrict-Access-To-Tenants "samplecorp.test"
HTTP::header replace Restrict-Access-Context "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}
}
要件によっては、各グループ会社や、本番環境と検証環境で接続先のテナントを分けたい場合が考えられます。 その場合は、接続元の情報をハード コーディングしたり、Data Groupの情報を参照する実装方法が想定されます。
実装時の備忘録
HTTP::header
コマンドのremove
で既にHTTP Headerが付与されている場合は削除しております。 攻撃者が恣意的に許可対象のドメインを付与している場合は、アクセス制御をバイパスされる可能性があるためです。HTTP Headerの書き換え対象の通信を、Micorsoft 365のドメインに限定しております。
対象を限定しないとHTTP Headerが常に書き換えられてしまうため、最悪の場合は悪意あるWebサイトの運営者に「どの会社からの通信か?」を特定される恐れがあります。
そうなってしまうと、セキュリティ意識の低い実装をしている会社だと認識されて、攻撃対象に含まれる可能性があるかもしれません。SSL Forward Proxy向けVirtual Serverでドメイン名 (FQDN)の情報を取得するのに
HTTP::host
コマンドを使用しています。 HTTPS通信でHTTP::uri
コマンドを使用するとPath部分のみしか取得できなかったためです。
SSL Forward Proxy向けVirtual ServerへのiRulesの適用
SSL Forward Proxy向けのVirtual Serverに適用します。
筆者の環境の例だと、 sslo_DEMO-in-t-4
(末尾 -in-t-4) のVirtual ServerがSSL Forward Proxy向けになります。
BIG-IP Forward Proxyの証明書の信頼設定
Forward Proxyは中間者攻撃のようにSSL通信を紐解くため、 Client (Web Browser)には接続先(例: Microsoft 365)ではなく、Forward ProxyのSSL復号化用の証明書が表示されます。
別ドメインに画面遷移をする度に証明書の警告が出てしまうため、Forward Proxyの証明書を信頼させます。
筆者の経験談にはなりますが、 証明書の警告が出る度にWeb Browser側で無視しようとした場合は、 別ドメインのコンテンツを大量に読み込むようなWebサイトで、画面上のパーツが表示されないように見受けられるケースがありました。
SSL復号化用の証明書のファイルですが、
SSLOのGuided Configurationを用いてる場合は、SSL Configuration
画面の Client-side SSL
項目の Certificate Key Chain
設定で指定されている証明書が該当します。
実際の証明書ファイルは、メニュー: System > Certificate Management > Traffic Certificate Management > SSL Certificate List
に存在します。
筆者の環境の場合は default.crt
が該当するので Export...
ボタンから証明書をダウンロードします。
SSL復号化用の証明書ファイルをダウンロードしたら、適宜証明書を信頼させます。
テナント制限の確認
Microsoft 365のログイン画面で、許可されていないテナントのアカウントでログインしようとすると、下記のような画面が表示されてログインできないのが確認できます。
参考情報
コミュニティの下記の情報が参考になります。ICAP連携をしている点が、筆者の記事と大きく異なります。