F5 SSLO セットアップガイド i-FILTER編

最終更新日: 2021年8月16日

F5 SSL Orchestrator (SSLO)と WEB フィルタリング製品である i-FILTER との連携手順をご紹介致します。 (本ガイドは、一度BIG-IPを設定したことのある方を対象とした内容となっております。)

はじめに

こちらのページでは、以下のオフィシャルなドキュメントの補足となる資料や、複数の機能を組合せてソリューションを実現する方法をご紹介いたします。

F5のオフィシャルなドキュメントはこちらにございます。

F5 SSLO (L3 Explicit Proxy) とi-FILTER ICAP版の連携設定

本章では、SSLOの可視化ゾーンにi-FILTER ICAP版を配置し、ICAPプロトコルで連携する構成について、ご紹介致します。

F5 SSLOとi-FILTER ICAP版連携の流れ

F5 SSLOとi-FILTER ICAP版の連携の流れは以下の通りです。

_images/mod1-1.png
  1. クライアントがパソコン(AD)にログオンします。
  2. SSLOでユーザ認証を実施し(NTLM認証、Kerberos認証の場合は自動的に認証が実施されます)、SSL通信を復号します。
  3. WEB接続先情報とSSLOで認証が成功したユーザ情報を i-FILTERにICAPで送ります。
  4. ユーザ情報を元にURLフィルタリングルールを適用し、接続が許可されていないWEBサイトの場合は、ブロック画面をクライアントに表示します。
  5. 許可された通信に関しては、SSL 通信を再暗号化し、WEBサーバへ接続します。

本ガイドの利用バージョンと構成イメージ

本ガイドは、以下の製品バージョンを利用して、作成しております。

  1. 利用バージョン

    製品名 バージョン
    F5 SSL Orchestrator v15.1.2-0.0.9Final ‒ 7.5.2
    i-FILTER ICAP Server (Linux)
    Ver.10.42R01-20200923 (CentOS v7.7.1908 ※)
    ※ デジタルアーツ様による製品サポートOSはRed Hat Enterprise Linuxとなります。

    注釈

    • v15.1.2.1以上 のバージョンをご利用下さい。(2021年3月追記)
    • (各F5代理店でサポート可能な範囲において、)極力最新のバージョンを適用頂くことをおすすめ致します。最新のバージョンはAskF5でご確認下さい。
    • Proxy認証を行いたい場合、もしくは、i-FILTERのログにADユーザ名を出力したい場合は、APMのライセンスが必要となります。
  2. 本ガイドにおける構成イメージ

    _images/mod2-1.png

ライセンスアクティベーション、プロビジョニング、CA証明書/鍵登録

  1. Next ボタンを押します。

    _images/mod3-1.png

  2. ライセンスをアクティベーションします。

  3. 以下のモジュール((SSL復号・再暗号化:LTM,AVR,iRulesLX,SSLO)&(認証:APM)) をプロビジョニングします。(ライセンスはSSLOとAPMの2つを利用しています。)

    _images/mod3-2.png

  4. Next ボタンを押します。

    _images/mod3-3.png

  5. ホスト名タイムゾーンRootパスワード を設定して、Next ボタンを押します。

    _images/mod3-4.png

  6. SSLOでサーバ証明書を書き換える際に利用する CA証明書CA鍵 を選択し、任意の名前 を設定し、Next ボタンを押します。

    _images/mod3-5.png

  7. Finished ボタンを押します。

    _images/mod3-6.png

