F5 SSLO セットアップガイド i-FILTER編¶
最終更新日: 2021年8月16日
F5 SSL Orchestrator (SSLO)と WEB フィルタリング製品である i-FILTER との連携手順をご紹介致します。 (本ガイドは、一度BIG-IPを設定したことのある方を対象とした内容となっております。)
はじめに¶
こちらのページでは、以下のオフィシャルなドキュメントの補足となる資料や、複数の機能を組合せてソリューションを実現する方法をご紹介いたします。
F5のオフィシャルなドキュメントはこちらにございます。
- AskF5: https://support.f5.com/csp/home
- F5 Cloud Docs: https://clouddocs.f5.com/
- F5 DevCentral(コミュニティ): https://devcentral.f5.com/
F5 SSLO (L3 Explicit Proxy) とi-FILTER ICAP版の連携設定¶
本章では、SSLOの可視化ゾーンにi-FILTER ICAP版を配置し、ICAPプロトコルで連携する構成について、ご紹介致します。
F5 SSLOとi-FILTER ICAP版連携の流れ¶
F5 SSLOとi-FILTER ICAP版の連携の流れは以下の通りです。
- クライアントがパソコン(AD)にログオンします。
- SSLOでユーザ認証を実施し(NTLM認証、Kerberos認証の場合は自動的に認証が実施されます)、SSL通信を復号します。
- WEB接続先情報とSSLOで認証が成功したユーザ情報を i-FILTERにICAPで送ります。
- ユーザ情報を元にURLフィルタリングルールを適用し、接続が許可されていないWEBサイトの場合は、ブロック画面をクライアントに表示します。
- 許可された通信に関しては、SSL 通信を再暗号化し、WEBサーバへ接続します。
本ガイドの利用バージョンと構成イメージ¶
本ガイドは、以下の製品バージョンを利用して、作成しております。
利用バージョン
製品名 バージョン 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のライセンスが必要となります。
本ガイドにおける構成イメージ
ライセンスアクティベーション、プロビジョニング、CA証明書/鍵登録¶
Next ボタンを押します。
ライセンスをアクティベーションします。
以下のモジュール((SSL復号・再暗号化:LTM,AVR,iRulesLX,SSLO)&(認証:APM)) をプロビジョニングします。(ライセンスはSSLOとAPMの2つを利用しています。)
Next ボタンを押します。
ホスト名、タイムゾーン、Rootパスワード を設定して、Next ボタンを押します。
SSLOでサーバ証明書を書き換える際に利用する CA証明書、CA鍵 を選択し、任意の名前 を設定し、Next ボタンを押します。
Finished ボタンを押します。
最新版のSSL Orchestrator RPMへのアップグレード¶
AskF5(https://support.f5.com/)より最新版のSSLO RPMをダウンロードします。(SSLOにプリインストールされているRPMのバージョンが最新の場合は、以下の操作は不要です。)
SSL Orchestrator >> Configuration の画面にて、右上の アップグレードボタン を押します。
Choose File にて、先程ダウンロードしたRPMを選択し、Upload and Install を押します。
バージョンがアップグレードされていることを確認します。
Networkの基本設定¶
VLANの設定を行います。
Self IPの設定を行います。
デフォルトゲートウェイの設定を行います。
DNS, NTPの設定¶
DNSの設定を行います。
NTPの設定を行います。
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通信を無効にします。
Local Traffic >> Policies >> Policies List にて、Create ボタンを押します。
任意のポリシー名 を入力し、Create Policy ボタンを押します。
HTTPS用のルールを作成します。Rulesの Create ボタンを押します。
任意のRule名 を入力し、Match all of the following conditions: の + マークをクリックし、以下のように入力します。
Match all of the following conditions: 必要有無 TCP
port
is
any of
443
atclient accepted
time.必須 Apply to traffic on local
side ofexternal
interface必須 同様に、Do the following when the traffic is matched: の + マークをクリックし、以下のように入力し、Save ボタンを押します。(デバック用のログルールは任意で追加します。)
Do the following when the traffic is matched: 必要有無 Insert
HTTP Header
namedurihttps
with valuetcl:[HTTP::uri]
atrequest
time.必須 Replace
HTTP URI
full string
with valuetcl:https://[HTTP::host][HTTP::uri]
atrequest
time.必須 Disable
response adapt
atresponse
time.必須 Log message
tcl: HTTPs(443) URI was replaced to: [HTTP::uri]
atrequest
time.任意 Facility: local0
Priority:info
任意 同様にHTTP用のルールを作成します。
Match all of the following conditions: 必要有無 TCP
port
is
any of
80
atclient accepted
time.必須 Apply to traffic on local
side ofexternal
interface必須 Do the following when the traffic is matched: 必要有無 Insert
HTTP Header
namedurihttp
with valuetcl:[HTTP::uri]** at **request
time.必須 Replace
HTTP URI
full string
with valuetcl:http://[HTTP::host][HTTP::uri]
atrequest
time.必須 Disable
response adapt
atresponse
time.必須 Log
messagetcl: HTTP(80) URI was replaced to: [HTTP::uri]
atrequest
time.任意 Facility: local0
Priority:info
任意 2つのルール作成後は、以下のようになります。Save Draft ボタンを押します。
Publish ボタンを押すと、以下のようになります。
上記手順と同様に、以下のようなリクエストヘッダをもとに戻すLocal Traffic Policyルールを作成します。
Match all of the following conditions: 必要有無 TCP
port
is
any of
443
atclient accepted
time.必須 Apply to traffic on local
side ofexternal
interface必須 Do the following when the traffic is matched: 必要有無 Replace
HTTP URI
full string
with valuetcl:[HTTP::header values urihttps]
atrequest
time.必須 Remove
HTTP Header
namedurihttps
atrequest
time.必須 Disable
request adapt
atrequest
time.必須 Disable
response adapt
atresponse
time.必須 Match all of the following conditions: 必要有無 TCP
port
is
any of
80
atclient accepted
time.必須 Apply to traffic on local
side ofexternal
interface必須 Do the following when the traffic is matched: 必要有無 Replace
HTTP URI
full string
with valuetcl:[HTTP::header values urihttp]
atrequest
time.必須 Remove
HTTP Header
namedurihttp
atrequest
time.必須 Disable
request adapt
atrequest
time.必須 Disable
response adapt
atresponse
time.必須
NTLM認証設定¶
APMで行う認証の設定を行います。ここでは、NTLM認証の設定を行います。ADサーバ(ドメインコントローラ、DNS)の構築済みであることを前提としております。
Access >> Authentication >> NTLM >> Machine Account を選択し、Create ボタンを押します。
任意の名前 を設定し、Machine Account Name には 任意のSSLO識別名 を入力し、Domain FQDN、Adminユーザ名 と パスワード を入力し、Join を押します。
以下のようになります。
Access >> Authentication >> NTLM >> NTLM Auth Configuration を選択し、Create ボタンを押します。
任意の名前 を設定し、Machine Account Name は 先程作成したもの を選択します。Domain Controller FQDN List には ご利用のドメイン名(FQDN名) を指定し、Finished ボタンを押します。
Access >> Profiles/Policies >> Access Profiles(Per-Session Policies) を選択し、Create ボタンを押します。
任意の名前 を設定し、Policy Type に SWG-Explicit を選択し、Customization Type に Standard を選択し、User Identification Method にて、Credential を選択し、NTLM Auth Configuration に 先程作成したもの を選択し、Languages は ご利用の言語 を選択して、Finished ボタンを押します。
作成されたAccess Profileの一覧から先程作成したプロファイルを見つけ、Per-Session Policy欄の Edit を押します。
ブラウザの別タブにVPEが表示されます。Startの右隣の + ボタンを押します。
Authenticationタブの NTLM Auth Result を選択し、Add Item、Save を押します。
NTLM Auth Resultの右のSuccessfulにつながるフローを Deny から Allow に変更します。
左上の Apply Access Policy を押し、ブラウザのVPEタブを閉じます。
認証ヘッダ挿入用iRuleの作成¶
ここでは、ユーザ認証ヘッダ(X-Authenticated-User)とAPMで認証されたユーザ名(session.logon.last.username)をICAPリクエストに挿入するためのiRuleを作成します。ICAPはHTTPをカプセリングしますので、認証情報を挿入するためには以下の2つのiRuleが必要となります。また、i-FILTER ICAP版に認証ユーザ名を理解してもらうために、ユーザ名の手前に ldap:/// を加え、Base64エンコーディング をする必要があります。
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の設定¶
SSL Orchestrator >> Configuration を選択します。DNS と NTP と Route が Configure となっているのを確認し、Next ボタンを押します。
任意の名前 を設定し、SSL Orchestrator Topologiesとして、L3 Explicit Proxy を選択し、Save&Next ボタンを押します。
任意の名前 を設定し、右上の Show Advanced Setting をクリックし、Client-side SSL にて、利用したい TLSのバージョン を選択します。
CA Certificate KeyChain にて、既にインポート済みのCAファイルを選択して Done を押します。
Server-side SSL も同様に利用したい TLSバージョン を選択します。
期限切れの証明書や自己署名証明書に対しての動作も確認し、Save&Next を押します。
Add Service を押します。
Generic ICAP Service を選択し、Add ボタンを押します。
任意の名前 を設定し、ICAP Devices に i-FILTERのIPアドレス と ポート番号 を設定し、Done を押します。
Request Modification URI Path に /REQMOD を入力し、Preview Max Length に 0 を入力し、ICAP Policy に既に作成済みの Local Traffic Policy を選択し、Save を押します。(i-FILTER ICAP版は ICAP Preview に対応していないので、0 を入力します。)
Add Service を選択します。
Generic ICAP Service を選択し、Add ボタンを押します。
任意の名前 を設定し、ICAP Devices に 任意のIPアドレス と 任意のポート番号 を設定し、Done を押します。(こちらのサービスは実際には利用しませんので、設定する情報は何でも構いません。)
ICAP Policy に既に作成済みのヘッダをもとに戻すための Local Traffic Policy を選択し、Save を押します。
Save&Next ボタンを押します。
Service Chain List で Add を押します。
任意の名前 を設定し、先程作成したサービスを右に移動させ、Save ボタンを押します。(i-FILTERのサービスが上にくるようにします。)
Service Chain ができたことを確認し、Save&Next ボタンを押します。
All Trafficの ペンマーク をクリックします。
先程作成した Service Chain を選択し、OK ボタンを押します。
Save&Next ボタンを押します。
Proxy Server Settings にクライアントからプロキシとしてアクセスさせるIPアドレスを入力し、既に作成済みの Access Profile を選択し、Ingress Network として、クライアントからアクセス可能な VLAN を選択し、Save&Next ボタンを押します。
本テスト構成では、Manage SNAT Settings で Auto Map、Gateways で Default Route を選択し、Save&Next ボタンを押します。(設定は検証環境に合わせてください。)
Save&Next ボタンを押します。
必要に応じて、設定内容を見直し、 Deploy ボタンを押します。
OK ボタンを押し、Deployに成功すると以下のような緑色の DEPLOYED マークが表示されます。
右上の System Settings アイコンを選択します。
SSLOがExplicit Proxyとして利用する DNS を設定し、Deploy を押します。
i-FILTERと連携するサービスに関しては認証ヘッダを挿入するために、また、ヘッダをリストアするサービスに関してはモニタを停止するため、Protectedの 鍵 マークを外します。
ヘッダをリストアするサービスに紐づくPoolのモニターの情報をはずします。(設定を外す前は存在しないサーバに対して、モニターを投げているので、AvailabilityがOfflineとなっているはずです。)
既に作成済みの iRule を追加します。Local Traffic >> Virtual Servers>> において、ssloS_XXXX(任意)-t-4 という名称のVirtual Serverを選択し、Resources タブを選択、HTTPリクエストヘッダに認証情報を挿入するための iRule を選択し、Finished を押します。
ICAPリクエストヘッダに加えるための iRule を追加します。Local Traffic >> Virtual Servers において、ssloS_XXXX(任意)-req という名称のVirtual Serverを選択し、Resources タブを選択、ICAPリクエストヘッダに認証情報を挿入するための iRule を選択し、Finished を押します。
注釈
- セキュリティデバイスがICAPサービス、HTTPサービスの場合、SSL復号していないトラフィックをサービスチェーンに流せません。
i-FILTER ICAP版(Linux版)の設定¶
i-FILTERのインストールは終了しているものとします。
ユーザ認証の設定¶
- システム/ユーザ認証/基本設定 を選択します。
基本設定 の ユーザ認証方式 において ICAP認証 を選択します。
ICAP認証設定 の ICAP認証ユーザ参照 において、有効にする をチェックします。
右上の 保存 ボタンを押します。
次に、システム/ユーザ認証/LDAPサーバ設定 を選択します。本ガイドでは認証ユーザ情報をADサーバから取り込むため、以下のように設定し、保存 ボタンを押します。
項目 設定例 アドレス:ポート番号 ご利用の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)
グループポリシーの作成、ユーザ情報の取り込み¶
グループ/基本モード/モード設定 において、追加 ボタンを押します。
グループ名 を分かりやすいグループ名に変更します。
ユーザ タブにおいて、追加 ボタンをクリックします。
認証ユーザ参照 を選択します。
検索しやすい検索条件を設定し、ADから取り込みたい ユーザ名 を追加します。
Webサービス タブを選択し、制御したいサービスを選択し、ユーザに利用不許可とする機能に対し、ブロック を選択します。(注:下記イメージはあくまでも一例です。)
個別リスト タブを選択し、個別ブロックしたいURL/URIを追加し、右上の 保存 ボタンを押します。(注:下記イメージはあくまでも検証目的で設定した内容です。)
ブロック画面のタイトル画像連携設定¶
システム/システムパラメーター/動作設定 において、仮想ホスト名設定 の コンテンツ転送 の値を、で設定したSSLOのInterception RuleのDestination AddressのIPアドレスに変更します。
- i-FILTER v10.40R01 より、WEB接続ブロック時にユーザに表示するブロック画面中のタイトル画像は、HTTPS接続アクセスに対しては、HTTPSで表示されるようになっております。(HTTP接続アクセスに関しては、以前同様、ブロック画面イメージもHTTPで表示されます。)HTTPS接続アクセスの場合、SSLOを経由してi-FILTER ICAP版に接続する際に、上記のようにIPアドレス設定だけではタイトル画像が表示されなくなりました。回避方法例は1.13で説明します。
ここでは、簡易的にブロック画面中にタイトル画像を表示せず、システム/デフォルト画面/ブロック画面 において、タイトル画像を 表示しない を選択し、保存 ボタンを押します。必要に応じて、メッセージも変更します。
クライアントからの接続テスト¶
クライアントにSSLOの CA証明書 をインストールします。
コマンドラインで確認する場合は、以下を利用します。
curl -vk --proxy 10.100.35.201:3128 –proxy-ntlm –proxy-user 'se001:ilovef5!' https://xxxx.xxx
ブラウザで確認する場合は、プロキシ設定にSSLOを加えてからWEB接続を確認します。
WEB通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられている ことを確認します。
ブラックリストの宛先への通信が ブロック されることを確認します。
SSL復号除外サイトの通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられていない ことを確認します。
i-FILTERブロック画面のタイトル画像の表示、パスワードブロック解除の設定¶
1.11.3.にて、SSLO連携をするとブロック画面のタイトルが標準では表示されないと記載しましたが、以下の設定を追加することによって、表示させることが可能です。本設定を行うことにより、パスワード入力によるブロック解除も連携が可能となります。上記を実現するためには、下図の4つのVirtual Serverが追加で必要となります。ここでは、下図の④②①③の順で作成していきます。

