My Home NW Lab

逸般の誤家庭のネットワーク

【基本要素】BIG-IP Forward Proxy構成を実現するための2つのVirtual Serverと通信フロー

目次

概要

BIG-IPでForward Proxy構成を組むには、基本的には2つのVirtual Serverを設定する必要があります。

便宜上の名称 種別 説明
HTTP Forward Proxy向けVirtual Server SSL Bypass SSL復号化の処理をBypass (迂回)するタイプのVirtual Serverです。
SSL Forward Proxy向けVirtual Server SSL Intercept SSLの通信をIntercept (傍受)して、SSL復号化するタイプのVirtual Serverです。

注意点として、SSLO (SSL Orchestrator)のGuided Configurationの使用有無で通信フローが異なります。

補足資料

BIG-IP Forward Proxy構成の通信フローは関連する要素を含めると複雑になり、 本記事内で全ては扱いきれないため、筆者の作成したスライド資料を補足資料として参照してください。

speakerdeck.com

本記事ではリファレンス用途の活用を想定して、スライド資料の内容より参照性の高い情報を記載します。

対象バージョン情報

本記事に記載の情報は、下記のバージョンで調査を行っております。

  • F5 BIG-IP Virtual Edition Version 16.1.2
    BIG-IPのモジュールは、LTM, APM, SSLOを有効化しております。

  • SSL Orchestrator Package Version 16.1.0
    SSLOはiApps LXのパッケージとして提供されているため、個別のバージョン情報があります。

実装方式

BIG-IP Forward Proxy構成には大きく分けて3つの実装方式 (標準実装, SSLO実装, 応用実装)があります。
筆者が便宜的に呼んでいる名称となりますが、SSLOの使用有無に関わるため紹介します。

f:id:myhomenwlab:20220114001552j:plain
実装方式の概要

BIG-IPには様々なモジュールがありますが、各実装での使用が想定される主要モジュールを整理すると下記のイメージになります。

f:id:myhomenwlab:20220114001614j:plain
各実装の違い

SSLOの未使用時 (標準実装時 / LTMのみ使用)

SSLOを使用せずにLTMの機能のみで純粋に設定した場合の通信フローです。
SSLOの未使用時 (標準実装時 / LTMのみ使用)の設定例としては、筆者の下記の記事を参考にしてください。

myhomenwlab.hatenablog.com

HTTP(80/tcp)通信と、HTTPS(443/tcp)通信で通信フローが異なるのが特徴です。
SSL Forward Proxy向けのVirtual Serverで復号化処理を行う特性であるため、
* HTTP(80/tcp)通信は、HTTP Forward Proxy向けVirtual Serverのみを通ります。
* HTTPS(443/tcp)通信は、SSL Forward Proxy向けのVirtual Serverと、HTTP Forward Proxy向けVirtual Serverの両方を通ります。

f:id:myhomenwlab:20220113230547j:plain
Forward Proxy構成のVirtual Serverの動作イメージ - HTTP(80/tcp)通信の場合

f:id:myhomenwlab:20220113230602j:plain
Forward Proxy構成のVirtual Serverの動作イメージ - HTTPS (443/tcp)通信の場合

SSLOの使用時 (SSLO実装時)

SSLOのGuided Configurationを使用して設定した場合の通信フローです。
SSLOの使用時 (SSLO実装時)の設定例としては、筆者の下記の記事を参考にしてください。
myhomenwlab.hatenablog.com

f:id:myhomenwlab:20220114001013j:plain
SSLO使用時のVirtual Serverの動作イメージ

SSLOの使用時 (SSLO実装時)は、HTTP Forward Proxy向けVirtual Serverに対して virual コマンド で通信フローを曲げるiRulesが適用されています。
特徴として、SSL Forward Proxy向けVirtual Serverを確実に通る通信フローとなるため、アクセス制御の一元的な管理をしやすくなります。

下記に通信フローを曲げるiRulesに関する設定画面を紹介します。

f:id:myhomenwlab:20220113232821j:plain
SSLOでデプロイされたVirtual Serverに紐付くiRulesの確認 (1/2)

f:id:myhomenwlab:20220113232829j:plain
SSLOでデプロイされたVirtual Serverに紐付くiRulesの確認 (2/2)

f:id:myhomenwlab:20220113232704j:plain
HTTP Forward Proxy向けVirtual Serverに適用されているiRulesの virtual コマンド

また、SSL Forward Proxy向けVirtual ServerにてHTTP(80/tcp)通信を受け入れるために、紐づいているSSL Client Profileの Non-SSL Connections が Enabled になっています。

下記に Non-SSL Connections に関する設定画面を紹介します。

f:id:myhomenwlab:20220113234728j:plain
SSLOでデプロイされたVirtual Serverに紐付くSSL Client Profileの設定の確認 (1/5)

f:id:myhomenwlab:20220113234750j:plain
SSLOでデプロイされたVirtual Serverに紐付くSSL Client Profileの設定の確認 (2/5)

f:id:myhomenwlab:20220113234808j:plain
SSLOでデプロイされたVirtual Serverに紐付くSSL Client Profileの設定の確認 (3/5)

f:id:myhomenwlab:20220113235255j:plain
SSLOでデプロイされたVirtual Serverに紐付くSSL Client Profileの設定の確認 (4/5)

f:id:myhomenwlab:20220113235501j:plain
SSLOでデプロイされたVirtual Serverに紐付くSSL Client Profileの設定の確認 (5/5)

最後に

実装方式による通信フローを意識してないと、 各種Profileの適用先Virtual Serverを見誤ったり、コード拡張の処理フローを誤って脆弱性を生み出す可能性も秘めているため注意してください。