My Home NW Lab

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

BIG-IP Forward Proxy構成のBASIC認証 (LocalDB Auth版)

BIG-IP Forward Proxy構成でのBASIC認証の設定例を紹介します。 Forward Proxy構成では、SSLOの使用有無によって適用方法が異なる点に注意が必要です。

認証の連携先は、BIG-IP自身が内部的に保持しているLocal DBを使用します。

BASIC認証 (LocalDB Auth)の認証フロー (Per-Session Policy)

対象バージョンの情報

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

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

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

設定の流れ

Local DBの設定を先に行い、BASIC認証の認証フロー (Per-Session Policy)を作成する際にLocal DBを認証連携先として登録します。そして、認証フロー (Per-Session Policy)をVirtual Serverに適用します。

最後のVirtual Serverへの認証フローの適用は下記の2種類のパターンがあります。

  • SSLOを使用している場合 (SSLO実装)は、SSLOのGuided Configurationから認証フローの紐付けを行います。
    SSLOのGuided ConfigurationからHTTP Forward Proxy向けVirtual Serverに間接的に紐付けが行われます。

  • SSLOを使用していない場合 (標準実装)は、HTTP Forward Proxy向けVirtual Serverに直接紐付けを行います。

設定手順

Local User DB Instanceの作成

  • メニュー: Access > Authentication > Local User DB > Instances に移動します。

    メニュー: Access > Authentication > Local User DB > Instances

  • Create New Instance... ボタンを押下して、任意のパラメータでLocal User DBのInstanceを作成します。
    本記事では下記のパラメータを指定しています。

    設定項目 設定値 備考
    Name LocalUserDB 任意の名称で Local User DBのInstanceを作成します。

    Create New Instance... ボタン

    Create New Local User DB Instance

Local Userの作成

  • メニュー: Access > Authentication > Local User DB > Users に移動します。

    メニュー: Access > Authentication > Local User DB > Users

  • Create New User... ボタンを押下して、任意のパラメータでLocal Userを作成します。
    本記事では下記のパラメータを指定しています。

    設定項目 設定値 備考
    User Name testuser 任意のLocal User名で作成します。
    Password / Confirm Password PASSWORD 任意のPasswordを指定します。筆者は検証環境であったので PASSWORD の文字列を指定しています。
    Instance /Common/LocalUserDB 先ほど作成していたLocal User DBのInstanceを指定します。

    Create New User... ボタン

    Create New Local User

BASIC認証のPer-Session Policyの作成

  • メニュー: Access > Profiles / Policies > Access Profiles (Per-Session Policies) に移動して、Create... ボタンを押下して下記のパラメータを参考にAccess Profile (Per-Session Policy)を作成します。

    設定項目 設定値 備考
    Name BASIC_Auth 任意の名称で作成します。
    Profile Type SWG-Explicit L3 Explicit Forward Proxy構成のため SWG-Explicit を指定しています。
    Languages (Accepted Languages) English (en) 任意の言語を指定します。
    Default Language English (en) 任意の言語を指定します。

    メニュー: Access > Profiles / Policies > Access Profiles (Per-Session Policies)

    Access Profiles (Per-Session Policies) と Per-Request Policies と似たような名前なので、設定対象を間違えないように注意してください。

    メニュー: Access > Profiles / Policies > Access Profiles (Per-Session Policies) の拡大画面

    Access Profiles (Per-Session Policies) の設定箇所 (1/2)

    Access Profiles (Per-Session Policies) の設定箇所 (2/2)

  • メニュー: Access > Profiles / Policies > Access Profiles (Per-Session Policies) に移動して、先ほど作成したAccess Profile (Per-Session Policy)を Edit... します。
    Visual Policy Editorの画面が開かれるため、この後は認証フローを編集します。

    Access Profile (Per-Session Policy) の編集