ICAP service request用Virtual Serverの作成¶
まずはICAP用のプロファイルを以下のように作成します。 Local Traffic >> Profiles >> Services >> ICAP にて、Create ボタンを押します。任意の名前 を入力し、URI には以下のように入力し、Finished ボタンを押します。
icap://${SERVER_IP}:${SERVER_PORT}/REQMOD
次にICAP service request 用のVirtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Type は Internal を選択します。
Configuration にて Advanced を選択し、ICAP Profile にて、作成済みの ICAPプロファイル を選択します。
最後に、Default Pool にて、SSLO Guided Configurationで作成済みの Pool を選択して、Finished ボタンを押します。
Explicit HTTPS Proxy用Virtual Serverの作成¶
まず、ICAP用のVirtual Serverを呼び出すためのRequest Adaptプロファイルを作成します。Local Traffic >> Profiles >> Services >> Request Adapt にて、Create ボタンを押します。任意の名前 を入力し、Internal Virtual Name にて、作成済みの Virtual Sever を選択し、Preview Size にて、0 を入力し、Finished ボタンを押します。
次に、SSLサイトにおけるブロック時に、ブロック画面内のタイトル画像にSSL接続するためのClientSSLプロファイルを作成します。Local Traffic >> Profiles >> SSL >> Client にて、Create ボタンを押します。任意の名前 を入力し、タイトル画像をSSL経由で表示させるための サーバ証明書 と 秘密鍵 を選択し、Finished ボタンを押します。(BIG-IPにてSSLオフロードを行うため、System >> Certificate Management >> Traffic Certificate Management にて、予め サーバ証明書 と 秘密鍵 の登録が必要となります。)
次に、Proxy用のTunnelを作成します。Network >> Tunnel List にて、Create ボタンを押します。任意の名前 を入力し、Profile にて、tcp-forward を選択し、Finished ボタンを押します。
次に、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" }
次に、SSL用のExplicit HTTPS Virtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、0.0.0.0/0 を入力、Service Port にて、15080 と入力します。
Configuration にて、Advanced を選択し、HTTP Profile にて、http を選択、SSL Profile (Client) にて、作成済みの clientsslプロファイル を選択します。
Request Adapt Profile にて、作成済みの プロファイル を選択し、VLAN and Tunnel Traffic にて、Enable on... を選択し、VLANs and Tunnels にて作成済みの Tunnel を選択し、Source Address Translation にて Auto Map を選択し、Address Translation と Port Translation のチェックをはずします。
iRules にて、作成済みの iRule を選択し、Finished ボタンを押します。
Explicit HTTP Proxy用Virtual Serverの作成¶
まず、プロキシ用のExplicit Profileを作成します。Local Traffic >> Profiles >> Services >> HTTP にて、Create ボタンを押します。Proxy Mode にて、Explicit を選択します。
DNS Resolver にて、SSLO Guided Configurationで作成した DNS Resolver を選択し、Tunnel Name にて、作成済みの Tunnel を選択し、Finished ボタンを押します。
次に、以下の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 } }
次にExplicit HTTP Proxy用のVirtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、プロキシ接続用の IPアドレス を入力、Service Port にて、プロキシとして利用する ポート番号 を入力します。
HTTP Profile(Client) にて、作成済みの HTTP Explicit Profile を選択します。
Request Adapt Profile にて、作成済みのプロファイルを選択し、Source Address Translation にて、Auto Map を選択します。
iRules にて作成済みの2つのiRuleを選択して、 Finished ボタンを押します。
Reject用Virtual Serverの作成¶
最後に、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 ボタンを押します。
i-FILTER側の設定¶
システム/システムパラメーター/機能設定 にて、仮想ホスト転送モード を有効にし、コンテンツ転送用アドレス に BIG-IPのFQDN を入力し、ポート番号 に 15080 を入力します。(IPアドレスを入力しても動作はしますが、SSL接続時にブラウザでプライバシー保護のエラーが表示されます。)
システム/システムパラメーター/動作設定 にて、コンテンツ転送、ブロック解除 のそれぞれに 任意の値 を設定します。(ブロック画面タイトル表示時、パスワードブロック解除時のURIの一部として利用されます。)
クライアントからの接続テスト¶
ブラウザの プロキシ設定 にて、作成済みのExplicit ProxyのIPアドレスに紐づく FQDN または、IPアドレスに変更します。
ブラックリストの宛先への通信がブロックされ、タイトル画像が表示されることを確認します。
パスワードブロック解除が設定されている宛先へ接続し、パスワード入力画面が表示されることを確認します。
解除パスワード入力後、無事WEB接続ができる事を確認します。
その他¶
各種ログ¶
- テストの際には、以下の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
- テストの際には、以下のi-FILTERにおけるログを参照して下さい。
- アクセスログ
- /usr/local/ifilter10/logs/access.log0000
フィルター除外設定(必須ではございません)¶
本テストでは、httpbin.org を接続先ホストとして利用させて頂いておりますが、現状デフォルトではブロックされるので、システム/システムフィルター/推奨フィルター設定 – 除外設定 にて、テストで利用しているホスト名を 除外設定 に追加します。
F5 SSLO (L3 Explicit Proxy) とi-FILTER Proxy版の連携設定¶
本章では、SSLOの可視化ゾーンにi-FILTER Proxy版を配置して連携する構成について、ご紹介致します。
F5 SSLOとi-FILTER PROXY版連携の流れ¶
F5 SSLOとi-FILTER PROXY版の連携の流れは以下の通りです。
- クライアントがパソコン(AD)にログオンします。
- SSLOでユーザ認証を実施し(NTLM認証、Kerberos認証の場合は自動的に認証が実施されます)、SSL通信を復号します。
- WEB接続の情報とSSLOで認証が成功したユーザ情報を i-FILTERにHTTPで送ります。
- ユーザ情報を元にURLフィルタリングルールを適用し、接続が許可されていないWEBサイトの場合は、ブロック画面をクライアントに表示します。
- 許可された通信に関しては、SSL 通信を再暗号化し、WEBサーバへ接続します。
本ガイドの利用バージョンと構成イメージ¶
本ガイドは、以下の製品バージョンを利用して、作成しております。
利用バージョン
製品名 バージョン 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のライセンスが必要となります。
本ガイドにおける構成イメージ
ライセンスアクティベーション、プロビジョニング、CA証明書/鍵登録¶
最新版のSSL Orchestrator RPMへのアップグレード¶
Networkの基本設定¶
VLANの設定を行います。
Self IPの設定を行います。
デフォルトゲートウェイの設定を行います。
DNS, NTPの設定¶
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 に挿入しています。
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認証設定¶
認証ヘッダ挿入用iRuleの作成¶
ここでは、ユーザ認証ヘッダ(Proxy-Authorization)とAPMで認証されたユーザ名(session.logon.last.username)をHTTPリクエストに挿入するためのiRuleを作成します。i-FILTER PROXY版連携では、Proxy-Authorization というヘッダー名に、ユーザ名をBase64エンコーディングしたBasic認証の形式で挿入します。
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の設定¶
SSL Orchestrator >> Configuration を選択します。DNS と NTP と Route が Configure となっているのを確認し、Next ボタンを押します。
任意の名前 を設定し、SSL Orchestrator Topologiesとして、L3 Explicit Proxy を選択し、Save&Next ボタンを押します。
任意の名前 を設定し、右上の Show Advanced Setting をクリックし、Client-side SSL にて、利用したい TLSのバージョン を選択します。
CA Certificate KeyChain にて、既にインポート済みのCAファイルを選択して Done を押します。
Server-side SSL も同様に利用したい TLSバージョン を選択します。
期限切れの証明書や自己署名証明書に対しての動作も確認し、Save&Next を押します。
Add Service を押します。
Generic HTTP Service を選択し、Add ボタンを押します。
任意の名前 を設定します。
Service Definition にて、Auto Manage Addresses のチェックをはずし、SSLOからi-FILTER ProxyへHTTPトラフィックを転送するVLAN, Self IPの情報を入力します。 (ここでは、検証環境の都合でAuto Manage Addressesは利用しておりません。)
注釈
- SSL可視化ゾーン(ここではi-FILTER Proxy版)では、HTTPトラフィックは暗号化されておりませんので、第三者からのアクセスを避ける必要があります。そこで、SSLOでは、Auto Manage Addresses(RFC2544に定められているインターナル利用アドレス)をセキュリティ機器に利用頂くことを推奨しております。
i-FILTER Proxyのインライン側の IPアドレス と ポート番号 を入力し、Done を押します。
i-FILTER ProxyからSSLOへHTTPトラフィックを転送するVLAN, Self IPの情報を入力します。
検証環境では Auto Map を設定し、作成済みのiRuleを右に移動させ、Save を押します。
Serviceが追加されるとこのような画面になります。Save&Next を押します。
Add をクリックし、サービスチェーンを作成します。
任意の名前 を設定し、作成済みのServiceを右に移動させ、Save ボタンを押します。
サービスチェーンが作成されると、このような画面になります。Save&Next ボタンを押します。
All Trafficeの ペンマーク をクリックします。
先程作成した Service Chain を選択し、OK ボタンを押します。
All TrafficeにService Chainが追加されると以下のような画面になります。
Save & Next ボタンを押します。
Proxy Server Settings にクライアントからプロキシとしてアクセスさせるIPアドレスを入力し、既に作成済みの Access Profile を選択し(プロキシ認証しない場合は不要)、Ingress Network として、クライアントからアクセス可能な VLAN を選択し、Save&Next ボタンを押します。
本テスト構成では、Manage SNAT Settings で Auto Map、Gateways で Default Route を選択し、Save&Next ボタンを押します。(設定は検証環境に合わせてください。)
Save&Next ボタンを押します。
必要に応じて、設定内容を見直し、Save&Next ボタンを押します。
OK ボタンを押し、Deployに成功すると以下のような緑色の DEPLOYED マークが表示されます。
右上の System Settings アイコンを選択します。
SSLOがExplicit Proxyとして利用する DNS を設定し、Deploy を押します。
注釈
- セキュリティデバイスが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連携の設定¶
conf/ifilter.confに以下のパラメータを追加します。
proxy_header_rewrite_protocol_enable = on
ユーザ認証の設定¶
システム/ユーザ認証/基本設定 を選択します。
基本設定 の ユーザ認証方式 において SNOOP認証 を選択します。
ICAP認証設定 の SNOOP認証ユーザ参照 において、有効にする をチェックします。
右上の 保存 ボタンを押します。
次に、システム/ユーザ認証/LDAPサーバ設定 を選択します。本ガイドでは認証ユーザ情報をADサーバから取り込むため、以下のように設定し、保存 ボタンを押します。
項目 設定例 アドレス:ポート番号 ご利用の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)
グループポリシーの作成、ユーザ情報の取り込み¶
グループ/基本モード/モード設定 において、追加 ボタンを押します。
グループ名 を分かりやすいグループ名に変更します。
ユーザ タブにおいて、追加 ボタンをクリックします。
認証ユーザ参照 を選択します。
検索しやすい検索条件を設定し、ADから取り込みたい ユーザ名 を追加します。
Webサービス タブを選択し、制御したいサービスを選択し、ユーザに利用不許可とする機能に対し、ブロック を選択します。(注:下記イメージはあくまでも一例です。)
個別リスト タブを選択し、個別ブロックしたいURL/URIを追加し、右上の 保存 ボタンを押します。(注:下記イメージはあくまでも検証目的で設定した内容です。)
ヘッダーコントローラの設定¶
iRuleで挿入したX-Forwarded-For(クライアントIPアドレス)をi-FILTERログに出力するための設定を行います。
/システム/ヘッダーコントローラ を選択します。
以下のように、設定します。
ブロック画面のタイトル画像連携設定¶
システム/システムパラメーター/動作設定 において、仮想ホスト名設定 の コンテンツ転送 の値を、で設定したSSLOのInterception RuleのDestination AddressのIPアドレスに変更します。
HTTPS接続の場合、SSLOを通すとブロック画面のタイトル画像が表示されません。回避方法例は1.13で説明します。
ここでは、簡易的にブロック画面中にタイトル画像を表示せず、システム/デフォルト画面/ブロック画面 において、タイトル画像を 表示しない を選択し、保存 ボタンを押します。必要に応じて、メッセージも変更します。
注釈
- 必要に応じて、Connection: keep-aliveを有効にしてください。
- i-FILTER製品の詳細に関しては、メーカーにお問い合わせください。
クライアントからの接続テスト¶
クライアントにSSLOの CA証明書 をインストールします。
コマンドラインで確認する場合は、以下を利用します。
curl -vk --proxy 10.100.35.201:3128 –proxy-ntlm –proxy-user 'se001:ilovef5!' https://xxxx.xxx
ブラウザで確認する場合は、プロキシ設定にSSLOを加えてからWEB接続を確認します。
WEB通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられている ことを確認します。
ブラックリストの宛先への通信が ブロック されることを確認します。
SSL復号除外サイトの通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられていない ことを確認します。
i-FILTERブロック画面のタイトル画像の表示、パスワードブロック解除の設定¶
2.11.3にて、SSLO連携をするとブロック画面のタイトルが標準では表示されないと記載しましたが、以下の設定を追加することによって、表示させることが可能です。本設定を行うことにより、パスワード入力によるブロック解除も連携が可能となります。上記を実現するためには、下図の3つのVirtual Serverが追加で必要となります。ここでは、下図の①②③の順で作成していきます。
Explicit HTTP Proxy用Virtual Serverの作成¶
Proxy用のTunnelを作成します。Network >> Tunnel List にて、Create ボタンを押します。任意の名前 を入力し、Profile にて、tcp-forward を選択し、Finished ボタンを押します。
プロキシ用のExplicit Profileを作成します。Local Traffic >> Profiles >> Services >> HTTP にて、Create ボタンを押します。任意の名前を設定し、Proxy Mode にて、Explicit を選択します。
DNS Resolver にて、SSLO Guided Configurationで作成した DNS Resolver を選択し、Tunnel Name にて、作成済みの Tunnel を選択し、Finished ボタンを押します。
次に、以下の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 } } }
Explicit Proxy用のVirtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、プロキシ接続用の IPアドレス を入力、Service Port にて、プロキシとして利用する ポート番号 を入力します。
HTTP Profile(Client) にて、作成済みの HTTP Explicit Profile を選択します。
Source Address Translation にて、Auto Map を選択します。
iRules にて作成済みの2つのiRuleを選択して、Finished ボタンを押します。
Explicit HTTPS Proxy用Virtul Serverの作成¶
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 }
ブロック画面内のタイトル画像にSSL接続するためにBIG-IPにてSSLオフロードを行うため、サーバ証明書 と 秘密鍵 の登録します。 System >> Certificate Management >> Traffic Certificate Management にて、利用するサーバ証明書 と 秘密鍵 の登録します。下記が登録したサーバ証明書のイメージです。ここでは、SANにFQDNとIPアドレスを登録しています。
次に、SSLサイトにおけるブロック時に、ブロック画面内のタイトル画像にSSL接続するためのClientSSLプロファイルを作成します。Local Traffic >> Profiles >> SSL >> Client にて、Create ボタンを押します。任意の名前 を入力し、先程登録した サーバ証明書 と 秘密鍵 を選択し、Finished ボタンを押します。
HTTPS用のExplicit Proxy Virtual Serverを作成します。Local Traffic >> Virtual Servers にて、Create ボタンを押します。任意の名前 を入力し、Destination Address/Mask にて、0.0.0.0/0 を入力、Service Port にて、443 と入力します。
Configuration にて、Advanced を選択し、HTTP Profile にて、http を選択、SSL Profile (Client) にて、作成済みの clientsslプロファイル を選択します。
VLAN and Tunnel Traffic にて、Enable on... を選択し、VLANs and Tunnels にて作成済みの Tunnel を選択します。
iRules にて、作成済みの iRule を選択し、Finished ボタンを押します
Reject用Virtual Serverの作成¶
最後に、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 ボタンを押します。
i-FILTER側の設定¶
システム/システムパラメーター/動作設定 にて、コンテンツ転送 、ブロック解除 のそれぞれにサーバ証明書に登録したDNS名を設定します。(ブロック画面タイトル表示時、パスワードブロック解除時のURIの一部として利用されます。)
クライアントからの接続テスト¶
ブラウザの プロキシ設定 にて、作成済みのExplicit ProxyのIPアドレスに紐づく FQDN または、IPアドレス に変更します。
ブラックリストの宛先への通信がブロックされ、タイトル画像が表示されることを確認します。
パスワードブロック解除が設定されているURLへ接続し、パスワード入力画面が表示されることを確認します。
解除パスワード入力後、無事WEB接続ができる事を確認します。
その他¶
各種ログ¶
- テストの際には、以下の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
- テストの際には、以下のi-FILTERにおけるログを参照して下さい。
- アクセスログ
- /usr/local/ifilter10/logs/access.log0000
フィルター除外設定(必須ではございません)¶
本テストでは、httpbin.org を接続先ホストとして利用させて頂いておりますが、現状デフォルトではブロックされるので、システム/システムフィルター/推奨フィルター設定 – 除外設定 にて、テストで利用しているホスト名を 除外設定 に追加します。
i-FILTER通信について¶
- i-FILTERのDBアップデートやシステムアップデートに必要な通信に関しては、i-FILTER用サーバにて管理用VLANを通して、アップデートできるように設定して下さい。