最新版のSSL Orchestrator RPMへのアップグレード

  1. AskF5(https://support.f5.com/)より最新版のSSLO RPMをダウンロードします。(SSLOにプリインストールされているRPMのバージョンが最新の場合は、以下の操作は不要です。)

    _images/mod4-1.png

  2. SSL Orchestrator >> Configuration の画面にて、右上の アップグレードボタン を押します。

    _images/mod4-2.png

  3. Choose File にて、先程ダウンロードしたRPMを選択し、Upload and Install を押します。

    _images/mod4-3.png

  4. バージョンがアップグレードされていることを確認します。

    _images/mod4-4.png

Networkの基本設定

  1. VLANの設定を行います。

    _images/mod5-1.png

  2. Self IPの設定を行います。

    _images/mod5-2.png

  3. デフォルトゲートウェイの設定を行います。

    _images/mod5-3.png

DNS, NTPの設定

  1. DNSの設定を行います。

    _images/mod6-1.png

  2. NTPの設定を行います。

    _images/mod6-2.png

i-FILTERにてHTTP/HTTPS判別するための設定(Local Traffic Policyの設定)

 i-FILTER ICAP版は、ICAPのリクエストヘッダの一部でHTTPサーバへの通信かHTTPSサーバへの通信かを判別しています。i-FILTERがHTTP/HTTPS判別可能となるようにLocal Traffic Policyにてルールを作成します。同時にi-FILTEはICAPレスポンスはチェックしないので、ICAPレスポンスチェックを無効にします。また、i-FILTERによるURL Filteringチェック後に、リクエストヘッダを元の値に戻すためのLocal Traffic Policyルールも作成します。こちらのルールでは実際にICAP通信は行わないので、ICAP通信を無効にします。

  1. Local Traffic >> Policies >> Policies List にて、Create ボタンを押します。

    _images/mod7-1.png

  2. 任意のポリシー名 を入力し、Create Policy ボタンを押します。

    _images/mod7-2.png

  3. HTTPS用のルールを作成します。Rulesの Create ボタンを押します。

    _images/mod7-3.png

  4. 任意のRule名 を入力し、Match all of the following conditions: マークをクリックし、以下のように入力します。

    _images/mod7-4.png

    Match all of the following conditions: 必要有無
    TCP port is any of 443 at client accepted time. 必須
    Apply to traffic on local side of external interface 必須

  5. 同様に、Do the following when the traffic is matched: マークをクリックし、以下のように入力し、Save ボタンを押します。(デバック用のログルールは任意で追加します。)

    _images/mod7-5.png

    Do the following when the traffic is matched: 必要有無
    Insert HTTP Header named urihttps with value tcl:[HTTP::uri] at request time. 必須
    Replace HTTP URI full string with value tcl:https://[HTTP::host][HTTP::uri] at request time. 必須
    Disable response adapt at response time. 必須
    Log message tcl: HTTPs(443) URI was replaced to: [HTTP::uri] at request time. 任意
    Facility: local0 Priority: info 任意

  6. 同様にHTTP用のルールを作成します。

    _images/mod7-6.png

    Match all of the following conditions: 必要有無
    TCP port is any of 80 at client accepted time. 必須
    Apply to traffic on local side of external interface 必須
    Do the following when the traffic is matched: 必要有無
    Insert HTTP Header named urihttp with value tcl:[HTTP::uri]** at **request time. 必須
    Replace HTTP URI full string with value tcl:http://[HTTP::host][HTTP::uri] at request time. 必須
    Disable response adapt at response time. 必須
    Log message tcl: HTTP(80) URI was replaced to: [HTTP::uri] at request time. 任意
    Facility: local0 Priority: info 任意

  7. 2つのルール作成後は、以下のようになります。Save Draft ボタンを押します。

    _images/mod7-7.png

  8. Publish ボタンを押すと、以下のようになります。

    _images/mod7-8.png

  9. 上記手順と同様に、以下のようなリクエストヘッダをもとに戻すLocal Traffic Policyルールを作成します。

    _images/mod7-9.png

    Match all of the following conditions: 必要有無
    TCP port is any of 443 at client accepted time. 必須
    Apply to traffic on local side of external interface 必須
    Do the following when the traffic is matched: 必要有無
    Replace HTTP URI full string with value tcl:[HTTP::header values urihttps] at request time. 必須
    Remove HTTP Header named urihttps at request time. 必須
    Disable request adapt at request time. 必須
    Disable response adapt at response time. 必須
    Match all of the following conditions: 必要有無
    TCP port is any of 80 at client accepted time. 必須
    Apply to traffic on local side of external interface 必須
    Do the following when the traffic is matched: 必要有無
    Replace HTTP URI full string with value tcl:[HTTP::header values urihttp] at request time. 必須
    Remove HTTP Header named urihttp at request time. 必須
    Disable request adapt at request time. 必須
    Disable response adapt at response time. 必須

NTLM認証設定

 APMで行う認証の設定を行います。ここでは、NTLM認証の設定を行います。ADサーバ(ドメインコントローラ、DNS)の構築済みであることを前提としております。

  1. Access >> Authentication >> NTLM >> Machine Account を選択し、Create ボタンを押します。

    _images/mod8-1.png

  2. 任意の名前 を設定し、Machine Account Name には 任意のSSLO識別名 を入力し、Domain FQDNAdminユーザ名パスワード を入力し、Join を押します。

    _images/mod8-2.png

  3. 以下のようになります。

    _images/mod8-3.png

  4. Access >> Authentication >> NTLM >> NTLM Auth Configuration を選択し、Create ボタンを押します。

    _images/mod8-4.png

  5. 任意の名前 を設定し、Machine Account Name先程作成したもの を選択します。Domain Controller FQDN List には ご利用のドメイン名(FQDN名) を指定し、Finished ボタンを押します。

    _images/mod8-5.png

  6. Access >> Profiles/Policies >> Access Profiles(Per-Session Policies) を選択し、Create ボタンを押します。

    _images/mod8-6.png

  7. 任意の名前 を設定し、Policy TypeSWG-Explicit を選択し、Customization TypeStandard を選択し、User Identification Method にて、Credential を選択し、NTLM Auth Configuration先程作成したもの を選択し、Languagesご利用の言語 を選択して、Finished ボタンを押します。

    _images/mod8-7.png

  8. 作成されたAccess Profileの一覧から先程作成したプロファイルを見つけ、Per-Session Policy欄の Edit を押します。

    _images/mod8-8.png

  9. ブラウザの別タブにVPEが表示されます。Startの右隣の ボタンを押します。

    _images/mod8-9.png

  10. Authenticationタブの NTLM Auth Result を選択し、Add ItemSave を押します。

    _images/mod8-10.png

  11. NTLM Auth Resultの右のSuccessfulにつながるフローを Deny から Allow に変更します。

    _images/mod8-11.png

  12. 左上の Apply Access Policy を押し、ブラウザのVPEタブを閉じます。

    _images/mod8-12.png

認証ヘッダ挿入用iRuleの作成

 ここでは、ユーザ認証ヘッダ(X-Authenticated-User)とAPMで認証されたユーザ名(session.logon.last.username)をICAPリクエストに挿入するためのiRuleを作成します。ICAPはHTTPをカプセリングしますので、認証情報を挿入するためには以下の2つのiRuleが必要となります。また、i-FILTER ICAP版に認証ユーザ名を理解してもらうために、ユーザ名の手前に ldap:/// を加え、Base64エンコーディング をする必要があります。

  1. Local Traffic >> iRules にて、Create ボタンを押します。任意の名前 を入力して、Definition に以下サンプルiRuleを入力し、Finished ボタンを押します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)

    例1)HTTPリクエストヘッダに認証情報を挿入するためのiRuleサンプル

    ###  Add this iRule to Virtual Server:ssloS_XXXX-t-4 ###
    
    when HTTP_REQUEST {
    
        # Create the HDR list and insert the X-Server-IP value
        set hdr [list "X-Server-IP:[IP::local_addr]"]
    
        # Add the authenticated user information if it exists
        if { [ACCESS::session data get session.logon.last.username] ne "" } {
            # In case of  NLTM/Basic Auth
            lappend hdr "X-Authenticated-User:[b64encode ldap:///[ACCESS::session data get session.logon.last.username]]"
        }
    
        # Add above info to the table temporarily and add an ICAP-X header
        set guid [expr {int(rand()*1e12)}]
        table set ${guid} ${hdr} 10 10
        HTTP::header replace ICAP-X ${guid}
    
    }
    

    例2)ICAPリクエストヘッダに認証情報を挿入するためのiRuleサンプル

    ### Add this iRule to ssloS-XXXX-req ###
    
    when ICAP_REQUEST {
    
        if { [HTTP::header exists "ICAP-X"] } {
    
            # Get the header and the value from table
            set hdrs [table lookup [HTTP::header "ICAP-X"]]
    
            # Add it to ICAP header
            foreach x ${hdrs} {
                ICAP::header add [lindex [split ${x} ":"] 0] [lindex [split ${x} ":"] 1]
            }
    
        # Remove the temporary http header. But the data would show up in the ICAP header.
        HTTP::header remove "ICAP-X"
        }
    }
    
    2つ目のiRuleにおいて、ICAP-XヘッダはHTTPヘッダ上からは削除されますが、ICAPヘッダに残ります。このヘッダは無害ですが、気になる場合は、i-FILTERのヘッダコントロールにて削除して下さい。
    また、接続テストをされる際には、変数情報をログ出力するなどして意図する値が入っているか確かめて頂くことをおすすめします。
    例1)認証ユーザ名を確認するデバッグ
    log local0. "Username: [ACCESS::session data get session.logon.last.username]"
    例2)エンコードされた内容を確認するデバッグ
    log local0. "Encoded username: b64encode ldap:///[ACCESS::session data get session.logon.last.username]]"
    例3)ヘッダー内容を確認するデバッグ
    foreach attr "[HTTP::header names]" {
    log local0. "$attr : [HTTP::header value $attr]"
    }

