Slide 1

Slide 1 text

BIG-IPの Forward Proxy構成 ~ 導入の心得 ~ 初版作成日: 2021年02月12日 作成者: MyHomeNWLab

Slide 2

Slide 2 text

筆者情報 • Name • MyHomeNWLab • Blog • https://myhomenwlab.hatenablog.com/ • Twitter • https://twitter.com/MyHomeNWLab • 座右の銘 • 仕事で触れないなら、自宅に導入して遊べばいいじゃない。 2 興味の赴くまま、技術を食い散らかします。

Slide 3

Slide 3 text

本資料に関して • F5 Networks社のBIG-IPを、L3 ExplicitのForward Proxy構成で導入する際に必要 となる情報をまとめました。 • Proxyはカタカナ表記でプロキシ, プロクシ, プロキシー, プロクシーと表記される場合もあります が、本資料はその揺らぎを避けるために意図的に英語表記のProxyにしています。 • BIG-IPのバージョンは v15.1.1 系の情報を元にしています。 • SSL Orchestratorのバージョンは v15.1.0-7.5.2 系の情報を元にしています。 • v15.1.0- と記載がありますが、 v15.1.1 系向けのバージョンです。 3

Slide 4

Slide 4 text

執筆意図 • BIG-IPのForward Proxy構成は、技術的な観点での情報が出回っていな かったため、筆者が苦労した点を踏まえて、導入における知っておくべき用途を 心得としてまとめました。 • Forward Proxy構成での導入事例はまだまだ少ないようですので、今後の バージョンアップに伴い、ユーザー要望が反映されていけば、大幅な改良がなさ れる可能性があります。そのため、最新の正確な情報を確認するようにしてくだ さい。 • より良い導入の手助けになれば幸いです。 4

Slide 5

Slide 5 text

本資料の記載方針 • 本資料は構築手順書ではないため、設定手順の一つ一つまでは深堀し ません。 • 最大の理由は、自らの手で答えを導ける方でなければ、そもそもBIG-IP のForward Proxy構成を導入するのが難しいためです。 • そのため、導入にあたり鍵となる情報をメインで紹介します。 5

Slide 6

Slide 6 text

心構え • 本資料はスライド数は多いものの、内容は必須中の必須のものしか扱っ ておりません。そのため、内容は全て理解して、常に把握しておく必要があ ります。 • 例えば、一つの改修を行おうとするならば、局所的に捉えると、考慮漏れ が誘発しやすくなります。そのため、全ての内容を脳内で処理して、影響 箇所や考慮点を全網羅的に洗い出す必要があります。 6

Slide 7

Slide 7 text

目次 • 第1部 BIG-IPとForward Proxyの概要 • 第2部 BIG-IP Forward Proxy 標準実装 • 第3部 BIG-IP Forward Proxy SSLO実装 • 第4部 BIG-IP Forward Proxy 応用実装 • 第5部 まとめ • 付録 • 注記 • 標準実装, SSLO実装, 応用実装は、筆者が便宜的に名付けたものです。 13

Slide 8

Slide 8 text

第1部 BIG-IPとForward Proxy の概要 14

Slide 9

Slide 9 text

BIG-IP全般 15

Slide 10

Slide 10 text

BIG-IPとは • F5 Networks社が販売する製品であり、LB (Load Balancer)として 名高いです。 • 多種多様なモジュールがあり、その中でもLBの機能を基軸としたLTM (Local Traffic Manager)が有名です。 • iRulesと呼ばれるスクリプト言語ベースで機能を拡張できます。 16

Slide 11

Slide 11 text

本資料で取り扱うモジュール • LTM (Local Traffic Manager) • LBを基軸としたモジュールですが、Forward Proxy構成でも用いられます。 • APM (Access Policy Manager) • アクセス制御を担うモジュールです。汎用的な機能であるため、様々な構成で用いられる可能性が あります。特段、SSL-VPNで用いられる事例が多いように見受けられます。 • SSLO (SSL Orchestrator) • 他社メーカーのセキュリティ機器との連携を視野に入れたSSLの可視化を担うモジュールです。 • Orchestratorの名の通りに、複雑になりがちな設定のデプロイ(展開)を簡易化します。 17

Slide 12

Slide 12 text

18 赤枠で囲まれているのが本書で取り扱うモジュールです。

Slide 13

Slide 13 text

APM (Access Policy Manager)の特徴 • VPE (Visual Policy Editor)と呼ばれるフローチャート形式でアクセス制御を行うた めの機能が特徴的です。 • VPEでは2種類のアクセス制御のPolicyがあります。どちらもVPEで設定するため、外 観は似通ってますが、用途と設定可能な項目が異なります。 • Per-Session Policy (Access Profile) • 認証と認可の制御を担います。Forward Proxy構成では主に認証の方を担います。 • Per-Request Policy • Forward Proxy構成では、URLフィルタリングやSSL復号化の制御を担います。 • ユーザーの所属グループや所属サブネットに応じて、Allow Listの設定も可能なため、認可の制御も担えます。 19

Slide 14

Slide 14 text

20 Per-Session Policy / Access Profileと Per-Request Policyと名前が似通っているので、 混同しないように注意してください。 APMのPolicy系のメニュー

Slide 15

Slide 15 text

21 APMのPer-Session Policy (Access Profile)

Slide 16

Slide 16 text

22 APMのPer-Request Policy

Slide 17

Slide 17 text

SSLO(SSL Orchestrator)の特徴 • Guided Configurationと呼ばれるセットアップ ガイドに基づいて、設定 のデプロイを担います。 • 他社メーカーとのセキュリティ機器との連携機能を持ち合わせていますが、 まずは「Forward Proxyとして顧客の要件が満たせるか?」が重要にな るため、本資料では掘り下げません。 • そのため、連携機能を用いない場合は、実質的に単なるセットアップ ガイ ドの使い方がメインになります。 23

Slide 18

Slide 18 text

24 SSLOのConfigurationメニュー ※メインとなるメニュー

Slide 19

Slide 19 text

25 SSLOのGuided Configuration(セットアップ ガイド)のメニュー

Slide 20

Slide 20 text

モジュールと”構成” • BIG-IPのモジュールにはいくつもの種類がありますが、そのモジュールのひとつ 取っても複数の”構成”に適用できます。 • 実際、Forward Proxy構成では、LB構成で有名なLTMや、SSL-VPN構 成で有名なAPMを主に用います。 • そのため、BIG-IPのモジュールの資料を見かけたら、どの”構成”を前提としてい る記事なのか?を念頭に置いて読む必要があります。 • LTMの資料を見かけたら、LB構成を前提としているのか? • APMの資料を見かけたら、SSL-VPN構成を前提としているのか? 26

Slide 21

Slide 21 text

Forward Proxy全般 27

Slide 22

Slide 22 text

BIG-IPとForward Proxyを知る • BIG-IPのForward Proxy構成では、実装対象のBIG-IPへの理解と、 Forward Proxyへの深い理解が必要になります。 • Forward Proxyが担う役割を実現するための機能を、BIG-IPの標準 機能にない場合は、自らの手で実装する必要があるためです。 • また、どのような機能をBIG-IPで実現するかにあたって、顧客が Forward Proxyに求める要件の整理も重要となってきます。 28

Slide 23

Slide 23 text

Forward Proxy【構成】における利点 • Forward Proxy【構成】の構成上の利点は主に下記となります。 • Internet (不特定多数)宛のWeb通信の送信元アドレスをForward Proxyに 絞れる。 • Forward Proxyによりアプリケーション層の情報を元にアクセス制御をきめ細かに 行える。 29

Slide 24

Slide 24 text

Forward Proxy構成における利点 Firewallを介したInternet直抜けの場合 30 Firewall Internet Web Server Web Server 悪意ある Web Server Client (Web Browser) Client (Web Browser) Client (Web Browser) Policy ID Action Protocol Source Address Source Port Destination Address Destination Port 1 Permit TCP Client Any Any 80, 443 ... 不特定多数(Any)のWeb ServerがInternet上には存在するため、 それらのサービスの恩恵を受けるには宛先をAnyで穴あけする必要があります。 しかし、それだと悪意あるWeb Serverに接続してしまう危険性がありますが、 Layer 4レベルまでのアクセス制御では、よりセキュアにするのは難しくなります。

Slide 25

Slide 25 text

Forward Proxy構成における利点 Forward Proxyが存在する場合 31 Firewall Internet Web Server Web Server 悪意ある Web Server Client (Web Browser) Client (Web Browser) Client (Web Browser) 送信元をForward Proxyにして、 Clientからは直接的にInternetへ抜けないようにします。 Forward Proxy Internet(不特定多数)宛の通信となるため、 基本的にはAnyのままになります。 ポートを 8080 等にして公開しているWebサイ トもあるため、必要に応じてAnyにします。 Policy ID Action Protocol Source Address Source Port Destination Address Destination Port 1 Permit TCP Forward Proxy Any Any 80, 443 ... 【Allow List / White List】 URL: https://www.google.com URL: https://www.yahoo.com Category: Information Layer 7レベルの情報を用いて、 アクセス制御はForward Proxyが担います。

Slide 26

Slide 26 text

Forward Proxy構成の注意点 32 Internet Client (Web Browser) Firewall Firewall Forward Proxy Web Server Web Server Web Server • Forward Proxy構成によるアクセス制御を念頭に置いていると、 Internet Breakoutのような直接Internetへ抜けようとする通信と相 性が悪くなります。利点だけではない点に注意が必要です。 【理想】 特定の通信をInternet直抜けにしたい。 (Internet Breakout) 【現実】 通常ではForward Proxy経由になるため、 特定の通信をPACファイルで除外する必要などが生じる。

Slide 27

Slide 27 text

Forward Proxyの役割の一例 • Forward Proxyを介して通信させると、一元的なアクセス制御を行えま す。 • 通信ログにより通信状況を把握し、後追いもしやすくなります。 • よく閲覧されるサイトの情報をキャッシュすることにより、通信量の削減やレ スポンスの向上を期待できます。 33

Slide 28

Slide 28 text

Forward Proxyの機能の一例 • URLフィルタリング • ユーザー認証 • SSL復号化 • キャッシュ (HTTP Cache / Web Cache) • 注記: 紹介する機能は一例でしかありません。先入観を持たずに、既存で顧客が利用している機能の 踏襲可否や、次期の更改や新規導入で求められている機能を確認してください。 34

Slide 29

Slide 29 text

