F5 SSLO セットアップガイド InterSafe WebFilter編

最終更新日: 2021年1月22日

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

はじめに

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

F5 SSLO (L3 Explicit Proxy) とInterSafe WebFilterの連携設定

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

F5 SSLOとInterSafe WebFilter連携の流れ

F5 SSLOとInterSafe WebFilterの連携の流れは以下の通りです。

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

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

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

  1. 利用バージョン

    製品名 バージョン
    F5 SSL Orchestrator v15.1.2-0.0.9Final ‒ 7.5.2
    InterSafe WebFilter
    Ver.9.1 Build1501

    Note

    • (各F5代理店でサポート可能な範囲において、)極力最新のバージョンを適用頂くことをおすすめ致します。最新のバージョンはAskF5でご確認下さい。
    • Proxy認証を行いたい場合は、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

InterSafe WebFilterにてHTTP/HTTPS判別するための設定(Local Traffic Policyの設定)

 InterSafe WebFilter ICAP版は、ICAPのリクエストヘッダの一部でHTTPサーバへの通信かHTTPSサーバへの通信かを判別しています。InterSafe WebFilterがHTTP/HTTPS判別可能となるようにLocal Traffic Policyにてルールを作成します。

  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

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が必要となります。また、InterSafe WebFilter 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ヘッダに残ります。このヘッダは無害ですが、気になる場合は、InterSafe WebFilterのヘッダコントロールにて削除して下さい。
    また、接続テストをされる際には、変数情報をログ出力するなどして意図する値が入っているか確かめて頂くことをおすすめします。
    例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 DevicesInterSafe WebFilterのIPアドレスポート番号 を設定し、Done を押します。

    _images/mod10-9.png

  10. Preview Max Length0 を入力し、ICAP Policy に既に作成済みの Local Traffic Policy を選択し、Save を押します。Save&Next を押します。

    _images/mod10-10.png

  11. Service Chain ListAdd を押します。

    _images/mod10-16.png

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

    _images/mod10-17.png

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

    _images/mod10-18.png

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

    _images/mod10-19.png

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

    _images/mod10-20.png

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

    _images/mod10-21.png

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

    _images/mod10-22.png

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

    _images/mod10-23.png

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

    _images/mod10-24.png

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

    _images/mod10-25.png

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

    _images/mod10-26.png

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

    _images/mod10-27.png

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

    _images/mod10-28.png

  24. InterSafe WebFilterと連携するサービスに関しては認証ヘッダを挿入するために、Protectedの マークを外します。

    _images/mod10-29.png

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

    _images/mod10-31.png

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

    _images/mod10-32.png

Note

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

InterSafe WebFilter の設定

  InterSafe WebFilterのインストールは終了しているものとします。   また、ここでは一部の認証連携に関わる設定方法の紹介のみとなります。詳細につきましてはアルプスシステムインテグレーションまでお問い合わせください。

IP認証の設定

  1. [サーバ管理]-[認証設定] をクリックします。 [認証設定] が表示されます。

    _images/mod11-1.png

  2. [ユーザ認証]-[有効] チェックボックスを オン にし、 [保存] をクリックします。

    _images/mod11-2.png

LDAPサーバの登録と管理

  1. [サーバ管理]-[LDAPサーバ設定] をクリックします。

    _images/mod11-3.png

  2. [LDAPサーバ設定] タブの [サーバを登録] をクリックします。

    _images/mod11-4.png

  3. LDAPサーバの情報を入力し、 [保存] ボタンをクリックします。

    _images/mod11-5.png

SSLOとの認証連携設定

※設定ファイルを直接編集する必要があります。  管理画面の終了、WebFilterサービスを停止して行ってください。

  1. <インストールディレクトリ>/conf/proxy.inf ファイルをテキストエディタで開きます。

  2. [CONTROL_CFG] セクションに 「ICAP_AUTHENTICATION=TRUE」 を追加します。

  3. 管理画面から [サーバ管理]-[認証設定] を開き、 [LDAP連携を行う] をクリックして [保存] ボタンをクリックします。

    _images/mod11-8.png

  4. 管理画面から [サーバ管理]-[LDAPサーバ設定] を開き、ICAPクライアントで指定しているActiveDirectoryを指定します。

  5. [LDAPユーザ同期へ] をクリックして認証するアカウントの選択、またはLDAP自動連携機能を設定します。

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

  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証明書で 書き換えられていない ことを確認します。

Note

  • ブロックページの他にも、一時解除(Passwordあり・なし)、規制解除申請画面を表示することができます。
  • 規制画面表示で警告が表示される場合、InterSafe WebFilter の証明書配布をお願い致します

その他

各種ログ

  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
    • SSL可視化バイパス設定を行っているサイトでは、InterSafeの規制画面が表示されない場合があります。
      規制画面を表示する必要があるサイトについては、SSLO上でのパイパス設定を行わないでください。
    • 本ガイドでは、Webで利用するデフォルトのポート番号に関してInterSafeポート規制機能との連携方法を記載しています。
      記載外のポートに対して、ポート規制機能を利用する場合、ガイド内1.7の設定を 必要なポートに対して追加してください。
    • InterSafe認証機能については、以下機能と連携可能であることを確認しています。
      IPアドレス認証 | Basic認証(ローカル) | Basic認証(LDAP連携)