SSLO Guided ConfigurationによるSSLOの設定

  1. SSL Orchestrator >> Configuration を選択します。DNSNTPRouteConfigure となっているのを確認し、Next ボタンを押します。

    _images/mod10-1.png

  2. 任意の名前 を設定し、SSL Orchestrator Topologiesとして、L3 Explicit Proxy を選択し、Save&Next ボタンを押します。

    _images/mod10-2.png

  3. 任意の名前 を設定し、右上の Show Advanced Setting をクリックし、Client-side SSL にて、利用したい TLSのバージョン を選択します。

    _images/mod10-3.png

  4. CA Certificate KeyChain にて、既にインポート済みのCAファイルを選択して Done を押します。

    _images/mod10-4.png

  5. Server-side SSL も同様に利用したい TLSバージョン を選択します。

    _images/mod10-5.png

  6. 期限切れの証明書や自己署名証明書に対しての動作も確認し、Save&Next を押します。

    _images/mod10-6.png

  7. Add Service を押します。

    _images/mod10-7.png

  8. Generic ICAP Service を選択し、Add ボタンを押します。

    _images/mod10-8.png

  9. 任意の名前 を設定し、ICAP Devicesi-FILTERのIPアドレスポート番号 を設定し、Done を押します。

    _images/mod10-9.png

  10. Request Modification URI Path/REQMOD を入力し、Preview Max Length0 を入力し、ICAP Policy に既に作成済みの Local Traffic Policy を選択し、Save を押します。(i-FILTER ICAP版は ICAP Preview に対応していないので、 を入力します。)

    _images/mod10-10.png

  11. Add Service を選択します。

    _images/mod10-11.png

  12. Generic ICAP Service を選択し、Add ボタンを押します。

    _images/mod10-12.png

  13. 任意の名前 を設定し、ICAP Devices任意のIPアドレス任意のポート番号 を設定し、Done を押します。(こちらのサービスは実際には利用しませんので、設定する情報は何でも構いません。)

    _images/mod10-13.png

  14. ICAP Policy に既に作成済みのヘッダをもとに戻すための Local Traffic Policy を選択し、Save を押します。

    _images/mod10-14.png

  15. Save&Next ボタンを押します。

    _images/mod10-15.png

  16. Service Chain ListAdd を押します。

    _images/mod10-16.png

  17. 任意の名前 を設定し、先程作成したサービスを右に移動させ、Save ボタンを押します。(i-FILTERのサービスが上にくるようにします。)

    _images/mod10-17.png

  18. Service Chain ができたことを確認し、Save&Next ボタンを押します。

    _images/mod10-18.png

  19. All Trafficの ペンマーク をクリックします。

    _images/mod10-19.png

  20. 先程作成した Service Chain を選択し、OK ボタンを押します。

    _images/mod10-20.png

  21. Save&Next ボタンを押します。

    _images/mod10-21.png

  22. Proxy Server Settings にクライアントからプロキシとしてアクセスさせるIPアドレスを入力し、既に作成済みの Access Profile を選択し、Ingress Network として、クライアントからアクセス可能な VLAN を選択し、Save&Next ボタンを押します。

    _images/mod10-22.png

  23. 本テスト構成では、Manage SNAT SettingsAuto MapGatewaysDefault Route を選択し、Save&Next ボタンを押します。(設定は検証環境に合わせてください。)

    _images/mod10-23.png

  24. Save&Next ボタンを押します。

    _images/mod10-24.png

  25. 必要に応じて、設定内容を見直し、 Deploy ボタンを押します。

    _images/mod10-25.png

  26. OK ボタンを押し、Deployに成功すると以下のような緑色の DEPLOYED マークが表示されます。

    _images/mod10-26.png

  27. 右上の System Settings アイコンを選択します。

    _images/mod10-27.png

  28. SSLOがExplicit Proxyとして利用する DNS を設定し、Deploy を押します。

    _images/mod10-28.png

  29. i-FILTERと連携するサービスに関しては認証ヘッダを挿入するために、また、ヘッダをリストアするサービスに関してはモニタを停止するため、Protectedの マークを外します。

    _images/mod10-29.png

  30. ヘッダをリストアするサービスに紐づくPoolのモニターの情報をはずします。(設定を外す前は存在しないサーバに対して、モニターを投げているので、AvailabilityがOfflineとなっているはずです。)

    _images/mod10-30.png

  31. 既に作成済みの iRule を追加します。Local Traffic >> Virtual Servers>> において、ssloS_XXXX(任意)-t-4 という名称のVirtual Serverを選択し、Resources タブを選択、HTTPリクエストヘッダに認証情報を挿入するための iRule を選択し、Finished を押します。

    _images/mod10-31.png

  32. ICAPリクエストヘッダに加えるための iRule を追加します。Local Traffic >> Virtual Servers において、ssloS_XXXX(任意)-req という名称のVirtual Serverを選択し、Resources タブを選択、ICAPリクエストヘッダに認証情報を挿入するための iRule を選択し、Finished を押します。

    _images/mod10-32.png

注釈

  • セキュリティデバイスがICAPサービス、HTTPサービスの場合、SSL復号していないトラフィックをサービスチェーンに流せません。

i-FILTER ICAP版(Linux版)の設定

  i-FILTERのインストールは終了しているものとします。

ユーザ認証の設定

  1. システム/ユーザ認証/基本設定 を選択します。

  2. 基本設定ユーザ認証方式 において ICAP認証 を選択します。

    _images/mod11-1.png

  3. ICAP認証設定ICAP認証ユーザ参照 において、有効にする をチェックします。

    _images/mod11-2.png

  4. 右上の 保存 ボタンを押します。

    _images/mod11-3.png

  5. 次に、システム/ユーザ認証/LDAPサーバ設定 を選択します。本ガイドでは認証ユーザ情報をADサーバから取り込むため、以下のように設定し、保存 ボタンを押します。

    _images/mod11-4.png

    項目 設定例
    アドレス:ポート番号 ご利用のAD情報を登録
    BIND BIND有効
    BIND DN ご利用の管理者BIND DN情報を登録 | 設定例:cn=Administrator,cn=Users,dc=f5jplab,dc=local
    BINDパスワード ご利用のドメイン管理者のパスワードを登録
    Search Base ご利用のドメイン情報を登録 | 設定例:dc=f5jplab,dc=local
    Search Filter (sAMAccountName=%1)

グループポリシーの作成、ユーザ情報の取り込み

  1. グループ/基本モード/モード設定 において、追加 ボタンを押します。

    _images/mod11-5.png

  2. グループ名 を分かりやすいグループ名に変更します。

    _images/mod11-6.png

  3. ユーザ タブにおいて、追加 ボタンをクリックします。

    _images/mod11-7.png

  4. 認証ユーザ参照 を選択します。

    _images/mod11-8.png

  5. 検索しやすい検索条件を設定し、ADから取り込みたい ユーザ名 を追加します。

    _images/mod11-9.png

  6. Webサービス タブを選択し、制御したいサービスを選択し、ユーザに利用不許可とする機能に対し、ブロック を選択します。(注:下記イメージはあくまでも一例です。)

    _images/mod11-10.png

  7. 個別リスト タブを選択し、個別ブロックしたいURL/URIを追加し、右上の 保存 ボタンを押します。(注:下記イメージはあくまでも検証目的で設定した内容です。)

    _images/mod11-11.png