URLフィルタリング • “宛先(URL)”に対して通信の許可や拒否の制御を行います。 • 要件によっては、送信元サブネットや所属グループの組み合わせが要求される 場合があります。例えば、営業システム(https://sales-sys.test/)には各営 業支店(10.0.X.0/24)からのSalesグループのみしかアクセスさせたくない等。 • その他にもHTTP MethodやUser Agentなども要素に含めたい場合は、 URLフィルタリングと言えども、”宛先(URL)”だけの要素ではなくなるため、どのよ うに実装できるか検討する必要があります。 35

Slide 30

Slide 30 text

ユーザー認証 • 「誰がどの情報にアクセスできるか?」を制御するために、「誰が」を識別す るためのユーザーの識別を行います。 • また、ユーザー単位では粒度が細かすぎるため、現実的には所属している グループ単位の制御を併用します。 • 認証方式はいくつかあるので、用途に応じて選びます。 36

Slide 31

Slide 31 text

SSL復号化 • HTTPSによる暗号化通信が一般化しており、そのままだと通信の中身を 確認できないため、管理者の制御下に置き難い課題があります。 • そのため、暗号化通信の中身をIntercept(傍受)して一度通信を紐解 き、中身を確認してから再暗号化して、通信させる処理をSSL復号化で 行います。 37

Slide 32

Slide 32 text

キャッシュ (HTTP Cache / Web Cache) • 回線帯域の節約や通信の高速化のために、Web通信をキャッシュします。 • BIG-IPではメモリ上にキャッシュするため、大容量データのキャッシュ向きで はありません。BIG-IPはディスク上にはキャッシュできません。 • 時代の変化と共に回線帯域も増強されており、セキュリティ強化のために アクセス制御の方が重要視されるニーズがあるため、BIG-IPの利用にお いては副次的な効果の期待に留めるのが現実的です。 38

Slide 33

Slide 33 text

機能を特定の条件下で無効化する必要性 • 実際の運用では、Forward Proxyの機能を特定の条件下で無効化さ せる必要が出てくる場合があります。 • そのため、特定の条件をトリガーとして、機能の有効化と無効化ができる か否かが重要になります。 • 背景としては、不特定多数の様々なWebサーバへの接続の仲介を行う 性質があるが故に、相手方の仕様に合わせた調整が必要になるためです。 39

Slide 34

Slide 34 text

機能を特定の条件下で無効化する例 #1 • 認証除外 (認証なし) • 認証が行えないツールの存在が想定されます。 • SSL復号化除外 • クライアント認証を行っているWebサイトの存在が想定されます。 • センシティブな情報が扱われているWebサイト(例: オンライン バンク)では、ユー ザーの通信の中身を見てしまわないように、SSL復号化の対象から除外が必要に なってくる可能性があります。 40

Slide 35

Slide 35 text

機能を特定の条件下で無効化する例 #2 • サーバ証明書のチェックの除外(サーバ証明書チェックの無効化) • 通信先のWebサイトの仕様に応じて、サーバ証明書のチェックを無効化する必要 が想定されます。 • 例えば、ネットワーク機器の自己署名証明書で設定されたWeb UIへの接続があ ります。 • キャッシュ除外 (HTTP Cache除外 / Web Cache除外) • Webサイトの死活監視のヘルスチェックのために、常に最新の情報を得られるよう にキャッシュから除外する用途が想定されます。 41

Slide 36

Slide 36 text

条件の要素 • 条件を付ける場合は、どのような要素が必要なのかを顧客要件から整理 してください。 • 例えば、認証除外で宛先FQDNを判断要素にしたい場合、APMのPer- Session Policy(Access Profile)に、宛先に関するItemが無いため、 iRulesでの実装の検討が必要となります。 • 必要な場合、今後の新しいバージョンでは対応しているか確認してください。 42

Slide 37

Slide 37 text

BIG-IPの構成と設計の観点 43

Slide 38

Slide 38 text

BIG-IPの構成による設計の違い • BIG-IPはLB構成とSSL-VPN構成が有名のため、Forward Proxy構 成での導入では、世に出回っているBIG-IPの情報に疑問を抱く必要が あります。 • また、BIG-IPの各設定のデフォルト値は、どの構成を前提としてチューニン グされたものかを意識して設計が必要になります。 44

Slide 39

Slide 39 text

各構成の通信の向きの違い • LB構成とSSL-VPN構成に対して、Forward Proxy構成では通信の 向きが異なります。 • 言い換えると、LB構成とSSL-VPN構成はInbound通信ですが、 Forward Proxy構成はOutbound通信です。 • また、不特定多数の存在が始点になるか終点になるかの違いもあります。 45

Slide 40

Slide 40 text

各構成と制御配下の違い • LB構成のWebサービスでは、不特定多数のClientから接続されるため、サービス管理者の 制御配下には置かれませんが、ClientのOSやWebブラウザのサポート対象をサービス利用規 約で絞れます。 • SSL-VPN構成では、正規ユーザーからのSSL-VPN Clientのみを認証して許可するため、 BYODで私物端末を持ち込む場合を除いて、比較的に制御配下に置き易いです • しかし、Forward Proxy構成では、宛先が不特定多数のInternet側に向くため、システム 管理者の制御配下から外れてしまい、宛先のWebサイトの仕様に合わせるしかありません。 46

Slide 41

Slide 41 text

各構成における通信の向き 47 BIG-IP LB構成 Internet Web Server Client (Webブラウザ) BIG-IP SSL-VPN Internet 社内Server Client (SSL-VPN Client) BIG-IP Forward Proxy構成 Internet Client (Webブラウザ) Web Server 不特定多数が存在する環境 【Forward Proxy構成】 【SSL-VPN構成】 【LB構成のWebサービス】 Forward Proxy構成では、主に不特定多数が宛先となるため、 システム管理者の制御配下から外れざるをえない。

Slide 42

Slide 42 text

不特定多数の考慮 • Internet上の不特定多数のWeb Serverは、様々な人や会社によって提供 されているため、基本的にサービスを受けたければ、相手側のサービス仕様に合 わせるしかありません。 • そのため、通信を介在するForward Proxyには、Webサイトの仕様に合わせ てパラメータの調整が可能な機能が求められます。 • 不特定多数のWebサービスの仕様を洗い出すのは現実的に不可能であるた め、既存環境でチューニングに利用している機能は、更改に伴い洗い出す必要 があります。 48 Web Server 我らのサービスを使いたければ、 我らのサービス仕様に合わせよ! Web Server Web Server Web Server Web Server

Slide 43

Slide 43 text

構成の違いを意識した設計例 • Webサイトのキャッシュを実現するためにWeb Acceleration Profileがあります。 • 一般的なLB構成では宛先がシステム部に限られるため、キャッシュの設計はWeb Server側のコンテンツなどを基準に設計できました。 • しかし、Forward Proxy構成では、不特定多数が宛先になり、キャッシュ可能なコン テンツもWebサービス側に大きく依存し、時代の変化も受けやすく一意に決め打ちす るのが難しくなります。 • また、 BIG-IPの仕様ではメモリ上でキャッシュするため、Forward Proxy構成での 大容量データのキャッシュには向いていません。 • そのため、意図的にデフォルト値のままの設計としておき、検証時や導入後に実際の 利用状況に応じて修正をかける案があります。 49

Slide 44

Slide 44 text

Web Server Web Server 構成による設計観点の違い 50 BIG-IP LB構成 Internet Web Server Client (Webブラウザ) BIG-IP Forward Proxy構成 Internet Client (Webブラウザ) Web Server 不特定多数が存在する環境 【Forward Proxy構成】 【LB構成のWebサービス】 不特定多数のWeb ServerがInternet上には存在するため、キャッシュ対象に際限がないです。 Web Server Web Server LB構成では、システム内のWeb Serverに限定されるため、 キャッシュ対象が有限的です。 Web Server Web Server Web Server Cache キャッシュ対象 増大 Cache

Slide 45

Slide 45 text

LTMで意識する設計 • LTMのモジュールは、Virtual Serverに各種Profileを紐付けて成り立っ ています。また、Profile内で条件指定を変更できない場合があります。 • 例えば、SSL証明書のチェック除外を行いたくても、SSL Server Profile 内では条件指定ができず、有効化と無効化のみしか選択できません。そ のため、APMのPer-Request PolicyのServer Cert StatusのItem を用いて条件分岐で挙動を変える実装が必要となります。 51

Slide 46

Slide 46 text

iRules 条件指定と挙動の変更例 52 Virtual Server Profile #X Profile #1 用途1 Profile #2 用途2 Profile #N 用途N VPE (Visual Policy Editor) - Per-Session Policy (Access Profile) - Per-Request Policy iRulesにより条件に応じて、 Profileを張り替えて特性を変える。 例: SSL::profile コマンド ・VPEで条件に応じて挙動を変える。 ・ItemでProfile内の設定値を変える。 設定X: Disabled ⇒ Enabled 例: SSLの復号化/復号化除外の切り替え iRulesにより条件に応じて、 Profile内の設定値を変える。

Slide 47

Slide 47 text

APMで意識する設計 • APMではVPEによりフローチャート形式で条件に応じたアクションを指定で きます。 • よって、何を条件の要素に指定できるか?が重要な要素となってきます。 • そのため、APMでは、どのようなItemがあって、どのような制御が可能であ るか把握する必要があります。Per-Session Policy (Access Profile) とPer-Request Policyの2種類のポリシーがあるため、忘れずに両方の 確認が必要です。 53

Slide 48

Slide 48 text

設定のデフォルト値と推奨値 • BIG-IPの多くの設定は、LB構成やSSL-VPN構成を前提としている可 能性があります。 • そのため、設定の値がデフォルトでForward Proxy構成に適した値であ る保証はありません。 • ましてや、何かしらの構成の推奨値の情報があれば、それがForward Proxy構成でも同じく当てはまるとは言い切れません。 54

Slide 49

Slide 49 text

実装方式の概要 • 設計の方式は大きく分けると3つの方式に分かれます。 55 実装方式 (便宜上の名称) 説明 標準実装 LTMとAPMを用いてBIG-IPの標準的な機能での実装です。 SSLO実装と応用実装の基礎となり、必須の知識となります。 アクセス制御を行わない場合は、APMは不要です。 SSLO実装 SSLOのGuided Configurationを用いて、BIG-IP標準の機能としてデプロイす る実装です。 表面上は簡単になりますが、簡単に見せるために隠蔽されている内部的な実装は 複雑になっています。 応用実装 BIG-IPの標準の機能では実現できない機能をiRulesを用いて実装します。 基本的には、SSLO実装をベースにしての発展させるイメージになります。

Slide 50

Slide 50 text

SSLO実装 各実装の違い モジュールとiRules有無の観点 56 LTM APM SSLO iRules LTM APM SSLO LTM APM LTM LTM APM iRules 応用実装 標準実装 標準実装ベース SSLO実装ベース アクセス制御が必要なければ、 LTM単体でも機能します。

Slide 51

Slide 51 text

難易度 57 標準実装 SSLO実装 応用実装 難易度 高 (High) 低 (Low) 各実装は積み重ねで成り立っています。

Slide 52

Slide 52 text

第2部 BIG-IP Forward Proxy 標準実装 58

Slide 53

Slide 53 text

標準実装 • BIG-IPが本来持つ標準的な機能を用いての実装方法です。 • Forward Proxyの基本機能にLTMの機能を、アクセス制御にAPMのモ ジュールの機能を用います。 • アクセス制御を行わなければ、LTM単体でも動作します。 59

Slide 54

Slide 54 text

Forward Proxy構成で必須とな る知識 60

Slide 55

Slide 55 text

Forward Proxy構成で必須となる知識 • BIG-IPのForward Proxy構成では、基本的に2種類のVirtual Serverが使われます。 • そのVirtual Serverの用途の違いを把握するには、HTTP CONNECT MethodとSSL復号化の観点を意識する必要があります。 61

Slide 56

Slide 56 text

HTTP CONNECT Method • Web BrowserがForward Proxyを介してHTTPSで接続する場合、 HTTP CONNECT Methodでホスト部分(FQDN部分)を指定して、 暗号化トンネルを張りに行くため、Forward Proxy側ではURLのPath 部分を判別できません。 • 例: CONNECT www.example.test:443 HTTP/1.1 • www.example.test/path/index.html の /path/index.html までは判 別できません。 • BIG-IPのForward Proxy構成では、HTTP CONNECT Methodが 処理フローに大きく影響します。 62

Slide 57

Slide 57 text

SSL復号化とURL • Forward Proxyを介する場合のHTTPS通信は、HTTP CONNECT Methodで接続先と暗号化トンネルを確立します。 • HTTPS通信では中身が暗号化されるため、Forward ProxyはHost 部分(FQDN部分)までしか判別できない制約があります。しかし、SSL復 号化を行うとURL全体を確認することが可能になります。 63 接続先URL SSL復号化: 無効化 (Disabled) SSL復号化: 有効化 (Enabled) http://www.example.test/path/index.html www.example.test/path/index.html www.example.test/path/index.html https://www.example.test/path/index.html www.example.test www.example.test/path/index.html

Slide 58

Slide 58 text

標準実装: LTM単体 64

Slide 59

Slide 59 text

Forward Proxyを実現する2つのVirtual Server • BIG-IPでForward Proxyを実現するには、2種類のVirtual Serverを使い 分けます。 1. HTTP Forward Proxy向け • 種別: SSL Bypass • SSL復号化の処理をBypass(迂回)するタイプのVirtual Serverです。 2. SSL Forward Proxy向け ※オプションですが、実質必須です。 • 種別: SSL Intercept • SSLの通信をIntercept(傍受) して、SSL復号化するタイプのVirtual Serverです。 65

Slide 60

Slide 60 text

Virtual ServerのIPアドレスとポート番号の指定 #1 1. HTTP Forward Proxy向け • IP Address & Port: 通信を待ち受けるためのIPアドレスとポート番号を指定し ます。 2. SSL Forward Proxy向け • IP Address: HTTP Tunnel上のSSL復号化対象の通信にマッチするように 0.0.0.0/0 (Any) を指定します。 • Port: HTTP Tunnel上のHTTPS通信にマッチするように 443 もしくは Any を 指定します。 • 補足: https://webserver.test:10443/ のようなポート指定の通信にマッチさせるには Any に指定する必要があります。 66

Slide 61

Slide 61 text

Virtual ServerのIPアドレスとポート番号の指定 #2 Virtual Server種別 IPアドレス ポート番号 HTTP Forward Proxy向け Virtual Server 待ち受け用のIPアドレスを指定します。 例: 192.168.0.123 待ち受け用のIPアドレスを指定します。 例: 8080 SSL Forward Proxy向け Virtual Server 0.0.0.0/0 (Any) 443 or Any 67

Slide 62

Slide 62 text

68 Destination と Service Port が異なるVirtual Serverを2つあるのに着目してください。

Slide 63

Slide 63 text

標準実装時のVirtual Serverの動作イメージ HTTP(80/tcp)通信の場合 69 SSL Forward Proxy 0.0.0.0:443 or Any HTTP Forward Proxy 192.168.0.123:8080 Client (Web Browser) Web Server HTTP GET Method HTTP(80/tcp)通信の場合は、 HTTP Forward Proxyのみを通ります。

Slide 64

Slide 64 text

標準実装時のVirtual Serverの動作イメージ HTTPS(443/tcp)通信の場合 70 SSL Forward Proxy 0.0.0.0:443 or Any HTTP Forward Proxy 192.168.1.123:8080 Client (Web Browser) Web Server HTTP CONNECT Method HTTP Forward Proxyに紐付く HTTP Tunnelを通る通信に対して、 SSL復号化の処理を担います。 HTTPS(443/tcp)通信の場合は、 HTTP Connect Methodが HTTP Forward Proxyを通り、 HTTP Tunnelを確立します。 HTTP Tunnel

Slide 65

Slide 65 text

Forward Proxyの設定要素 LTM Onlyの実装の場合 • HTTP Forward向けVirtual Server ➢HTTP Profile(Explicit Mode) ➢DNS Resolver ➢HTTP Tunnel (tcp-forward) • SSL Forward Proxy向けVirtual Server ➢VLAN and Tunnels: HTTP Tunnel (tcp-forward) ➢SSL Profile(Client) ➢SSL復号化向けのSSL Certificate ➢SSL Profile(Server) 71 同じHTTP Tunnelを紐付ける。 【注記】 APMを用いる場合は、 追加でアクセス制御の設定を行います。

Slide 66

Slide 66 text

72 HTTP Forward Proxyに紐付いているHTTP Profile SSL Forward ProxyのVirtual Serverに紐付いているTunnel 同じHTTP Tunnelを紐付ける。

Slide 67

Slide 67 text

HTTP Tunnel (tcp-forward)の紐付け 73 SSL Forward Proxy#1 0.0.0.0:443 or Any HTTP Forward Proxy#1 192.168.1.123:8080 Client#1 (Web Browser) Web Server HTTP CONNECT Method HTTP Tunnel http-tunnel_1 http-tunnel_1 http-tunnel_1 SSL Forward Proxy#2 0.0.0.0:443 or Any HTTP Forward Proxy#2 192.168.1.123:8080 http-tunnel_2 http-tunnel_2 0.0.0.0/0:AnyのVirtual Serverは どの通信にも該当してしまうので 複数存在すると競合してしまいます。 しかし、HTTP Tunnelの設定により、 Virtual Server同士の紐付けを行えております。 同じHTTP Tunnelを通る。

Slide 68

Slide 68 text

デフォルトの http-tunnel (tcp-forward) の使い回し • 複数のHTTP & SSL Forward Proxy向けVirtual Serverを複数セット作成する際は、 HTTP Tunnel を分けるのが必須となります。 • マルチテ ナントのような使い方や、ステージング用途で複数セットを使う場合も考えられるため、 デフォルトの http-tunnel の使い回しを意図的にしているのか否かを意識してください。 74

Slide 69

Slide 69 text

設定の構成要素 HTTP Forward Proxy向け • HTTP Tunnel (tcp-forward) • SSL Forward Proxy向けのVirtual ServerでHTTPS通信を処理するために、 HTTP Tunnelを作成します。 • DNS Resolver • Forward Proxyとして代理でWebサイトに接続しに行くために、HTTP Profileに紐付 ける名前解決先を指定します。 • HTTP Profile • L3 Forward Proxyとして構成するために、HTTP ProfileのProxy ModeをExplicit に指定します。 75

Slide 70

Slide 70 text

設定の構成要素 SSL Forward Proxy向け • Virtual ServerのVLANs and Tunnelに、HTTP Forward Proxy で割り当てているHTTP Tunnelを指定します。 • SSL Client ProfileとSSL Server ProfileのSSL Forward Proxy 関連項目を設定します。 • SSL Client ProfileではSSL復号化時に使用するSSL証明書を指定 できます。 76

Slide 71

Slide 71 text

標準実装: LTM + APM 77

Slide 72

Slide 72 text

標準実装でのAPMによるアクセス制御 • APM利用時は、Virtual Serverで受けた通信を、Per-Session Policy (Access Profile)で認証関連の制御をしてから、Per- Request PolicyでURLフィルタリングやSSL復号化関連の処理をするフ ローになります。 78 Virtual Server Per-Session Policy (Access Profile) Per-Request Policy

Slide 73

Slide 73 text

Virtual ServerのAccess Policyの設定 • Per-Request Policyの設定を行うには、Per-Session Policy (Access Profile)の設定が必須であり、設計における重要な要素です。 79

Slide 74

Slide 74 text

Virtual Serverが2つの場合はどうなるのか? • Forward Proxy構成では、HTTP & SSL Forward Proxyの Virtual Serverが存在する関係で、処理のタイミングを意識する必要が 出ます。 • HTTPとHTTPSのフローの違いと、HTTPSの暗号化前後 (Before/After)の違いを意識してください。 80

Slide 75

Slide 75 text

HTTP Forward Proxy向け 81 Virtual Server Per-Session Policy (Access Profile) Per-Request Policy SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy 種別が同じPolicyが2つあるので、 どちらのPolicyで何をするのか?が重要です。

Slide 76

Slide 76 text

82 Per-Session Policy (Access Profile)では 何かしらのアクションとして Ending(Allow, Deny)を指定しなければならない。

Slide 77

Slide 77 text

Forward Proxyの設定要素 LTM + APMの実装の場合 • HTTP Forward向けVirtual Server ➢ Per-Session Policy (Access Proifle) ➢ Pe-Request Policy ➢ HTTP Profile(Explicit Mode) ➢ DNS Resolver ➢ HTTP Tunnel (tcp-forward) • SSL Forward Proxy向けVirtual Server ➢ Per-Session Policy (Access Proifle) ➢ Per-Request Policy ➢ VLAN and Tunnels: HTTP Tunnel (tcp-forward) ➢ SSL Profile(Client) ➢ SSL復号化向けのSSL Certificate ➢ SSL Profile(Server) 83 認証用途のPolicyが重複して適用された場合、 処理はどのようになるでしょうか? 例えば、前段のHTTP Forward ProxyでAllowされて、 後段のSSL Forward ProxyでDenyされたら、 通信は結果的にDenyされるでしょうか? 筆者が実機で確認した限りでは、 前段が優先されるため、Allowされます。 後述のProfile Type: SSL Orchestrator は例外です。 SSL Forward Proxy向けのPer-Request Policyでは、 SSL復号化した通信に対する処理を行えるのが 決定的な違いです。

Slide 78

Slide 78 text

認証用途のPolicyの重複適用の設計 • SSL Forward Proxy向けVirtual ServerにてSSL復号化した通信に対す る処理をできなければ、SSL復号化を行う価値が半減されます。 • そのため、HTTP Forward Proxy向けのVirtual Serverで認証の制御を 行い、SSL Forward Proxy向けのVirtual Serverには「何もしない」に相 当するダミーのAllowのPolicyの適用が考えられます。ただし、厳密に同じ動作 はしませんでした。 • ただし、筆者が実機で確認した際の挙動のため、ご自身で裏付けは取ってくだ さい。また、「何もしない」ためだけにも後述するSSLOの導入を検討してください。 84

Slide 79

Slide 79 text

85 AskF5 | Manual: F5 SSL Orchestrator: Architecture https://techdocs.f5.com/kb/en-us/products/ssl-orchestrator/manuals/product/ssl-orchestrator-architecture-14-0-0-4-0.html リンク先で「Click here to view the PDF」をクリックしてPDFファイルをダウンロードします。

Slide 80

Slide 80 text

86 Per-Session Policy (Access Profile)の Profile Type: SSL Orchestrator は、 「何もしない」のが特徴です。 SSLOモジュールの有効化時でしか指定できません。

Slide 81

Slide 81 text

87 Profile Type: SSL Orchestrator には 下記のような「Edit...」ボタンがない特殊な扱いになっており、 同等な設定を手動作成しようにも不可能なのが分かります。

Slide 82

Slide 82 text

Access Policyの優先 88 HTTP Forward Proxy向け Virtual Server Access Policy SSL Forward Proxy向け Virtual Server Access Policy Access Policy Allow Policy Deny Policy SSL Orchestrator Policy Access Policy Allow Policy Deny Policy SSL Orchestrator Policy 組み合わせ × 「何もしない」ためのProfile Type: SSLO Orchestrator を例外的に除くと、 前段のAllowとDenyのAccess Policyが優先されます。

Slide 83

Slide 83 text

Policyの適用順序の検証方法 • LTM + APMの標準実装ベースのVirtual Serverに3種類のPolicyを 適用して検証すると挙動の違いが分かります。通信時にはどちらの Virtual Serverも通るように、HTTPS通信で試しました。 89

Slide 84

Slide 84 text

前段と後段のAccess Policyの組み合わせ 90 No. HTTP Forward Proxy (前段) SSL Forward Proxy (後段) 通信の成否 1 Allow Policy Deny Policy Allow (成功) 2 Deny Policy Allow Policy Deny (拒否) 3 SSL Orchestrator Policy (何もしない) Allow Policy Allow (成功) 4 SSL Orchestrator Policy (何もしない) Deny Policy Deny (拒否) 5 Allow Policy SSL Orchestrator Policy (何もしない) Allow (成功) 6 Deny Policy SSL Orchestrator Policy (何もしない) Deny (拒否) 7 Allow Policy Allow Policy Allow (成功) 8 Deny Policy Deny Policy Deny (拒否) 9 SSL Orchestrator Policy (何もしない) SSL Orchestrator Policy (何もしない) Allow (成功) No.1 と No.2 を見ると、Profile Type: SSL Orchestratorが、Allow Policyと等価ではないのが分かります。

Slide 85

Slide 85 text

APMのPolicyの適用パターンの概要表 モジュールの組み合わせ HTTP Forward Proxy Virtual Server SSL Forward Proxy Virtual Server Per-Session Policy (Access Profile) Per-Request Policy Per-Session Policy (Access Profile) Per-Request Policy LTM - - - - LTM + APM 認証の制御が可能 HTTPと、復号化前(Before) のHTTPSを対象に制御が可能 ???? 復号化後(After)のHTTPSを 対象に制御が可能 LTM + APM + SSLO 認証の制御が可能 SSLOはデフォルトで作成しない 何もしないProfile Type: SSL Orchestrator が指定される SSL復号化済みのHTTPS通 信を含めて制御が可能 91 認証の制御を既にしているため、この段階では「何もしない」を選びたいが、 「何もしない」設定のPolicyがSSLOなしでは作れない。 Per-Session Policyなしでは、 Per-Request Policyの指定ができない。

Slide 86

Slide 86 text

APMと処理フローの関係 • 処理フローは実装によって変わるため、下記の図の3パターンを掘り下げて いきます。コメントのあり/なしの図を用意しました。 • SSLOの有無で処理フローが変わる点が、APMの適用パターンに影響が あります。 92

Slide 87

Slide 87 text

処理フロー図 コメントなし版 99

Slide 88

Slide 88 text

BIG-IP 100 HTTP Forward Proxy向け Virtual Server Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 【標準実装】 LTM HTTP CONNECT Method

Slide 89

Slide 89 text

BIG-IP 101 HTTP Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 【標準実装】 LTM + APM HTTP CONNECT Method

Slide 90

Slide 90 text

BIG-IP 102 HTTP Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Profile Type: SSL Orchestrator Per-Request Policy HTTP CONNECT Method HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 iRules virtual コマンド 【SSLO実装】 LTM + APM + SSLO

Slide 91

Slide 91 text

処理フロー図 コメントあり版 103

Slide 92

Slide 92 text

BIG-IP 104 HTTP Forward Proxy向け Virtual Server Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 【標準実装】 LTM HTTP CONNECT Method SSL Forward Proxy向けには、 HTTPSの通信しか通りません。

Slide 93

Slide 93 text

BIG-IP 105 HTTP Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 【標準実装】 LTM + APM HTTPもしくはSSL復号化前 に対する処理を行える。 ここでの処理はどうするか? Per-Request Policyを指定するには、 Per-Session Policyの方の指定も必須のため、 特に何もしなければ、何もしない処理が必要となります。 SSL復号化後に対する処理を行える。 HTTP CONNECT Method

Slide 94

Slide 94 text

Per-Request Policy BIG-IP 106 HTTP Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Profile Type: SSL Orchestrator Per-Request Policy HTTP CONNECT Method HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 iRules virtual コマンド 【SSLO実装】 LTM + APM + SSLO Per-Session Policyは 認証・認可の有無の必要に応じて指定します。 SSLOではPer-Request Policyは作られません。 SSL Forward Proxyの方のPolicyで、 SSL復号化後の段階の処理をHTTP, HTTPSとわに処理が可能なためと考えられます。 HTTPの通信であっても、 SSL Forward Proxy向けのVirtual Serverに virtual コマンドで転送する実装になっています。 認証処理はこの段階では既に行われているため、 「何もしない」ための Profile Type: SSLO Orchestratorを指定しています。 SSLO実装では、 HTTP, HTTPを問わずに 一括で処理が可能になります。

Slide 95

Slide 95 text

標準実装とSSLO実装のフローの 違い 107

Slide 96

Slide 96 text

標準実装とSSLO実装の通信フローの違い • 標準実装とSSLO実装の違いは、SSL Forward Proxy向けのVirtual Serverに、HTTPとHTTPSのどちらの通信であっても集約される点です。 • iRulesの virtual コマンドを用いて、Virtual ServerからVirtual Serverへの転送の処理をしています。 • そのため、SSL復号化された状態の通信に対して、一元的にPolicyの適 用を行える利点が生まれています。 108

Slide 97

Slide 97 text

SSLO実装時のVirtual Serverの動作イメージ 109 SSL Forward Proxy 0.0.0.0:Any HTTP Forward Proxy 192.168.1.123:8080 Client (Web Browser) Web Server HTTP GET Method SSLO実装では、iRulesの virtual コマンドで SSL Forward Proxyに転送しています。 HTTP Tunnel SSLO Forward Proxy側で一元管理的に 処理を行え安くなります。

Slide 98

Slide 98 text

SSL Forward Proxyでの非SSL通信の受け入れ • SSL Forward Proxy向けVirtual ServerでHTTP通信を受け入れ るには、紐付いているSSL Client Profileの設定変更が必要です。 • SSL Client ProfileのNon-SSL ConnectionsをEnabledにします。 110

Slide 99

Slide 99 text

111 Non-SSL Connections の設定を表示するには、 Configuration を Advanced 表示にします。

Slide 100

Slide 100 text

112 SSL Forward Proxyで非SSL通信を受け入れるためには、 SSL Client ProfileのNon-SSL Connections を Enable にします。

Slide 101

Slide 101 text

virtual コマンドと SSL::enable / SSL::disable コマンド • Virtual ServerからVirtual Serverへの転送には、iRulesでvirtual コマンドを用います。 • SSL通信の有無に応じて、SSL Forward ProxyのVirtual Server側 では、SSL Profileの有効化と無効化の処理が必要です。iRulesで SSL::enable と SSL::disable コマンドを用います。 • 本資料にもコンセプト コードを掲載します。エラー ハンドリングの実装をし 切れていないため、あくまでもコンセプトの参考用となります。 113

Slide 102

Slide 102 text

114 virtual https://clouddocs.f5.com/api/irules/virtual.html

Slide 103

Slide 103 text

115 SSL::enable https://clouddocs.f5.com/api/irules/SSL__enable.html

Slide 104

Slide 104 text

116 SSL::disable https://clouddocs.f5.com/api/irules/SSL__disable.html

Slide 105

Slide 105 text

117 Master list of iRule Commands https://clouddocs.f5.com/api/irules/Commands.html Clouddocs の Master list of iRule Commands に iRules コマンドの情報が網羅的に掲載されているので参考にしてください。

Slide 106

Slide 106 text

118 HTTP Forward Proxyに適用するiRules

Slide 107

Slide 107 text

119 when CLIENT_ACCEPTED { set domain "?" ; # e.g. www.example.com set addr "?" ; # e.g. 10.0.1.2.3 set port "?" ; # e.g. 80, 443, 8080 } ; # CLIENT_ACCEPTED when HTTP_PROXY_REQUEST { # Get domain name # e.g. http://www.example.com/ => www.example.com # e.g. http://1.1.1.1/ => 1.1.1 set domain [string tolower [URI::host [HTTP::uri]]] if {[regexp {^([0-9]{1,3}[.]){3}[0-9]{1,3}$} $domain]} { ; # IPv4 address pattern set addr $domain } else { # Get DNS A record set result [RESOLV::lookup -a $domain] set addr [lindex $result 0] ; # Get 1st DNS A record } # Get port number # iRules URI::port command returns 80/443 for empty http/https port # e.g. http://www.example.com/ => 80 # e.g. https://www.example.com/ => 443 set port [URI::port [HTTP::uri]] # Jump to SSL Forward Proxy Virtual Server # TODO: Specify Virtual Server name in your environment virtual "VS_SSL_FORWARD_PROXY" $addr $port } ; # HTTP_PROXY_REQUEST when HTTP_REQUEST { # Jump to SSL Forward Proxy Virtual Server # TODO: Specify Virtual Server name in your environment virtual "VS_SSL_FORWARD_PROXY" [HTTP::proxy addr] [HTTP::proxy port] } ; # HTTP_REQUEST HTTP Forward Proxyに適用するiRules

Slide 108

Slide 108 text

120 SSL Forward Proxyに適用するiRules

Slide 109

Slide 109 text

121 # TODO: Change SSL Client Profile # allow-non-ssl (CLI) / Non-SSL Connections (Web UI): disabled => enabled # tmsh modify ltm profile client-ssl clientssl_YOUR_PROFILE allow-non-ssl enabled when CLIENT_ACCEPTED { # Preparing to accept HTTP(Non-SSL) SSL::disable serverside } when CLIENTSSL_CLIENTHELLO { # Preparing to accept HTTPS(SSL) SSL::enable serverside } SSL Forward Proxyに適用するiRules

Slide 110

Slide 110 text

標準実装のAPMによる制御 122

Slide 111

Slide 111 text

標準実装のAPMによる制御の一例 • APMによる下記4つの制御を紹介します。 • BASIC認証 & Local User DB • URLフィルタリング • SSL 復号化”除外” • サーバ証明書のチェック除外 123

Slide 112

Slide 112 text

BASIC認証 & Local User DB 124

Slide 113

Slide 113 text

APMによる認証制御 • 標準実装でもSSLO実装でも、APMによる認証制御の設定方法は同 等になります。 • SSLO実装では、自ら作成したPer-Request Policy (Access Profile)をGuided Configurationで指定するためです。 • 認証方法はいつくかありますが、BIG-IP単体で実装可能なBASIC認証 とLocal User DBを用いた方法を紹介します。 125

Slide 114

Slide 114 text

認証の方式 • Client - Forward Proxy間 • 資格情報のやり取りを行います。下記のような認証方法があります。 • BASIC認証 • 注記: BASIC認証は資格情報が暗号化されません。 • Kerberos認証 • Forward Proxy - 認証Server間 • ユーザーから得られた資格情報の真正性の確認を行います。 • Local User DB • LDAP • Active Directory 126

Slide 115

Slide 115 text

認証の方式のイメージ 127 BIG-IP Forward Proxy構成 Client (Web Browser) Web Server 認証Server Local User DB 資格情報のやり取り 資格情報の真正性の確認

Slide 116

Slide 116 text

HTTP 407 Responseによる資格情報のやり取り • APMのPer-Session Policy (Access Profile)には、HTTP 407 ResponseのItemがあり、Client - Forward Proxy間で資格情報の やり取りに用いられます。 • Forward Proxyから「407 Proxy Authentication Required」によ り、Clientに資格情報の要求を行います。 • Clientは「Proxy-Authorization」をHTTP Requestのヘッダーに付 与して資格情報を送付します。 128

Slide 117

Slide 117 text

HTTP 407 ResponseのItemの動作イメージ 129 BIG-IP Forward Proxy構成 Client (Web Browser) 1. HTTP Request → Proxy-Authorizationなし (資格情報なし) ← 2. HTTP 407 Response (407 Proxy Authentication Required) 3. HTTP Request → Proxy-Authorizationあり (資格情報あり)

Slide 118

Slide 118 text

BASIC認証 & Local User DBの設定 1. Local User DB Instance • Local Userを格納するためのDBインスタンスを作成します。 2. Local User • DBインスタンスにLocal Userを作成します。 3. Per-Request Policy (Access Profile) • BASIC認証とLocal User DBの認証の設定を行います。 130

Slide 119

Slide 119 text

131 Instanceを先に作成してから、 UserをそのInstanceに所属させます。

Slide 120

Slide 120 text

132 User情報を格納するためのInstanceを作成した状態です。

Slide 121

Slide 121 text

133 Userを作成した状態です。

Slide 122

Slide 122 text

134

Slide 123

Slide 123 text

135 HTTP 407 ResponseのBasicの分岐がBASIC認証のフローになります。 Negotiate の分岐はKerberos認証です。

Slide 124

Slide 124 text

136 Basic Auth RealmとHTTP Auth Levelを設定します。 ちなみに、HTTP Auth levelのnegotiateの選択肢を選ぶと Kerberos認証になります。

Slide 125

Slide 125 text

137 予め作成しておいたLocal User DBを指定します。

Slide 126

Slide 126 text

BASIC認証の認証タイムアウト • BASIC認証の認証が一度通ると、WebブラウザがHTTP Requestに資格情 報を載せるケースがあります。 • 資格情報が毎回載っていると、認証タイムアウトの状態であっても、認証ダイア ログの表示なしで認証が通ります。実質的に認証タイムアウトが発生しない挙 動に見えます。 • ただし、WebブラウザがHTTP Requestを送付しない限り、認証タイムアウト 時の再認証が行われないため、バックグラウンドの通信は認証で失敗する可能 性があります。 138

Slide 127

Slide 127 text

“宛先ベース”の認証”除外” • APMのPe-Session Policy (Access Profile)では、宛先による分岐 を行えるItemが無いため、宛先ベースの認証除外を行えません。 • Per-Request Policyでは宛先ベースの制御を行えますが、Per- Session Policy (Access Profile)では行えないため、混同に注意して ください。 • iRulesを用いた実装などの検討が必要となります。 139

Slide 128

Slide 128 text

APMを用いたURLフィルタリング 140

Slide 129

Slide 129 text

URLフィルタリングの設定 • URLフィルタリングは Access > Secure Web Gateway のメニュー配下の 設定を主に使用します。 • 下記の3つのItemの設定例を紹介します。 • URL CategoriesによりURLのリストを用意して、Category LookupのItemから参 照する。 • URL FiltersでURL Categoriesの各URLのリストに対するアクションを定義して、URL Filter AssignのItemから参照する。 • Per-Request PolicyからURL BranchingのItemで直接的に指定する。 141

Slide 130

Slide 130 text

142 Secure Web Gatewayのモジュールがなくても、 手動登録によるURLフィルタリングの機能は利用できます。

Slide 131

Slide 131 text

Category LookupによるURL フィルタリング 143

Slide 132

Slide 132 text

144 URL Categoriesの設定のひとつを、 VPEのCategory Lookupから参照します。

Slide 133

Slide 133 text

145 URL Categoriesでは、 Glob Pattern Matchが使えます。

Slide 134

Slide 134 text

146

Slide 135

Slide 135 text

147 HTTPまたはSSL復号化されたHTTPS通信に対して、 URLのPath(例: https://www.example.test/path)まで含めて識別を行う場合は 「Use HTTP URI」を選択します。

Slide 136

Slide 136 text

URL Filter AssignによるURL フィルタリング 148

Slide 137

Slide 137 text

URL Filter Assignの使い方 • URL Filter AssignのItemを用いる場合、Category Lookupの Itemをその前に配置します。 • Category LookupのItemが無い場合は、「URL filter lookup Agent Failed. No category information available」のエラー メッ セージが /var/log/apm のログに出力されます。 149

Slide 138

Slide 138 text

150 URL Categoriesで作成されている設定が、 URL Filtersの設定に関わってきます。

Slide 139

Slide 139 text

151 URL Categoriesで作成した各カテゴリに対して、 URLフィルタリングのアクションを指定します。

Slide 140

Slide 140 text

152 URL Filter AssignのItemの前には、 Category lookupのItemが必要です。

Slide 141

Slide 141 text

URL BranchingによるURLフィル タリング 153

Slide 142

Slide 142 text

154 URL Branchingは直接的にURLを指定できます。 そのため、単一のURLを例外的に処理する場合などに向いています。

Slide 143

Slide 143 text

APMを用いたSSL復号化”除外” 155

Slide 144

Slide 144 text

SSL復号化”除外”の制御 • SSL Forward Proxyを設定しただけでは、HTTPS(443/tcp)通信の 全てがIntercept(傍受)されてしまいます。 • そのため、SSL復号化の除外をするには、APMのPer-Request Policy により、除外する対象に対して、SSL Bypass SetのItemで復号化の 除外を行います。 156

Slide 145

Slide 145 text

APMでのSSL復号化”除外”の設定 • SSL ProfileのClientとServerの両方で SSL Forward Proxy Bypass を Enabled にします。 • なお、Virtual Serverに適用済みのSSL Profileは、ClientとServerの両方で SSL Forward Proxy Bypassの設定が合致する必要があります。 • APMのPer-Session Policyで条件に応じて、SSL Bypass Set の Itemを配置します。 157

Slide 146

Slide 146 text

158 SSL Client Profileの方です。

Slide 147

Slide 147 text

159 SSL Server Profileの方です。

Slide 148

Slide 148 text

160 この例では、「www.example.com」にマッチした場合に、 SSL Bypass Set によりSSL復号化除外の対象になります。

Slide 149

Slide 149 text

APMを用いたサーバ証明書の チェック除外 161

Slide 150

Slide 150 text

サーバ証明書のチェック除外の設定 • サーバ証明書のチェック機能は、SSL Server Profileの機能にて行われ ています。 • SSL Server Profileではチェックの有効化と無効化しか指定できません が、VPEのItemを用いれば除外を行えます。 • VPEのItemにより制御を行う場合は、SSL Server Profileを特定の値 に設定する必要があります。 162

Slide 151

Slide 151 text

Server SSL Profileのサーバ証明書のチェック 除外向けの設定 • SSL Server Profileで下記の通りに設定をします。 • Server Certificate: require... • Expire Certificate Response Control: ignore もしくは mask • Untrusted Certificate Response Control: ignore もしくは mask 163

Slide 152

Slide 152 text

164

Slide 153

Slide 153 text

165 Server Certificate を Require とし、 Expire/Untrusted Certificate Response Control は、 Ignore もしくは Mask にします。

Slide 154

Slide 154 text

166 Server Cert Statusでfallbackした通信に対して、 URL識別系のItemで対象通信をAllowにすれば、 サーバ証明書のチェック除外ができます。 サーバ証明書のチェックでNGだった場合は、 fallbackに分岐します。 Server Cert StatusのItemは サーバ証明書関連のPerflow変数をチェックする仕組みになってます。

Slide 155

Slide 155 text

不正なサーバ証明書のチェックの確認方法 • badssl.com (https://badssl.com/)に様々な不正なサーバ証明 書が用意されているため、サーバ証明書のチェック除外の確認に活用でき ます。 167

Slide 156

Slide 156 text

168 badssl.com https://badssl.com/

Slide 157

Slide 157 text

キャッシュの設計 169

Slide 158

Slide 158 text

キャッシュ • キャッシュは、Web Acceleration ProfileをVirtual Serverに紐付け ると有効化できます。 • そのため、処理フロー上に複数のVirtual Serverが存在する場合、どの Virtual ServerにWeb Acceleration Profileを適用するべきかの検 討が必要になります。 • 標準実装とSSLO実装では処理フローが異なる関係上、キャッシュの設 計も異なってきます。 170

Slide 159

Slide 159 text

HTTPSの暗号化通信とキャッシュ • Web Acceleration Profileではキャッシュ対象に制約があります。詳細 はドキュメントを参照してください。 • Article: K14903 - Overview of the Web Acceleration profile • URL: https://support.f5.com/csp/article/K14903 • HTTPSで使われるCONNECT Methodはキャッシュ対象にはなりません が、暗号化トンネルが確立された後のGET Methodは、SSL復号化され ていればキャッシュ対象に含まれます。 171

Slide 160

Slide 160 text

キャッシュとアクセス制御 • キャッシュされたデータは、送信元ホストを問わず共有されます。 • そのため、アクセス制御で通信可否が決まった上で、許可された送信元ホ ストに対してキャッシュを返す必要性があります。 • 標準実装とSSLO実装ではアクセス制御が適用されるタイミングが、キャッ シュの設計に違いが出るひとつの理由となります。 172

Slide 161

Slide 161 text

標準実装でのWeb Acceleration Profile • 標準実装ではHTTP & SSL Forward Proxy向けの両方のVirtual ServerにWeb Acceleration Profileを適用します。 • 一方にしか適用しないと、HTTPもしくはSSL復号化されたHTTPS通信 の一方しかキャッシュできないためです。 173

Slide 162

Slide 162 text

BIG-IP 174 HTTP Forward Proxy向け Virtual Server Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 【標準実装】 LTM HTTP CONNECT Method SSL復号化されたHTTPS通信であれば、 キャッシュの対象に含まれます。 Web Acceleration Profile Web Acceleration Profile HTTP通信をキャッシュします。 HTTP CONNECT Methodは キャッシュ対象には含まれません。

Slide 163

Slide 163 text

BIG-IP Web Acceleration Profile 175 HTTP Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Per-Request Policy HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 【標準実装】 LTM + APM HTTP CONNECT Method Web Acceleration Profile HTTP通信をキャッシュします。 HTTP CONNECT Methodは キャッシュ対象には含まれません。 SSL復号化されたHTTPS通信であれば、 キャッシュの対象に含まれます。

Slide 164

Slide 164 text

SSLO実装でのWeb Acceleration Profile • SSLO実装では前段にあたるHTTP Forward Proxy向けVirtual Serverの方にはWeb Acceleration Profileは適用しないでください。 • SSLO実装では後段にあたるSSL Forward ProxyのVirtual Server向けVirtual Serverを必ず通信が通るようにした上でアクセス 制御を一括適用しているため、前段でキャッシュ機能を適用するとアクセ ス制御がバイパスされてしまい、セキュリティ上のリスクになります。 176

Slide 165

Slide 165 text

Per-Request Policy BIG-IP 177 HTTP Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Client (Webブラウザ) Web Server SSL Forward Proxy向け Virtual Server Per-Session Policy (Access Profile) Profile Type: SSL Orchestrator Per-Request Policy HTTP CONNECT Method HTTPS(443/tcp) 暗号化通信 HTTP(80/tcp)通信 iRules virtual コマンド 【SSLO実装】 LTM + APM + SSLO Web Acceleration Profile アクセス制御が迂回されないように、 後段の方で適用します。 前段の方ではアクセス制御がないため、 キャッシュ機能は適用しないでください。

Slide 166

Slide 166 text

Web Acceleration Profileの適用の比較表 178 実装方法 HTTP Forward Proxy (前段) SSL Forward Proxy (後段) 標準実装 Web Acceleration Profileを適用 Web Acceleration Profileを適用 SSLO実装 - Web Acceleration Profileを適用

Slide 167

Slide 167 text

キャッシュに関するコマンド • キャッシュの確認 • tmsh show ltm profile web-acceleration webacceleration_For_HTTP_Forward_Proxy_VS • tmsh show ltm profile web-acceleration webacceleration_For_SSL_Forward_Proxy_VS • キャッシュの削除 • tmsh delete ltm profile ramcache webacceleration_For_HTTP_Forward_Proxy_VS • tmsh delete ltm profile ramcache webacceleration_For_SSL_Forward_Proxy_VS • キャッシュのカウンターのリセット • tmsh reset-stats ltm profile web-acceleration webacceleration_For_HTTP_Forward_Proxy_VS • tmsh reset-stats ltm profile web-acceleration webacceleration_For_SSL_Forward_Proxy_VS 179 備考: 設定名は適宜置き換えてください。

Slide 168

Slide 168 text

第3部 BIG-IP Forward Proxy SSLO実装 180

Slide 169

Slide 169 text

SSLO実装の概要 • SSLOのGuided Configurationにより、Setup Wizardのようなガイド の指示に従って、設定内容を入力してデプロイします。 • より詳細なチューニングを行うには、Guided Configurationから標準設 定へのデプロイされ方を把握する必要があります。 181

Slide 170

Slide 170 text

SSLOの必要性 • BIG-IPは様々なモジュールにより様々な構成に対応できる素晴らしい製 品です。しかし、有名所のLB構成やSSL-VPN構成にアーキテクチャが 偏っている側面もあるため、Forward Proxy構成向けにはチューニングさ れてないとも解釈できます。 • しかし、F5 Network社が公式に提供しているSSLOを用いることで、 Forward Proxy構成向けにチューチングされる点に、SSLOの価値があ ります。 182

Slide 171

Slide 171 text

SSLOはiApps LXにより実現されている • SSLOはBIG-IPの標準的な機能として実装されているのではなく、 iApps LXと呼ばれる機能にて、追加パッケージのように実装されています。 • SSLOのパッケージは https://downloads.f5.com より任意のバー ジョンがRPMファイルとして入手が可能です。 183

Slide 172

Slide 172 text

184 F5 Downloads URL https://downloads.f5.com/

Slide 173

Slide 173 text

185 iAppsのメニュー内に追加パッケージとして実装されている面影があります。

Slide 174

Slide 174 text

冗長化構成時のSSLOの設定の同期 • SSLOはBIG-IPの標準機能ではなく、追加パッケージとして提供されているた め、設定の同期方法が特殊となります。 • SSLOのGuided ConfigurationでActive機側からデプロイすると、SSLO自 体がStandby機にREST APIを用いて設定を流し込みます。その際、設定の 差分は発生するため、別途ConfigSyncによる設定の同期は必要になります。 • 特殊な設定の同期方法をしているため、Standby機の設定のタイムスタンプが Active機側より最新になる場合があります。必ず発生するとは限りませんが、 ConfigSyncを行う際は、注意して対象を選んでください。 186

Slide 175

Slide 175 text

SSLOの設定の同期のイメージ 187 F5 BIG-IP #1 (Active) F5 BIG-IP #2 (Standby) ①. SSLOはデプロイ時に、Active機からStandby機にREST APIで設定を流し込む挙動をします。 ① ② ②. SSLOのデプロイ後に別途ConfigSyncによる設定同期が必要です。

Slide 176

Slide 176 text

188 Active機(01号機)からSSLOでデプロイしていたのにも関わらず、 Standby機(02号機)のタイムスタンプが1秒進んで最新になっています。

Slide 177

Slide 177 text

設定の同期崩れ • 何かしらの設定や操作に起因して、Active機とStandby機で設定の同期が崩れた場合、 根本原因を解決しなければ、SSLOからのデプロイが出来なくなる可能性があります。 • そのため、設定の変更が発生する際は、設定の変更前後でActive機とStandby機のUCS ファイルを必ず取得してください。UCSファイルが無い場合は、最悪のケースで一から再構築と なります。 • v16.0.0 からはHA関連の診断の修正を行う ha-sync スクリプトが導入されていますが、 v15.1.1 では存在しません。 • 上述の背景があるため、検証環境での導入であっても、SSLOの挙動の把握のために冗長化 構成での導入をオススメします。 189

Slide 178

Slide 178 text

SSLOは簡単であり、複雑でもある • SSLOはガイドによる設定により、表面上は簡単にセットアップが可能になっております。 • 簡単になってはいますが、SSLOのバックグラウンドの処理で何が行われているか把握しておかないと、エ ラーが起きた際に対応できません。 • iApps LXではNode.jsの技術が使われており、デプロイ時にエラーが発生した場合に、SSLOの開発 者向けのようなメッセージが出力されるため、そのままメッセージに従えば解決できるような代物ではあり ません。インターネットで検索しても、利用ユーザーが少ないため同一事例が見つかる可能性も現状で はほぼありません。そのため、ログからエラー発生原因を追い、SSLOのiApps LXのソース コードの解析 作業が必要となり、アプリケーション開発寄りの知見が必要になります。そのため検証用途であっても、 問い合わせ可能な保守サービスを契約するのが無難です。 190

Slide 179

Slide 179 text

SSLOの取り扱いにおける注意点 • SSLOはバック グラウンド処理がとても複雑でトラブルシュートが困難なた め、F5 Professional Serviceの契約を検討してください。 • プロフェッショナル サービス | F5 • URL: https://www.f5.com/ja_jp/services/professional-services • 古いバージョンの情報ですが、SSL Orchestrator Architecture Guide Version 14.0.0-4.0 で推奨されています。 • AskF5 | Manual: F5 SSL Orchestrator: Architecture • URL: https://techdocs.f5.com/kb/en-us/products/ssl- orchestrator/manuals/product/ssl-orchestrator-architecture-14-0-0-4-0.html • リンク先で「Click here to view the PDF」をクリックしてPDFファイルをダウンロードします。 191

Slide 180

Slide 180 text

192 AskF5 | Manual: F5 SSL Orchestrator: Architecture https://techdocs.f5.com/kb/en-us/products/ssl-orchestrator/manuals/product/ssl-orchestrator-architecture-14-0-0-4-0.html リンク先で「Click here to view the PDF」をクリックしてPDFファイルをダウンロードします。

Slide 181

Slide 181 text

SSLOの情報源 • SSLOはiApps LXを用いているため、挙動がとても特殊になります。その ため、ドキュメントを必ず読んでください。 • またドキュメントを読んでも分からない場合は、BIG-IPのShellから下記 のディレクトリ配下のソース コードを確認してください。もしくは、SSLOの RPMファイルを展開して確認します。 • ls /var/config/rest/iapps/f5-iappslx-ssl-orchestrator/ 193

Slide 182

Slide 182 text

194 Software Knowledge Centers https://support.f5.com/csp/knowledge-center/software SSLOのドキュメントは「F5 SSL Orchestrator」のリンク先にあり、 BIG-IPのカテゴリには無い点に注意してください。

Slide 183

Slide 183 text

195 AskF5 | Manual: F5 Guided Configuration for SSL Orchestrator: Setup 15.1.0-7.0 https://techdocs.f5.com/en-us/bigip-15-1-0/ssl-orchestrator-setup.html v15.1.1 向けのドキュメントがないため v15.1.0 のドキュメントを掲載しています。

Slide 184

Slide 184 text

SSLOの主な要素 • SSLOはBIG-IPの標準設定としてデプロイする仕組みのため、SSLO自 体の要素は限定的です。 • SSLOのPackage Upgrade • SSLOのバージョンを指定のものにします。 • System Settings • SSLOの基本設定です。 • HA Status • HAの状態を確認できます。HA構成時は設定の同期状況に注意を払います。 • Guided Configuration • 設定のデプロイを行います。 196

Slide 185

Slide 185 text

197 SSL Orchestratorメニューの矢印マークは、 BIG-IP標準設定へのリンクとなっており、 SSLO自体のオリジナルのメニューは限定的です。

Slide 186

Slide 186 text

198 SSLOの中核的なメニューが SSL Orchestrator > Configuration です。

Slide 187

Slide 187 text

199 歯車(Gear)アイコンからSystem Settingsのメニューに飛べます。

Slide 188

Slide 188 text

200 System Settingsには名前解決の設定があるので、 設計に合わせて適宜修正します。

Slide 189

Slide 189 text

201 この例ではCloudflareのPublic DNSサーバ(1.1.1.1)に指定しています。

Slide 190

Slide 190 text

202 SSLOのメニュー内にアップグレードのメニューがあります。

Slide 191

Slide 191 text

203 SSLOのPRMファイルをアップロードして、 バージョンのアップグレードが可能です。 アップグレード方法は必ずドキュメントを確認してください。

Slide 192

Slide 192 text

Guided Configurationのメニュー • Topology • SSL Configuration • Service • Service chain • Security Policy • Interception Rule • Egress Setting • Log Settings • Summary 204

Slide 193

Slide 193 text

205 SSLOによって設定がデプロイされる際の基軸となる名前を指定します。 その名前に接頭辞や接尾辞が付与されてデプロイされます。 構成を選択します。 Forward Proxy構成では文字通りにL3 Explicit Proxyを選択します。

Slide 194

Slide 194 text

206 文字通りにSSL Client/Server Profileに紐付く設定を行います。

Slide 195

Slide 195 text

207 セキュリティ機器の連携を行うためのメニューです。 本資料では取り扱いしません。

Slide 196

Slide 196 text

208 セキュリティ機器の連携を行うためのメニューです。 本資料では取り扱いしません。

Slide 197

Slide 197 text

209 主にPer-Request Policyにデプロイされる設定を行います。

Slide 198

Slide 198 text

210 待ち受けアドレスやポートの指定を行います。

Slide 199

Slide 199 text

211 One-Arm構成だと、 送信元アドレス変換による戻り通信の制御が重要になります。

Slide 200

Slide 200 text

212 ログの設定を行います。 必要に応じて適宜調整します。

Slide 201

Slide 201 text

213 文字通りの設定の要約画面となります。 Deploy ボタンを押す前に、設定が同期状態になっているかを必ず確認します。 設定に不整合が発生しているとデプロイが中途半端な状態で失敗し、 その修正に手間がかかる可能性があります。

Slide 202

Slide 202 text

214 Deploy ボタンを押すと、デプロイが進行している旨が表示されます。

Slide 203

Slide 203 text

215 デプロイが成功した場合のメッセージです。

Slide 204

Slide 204 text

216 デプロイが成功すると本画面に設定が追加されます。

Slide 205

Slide 205 text

SSLOのオブジェクト名 • SSLOのオブジェクト名の命名規則は下記の記事が参考になります。 • Article: K26520133 - Troubleshooting SSL Orchestrator(SSLO) • URL: https://support.f5.com/csp/article/K26520133#Service%20Objects%20a nd%20Naming 217

Slide 206

Slide 206 text

218 Article: K26520133 - Troubleshooting SSL Orchestrator(SSLO) https://support.f5.com/csp/article/K26520133#Service%20Objects%20and%20Naming

Slide 207

Slide 207 text

SSLO開発者の意図をくみ取る • SSLOのGuided Configurationによるデプロイでは、SSLOの開発者 の意図をくみ取って設定するシーンがあります。 • 例えば、サーバ証明書のチェック除外だと開発者の思想に従って設定を 行う必要があります。 219

Slide 208

Slide 208 text

SSL Configurations • Guided ConfigurationのSSL Configurationメニューでは、 Advanced Settingsの表示の有無を切り替えるのを把握しておいてくだ さい。 • 「Bypass on Handshake Alert」と「Bypass on Client Certificate Failure」の設定有無により挙動が変わるためです。 220

Slide 209

Slide 209 text

221

Slide 210

Slide 210 text

222 Advanced Setting が表示される状態になっていると、 Bypass 系の設定が表示されます。 Show Advanced Setting を押した後の状態なので、 メニュー表示上は Hide ... になっている。

Slide 211

Slide 211 text

Bypass on Handshake Alert (SSLハンドシェイク失敗時の挙動) • SSLOの「Bypass on Handshake Alert」を有効化すると、SSLハン ドシェイク失敗時でもバイパスする動作となります。 • バイパス処理が発生すると下記のようなメッセージが表示されます。 • SSL Traffic bypassed due to handshake failure alert(40) for TCP #.#.#.#:#### -> #.#.#.#:#### 223

Slide 212

Slide 212 text

224 この例では、意図的に Server-side SSL の Processing Options を全て無効化し、 SSLハンドシェイクを失敗するようにして、 Bypass on Handshake Alert の条件を満たすようにしています。

Slide 213

Slide 213 text

225 SSL Server Profile にデプロイした設定を確認しています。 Bypass on Handshake を有効化した場合は -vht (Trueの方) を確認します。

Slide 214

Slide 214 text

226

Slide 215

Slide 215 text

Bypass on Client Certificate Failure (クライアント認証とBypass) • SSLOの「Bypass on Client Certificate Failure」の有効化すると、 クライアント認証を行う通信がSSL復号化対象になっていても、SSL復号 化対象から除外されます。 • 表現を変えると、 「Bypass on Client Certificate Failure」の有効 化の状態で、クライアント認証を意図的に行うと、暗号化通信となるため、 不正にデータを持ち出しやすくなる可能性があります。 227

Slide 216

Slide 216 text

SSLOとSSL Profile(Client/Server) • SSLOが作成するSSL Client ProfileとSSL Server Profileには下記 の2種類があります。フォントが小さいと t (Trueの意)と f (Falseの意)の 文字が潰れて判別がつきにくいので注意が必要です。 • -vht (Verified Handshake True) • Bypass on Handshake Alert もしくは Bypass on Client Certificate Failure に チェックが入っていると、SSL Forward Proxyに -vht が適用されます。 • -vhf (Verified Handshake False) 228

Slide 217

Slide 217 text

229 Bypass系の設定の片方でもチェックが入ると、 SSL Forward ProxyにSSL Profile(Client/Server)の -vht (Trueの方)が適用されます。

Slide 218

Slide 218 text

230 -vht (Trueの方) と –vhf (Falseの方) はフォントが小さいと識別し難いので注意が必要です。 SSL Client Profileの方です。

Slide 219

Slide 219 text

231 -vht (Trueの方) と –vhf (Falseの方) はフォントが小さいと識別し難いので注意が必要です。 SSL Server Profileの方です。

Slide 220

Slide 220 text

232 Virtual Serverに -vht (Trueの方)が適用されている時の例です。

Slide 221

Slide 221 text

サーバ証明書のチェック除外 • SSLOのGuided Configurationで下記の一方もしくは両方を ignore に設定します。 • Expire Certificate Response • Untrusted Certificate Authority • Security Policyで SSL Check is false のルールを作成します。 • Security Policyで Server Certificate Status Check にチェックを 入れて有効化します。 233

Slide 222

Slide 222 text

234 適宜、要件に応じて設定を ignore に指定します。

Slide 223

Slide 223 text

235

Slide 224

Slide 224 text

236 Server Certificate Status Check にチェックを入れて有効化します。

Slide 225

Slide 225 text

237 サーバ証明書チェックから除外するURLのリストの格納先を、 URL Categoriesで作成しています。

Slide 226

Slide 226 text

238 Security Policyで サーバ証明書のチェック除外のルールを要件に応じて追加します。

Slide 227

Slide 227 text

239 SSL Check を False にしてサーバ証明書チェックから除外する。 その対象のURLのリストは、URL Categoriesの設定を指定している。

Slide 228

Slide 228 text

240 SSL Check is false となっており、 サーバ証明書のチェック除外が設定されたのが確認できます。

Slide 229

Slide 229 text

241 SSLOのGuided ConfigurationによるSSLサーバ証明書のチェック除外は、 Per-Request Policyに反映されます。 詳細な設定はMacro化されています。

Slide 230

Slide 230 text

242 サーバ証明書のチェック除外の関連設定を一望した参考キャプチャです。

Slide 231

Slide 231 text

243 サーバ証明書のチェックを行うMacroが、 Macroから参照される構造になっています。

Slide 232

Slide 232 text

SSLOの設定例の紹介 244

Slide 233

Slide 233 text

SSLOの設定例の紹介 • 実際にSSLOでデプロイする場合の設定例を紹介します。下記は設定値の例です。 • 設定名称 (Name): BASE-NAME • 構成: L3 Explicit Proxy • IP Address: 10.1.2.3 • Port: 3128 (Default) • Service Interface: VLAN_Service • NAT: Auto Map 245

Slide 234

Slide 234 text

設定例のOne-Arm構成 246 Firewall Internet BIG-IP Forward Proxy構成 Web Server Client (Web Browser) Virtual Server - IP Address: 10.1.2.3 - Port: 3128 Ingress Network: Service_VLAN SNAT: Auto Map 行きの通信 戻りの通信

Slide 235

Slide 235 text

247 BIG-IPの標準設定としてデプロイされる際の ベースとなる名前を設定します。 この名前に接頭辞や接尾辞がついて オブジェクトとしてデプロイされます。 SSLOの構成の指定では、 L3 Explicit Proxyを選択します。

Slide 236

Slide 236 text

248 Interception Ruleで、 待ち受けのアドレスやポートを指定できます。

Slide 237

Slide 237 text

249 Forward Proxyとして待ち受けるための IPアドレスとポート番号を指定します。 通信を待ち受けるVLANを指定します。

Slide 238

Slide 238 text

250 One-Arm構成の場合、 戻り通信がForward Proxy経由となるように 送信元アドレスの変換を行います。

Slide 239

Slide 239 text

Strict Updates (設定のロック) 251

Slide 240

Slide 240 text

Strict Updatesの概要 • SSLOがBIG-IPの標準設定とデプロイされると、SSLOの管理配下となり、 設定変更に対してロックがかかります。 • そのため、標準設定として設定を変更するにはStrict Updatesを無効 化してロックを外す必要があります。 252

Slide 241

Slide 241 text

Strict Updatesの設計面と運用面の考慮 • Guided Configurationによる設定のみで要件を満たせない場合、 BIG-IPの標準設定として個別に修正を行う必要があります。 • 一度設定した内容をBIG-IP標準設定で修正した後に、Strict Updatesでロックをかけ直したり、設定をデプロイし直すと、修正した設定 が更に変更される可能性があります。 • そのため、ドキュメンテーションによる変更管理が重要になります。 253

Slide 242

Slide 242 text

SSLOがデプロイしたオブジェクトの確認方法 • SSLOでデプロイした設定に紐付くオブジェクトは、実際にはiAppsに紐付 いているため下記のようにコマンドを実行すれば確認できます。 • tmsh modify sys application service sslo_DEMO.app/sslo_DEMO description none • tmsh modify sys application service ssloP_DEMO.app/ssloP_DEMO description none • tmsh modify sys application service ssloT_DEMO.app/ssloT_DEMO description none 254

Slide 243

Slide 243 text

255 下記のコマンドの例のように実行すると、SSLOのiAppsとしての設定が表示できます。 【コマンドの例】 tmsh modify sys application service sslo_DEMO.app/sslo_DEMO description none tmsh modify sys application service ssloP_DEMO.app/ssloP_DEMO description none tmsh modify sys application service ssloT_DEMO.app/ssloT_DEMO description none

Slide 244

Slide 244 text

256

Slide 245

Slide 245 text

257

Slide 246

Slide 246 text

258

Slide 247

Slide 247 text

259 iAppsのメニュー上での Strict Updates の見え方です。

Slide 248

Slide 248 text

260 SSLO上では鍵アイコンのロックの有無で表現されています。 これは、ご覧の通りにロックされている時のアイコンです。

Slide 249

Slide 249 text

261 これは、ご覧の通りにロックが外れている時のアイコンです。

Slide 250

Slide 250 text

262 SSLOのGuided Configurationの管理外の設定を保持したい場合は、 Merge Changes にチェックをします。(保持対象の制限あり)

Slide 251

Slide 251 text

Merge Changesと運用方法への影響 • Unprotected から Protected に変更すると、Merge Changesを チェックしていても、変更内容が保持されない設定があります。 • Merge Changesの対象となる設定は、ドキュメント上では明示的に公 開されていません。 • そのため、一度、Unprotectedにして、本番導入を迎えた場合は、二度 とProtectedに戻さない運用方法が考えられます。 263

Slide 252

Slide 252 text

SSLOのドキュメンテーションの重要性 • SSLOはUnprotectからProtectの変更や、再デプロイなどをトリガーにし て、変更済みの設定値が別のものに上書きされる可能性があります。 • そのため、一から現在の設定まで作り直せるように、設定変更の管理が 重要となります。 • 設定の同期崩れが発生した場合に、再構築が必要になる可能性を秘め ているためです。 264

Slide 253

Slide 253 text

SSLOのBug • SSLOはSSLO自身が持つ機能が少ないため、他のモジュールと比べると Bugが比較的に少なく見えます。 • しかし、それは表面上少なく見えるだけであり、Guided Configuration でデプロイされるBIG-IP標準の機能のBugには該当する可能性がありま す。 • そのため、Bugの調査では関連するモジュールのBugまで確認が必要で す。 265

Slide 254

Slide 254 text

SSLOのサンプル画面 266

Slide 255

Slide 255 text

267

Slide 256

Slide 256 text

268

Slide 257

Slide 257 text

269

Slide 258

Slide 258 text

270

Slide 259

Slide 259 text

271

Slide 260

Slide 260 text

272

Slide 261

Slide 261 text

273

Slide 262

Slide 262 text

274

Slide 263

Slide 263 text

275

Slide 264

Slide 264 text

276

Slide 265

Slide 265 text

第4部 BIG-IP Forward Proxy 応用実装 277

Slide 266

Slide 266 text

応用実装とは • BIG-IPの標準機能(SSLO含む)で実装不可能なものを、iRulesによる 機能追加で補う力業です。 • iRulesでは自らの手で機能を作りこむため、出来合いで用意されている 機能と異なり、開発者が自ら品質を担保する必要があります。 • BIG-IPへの理解、Forward Proxyへの理解は勿論のこと、アプリケー ション開発への理解も求められます。 278

Slide 267

Slide 267 text

具体的な応用実装とは • 顧客の要件によって具体的な実現方法は異なるため、「組織として、自分たちの手で 答えを作り出してください。」の一言に集約されます。 • また、設計や構築はゴールでは無く、その先には運用があります。そのため、他者の手 助けを前提して導入を行えたとしても、とても運用し続けられるものにはなりません。 • 特段、iRulesによる実装は複雑となります。人材調達によるマンパワーを使えても、 BIG-IP経験者且つiRulesの有識者は、採用が難しくなります。 • それらの考慮事項を踏まえて、応用実装まで行う前提で提案や導入を行うかを検討 してください。 279

Slide 268

Slide 268 text

iRulesコマンドによる機能へのアクセス • 目的を実現するのに必要なBIG-IPの機能へアクセスするiRulesコマンド があるか確認してください。 • iRulesコマンドでBIG-IPの挙動を変化させる都合上、対応するiRules コマンドがないと、そもそも実現性がなくなります。 280

Slide 269

Slide 269 text

iRules と iRules LX • iRules と呼ばれるものには、iRules LX (Language eXtension)もあ ります。 • iRules LXはNode.jsの技術を用いており、iRulesから呼び出します。そ のため、iRulesを完全に置き換えるものではなく、 LX (Language eXtension)の名の通りに拡張を行うものです。 281

Slide 270

Slide 270 text

実装時のiRules LXの採択可否 • tclベースのiRulesと、Node.jsベースのiRules LXの両方が実装に採択 されるとエンジニアの学習コストが増大するのが懸念点になります。 • iRules LXではDBとの連携機能があるため、設定データの格納先として 使えそうですが、そこまですると、別途DBサーバを用意する必要があるた め、アプライアンスとして提供されているBIG-IPの価値が半減してしまいま す。 282

Slide 271

Slide 271 text

標準実装ベース vs SSLO実装ベース • 応用実装はiRulesによる機能追加となるため、標準実装もしくはSSLO 実装をベースとする必要があります。 • 自らの手でBugを作りこむのを避ける観点と、Forward Proxy向けに改 善されている観点で、SSLO実装の方が好ましいと考えられます。 283

Slide 272

Slide 272 text

データの格納先のData Group • 任意のデータの格納先としてKey-Value Store型のData Groupがあ ります。 • Data Groupにはいくつか種類(Type)がありますが、Forward Proxy 構成では下記の2種類が活用候補です。 • Type: Address • アクセス制御で用いるIPアドレスを格納するのに適しています。 • Type: String • URLフィルタリングの宛先を格納するのに適しています。 284

Slide 273

Slide 273 text

Data Groupの扱い方 • 作成したData Groupは、iRulesから class コマンドを用いて参照しま す。class コマンドには何種類かのサブコマンドが用意されているため、ド キュメントを確認してください。 • class • URL: https://clouddocs.f5.com/api/irules/class.html 285

Slide 274

Slide 274 text

286 class https://clouddocs.f5.com/api/irules/class.html

Slide 275

Slide 275 text

Data Groupの扱い方 287 Key Value Key#1 Value#1 Key#2 Value#2 Key#3 Value#3 Valueは任意のため、省略もできます。 Keyにはユニーク制約があり、データの重複ができません。 when HTTP_REQUEST { log local0. "MyDataGroup: [class get MyDataGroup]" } Data Group名: MyDataGroup iRules class コマンドを使用してData Groupを参照します。 この例では get のサブコマンド指定でData Group全体を取得してます。

Slide 276

Slide 276 text

288

Slide 277

Slide 277 text

289 Data GroupはiRulesからメインに扱うこともあり、 iRulesのサブ メニューの中にあります。

Slide 278

Slide 278 text

290 Data Groupにはいくつかのデータ保持形式があります。

Slide 279

Slide 279 text

Type: Address のData Group • Type: Address のData Groupは、Address欄(Key)に任意のサブ ネットを登録できます。 • 例えば、許可対象の送信元サブネットを格納しておく使い方が想定されま す。 291

Slide 280

Slide 280 text

292

Slide 281

Slide 281 text

Type: String のData Group • Type: String のData Groupは、String欄(Key)に任意の文字列を 格納できるため、自由度が高い形式です。 • 自由度が高い分、様々な入力が可能なため、入力値の妥当性確認 (Validation)や入力値エラー時のエラー ハンドリングは開発者側で実装 する必要があります。 293

Slide 282

Slide 282 text

294

Slide 283

Slide 283 text

HTTP::host の表現形式 • iRulesのコマンドである HTTP::host では、HTTPヘッダーの Hosts: の情 報を下記の参考例のように取得できます。 • 【参考例】 • www.example.com • www.example.com:80 • www.example.com:443 • sales-system.test:8080 • 1.1.1.1 • Hosts: の内容であるため、ポート番号の情報が付与されている場合があり、 必要に応じてポート番号を取り除いてからパターン マッチングしたり、設定データ としていくつかのパータンを登録するなどの考慮が必要とになります。 295

Slide 284

Slide 284 text

サンプル コード ~ 完全一致 (equals) ~ 296

Slide 285

Slide 285 text

297 完全一致 (equals)向けの Data Groupの例

Slide 286

Slide 286 text

完全一致(equals) when HTTP_PROXY_REQUEST { if { [class match [HTTP::host] equals Data_Group_equals_Host_List] } { log local0. "Match: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 298

Slide 287

Slide 287 text

サンプル コード ~ 前方一致 (starts_with) ~ 299

Slide 288

Slide 288 text

300 前方一致 (starts_with)向けの Data Groupの例

Slide 289

Slide 289 text

前方一致(starts_with) when HTTP_PROXY_REQUEST { if { [class match [HTTP::host] starts_with Data_Group_StartsWith_Host_List] } { log local0. "Match: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 301

Slide 290

Slide 290 text

サンプル コード ~ 中間一致 (contains) ~ 302

Slide 291

Slide 291 text

303 中間一致 (contains)向けの Data Groupの例

Slide 292

Slide 292 text

中間一致(contains) when HTTP_PROXY_REQUEST { if { [class match [HTTP::host] contains Data_Group_Contains_Host_List] } { log local0. "Match: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 304

Slide 293

Slide 293 text

サンプル コード ~ 後方一致 (ends_with) ~ 305

Slide 294

Slide 294 text

306 後方一致 (ends_with)向けの Data Groupの例

Slide 295

Slide 295 text

後方一致(ens_with) when HTTP_PROXY_REQUEST { if { [class match [HTTP::host] ends_with Data_Group_EndsWith_Host_List] } { log local0. "Match: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 307

Slide 296

Slide 296 text

サンプル コード ~ 組み合わせや正規表現 ~ 308

Slide 297

Slide 297 text

組み合わせ 完全一致, 前方一致, 中間一致, 後方一致 when HTTP_PROXY_REQUEST { if { [class match [HTTP::host] equals Data_Group_equals_Host_List] } { log local0. "Match(equals): [HTTP::host]" } elseif { [class match [HTTP::host] starts_with Data_Group_StartsWith_Host_List] } { log local0. "Match(starts_with): [HTTP::host]" } elseif { [class match [HTTP::host] contains Data_Group_Contains_Host_List] } { log local0. "Match(contains): [HTTP::host]" } elseif { [class match [HTTP::host] ends_with Data_Group_EndsWith_Host_List] } { log local0. "Match(ends_with): [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 309

Slide 298

Slide 298 text

正規表現(matches_regex) when HTTP_PROXY_REQUEST { if { [HTTP::host] matches_regex {www¥..*¥.com} } { log local0. "Match: [HTTP::host]" } elseif { [HTTP::host] matches_regex {www¥..*¥.co¥.jp} } { log local0. "Match: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 310

Slide 299

Slide 299 text

正規表現(matches_regex) Deny List & Allow List when HTTP_PROXY_REQUEST { if { [HTTP::host] matches_regex {.*¥.?eicar¥.org} } { log local0. "Deny Host: [HTTP::host]" reject } elseif { [HTTP::host] matches_regex {.*¥.org} } { log local0. "Allow Host: [HTTP::host]" } elseif { [HTTP::host] matches_regex {.*¥.com} } { log local0. "Allow Host: [HTTP::host]" } elseif { [HTTP::host] matches_regex {.*¥.co¥.jp} } { log local0. "Allow Host: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 311

Slide 300

Slide 300 text

認証除外(送信元&宛先) when HTTP_PROXY_REQUEST { if { [IP::addr [IP::client_addr] equals 10.0.0.0/8] || [IP::addr [IP::client_addr] equals 172.16.0.0/12] || [IP::addr [IP::client_addr] equals 192.168.0.0/16] } { if { [HTTP::host] matches_regex {www¥.example¥.com} } { log local0. "Excluded Authentication: [IP::client_addr] => [HTTP::host]" ACCESS::disable } } elseif { [HTTP::host] matches_regex {.*¥.com} } { log local0. "Allow Host: [HTTP::host]" } elseif { [HTTP::host] matches_regex {.*¥.co¥.jp} } { log local0. "Allow Host: [HTTP::host]" } else { log local0. "Not Match: [HTTP::host]" reject } } 312

Slide 301

Slide 301 text

パターン マッチングの条件式の注意点 • 例えば、「my-corp.test」のサイト内へのアクセスを許可したい場合に、 URLを対象に前方一致で「my-corp.test」を指定するとします。 • その場合、「my-corp.test.fake-site.test」も前方一致で合致してし まい、URLフィルタリングを迂回される可能性があります。 • 回避策としては、ホスト部分(FQDN部分)を対象に完全一致で「my- corp.test」を指定する方法があります。 313

Slide 302

Slide 302 text

URLフィルタリングが迂回される例 • 設定例 • URL(URLスキーム部分は除く)を対象に前方一致で「my-corp.test」に合致 した場合に許可する。 • Webサイト例 • 自社サイトのTopページ: https://my-corp.test/ • 自社サイトのイベント情報: https://my-corp.test/event/ • 自社サイトの採用情報: https://my-corp.test/recruit/ • 偽サイト: https://my-corp.test.fake-site/ 314 偽サイトも許可の対象に入ってしまう。

Slide 303

Slide 303 text

設定データの保持形式 • 設定データの保持形式は、既存導入済み機器の保持形式と、BIG-IP で表現可能なデータの保持形式を考慮して設計が必要です。 • 設定の保持形式が異なると、大量のデータの移行/移植の作業で設定の 読み替えが必要なため、設定量に比例して作業時間が増えていくのが懸 念されます。 • また、URLフィルタリングなどの処理の順番も要素にあれば、BIG-IPで実 現が必要です。 315

Slide 304

Slide 304 text

設定データの移植/変換の失敗例 316 処理順序 アクション 送信元 宛先 1 Deny 0.0.0.0/0 malware-site.test 2 Allow 192.168.0.0/16 sales-system.test 3 Allow 192.168.0.0/16 www.google.com 4 Allow 172.16.0.0/24 www.example.com 5 Deny Any Any Key(Address) Value 0.0.0.0/0 malware-site.test Key(Address) Value 192.168.0.0/16 malware-site.test 192.168.0.0/16 www.google.com 172.16.0.0/24 www.example.com 【既存】設定データ 【移行先】BIG-IPのDeny List用Data Group 【移行先】BIG-IPのAllow List用Data Group Keyにはユニーク制約があるため、 重複したKeyは登録できない。 移植/変換

Slide 305

Slide 305 text

設定データの移植/変換 317 ???? 既存導入済み (更改元) F5 BIG-IP 新規導入 (更改先) ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 移植/変換は、更改先/元の形式の違いを考えて 設定データを移行する必要があるため頭脳労働になります。 そのため、考慮漏れが起きないアルゴリズムに落とし込めなければ、 単純作業としてマンパワーで処理をスケールするのが困難です。

Slide 306

Slide 306 text

Data Groupの限界 • Data Groupはユーザー定義データの格納先としては便利ですが、Key- Value Store型となるため、Firewall Policyのようにテーブル型でデータを保 持したい場合には不向きです。そのため、設定データの保持形式に表現の限 度があるのを認識しておいてください。 • URLの格納先としてはURL Categoriesがありますが、あくまでもURLを対象 としたデータ設計となっています。 • iRulesのコードとして直書きする方式もありますが、運用時のコード編集は ヒューマン エラーを引き起こす可能性が高くなるため危険です。 318

Slide 307

Slide 307 text

Data Groupに独自フォーマットを仕込む • とても複雑になる悪い例を紹介します。決して真似はしないでください。 • 処理が複雑になると運用性だけでなく、処理性能に影響するため注意し てください。 319

Slide 308

Slide 308 text

Data GroupのValueを独自に区切る 320 Key Value 1 2 3 Field#1 Field#2 Field#3 Field#1 Field#2 Field#3 Field#1 Field#2 Field#3 区切り文字を活用して、 Valueをユーザー定義に基づいたField単位に分割します。 この例では、区切り文字にカンマ(,)を用いています。 Field内でも使用される文字と、 区切り文字が重複しないように考慮が必要になります。

Slide 309

Slide 309 text

Data Groupの独自フォーマットの例 Firewall Policyのような形式とする例 321 実際の設定画面では見難いため、 Excelにてテーブル形式で表現した例です。

Slide 310

Slide 310 text

322 独自に定義したフォーマットに従って入力しているため、 初見のエンジニアには何をしているのか分かりにくい欠点があります。

Slide 311

Slide 311 text

iRulesとData Groupの設計の注意点 • iRules内のロジック改修が後から発生しないように、要件をよく洗い出し た上で設計します。 • ロジックが変わると、設定データの保持形式に影響する可能性があります。 • 例えば、URLを対象にAction(例: 認証除外の有無)指定を後から行いたくなっ た場合、設定データの保持形式にActionの項目を追加する必要が出てきます。 • Data Groupの設定データ保持形式が変わらないように設計します。 • 例えば、項目が新たに追加されると、既存データに対してその項目を明示的に設 定し直したり、項目が存在しない場合のデフォルトの動作を考慮する必要が出て きます。 323

Slide 312

Slide 312 text

処理フローの難解さ • Forward Proxy構成ではBIG-IPの内部仕様を意識して、処理フロー がどのようになっているのかを把握する必要があります。 • 設計や構築時だけでなく、導入後の運用担当者も意識する必要がある ため、難解な処理フローでは運用引継が困難となります。 324

Slide 313

Slide 313 text

処理フロー / 実装箇所 • Profile • Web Acceleration Profile によるキャッシュ除外の設定 • VPE (Visual Policy Editor) • Per-Session Policy (Access Profile) による認証の設定 • Per-Request Policy によるサーバ証明書のチェック除外やSSL復号化除外の設定 • iRules • class コマンドによるData Groupの参照 • virtual コマンドによる別のVirtual Serverへの転送(処理フローの変更)の考慮 • Data Group • Access > Secure Web Gateway 325 これらの設定方法を全て把握して、 適切に使用する必要があります。

Slide 314

Slide 314 text

どこに設定データを移行/移植しますか? 326 色々な設定箇所があると、 設定の複雑性が上がり、運用性が著しく下がります。

Slide 315

Slide 315 text

応用実装によるカスタマイズの弊害 • カスタマイズしているとBIG-IPの標準的な挙動から変わるため、F5 Network社が提供している公式の情報ですら、参考にできなくなる可能 性があります。 • そのため、各種設計書(例: 基本設計書)や実機設定が一次情報源と なります。よって、正確な記述は元より、適切に最新化を行い、ドキュメン トの品質を管理するのが重要となります。 327

Slide 316

Slide 316 text

みんなちがって、みんないい? 328 F5 BIG-IP A社のBIG-IP A社向けカスタマイズ F5 BIG-IP B社のBIG-IP B社向けカスタマイズ F5 BIG-IP C社のBIG-IP C社向けカスタマイズ B C A カスタマイズされた他社の導入実績は 参考になるとは限らない。 同じBIG-IPなのに、 弊社とは別物... A社 公開ナレッジ

Slide 317

Slide 317 text

アクセス ログ • BIG-IPでのアクセス ログは必要に応じて、iRulesの log コマンドやHSL (High Speed Logging)を用いて独自フォーマットで作成します。 • その場合、各イベントで取得可能なデータが変わる点を踏まえて、ログ出力の設計を 行う必要があります。 • iRulesによるカスタマイズの粒度が高くなると、トラブル シューティングが難しくなるため、 ログ レベルに応じてメッセージの出力度合を変えるなどの対策が必要です。 • 適切なアクセス ログが無ければ、どのData Groupのどのレコードにマッチした処理 か?などの判別が追えなくなります。 329

Slide 318

Slide 318 text

第5部 まとめ 330

Slide 319

Slide 319 text

まとめ • 各種実装だけではなく、実装以外の側面についても知っておくことは多々 あります。 331

Slide 320

Slide 320 text

導入検討の方へ • 顧客の要件を満たせるかの確認は、検証用途のBIG-IP Virtual Edition Lab版(型番の例: F5-BIG-VE-LAB-V18)で安価に検証環境を構築でき ます。 • Lab版ではスループットの制限があるため、性能試験までは行えませんが、機能 の充足の観点や、運用面の考慮事項を事前に知り得る方が有益です。 • F5-BIG-VE-LAB-V18 では、LTM, APM, SSLOを有効化できます。 • 古い型番(例: 末尾 -V13)では、SSLOの前進であるSSL Forward Proxy しか対応していないためご注意ください。 332

Slide 321

Slide 321 text

PoC (Proof of Concept) / 概念実証 • BIG-IPはiRulesによる機能拡張が行えるため、単純な機能レベルの確 認をPoCで行うと、優位性が高く見える可能性があります。 • そのため、導入後の運用面を考慮するのであれば、要件の実現に際して のiRulesの使用有無と、iRulesを用いている場合の複雑性の確認をす るのが好ましいと考えられます。 333

Slide 322

Slide 322 text

導入における障壁 • BIG-IPのForward Proxy構成は導入するだけでも難易度が高いです。 • その上で、導入後の運用性や障害時のリカバリを検討する必要がありま す。 • また、次期の移行まで考えると、応用実装ではベンダー ロックインされる可 能性があります。 • そもそも、ベンダー ロックイン以前に属人化により、ベンダーへの依存度より 人への依存度が高くなる可能性があります。 334

Slide 323

Slide 323 text

必要な人材の観点 • BIG-IPの有識者 • SSL Orchestrator(旧SSL Forward Proxy)の有識者は少ないように見受けられる ため、少なくともLTMとAPMの有識者が居ると好ましいです。 • Forward Proxyの有識者 • 既存導入済み機器がBIG-IPとは限らない点と、iRulesによるスクラッチ開発の点におい てForward Proxyの動作の理解が必要になります。 • アプリケーション開発の有識者 • iRulesによるスクラッチ開発は基盤寄りの知見のみでは収まらないため、アプリケーション 開発の知見が必要になります。また、コードによる拡張により脆弱性を生まないために、セ キュリティの知見も必要になります。 335

Slide 324

Slide 324 text

運用保守チーム(導入後) 次期更改チーム(未来) 導入チーム(導入時) 時系列と人材の関係性 336 BIG-IPエキスパート Forward Proxy エキスパート アプリケーション開発 エキスパート BIG-IPエンジニア 導入時だけエキスパートを投入しても、 複雑な設計だと後工程の運用保守をしていけない。 次期更改時に移行対応が可能な人材やSIerは存在するのか? ? ? ブラック ボックス状態 のBIG-IP これは本当にBIG-IPなのか?

Slide 325

Slide 325 text

更改 From: BIG-IP => To: BIG-IP • 既存(更改元)と新規(更改先)の機器が共にBIG-IPの場合は、バージョ ンの変化があります。 • 応用実装をしている場合は、標準機能で実装可能な要素が増えている 場合、標準実装で再実装し直すのかの検討が必要です。 • バージョンアップに伴い、iRulesのコマンドにアップデートがある可能性があ ります。そのまま既存踏襲するにおいても、iRulesのコードもそのまま動くか は確認が必要です。 337 設定データの保持構造の見直しで、 移植/変換も大変だ!

Slide 326

Slide 326 text

成果物の観点 • 実案件では顧客要望に応じて、成果物を作成する必要が出てきます。 • BIG-IP自体は元々パラメータ数が多く、パラメータ シートの作成であって もかなりの作業工数が必要となります。 • 応用実装の場合は、アプリケーション開発を行っているような状態になるた め、ドキュメントに求められる品質や種別に違いが出る可能性があります。 338

Slide 327

Slide 327 text

成果物の一例 • 基本設計書 • パラメータ シート • フローチャート 339 スクラッチ開発状態の動作を正しく理解して、フローチャートを書けますか? Visioで書く場合はライセンスの準備はありますか? SSLOが大量に作成するオブジェクトは全部書きますか? それとも明示的に指定するものだけ書きますか? SSLOの設定方針やスクラッチ開発したiRulesを、 誰が見ても分かりやすく網羅的に書けますか? 運用手順書 私のこと、忘れてない?運用軽視ですか? 運用手順書なしに誰でも運用できますか?

Slide 328

Slide 328 text

フローチャートはひとつではない! 1. BIG-IP全体の処理フロー • 近視眼的にならないように、全体の処理を俯瞰する必要性があります。 2. Pe-Session Policy (Access Profile)の処理フロー 3. Per-Request Policyの処理フロー 4. iRulesの処理フロー 340

Slide 329

Slide 329 text

フローチャートの成果物 341 Start End 処理フローのイメージはできますか?

Slide 330

Slide 330 text

最後に • 筆者が苦悩した経験を元に、情報を体系立ててまとめてみましたが、本 資料の情報は必須知識にすぎません。 • この先には未だ見ぬiRulesの無限の可能性が広がっています。 • しかし、可能性は希望にもなり、絶望にもなり得ます。 • 実導入する方々がより良い未来を掴み取れるのを切に願っております。 342

Slide 331

Slide 331 text

付録 343

Slide 332

Slide 332 text

FTP over HTTP 344

Slide 333

Slide 333 text

FTP over HTTP • Web BrowserからFTPサーバへ接続するための機能です。 • FTPサーバへ直接FTP接続を行わせずにForward Proxyを介させることにより、アクセス 制御を行いやすくなる利点があります。 • BIG-IPはWeb BrowserからのFTP over HTTPには対応しておりませ ん。 • HTTP ProfileのExplicit ProxyでFTPがサポートされていないためです。 • また、昨今ではFTP over HTTPはWeb Browser側でサポートがされなくな りつつあります。 • HTTPSによる暗号化通信が普及してきた時代背景に伴い、セキュアでは無いFTPによる 平文通信が問題視されているのが理由の一端としてあるようです。 345

Slide 334

Slide 334 text

FTP over HTTPの通信フロー 346 Client (Web Browser) FTP Server Forward Proxy FTP HTTP GET ftp://ftp-server.test/ HTTP/1.1 HTTPで ftp:// のURL scheme(URLスキーム)を指定して接続しに行きます。

Slide 335

Slide 335 text

347 BIG-IPはFTP over HTTPに対応してないため、 Squidで試したときの画面キャプチャです。 URL欄には ftp:// のURL scheme(URLスキーム) で入力されています。 FTP over HTTP対応のProxyサーバを指定しています。

Slide 336

Slide 336 text

348 BIG-IPはFTP over HTTPに対応してないため、 Squidで試したときの画面キャプチャです。 HTTPで ftp:// のURL scheme(URLスキーム)を指定しているのが見て取れます。

Slide 337

Slide 337 text

補足資料: FTP over HTTPのサポート状況 • Google Chrome • Deprecate FTP support - Chrome Platform Status • URL: https://www.chromestatus.com/feature/6246151319715840 • Mozilla Firefox • Mozilla will remove FTP support in the Firefox web browser - gHacks Tech News • URL: https://www.ghacks.net/2020/03/19/mozilla-will-remove-ftp- support-in-the-firefox-web-browser/ 349

Slide 338

Slide 338 text

End Of File このスライドが本資料の最後です。 350