Visual Policy EditorでAccess Profiles (Per-Session Policies)`の編集

BASIC認証Access Profiles (Per-Session Policies)の全容

BASIC認証のPer-Session Policyの全容は下記の画面の通りとなります。 順を追ってVisual Policy Editorの各Itemの設定を示していきます。

BASIC認証 (LocalDB Auth)の認証フロー (Per-Session Policy)

Access Profiles (Per-Session Policies)の初期状態

Access Profiles (Per-Session Policies)の初期状態は下記の画面のようになっています。

Access Profiles (Per-Session Policies)の初期状態

HTTP 407 ResponseのItemの設定

HTTP 407 Response のItemは下記のパラメータで作成しています。

設定項目 設定値 備考
Name HTTP 407 Response
Basic Auth Realm Realmは指定が必須ではないため、この例では省略しています。
HTTP Auth Level basic BASIC認証を指定します。
Language en 言語設定は適宜指定します。

HTTP 407 ResponseのItemの設定

LocalDB AuthのItemの設定

LocalDB Auth のItemは下記のパラメータで作成しています。

設定項目 設定値 備考
Name LocalDB Auth
LocalDB Instance /Common/LocalUserDB 事前に作成していたLocal User DBのInstanceを指定します。

LocalDB AuthのItemの設定

Ending (Allow, Deny)の設定

Local User DBによる認証成功時に許可を行いたいため、 LocalDB Auth のItemの Successful の分岐に対応するEnding (Allow, Deny)を Allow に指定します。

Ending (Allow, Deny)の設定 - 変更前 (Before) & 変更中

Ending (Allow, Deny)の設定 - 変更後 (After)

Apply Access Policyの実行

Visual Policy Editorでの設定が完了したら、画面の左上にある Apply Access Policy を押下します。

Apply Access Policyの実行


Per-Session Policyの適用 (2パターンあり)

SSLOを使用している場合 (SSLO実装)SSLOを指定しない場合 (標準実装) の2パターンあるので適切な手順を参照してください。


↓↓↓↓ ここからが SSLOを使用している場合 (SSLO実装) です。 ↓↓↓↓

SSLOを使用している場合 (SSLO実装)

筆者は下記の記事をベースに作成した設定に紐付けております。

myhomenwlab.hatenablog.com

SSLOで設定をデプロイし直すと、バージョンや設定状況に応じて既存設定が上書きされる可能性があります。 設定が上書きされるのを忌避する場合は、SSLOを指定しない場合 (標準実装) の手順を参考にしてください。

設定の同期

冗長構成の場合はSSLOのGuided Configurationの設定を始める前に、設定の同期漏れによる設定崩壊を避けるために事前にConfigSyncをしてください。

ConfigSyncの実行 (設定同期前)
ConfigSyncの設定同期の完了後

SSLOの設定変更対象への移動

メニュー: SSL Orchestrator > ConfigurationTopologies タブより、設定変更対象を開きます。

SSLOの設定変更対象への移動

Interception RuleのAccess Profileの指定
  • Interception Rule の設定画面を開きます。

    Interception Ruleの設定画面

  • Proxy Server Settings セクションのAccess Profileの設定に、今回作成したAccess Profile (Per-Session Policy)を指定します。

    Access Profileの指定

SSLOの設定変更後のデプロイ
  • Summary の画面を開いて、Preview Merge Config もしくは Deploy の適切な方を選んでデプロイします。

    SSLOの設定変更後のデプロイ

↑↑↑↑ ここまでが SSLOを使用している場合 (SSLO実装) です。 ↑↑↑↑



↓↓↓↓ ここからが SSLOを指定しない場合 (標準実装) です。 ↓↓↓↓

SSLOを指定しない場合 (標準実装)

HTTP Forward Proxy向けのVirtual Serverに適用します。
筆者は下記の記事をベースに作成した設定に紐付けております。

myhomenwlab.hatenablog.com

設定対象のHTTP Forward Proxy向けVirtual Serverに移動

設定対象のHTTP Forward Proxy向けVirtual Serverに移動します。
筆者の環境の下記の画面キャプチャでは、Service Port が 8080 で受け付けているVirtual Serverが設定対象になります。

設定対象のHTTP Forward Proxy向けVirtual Serverに移動

Access Profileの指定

Access Policy のセクションから Access Profile の設定に、今回作成したAccess Profile (Per-Session Policy)を指定します。

Access Profileの指定

↑↑↑↑ ここまでが SSLOを指定しない場合 (標準実装) です。 ↑↑↑↑


ConfigSync (冗長構成の場合)

冗長構成の場合はConfigSyncで設定変更後の同期を行ってください。

疎通確認

curl コマンドを用いる場合は、下記を例に引数を環境に応じて調整してください。

curl --proxy ADDRESS:PORT --proxy-user 'testuser:PASSWORD' http://www.example.com