ブロック画面のタイトル画像連携設定

  1. システム/システムパラメーター/動作設定 において、仮想ホスト名設定コンテンツ転送 の値を、で設定したSSLOのInterception RuleのDestination AddressのIPアドレスに変更します。

    _images/mod11-12.png

  2. i-FILTER v10.40R01 より、WEB接続ブロック時にユーザに表示するブロック画面中のタイトル画像は、HTTPS接続アクセスに対しては、HTTPSで表示されるようになっております。(HTTP接続アクセスに関しては、以前同様、ブロック画面イメージもHTTPで表示されます。)HTTPS接続アクセスの場合、SSLOを経由してi-FILTER ICAP版に接続する際に、上記のようにIPアドレス設定だけではタイトル画像が表示されなくなりました。回避方法例は1.13で説明します。

  3. ここでは、簡易的にブロック画面中にタイトル画像を表示せず、システム/デフォルト画面/ブロック画面 において、タイトル画像を 表示しない を選択し、保存 ボタンを押します。必要に応じて、メッセージも変更します。

    _images/mod11-13.png

クライアントからの接続テスト

  1. クライアントにSSLOの CA証明書 をインストールします。

  2. コマンドラインで確認する場合は、以下を利用します。

    curl -vk --proxy 10.100.35.201:3128 –proxy-ntlm –proxy-user 'se001:ilovef5!' https://xxxx.xxx
    
  3. ブラウザで確認する場合は、プロキシ設定にSSLOを加えてからWEB接続を確認します。

  4. WEB通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられている ことを確認します。

    _images/mod12-1.png

  5. ブラックリストの宛先への通信が ブロック されることを確認します。

    _images/mod12-2.png

  6. SSL復号除外サイトの通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられていない ことを確認します。

i-FILTERブロック画面のタイトル画像の表示、パスワードブロック解除の設定

 1.11.3.にて、SSLO連携をするとブロック画面のタイトルが標準では表示されないと記載しましたが、以下の設定を追加することによって、表示させることが可能です。本設定を行うことにより、パスワード入力によるブロック解除も連携が可能となります。上記を実現するためには、下図の4つのVirtual Serverが追加で必要となります。ここでは、下図の④②①③の順で作成していきます。

_images/mod13-1.png

ICAP service request用Virtual Serverの作成

  1. まずはICAP用のプロファイルを以下のように作成します。 Local Traffic >> Profiles >> Services >> ICAP にて、Create ボタンを押します。任意の名前 を入力し、URI には以下のように入力し、Finished ボタンを押します。

    icap://${SERVER_IP}:${SERVER_PORT}/REQMOD

    _images/mod13-2.png

  2. 次にICAP service request 用のVirtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、TypeInternal を選択します。

    _images/mod13-3.png

  3. Configuration にて Advanced を選択し、ICAP Profile にて、作成済みの ICAPプロファイル を選択します。

    _images/mod13-4.png

  4. 最後に、Default Pool にて、SSLO Guided Configurationで作成済みの Pool を選択して、Finished ボタンを押します。

    _images/mod13-5.png

Explicit HTTPS Proxy用Virtual Serverの作成

  1. まず、ICAP用のVirtual Serverを呼び出すためのRequest Adaptプロファイルを作成します。Local Traffic >> Profiles >> Services >> Request Adapt にて、Create ボタンを押します。任意の名前 を入力し、Internal Virtual Name にて、作成済みの Virtual Sever を選択し、Preview Size にて、0 を入力し、Finished ボタンを押します。

    _images/mod13-6.png

  2. 次に、SSLサイトにおけるブロック時に、ブロック画面内のタイトル画像にSSL接続するためのClientSSLプロファイルを作成します。Local Traffic >> Profiles >> SSL >> Client にて、Create ボタンを押します。任意の名前 を入力し、タイトル画像をSSL経由で表示させるための サーバ証明書秘密鍵 を選択し、Finished ボタンを押します。(BIG-IPにてSSLオフロードを行うため、System >> Certificate Management >> Traffic Certificate Management にて、予め サーバ証明書秘密鍵 の登録が必要となります。)

    _images/mod13-7.png

  3. 次に、Proxy用のTunnelを作成します。Network >> Tunnel List にて、Create ボタンを押します。任意の名前 を入力し、Profile にて、tcp-forward を選択し、Finished ボタンを押します。

    _images/mod13-8.png

  4. 次に、HTTPSトラフィックにおけるURI書き換え用のiRuleを作成します。Local Traffic >> iRules にて、Create ボタンを押します。 任意の名前 を入力して、 Definition に以下サンプル iRule を入力し、Finished ボタンを押します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)

    例)URI書き換え用のiRule

    ###  Add this iRule to Explicit HTTPS Virtual Server ###
    when HTTP_REQUEST {
        set OLDURI [HTTP::uri]
        HTTP::uri "https://[HTTP::host]$OLDURI"
    }
    
  5. 次に、SSL用のExplicit HTTPS Virtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、0.0.0.0/0 を入力、Service Port にて、15080 と入力します。

    _images/mod13-9.png

  6. Configuration にて、Advanced を選択し、HTTP Profile にて、http を選択、SSL Profile (Client) にて、作成済みの clientsslプロファイル を選択します。

    _images/mod13-10.png

  7. Request Adapt Profile にて、作成済みの プロファイル を選択し、VLAN and Tunnel Traffic にて、Enable on... を選択し、VLANs and Tunnels にて作成済みの Tunnel を選択し、Source Address Translation にて Auto Map を選択し、Address TranslationPort Translation のチェックをはずします。

    _images/mod13-11.png

  8. iRules にて、作成済みの iRule を選択し、Finished ボタンを押します。

    _images/mod13-12.png

Explicit HTTP Proxy用Virtual Serverの作成

  1. まず、プロキシ用のExplicit Profileを作成します。Local Traffic >> Profiles >> Services >> HTTP にて、Create ボタンを押します。Proxy Mode にて、Explicit を選択します。

    _images/mod13-13.png

  2. DNS Resolver にて、SSLO Guided Configurationで作成した DNS Resolver を選択し、Tunnel Name にて、作成済みの Tunnel を選択し、Finished ボタンを押します。

    _images/mod13-14.png

  3. 次に、以下の2つのiRuleを作成します。

    • インターネット接続用のHTTP/HTTPsトラフィックとi-FILTERブロックタイトル画面接続トラフィックを分けるiRule
    • 上記後者のトラフィックにおいて、i-FILTER向けにURIを書き換えるiRule

    Local Traffic >> iRules にて、Create ボタンを押します。任意の名前 を入力して、Definition に以下サンプル iRule を入力し、Finished ボタンを押します。本iRuleでは、トラフィックの内容をみて、ICAPプロファイルを紐付けるかの判断もしています。また、iRule内のホスト名は、環境にあわせたFQDN/IPアドレスに変更して頂く必要があります。 (以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。また、以下の2つのiRuleは、1つのファイルにしていただいても構いません。)

    例)トラフィックを分ける用のiRule

    ###  Add this iRule to Explicit Virtual Server ###
    when HTTP_PROXY_REQUEST {
        set F5PROXY "bigip.f5jplab.local"
        if { [HTTP::host] contains $F5PROXY} {
            HTTP::proxy enable
            ADAPT::enable request false
        } else {
            HTTP::proxy disable
            virtual sslo_L3ExplicitProxy.app/sslo_L3ExplicitProxy-xp-4
            snat automap
        }
    }
    

    例)URI書き換え用のiRule

    ###  Add this iRule to Explicit Virtual Server ###
    when HTTP_REQUEST {
        set F5PROXY "bigip.f5jplab.local"
        if { [HTTP::host] contains $F5PROXY} {
            set OLDURI [HTTP::uri]
            HTTP::uri "http://[HTTP::host]$OLDURI"
            ADAPT::enable request true
        } else {
            ADAPT::enable request false
        }
    }
    
  4. 次にExplicit HTTP Proxy用のVirtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、プロキシ接続用の IPアドレス を入力、Service Port にて、プロキシとして利用する ポート番号 を入力します。

    _images/mod13-15.png

  5. HTTP Profile(Client) にて、作成済みの HTTP Explicit Profile を選択します。

    _images/mod13-16.png

  6. Request Adapt Profile にて、作成済みのプロファイルを選択し、Source Address Translation にて、Auto Map を選択します。

    _images/mod13-17.png

  7. iRules にて作成済みの2つのiRuleを選択して、 Finished ボタンを押します。

    _images/mod13-18.png

Reject用Virtual Serverの作成

  1. 最後に、15080ポート以外はブロック をするVirtual Serverを作成します。(本Virtual Serverがなくても動作はします。) 任意の名前 を入力し、Type にて Reject を選択し、Destination Address/Mask にて、0.0.0.0/0 と入力し、Service Port にて * と入力します。VLAN and Tunnel Traffic にて、Enabled on... を選択し、VLANs and Tunnels にて作成済みのTunnelを選択し、Finished ボタンを押します。

    _images/mod13-19.png

i-FILTER側の設定

  1. システム/システムパラメーター/機能設定 にて、仮想ホスト転送モード を有効にし、コンテンツ転送用アドレスBIG-IPのFQDN を入力し、ポート番号15080 を入力します。(IPアドレスを入力しても動作はしますが、SSL接続時にブラウザでプライバシー保護のエラーが表示されます。)

    _images/mod13-20.png

  2. システム/システムパラメーター/動作設定 にて、コンテンツ転送ブロック解除 のそれぞれに 任意の値 を設定します。(ブロック画面タイトル表示時、パスワードブロック解除時のURIの一部として利用されます。)

    _images/mod13-21.png

クライアントからの接続テスト

  1. ブラウザの プロキシ設定 にて、作成済みのExplicit ProxyのIPアドレスに紐づく FQDN または、IPアドレスに変更します。

  2. ブラックリストの宛先への通信がブロックされ、タイトル画像が表示されることを確認します。

    _images/mod13-22.png

  3. パスワードブロック解除が設定されている宛先へ接続し、パスワード入力画面が表示されることを確認します。

    _images/mod13-23.png

  4. 解除パスワード入力後、無事WEB接続ができる事を確認します。

    _images/mod13-24.png

その他

各種ログ

  1. テストの際には、以下のSSLOにおけるログを参照して下さい。
    • SSLO全般ログやiRuleでlocal0で指定したログ
      /var/log/ltm
    • APM(認証)のログ
      /var/log/apm
    • SSL Guided Configuration(iAppLX/REST)に関わるログ
      /var/log/restnoded/restnoded.log /var/log/restjava.0.log
    • その他、SSLOに関するトラブルシューティングは以下のAskF5記事をご参照下さい。
      K26520133: Troubleshooting SSL Orchestrator(SSLO) https://support.f5.com/csp/article/K26520133

  2. テストの際には、以下のi-FILTERにおけるログを参照して下さい。
    • アクセスログ
      /usr/local/ifilter10/logs/access.log0000

フィルター除外設定(必須ではございません)

  1. 本テストでは、httpbin.org を接続先ホストとして利用させて頂いておりますが、現状デフォルトではブロックされるので、システム/システムフィルター/推奨フィルター設定 – 除外設定 にて、テストで利用しているホスト名を 除外設定 に追加します。

    _images/mod14-1.png

F5 SSLO (L3 Explicit Proxy) とi-FILTER Proxy版の連携設定

本章では、SSLOの可視化ゾーンにi-FILTER Proxy版を配置して連携する構成について、ご紹介致します。

F5 SSLOとi-FILTER PROXY版連携の流れ

F5 SSLOとi-FILTER PROXY版の連携の流れは以下の通りです。

_images/mod1-11.png
  1. クライアントがパソコン(AD)にログオンします。
  2. SSLOでユーザ認証を実施し(NTLM認証、Kerberos認証の場合は自動的に認証が実施されます)、SSL通信を復号します。
  3. WEB接続の情報とSSLOで認証が成功したユーザ情報を i-FILTERにHTTPで送ります。
  4. ユーザ情報を元にURLフィルタリングルールを適用し、接続が許可されていないWEBサイトの場合は、ブロック画面をクライアントに表示します。
  5. 許可された通信に関しては、SSL 通信を再暗号化し、WEBサーバへ接続します。

本ガイドの利用バージョンと構成イメージ

本ガイドは、以下の製品バージョンを利用して、作成しております。

  1. 利用バージョン

    製品名 バージョン
    F5 SSL Orchestrator v15.1.0.5-0.0.8 ‒ 7.4.9
    i-FILTER Proxy Server (Linux)
    Ver.10.41R01-20200807 (CentOS v7.7.1908 ※)
    ※ デジタルアーツ様による製品サポートOSはRed Hat Enterprise Linuxとなります。

    注釈

    • (各F5代理店でサポート可能な範囲において、)極力最新のバージョンを適用頂くことをおすすめ致します。最新のバージョンはAskF5でご確認下さい。
    • Proxy認証を行いたい場合、i-FILTERのログにユーザ名を出力したい場合は、APMのライセンスが必要となります。
  2. 本ガイドにおける構成イメージ

    _images/mod2-11.png

ライセンスアクティベーション、プロビジョニング、CA証明書/鍵登録

1- 1.3と同じです。

最新版のSSL Orchestrator RPMへのアップグレード

1- 1.4と同じです。

Networkの基本設定

  1. VLANの設定を行います。

    _images/mod5-11.png

  2. Self IPの設定を行います。

    _images/mod5-21.png

  3. デフォルトゲートウェイの設定を行います。

    _images/mod5-31.png

DNS, NTPの設定

1- 1.6と同じです。

i-FILTERにてHTTP/HTTPS判別するためのiRuleの作成

 i-FILTER PROXY版は、HTTPのリクエストヘッダでHTTPサーバへの通信かHTTPSサーバへの通信かを判別しています。i-FILTERがHTTP/HTTPS判別可能となるためのiRuleを作成します。X-Forwarded-Proto というヘッダーに利用プロトコル(http or https)を加えて、HTTPリクエストに挿入します。ここではあわせて、クライアントのIPアドレスも X-Forwarded-For に挿入しています。

  1. Local Traffic >> iRules にて、Create ボタンを押します。任意の名前 を入力して、Definition に以下サンプルiRuleを入力し、Finished ボタンを押します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)

    例)HTTPリクエストにi-FILTER連携のヘッダを挿入するためのiRuleサンプル

    ###  Add this iRule to Virtual Server:ssloS_XXXX-t-4 ###
    
    when HTTP_REQUEST {
    
        if { [TCP::local_port] == 80 } {
            # For HTTP protocol
            HTTP::header replace "X-Forwarded-Proto" "http"
    
        } elseif { [TCP::local_port] == 443 } {
            # For HTTPS protocl
            HTTP::header replace "X-Forwarded-Proto" "https"
        }
    
        sharedvar ctx
        # For Client IP address
        lappend ctx(headers) "X-Forwarded-For" [IP::client_addr]
    
        if { [expr { [llength $ctx(headers)] % 2 }] == 0 } {
            foreach {h_name h_value} $ctx(headers) {
                HTTP::header replace ${h_name} ${h_value}
            }
        }
    }
    
    接続テストをされる際には、変数情報をログ出力するなどして意図する値が入っているか確かめて頂くことをおすすめします。
    例1)ヘッダー内容を確認するデバッグ
    foreach attr "[HTTP::header names]" {
    log local0. "$attr : [HTTP::header value $attr]"
    }

NTLM認証設定

1- 1.8と同じです。

認証ヘッダ挿入用iRuleの作成

 ここでは、ユーザ認証ヘッダ(Proxy-Authorization)とAPMで認証されたユーザ名(session.logon.last.username)をHTTPリクエストに挿入するためのiRuleを作成します。i-FILTER PROXY版連携では、Proxy-Authorization というヘッダー名に、ユーザ名をBase64エンコーディングしたBasic認証の形式で挿入します。

  1. Local Traffic >> iRules にて、2- 2.7で作成済みのiRuleにユーザ名用のヘッダーを挿入するための箇所を追記します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)

    例)HTTPリクエストにi-FILTER連携のヘッダを挿入するためのiRuleサンプル

    ###  Add this iRule to Virtual Server:ssloS_XXXX-t-4 ###
    
    when HTTP_REQUEST {
    
        if { [TCP::local_port] == 80 } {
            # For HTTP protocol
            HTTP::header replace "X-Forwarded-Proto" "http"
    
        } elseif { [TCP::local_port] == 443 } {
            # For HTTPS protocl
            HTTP::header replace "X-Forwarded-Proto" "https"
        }
    
        sharedvar ctx
        # For Client IP address
        lappend ctx(headers) "X-Forwarded-For" [IP::client_addr]
    
        # For Username
        if { [ACCESS::session data get session.logon.last.username] ne "" } {
            set PROXYAUTH "Basic [b64encode [ACCESS::session data get session.logon.last.username]:]"
    
        } else {
            set PROXYAUTH ""
        }
        lappend ctx(headers) "Proxy-Authorization" $PROXYAUTH
    
        if { [expr { [llength $ctx(headers)] % 2 }] == 0 } {
            foreach {h_name h_value} $ctx(headers) {
            HTTP::header replace ${h_name} ${h_value}
    
        }
    }
    
    接続テストをされる際には、変数情報をログ出力するなどして意図する値が入っているか確かめて頂くことをおすすめします。
    例1)認証ユーザ名を確認するデバッグ
    log local0. "Username: [ACCESS::session data get session.logon.last.username]"
    例2)エンコードされた内容を確認するデバッグ
    log local0. "Encoded username: b64encode [ACCESS::session data get session.logon.last.username]"
    例3)ヘッダー内容を確認するデバッグ
    foreach attr "[HTTP::header names]" {
    log local0. "$attr : [HTTP::header value $attr]"
    }

SSLO Guided ConfigurationによるSSLOの設定

  1. SSL Orchestrator >> Configuration を選択します。DNSNTPRouteConfigure となっているのを確認し、Next ボタンを押します。

    _images/mod10-110.png

  2. 任意の名前 を設定し、SSL Orchestrator Topologiesとして、L3 Explicit Proxy を選択し、Save&Next ボタンを押します。

    _images/mod10-210.png

  3. 任意の名前 を設定し、右上の Show Advanced Setting をクリックし、Client-side SSL にて、利用したい TLSのバージョン を選択します。

    _images/mod10-33.png

  4. CA Certificate KeyChain にて、既にインポート済みのCAファイルを選択して Done を押します。

    _images/mod10-41.png

  5. Server-side SSL も同様に利用したい TLSバージョン を選択します。

    _images/mod10-51.png

  6. 期限切れの証明書や自己署名証明書に対しての動作も確認し、Save&Next を押します。

    _images/mod10-61.png

  7. Add Service を押します。

    _images/mod10-71.png

  8. Generic HTTP Service を選択し、Add ボタンを押します。

    _images/mod10-81.png

  9. 任意の名前 を設定します。

    _images/mod10-91.png

  10. Service Definition にて、Auto Manage Addresses のチェックをはずし、SSLOからi-FILTER ProxyへHTTPトラフィックを転送するVLAN, Self IPの情報を入力します。 (ここでは、検証環境の都合でAuto Manage Addressesは利用しておりません。)

    _images/mod10-101.png

    注釈

    • SSL可視化ゾーン(ここではi-FILTER Proxy版)では、HTTPトラフィックは暗号化されておりませんので、第三者からのアクセスを避ける必要があります。そこで、SSLOでは、Auto Manage Addresses(RFC2544に定められているインターナル利用アドレス)をセキュリティ機器に利用頂くことを推奨しております。
  11. i-FILTER Proxyのインライン側の IPアドレスポート番号 を入力し、Done を押します。

    _images/mod10-111.png

  12. i-FILTER ProxyからSSLOへHTTPトラフィックを転送するVLAN, Self IPの情報を入力します。

    _images/mod10-121.png

  13. 検証環境では Auto Map を設定し、作成済みのiRuleを右に移動させ、Save を押します。

    _images/mod10-131.png

  14. Serviceが追加されるとこのような画面になります。Save&Next を押します。

    _images/mod10-141.png

  15. Add をクリックし、サービスチェーンを作成します。

    _images/mod10-151.png

  16. 任意の名前 を設定し、作成済みのServiceを右に移動させ、Save ボタンを押します。

    _images/mod10-161.png

  17. サービスチェーンが作成されると、このような画面になります。Save&Next ボタンを押します。

    _images/mod10-171.png

  18. All Trafficeの ペンマーク をクリックします。

    _images/mod10-181.png

  19. 先程作成した Service Chain を選択し、OK ボタンを押します。

    _images/mod10-191.png

  20. All TrafficeにService Chainが追加されると以下のような画面になります。

    _images/mod10-201.png

  21. Save & Next ボタンを押します。

    _images/mod10-211.png

  22. Proxy Server Settings にクライアントからプロキシとしてアクセスさせるIPアドレスを入力し、既に作成済みの Access Profile を選択し(プロキシ認証しない場合は不要)、Ingress Network として、クライアントからアクセス可能な VLAN を選択し、Save&Next ボタンを押します。

    _images/mod10-221.png

  23. 本テスト構成では、Manage SNAT Settings で Auto Map、Gateways で Default Route を選択し、Save&Next ボタンを押します。(設定は検証環境に合わせてください。)

    _images/mod10-231.png

  24. Save&Next ボタンを押します。

    _images/mod10-241.png

  25. 必要に応じて、設定内容を見直し、Save&Next ボタンを押します。

    _images/mod10-251.png

  26. OK ボタンを押し、Deployに成功すると以下のような緑色の DEPLOYED マークが表示されます。

    _images/mod10-261.png

  27. 右上の System Settings アイコンを選択します。

    _images/mod10-271.png

  28. SSLOがExplicit Proxyとして利用する DNS を設定し、Deploy を押します。

    _images/mod10-281.png

注釈

  • セキュリティデバイスがICAPサービス、HTTPサービスの場合、SSL復号していないトラフィックをサービスチェーンに流せません。

i-FILTER Proxy版(Linux版)の設定

  i-FILTERのインストールは終了しているものとします。

注釈

  • SSL可視化ゾーン(ここではi-FILTER Proxy版)では、HTTPトラフィックは暗号化されておりませんので、第三者からのアクセスを避ける必要があります。そこで、SSLOでは、Auto Manage Addresses(RFC2544に定められているインターナル用アドレス、198.19.x.y/19)をセキュリティ機器に利用頂くことを推奨しております。
  • 上記推奨設定を採用できる場合、i-FILTER用のサーバ構築時にこのアドレス帯を割り当てて下さい。

SSLO連携の設定

  1. conf/ifilter.confに以下のパラメータを追加します。

    proxy_header_rewrite_protocol_enable = on
    

ユーザ認証の設定

  1. システム/ユーザ認証/基本設定 を選択します。


  2. 基本設定ユーザ認証方式 において SNOOP認証 を選択します。

    _images/mod11-14.png

  3. ICAP認証設定SNOOP認証ユーザ参照 において、有効にする をチェックします。

    _images/mod11-21.png

  4. 右上の 保存 ボタンを押します。

    _images/mod11-31.png

  5. 次に、システム/ユーザ認証/LDAPサーバ設定 を選択します。本ガイドでは認証ユーザ情報をADサーバから取り込むため、以下のように設定し、保存 ボタンを押します。

    _images/mod11-41.png

    項目 設定例
    アドレス:ポート番号 ご利用のAD情報を登録
    BIND BIND有効
    BIND DN ご利用の管理者BIND DN情報を登録 | 設定例:cn=Administrator,cn=Users,dc=f5jplab,dc=local
    BINDパスワード ご利用のドメイン管理者のパスワードを登録
    Search Base ご利用のドメイン情報を登録 | 設定例:dc=f5jplab,dc=local
    Search Filter (sAMAccountName=%1)

グループポリシーの作成、ユーザ情報の取り込み

  1. グループ/基本モード/モード設定 において、追加 ボタンを押します。

    _images/mod11-51.png

  2. グループ名 を分かりやすいグループ名に変更します。

    _images/mod11-61.png

  3. ユーザ タブにおいて、追加 ボタンをクリックします。

    _images/mod11-71.png

  4. 認証ユーザ参照 を選択します。

    _images/mod11-81.png

  5. 検索しやすい検索条件を設定し、ADから取り込みたい ユーザ名 を追加します。

    _images/mod11-91.png

  6. Webサービス タブを選択し、制御したいサービスを選択し、ユーザに利用不許可とする機能に対し、ブロック を選択します。(注:下記イメージはあくまでも一例です。)

    _images/mod11-101.png

  7. 個別リスト タブを選択し、個別ブロックしたいURL/URIを追加し、右上の 保存 ボタンを押します。(注:下記イメージはあくまでも検証目的で設定した内容です。)

    _images/mod11-111.png

ヘッダーコントローラの設定

  1. iRuleで挿入したX-Forwarded-For(クライアントIPアドレス)をi-FILTERログに出力するための設定を行います。


  2. /システム/ヘッダーコントローラ を選択します。


  3. 以下のように、設定します。

    _images/mod11-121.png

ブロック画面のタイトル画像連携設定

  1. システム/システムパラメーター/動作設定 において、仮想ホスト名設定コンテンツ転送 の値を、で設定したSSLOのInterception RuleのDestination AddressのIPアドレスに変更します。

    _images/mod11-131.png

  2. HTTPS接続の場合、SSLOを通すとブロック画面のタイトル画像が表示されません。回避方法例は1.13で説明します。


  3. ここでは、簡易的にブロック画面中にタイトル画像を表示せず、システム/デフォルト画面/ブロック画面 において、タイトル画像を 表示しない を選択し、保存 ボタンを押します。必要に応じて、メッセージも変更します。

    _images/mod11-141.png

注釈

  • 必要に応じて、Connection: keep-aliveを有効にしてください。
  • i-FILTER製品の詳細に関しては、メーカーにお問い合わせください。

クライアントからの接続テスト

  1. クライアントにSSLOの CA証明書 をインストールします。

  2. コマンドラインで確認する場合は、以下を利用します。

    curl -vk --proxy 10.100.35.201:3128 –proxy-ntlm –proxy-user 'se001:ilovef5!' https://xxxx.xxx
    
  3. ブラウザで確認する場合は、プロキシ設定にSSLOを加えてからWEB接続を確認します。

  4. WEB通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられている ことを確認します。

    _images/mod12-11.png

  5. ブラックリストの宛先への通信が ブロック されることを確認します。

    _images/mod12-21.png

  6. SSL復号除外サイトの通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられていない ことを確認します。

i-FILTERブロック画面のタイトル画像の表示、パスワードブロック解除の設定

2.11.3にて、SSLO連携をするとブロック画面のタイトルが標準では表示されないと記載しましたが、以下の設定を追加することによって、表示させることが可能です。本設定を行うことにより、パスワード入力によるブロック解除も連携が可能となります。上記を実現するためには、下図の3つのVirtual Serverが追加で必要となります。ここでは、下図の①②③の順で作成していきます。

_images/mod13-110.png

Explicit HTTP Proxy用Virtual Serverの作成

  1. Proxy用のTunnelを作成します。Network >> Tunnel List にて、Create ボタンを押します。任意の名前 を入力し、Profile にて、tcp-forward を選択し、Finished ボタンを押します。

    _images/mod13-25.png

  2. プロキシ用のExplicit Profileを作成します。Local Traffic >> Profiles >> Services >> HTTP にて、Create ボタンを押します。任意の名前を設定し、Proxy Mode にて、Explicit を選択します。

    _images/mod13-31.png

  3. DNS Resolver にて、SSLO Guided Configurationで作成した DNS Resolver を選択し、Tunnel Name にて、作成済みの Tunnel を選択し、Finished ボタンを押します。

    _images/mod13-41.png

  4. 次に、以下の2つのiRuleを作成します。

    • インターネット接続用のHTTP/HTTPsトラフィックとi-FILTERブロックタイトル画面接続トラフィックを分けるiRule
    • 上記後者のトラフィックにおいて、i-FILTER向けにヘッダーを追加するiRule

    1つ目のiRuleでは、ホスト名でインターネット接続トラフィックと判断した場合、SSLOのExplicit用のVirtual Sererに転送します。2つ目のiRuleでは、ホスト名でi-FILTER宛の通信と判断した場合、ヘッダーを追記して、i-FILTER用のPoolに転送します。各iRule内のホスト名は、環境にあわせたFQDN/IPアドレスに変更して頂く必要があります。

    Local Traffic >> iRules にて、Create ボタンを押します。任意の名前 を入力して、Definition に以下サンプルiRuleを入力し、Finished ボタンを押します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。また、以下の2つのiRuleは、1つのファイルにしていただいても構いません。)

    例)トラフィックを分ける用のiRule

    ### Add this iRule to Explicit HTTP Proxy Virtual Server  ###
    when HTTP_PROXY_REQUEST {
        set F5PROXY "bigip.f5jplab.local"   # For block jpg #
        set F5PROXY2 "10.100.35.221”        # For password bypass #
        if { [HTTP::host] contains $F5PROXY || [HTTP::host] contains $F5PROXY2 }  {
            HTTP::proxy enable
        } else {
            HTTP::proxy disable
            virtual sslo_L3ExplicitProxy.app/sslo_L3ExplicitProxy-xp-4
            snat automap
        }
    }
    

    例)ヘッダー追加用のiRule

    ###  Add this iRule to Explicit HTTP Proxy Virtual Server ###
    when HTTP_REQUEST {
        set F5PROXY "bigip.f5jplab.local" # For block jpg #
        set F5PROXY2 "10.100.35.221”      # For password bypass #
        if { [HTTP::host] contains $F5PROXY || [HTTP::host] contains $F5PROXY2 } {
            if { [HTTP::method] ne "CONNECT" } {
                HTTP::header replace "X-Forwarded-Proto" "http"
                pool ssloS_iFILTERProxy.app/ssloS_iFILTERProxy
            }
        }
    }
    
  5. Explicit Proxy用のVirtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、プロキシ接続用の IPアドレス を入力、Service Port にて、プロキシとして利用する ポート番号 を入力します。

    _images/mod13-51.png

  6. HTTP Profile(Client) にて、作成済みの HTTP Explicit Profile を選択します。

    _images/mod13-61.png

  7. Source Address Translation にて、Auto Map を選択します。

    _images/mod13-71.png

  8. iRules にて作成済みの2つのiRuleを選択して、Finished ボタンを押します。

    _images/mod13-81.png

Explicit HTTPS Proxy用Virtul Serverの作成

  1. HTTPSトラフィックにおけるi-FILTER向けヘッダ追加用のiRuleを作成します。このiRuleでは、ヘッダーを追記して、i-FILTER用のPoolに転送します。 Local Traffic >> iRules にて、Create ボタンを押します。 任意の名前 を入力して、 Definition に以下サンプル iRule を入力し、Finished ボタンを押します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)

    例)ヘッダー追加用のiRule

    ### Add this iRule to Explicit HTTPs Proxy Virtual Server ###
    when HTTP_REQUEST {
        HTTP::header replace "X-Forwarded-Proto" "https"
        pool ssloS_iFILTERProxy.app/ssloS_iFILTERProxy
    }
    
  2. ブロック画面内のタイトル画像にSSL接続するためにBIG-IPにてSSLオフロードを行うため、サーバ証明書 と 秘密鍵 の登録します。 System >> Certificate Management >> Traffic Certificate Management にて、利用するサーバ証明書 と 秘密鍵 の登録します。下記が登録したサーバ証明書のイメージです。ここでは、SANにFQDNとIPアドレスを登録しています。

    _images/mod13-91.png

  3. 次に、SSLサイトにおけるブロック時に、ブロック画面内のタイトル画像にSSL接続するためのClientSSLプロファイルを作成します。Local Traffic >> Profiles >> SSL >> Client にて、Create ボタンを押します。任意の名前 を入力し、先程登録した サーバ証明書 と 秘密鍵 を選択し、Finished ボタンを押します。

    _images/mod13-101.png

  4. HTTPS用のExplicit Proxy Virtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、0.0.0.0/0 を入力、Service Port にて、443 と入力します。

    _images/mod13-111.png

  5. Configuration にて、Advanced を選択し、HTTP Profile にて、http を選択、SSL Profile (Client) にて、作成済みの clientsslプロファイル を選択します。

    _images/mod13-121.png

  6. VLAN and Tunnel Traffic にて、Enable on... を選択し、VLANs and Tunnels にて作成済みの Tunnel を選択します。

    _images/mod13-131.png

  7. iRules にて、作成済みの iRule を選択し、Finished ボタンを押します

    _images/mod13-141.png

Reject用Virtual Serverの作成

  1. 最後に、443ポート以外はブロックをするVirtual Serverを作成します。(本Virtual Serverがなくても動作はします。)任意の名前を入力し、Type にて Reject を選択し、Destination Address/Mask にて、0.0.0.0/0 と入力し、Service Port にて * と入力します。VLAN and Tunnel Traffic にて、Enabled on... を選択し、VLANs and Tunnels にて作成済みの Tunnel を選択し、Finished ボタンを押します。

    _images/mod13-151.png

i-FILTER側の設定

  1. システム/システムパラメーター/動作設定 にて、コンテンツ転送ブロック解除 のそれぞれにサーバ証明書に登録したDNS名を設定します。(ブロック画面タイトル表示時、パスワードブロック解除時のURIの一部として利用されます。)

    _images/mod13-161.png

クライアントからの接続テスト

  1. ブラウザの プロキシ設定 にて、作成済みのExplicit ProxyのIPアドレスに紐づく FQDN または、IPアドレス に変更します。

  2. ブラックリストの宛先への通信がブロックされ、タイトル画像が表示されることを確認します。

    _images/mod13-171.png

  3. パスワードブロック解除が設定されているURLへ接続し、パスワード入力画面が表示されることを確認します。

    _images/mod13-181.png

  4. 解除パスワード入力後、無事WEB接続ができる事を確認します。

    _images/mod13-191.png

その他

各種ログ

  1. テストの際には、以下のSSLOにおけるログを参照して下さい。
    • SSLO全般ログやiRuleでlocal0で指定したログ
      /var/log/ltm
    • APM(認証)のログ
      /var/log/apm
    • SSL Guided Configuration(iAppLX/REST)に関わるログ
      /var/log/restnoded/restnoded.log /var/log/restjava.0.log
    • その他、SSLOに関するトラブルシューティングは以下のAskF5記事をご参照下さい。
      K26520133: Troubleshooting SSL Orchestrator(SSLO) https://support.f5.com/csp/article/K26520133

  2. テストの際には、以下のi-FILTERにおけるログを参照して下さい。
    • アクセスログ
      /usr/local/ifilter10/logs/access.log0000

フィルター除外設定(必須ではございません)

  1. 本テストでは、httpbin.org を接続先ホストとして利用させて頂いておりますが、現状デフォルトではブロックされるので、システム/システムフィルター/推奨フィルター設定 – 除外設定 にて、テストで利用しているホスト名を 除外設定 に追加します。

    _images/mod14-11.png

i-FILTER通信について

  1. i-FILTERのDBアップデートやシステムアップデートに必要な通信に関しては、i-FILTER用サーバにて管理用VLANを通して、アップデートできるように設定して下さい。