Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BIG-IP Forward Proxy構成 ~ 導入の心得 ~/BIG-IP_Forward...

MyHomeNWLab
February 12, 2021

BIG-IP Forward Proxy構成 ~ 導入の心得 ~/BIG-IP_Forward_Proxy

筆者のブログにもBIG-IP Forward Proxy関連の内容をまとめております。

BIG-IP Forward Proxyの作成資料一覧 - My Home NW Lab
https://myhomenwlab.hatenablog.com/entry/big-ip_forwad_proxy

MyHomeNWLab

February 12, 2021
Tweet

More Decks by MyHomeNWLab

Other Decks in Technology

Transcript

  1. 筆者情報 • Name • MyHomeNWLab • Blog • https://myhomenwlab.hatenablog.com/ •

    Twitter • https://twitter.com/MyHomeNWLab • 座右の銘 • 仕事で触れないなら、自宅に導入して遊べばいいじゃない。 2 興味の赴くまま、技術を食い散らかします。
  2. 本資料に関して • 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
  3. 目次 • 第1部 BIG-IPとForward Proxyの概要 • 第2部 BIG-IP Forward Proxy

    標準実装 • 第3部 BIG-IP Forward Proxy SSLO実装 • 第4部 BIG-IP Forward Proxy 応用実装 • 第5部 まとめ • 付録 • 注記 • 標準実装, SSLO実装, 応用実装は、筆者が便宜的に名付けたものです。 13
  4. 本資料で取り扱うモジュール • LTM (Local Traffic Manager) • LBを基軸としたモジュールですが、Forward Proxy構成でも用いられます。 •

    APM (Access Policy Manager) • アクセス制御を担うモジュールです。汎用的な機能であるため、様々な構成で用いられる可能性が あります。特段、SSL-VPNで用いられる事例が多いように見受けられます。 • SSLO (SSL Orchestrator) • 他社メーカーのセキュリティ機器との連携を視野に入れたSSLの可視化を担うモジュールです。 • Orchestratorの名の通りに、複雑になりがちな設定のデプロイ(展開)を簡易化します。 17
  5. 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
  6. SSLO(SSL Orchestrator)の特徴 • Guided Configurationと呼ばれるセットアップ ガイドに基づいて、設定 のデプロイを担います。 • 他社メーカーとのセキュリティ機器との連携機能を持ち合わせていますが、 まずは「Forward

    Proxyとして顧客の要件が満たせるか?」が重要にな るため、本資料では掘り下げません。 • そのため、連携機能を用いない場合は、実質的に単なるセットアップ ガイ ドの使い方がメインになります。 23
  7. BIG-IPとForward Proxyを知る • BIG-IPのForward Proxy構成では、実装対象のBIG-IPへの理解と、 Forward Proxyへの深い理解が必要になります。 • Forward Proxyが担う役割を実現するための機能を、BIG-IPの標準

    機能にない場合は、自らの手で実装する必要があるためです。 • また、どのような機能をBIG-IPで実現するかにあたって、顧客が Forward Proxyに求める要件の整理も重要となってきます。 28
  8. 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レベルまでのアクセス制御では、よりセキュアにするのは難しくなります。
  9. 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が担います。
  10. 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ファイルで除外する必要などが生じる。
  11. Forward Proxyの機能の一例 • URLフィルタリング • ユーザー認証 • SSL復号化 • キャッシュ

    (HTTP Cache / Web Cache) • 注記: 紹介する機能は一例でしかありません。先入観を持たずに、既存で顧客が利用している機能の 踏襲可否や、次期の更改や新規導入で求められている機能を確認してください。 34
  12. キャッシュ (HTTP Cache / Web Cache) • 回線帯域の節約や通信の高速化のために、Web通信をキャッシュします。 • BIG-IPではメモリ上にキャッシュするため、大容量データのキャッシュ向きで

    はありません。BIG-IPはディスク上にはキャッシュできません。 • 時代の変化と共に回線帯域も増強されており、セキュリティ強化のために アクセス制御の方が重要視されるニーズがあるため、BIG-IPの利用にお いては副次的な効果の期待に留めるのが現実的です。 38
  13. 機能を特定の条件下で無効化する例 #1 • 認証除外 (認証なし) • 認証が行えないツールの存在が想定されます。 • SSL復号化除外 •

    クライアント認証を行っているWebサイトの存在が想定されます。 • センシティブな情報が扱われているWebサイト(例: オンライン バンク)では、ユー ザーの通信の中身を見てしまわないように、SSL復号化の対象から除外が必要に なってくる可能性があります。 40
  14. 機能を特定の条件下で無効化する例 #2 • サーバ証明書のチェックの除外(サーバ証明書チェックの無効化) • 通信先のWebサイトの仕様に応じて、サーバ証明書のチェックを無効化する必要 が想定されます。 • 例えば、ネットワーク機器の自己署名証明書で設定されたWeb UIへの接続があ

    ります。 • キャッシュ除外 (HTTP Cache除外 / Web Cache除外) • Webサイトの死活監視のヘルスチェックのために、常に最新の情報を得られるよう にキャッシュから除外する用途が想定されます。 41
  15. 各構成における通信の向き 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構成では、主に不特定多数が宛先となるため、 システム管理者の制御配下から外れざるをえない。
  16. 不特定多数の考慮 • Internet上の不特定多数のWeb Serverは、様々な人や会社によって提供 されているため、基本的にサービスを受けたければ、相手側のサービス仕様に合 わせるしかありません。 • そのため、通信を介在するForward Proxyには、Webサイトの仕様に合わせ てパラメータの調整が可能な機能が求められます。

    • 不特定多数のWebサービスの仕様を洗い出すのは現実的に不可能であるた め、既存環境でチューニングに利用している機能は、更改に伴い洗い出す必要 があります。 48 Web Server 我らのサービスを使いたければ、 我らのサービス仕様に合わせよ! Web Server Web Server Web Server Web Server
  17. 構成の違いを意識した設計例 • Webサイトのキャッシュを実現するためにWeb Acceleration Profileがあります。 • 一般的なLB構成では宛先がシステム部に限られるため、キャッシュの設計はWeb Server側のコンテンツなどを基準に設計できました。 • しかし、Forward

    Proxy構成では、不特定多数が宛先になり、キャッシュ可能なコン テンツもWebサービス側に大きく依存し、時代の変化も受けやすく一意に決め打ちす るのが難しくなります。 • また、 BIG-IPの仕様ではメモリ上でキャッシュするため、Forward Proxy構成での 大容量データのキャッシュには向いていません。 • そのため、意図的にデフォルト値のままの設計としておき、検証時や導入後に実際の 利用状況に応じて修正をかける案があります。 49
  18. 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
  19. 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内の設定値を変える。
  20. 実装方式の概要 • 設計の方式は大きく分けると3つの方式に分かれます。 55 実装方式 (便宜上の名称) 説明 標準実装 LTMとAPMを用いてBIG-IPの標準的な機能での実装です。 SSLO実装と応用実装の基礎となり、必須の知識となります。

    アクセス制御を行わない場合は、APMは不要です。 SSLO実装 SSLOのGuided Configurationを用いて、BIG-IP標準の機能としてデプロイす る実装です。 表面上は簡単になりますが、簡単に見せるために隠蔽されている内部的な実装は 複雑になっています。 応用実装 BIG-IPの標準の機能では実現できない機能をiRulesを用いて実装します。 基本的には、SSLO実装をベースにしての発展させるイメージになります。
  21. SSLO実装 各実装の違い モジュールとiRules有無の観点 56 LTM APM SSLO iRules LTM APM

    SSLO LTM APM LTM LTM APM iRules 応用実装 標準実装 標準実装ベース SSLO実装ベース アクセス制御が必要なければ、 LTM単体でも機能します。
  22. 難易度 57 標準実装 SSLO実装 応用実装 難易度 高 (High) 低 (Low)

    各実装は積み重ねで成り立っています。
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 標準実装時の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のみを通ります。
  29. 標準実装時の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
  30. 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を用いる場合は、 追加でアクセス制御の設定を行います。
  31. 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を通る。
  32. デフォルトの http-tunnel (tcp-forward) の使い回し • 複数のHTTP & SSL Forward Proxy向けVirtual

    Serverを複数セット作成する際は、 HTTP Tunnel を分けるのが必須となります。 • マルチテ ナントのような使い方や、ステージング用途で複数セットを使う場合も考えられるため、 デフォルトの http-tunnel の使い回しを意図的にしているのか否かを意識してください。 74
  33. 設定の構成要素 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
  34. 設定の構成要素 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
  35. Virtual Serverが2つの場合はどうなるのか? • Forward Proxy構成では、HTTP & SSL Forward Proxyの Virtual

    Serverが存在する関係で、処理のタイミングを意識する必要が 出ます。 • HTTPとHTTPSのフローの違いと、HTTPSの暗号化前後 (Before/After)の違いを意識してください。 80
  36. 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で何をするのか?が重要です。
  37. 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復号化した通信に対する処理を行えるのが 決定的な違いです。
  38. 認証用途のPolicyの重複適用の設計 • SSL Forward Proxy向けVirtual ServerにてSSL復号化した通信に対す る処理をできなければ、SSL復号化を行う価値が半減されます。 • そのため、HTTP Forward

    Proxy向けのVirtual Serverで認証の制御を 行い、SSL Forward Proxy向けのVirtual Serverには「何もしない」に相 当するダミーのAllowのPolicyの適用が考えられます。ただし、厳密に同じ動作 はしませんでした。 • ただし、筆者が実機で確認した際の挙動のため、ご自身で裏付けは取ってくだ さい。また、「何もしない」ためだけにも後述するSSLOの導入を検討してください。 84
  39. 86 Per-Session Policy (Access Profile)の Profile Type: SSL Orchestrator は、

    「何もしない」のが特徴です。 SSLOモジュールの有効化時でしか指定できません。
  40. 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が優先されます。
  41. 前段と後段の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と等価ではないのが分かります。
  42. 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の指定ができない。
  43. 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
  44. 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
  45. 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
  46. 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の通信しか通りません。
  47. 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
  48. 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を問わずに 一括で処理が可能になります。
  49. 標準実装とSSLO実装の通信フローの違い • 標準実装とSSLO実装の違いは、SSL Forward Proxy向けのVirtual Serverに、HTTPとHTTPSのどちらの通信であっても集約される点です。 • iRulesの virtual コマンドを用いて、Virtual

    ServerからVirtual Serverへの転送の処理をしています。 • そのため、SSL復号化された状態の通信に対して、一元的にPolicyの適 用を行える利点が生まれています。 108
  50. 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側で一元管理的に 処理を行え安くなります。
  51. SSL Forward Proxyでの非SSL通信の受け入れ • SSL Forward Proxy向けVirtual ServerでHTTP通信を受け入れ るには、紐付いているSSL Client

    Profileの設定変更が必要です。 • SSL Client ProfileのNon-SSL ConnectionsをEnabledにします。 110
  52. 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
  53. 117 Master list of iRule Commands https://clouddocs.f5.com/api/irules/Commands.html Clouddocs の Master

    list of iRule Commands に iRules コマンドの情報が網羅的に掲載されているので参考にしてください。
  54. 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
  55. 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
  56. 標準実装のAPMによる制御の一例 • APMによる下記4つの制御を紹介します。 • BASIC認証 & Local User DB •

    URLフィルタリング • SSL 復号化”除外” • サーバ証明書のチェック除外 123
  57. 認証の方式 • Client - Forward Proxy間 • 資格情報のやり取りを行います。下記のような認証方法があります。 • BASIC認証

    • 注記: BASIC認証は資格情報が暗号化されません。 • Kerberos認証 • Forward Proxy - 認証Server間 • ユーザーから得られた資格情報の真正性の確認を行います。 • Local User DB • LDAP • Active Directory 126
  58. 認証の方式のイメージ 127 BIG-IP Forward Proxy構成 Client (Web Browser) Web Server

    認証Server Local User DB 資格情報のやり取り 資格情報の真正性の確認
  59. 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
  60. 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あり (資格情報あり)
  61. 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
  62. 134

  63. 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
  64. 146

  65. 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
  66. 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
  67. サーバ証明書のチェック除外の設定 • サーバ証明書のチェック機能は、SSL Server Profileの機能にて行われ ています。 • SSL Server Profileではチェックの有効化と無効化しか指定できません

    が、VPEのItemを用いれば除外を行えます。 • VPEのItemにより制御を行う場合は、SSL Server Profileを特定の値 に設定する必要があります。 162
  68. Server SSL Profileのサーバ証明書のチェック 除外向けの設定 • SSL Server Profileで下記の通りに設定をします。 • Server

    Certificate: require... • Expire Certificate Response Control: ignore もしくは mask • Untrusted Certificate Response Control: ignore もしくは mask 163
  69. 164

  70. キャッシュ • キャッシュは、Web Acceleration ProfileをVirtual Serverに紐付け ると有効化できます。 • そのため、処理フロー上に複数のVirtual Serverが存在する場合、どの

    Virtual ServerにWeb Acceleration Profileを適用するべきかの検 討が必要になります。 • 標準実装とSSLO実装では処理フローが異なる関係上、キャッシュの設 計も異なってきます。 170
  71. 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
  72. 標準実装でのWeb Acceleration Profile • 標準実装ではHTTP & SSL Forward Proxy向けの両方のVirtual ServerにWeb

    Acceleration Profileを適用します。 • 一方にしか適用しないと、HTTPもしくはSSL復号化されたHTTPS通信 の一方しかキャッシュできないためです。 173
  73. 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は キャッシュ対象には含まれません。
  74. 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通信であれば、 キャッシュの対象に含まれます。
  75. SSLO実装でのWeb Acceleration Profile • SSLO実装では前段にあたるHTTP Forward Proxy向けVirtual Serverの方にはWeb Acceleration Profileは適用しないでください。

    • SSLO実装では後段にあたるSSL Forward ProxyのVirtual Server向けVirtual Serverを必ず通信が通るようにした上でアクセス 制御を一括適用しているため、前段でキャッシュ機能を適用するとアクセ ス制御がバイパスされてしまい、セキュリティ上のリスクになります。 176
  76. 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 アクセス制御が迂回されないように、 後段の方で適用します。 前段の方ではアクセス制御がないため、 キャッシュ機能は適用しないでください。
  77. Web Acceleration Profileの適用の比較表 178 実装方法 HTTP Forward Proxy (前段) SSL

    Forward Proxy (後段) 標準実装 Web Acceleration Profileを適用 Web Acceleration Profileを適用 SSLO実装 - Web Acceleration Profileを適用
  78. キャッシュに関するコマンド • キャッシュの確認 • 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 備考: 設定名は適宜置き換えてください。
  79. SSLOの設定の同期のイメージ 187 F5 BIG-IP #1 (Active) F5 BIG-IP #2 (Standby)

    ①. SSLOはデプロイ時に、Active機からStandby機にREST APIで設定を流し込む挙動をします。 ① ② ②. SSLOのデプロイ後に別途ConfigSyncによる設定同期が必要です。
  80. SSLOは簡単であり、複雑でもある • SSLOはガイドによる設定により、表面上は簡単にセットアップが可能になっております。 • 簡単になってはいますが、SSLOのバックグラウンドの処理で何が行われているか把握しておかないと、エ ラーが起きた際に対応できません。 • iApps LXではNode.jsの技術が使われており、デプロイ時にエラーが発生した場合に、SSLOの開発 者向けのようなメッセージが出力されるため、そのままメッセージに従えば解決できるような代物ではあり

    ません。インターネットで検索しても、利用ユーザーが少ないため同一事例が見つかる可能性も現状で はほぼありません。そのため、ログからエラー発生原因を追い、SSLOのiApps LXのソース コードの解析 作業が必要となり、アプリケーション開発寄りの知見が必要になります。そのため検証用途であっても、 問い合わせ可能な保守サービスを契約するのが無難です。 190
  81. 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
  82. 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 のドキュメントを掲載しています。
  83. SSLOの主な要素 • SSLOはBIG-IPの標準設定としてデプロイする仕組みのため、SSLO自 体の要素は限定的です。 • SSLOのPackage Upgrade • SSLOのバージョンを指定のものにします。 •

    System Settings • SSLOの基本設定です。 • HA Status • HAの状態を確認できます。HA構成時は設定の同期状況に注意を払います。 • Guided Configuration • 設定のデプロイを行います。 196
  84. Guided Configurationのメニュー • Topology • SSL Configuration • Service •

    Service chain • Security Policy • Interception Rule • Egress Setting • Log Settings • Summary 204
  85. SSL Configurations • Guided ConfigurationのSSL Configurationメニューでは、 Advanced Settingsの表示の有無を切り替えるのを把握しておいてくだ さい。 •

    「Bypass on Handshake Alert」と「Bypass on Client Certificate Failure」の設定有無により挙動が変わるためです。 220
  86. 221

  87. Bypass on Handshake Alert (SSLハンドシェイク失敗時の挙動) • SSLOの「Bypass on Handshake Alert」を有効化すると、SSLハン

    ドシェイク失敗時でもバイパスする動作となります。 • バイパス処理が発生すると下記のようなメッセージが表示されます。 • SSL Traffic bypassed due to handshake failure alert(40) for TCP #.#.#.#:#### -> #.#.#.#:#### 223
  88. 226

  89. Bypass on Client Certificate Failure (クライアント認証とBypass) • SSLOの「Bypass on Client

    Certificate Failure」の有効化すると、 クライアント認証を行う通信がSSL復号化対象になっていても、SSL復号 化対象から除外されます。 • 表現を変えると、 「Bypass on Client Certificate Failure」の有効 化の状態で、クライアント認証を意図的に行うと、暗号化通信となるため、 不正にデータを持ち出しやすくなる可能性があります。 227
  90. 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
  91. サーバ証明書のチェック除外 • SSLOのGuided Configurationで下記の一方もしくは両方を ignore に設定します。 • Expire Certificate Response

    • Untrusted Certificate Authority • Security Policyで SSL Check is false のルールを作成します。 • Security Policyで Server Certificate Status Check にチェックを 入れて有効化します。 233
  92. 235

  93. 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
  94. 設定例の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 行きの通信 戻りの通信
  95. 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
  96. 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
  97. 256

  98. 257

  99. 258

  100. Merge Changesと運用方法への影響 • Unprotected から Protected に変更すると、Merge Changesを チェックしていても、変更内容が保持されない設定があります。 •

    Merge Changesの対象となる設定は、ドキュメント上では明示的に公 開されていません。 • そのため、一度、Unprotectedにして、本番導入を迎えた場合は、二度 とProtectedに戻さない運用方法が考えられます。 263
  101. 267

  102. 268

  103. 269

  104. 270

  105. 271

  106. 272

  107. 273

  108. 274

  109. 275

  110. 276

  111. iRules と iRules LX • iRules と呼ばれるものには、iRules LX (Language eXtension)もあ

    ります。 • iRules LXはNode.jsの技術を用いており、iRulesから呼び出します。そ のため、iRulesを完全に置き換えるものではなく、 LX (Language eXtension)の名の通りに拡張を行うものです。 281
  112. データの格納先のData Group • 任意のデータの格納先としてKey-Value Store型のData Groupがあ ります。 • Data Groupにはいくつか種類(Type)がありますが、Forward

    Proxy 構成では下記の2種類が活用候補です。 • Type: Address • アクセス制御で用いるIPアドレスを格納するのに適しています。 • Type: String • URLフィルタリングの宛先を格納するのに適しています。 284
  113. 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全体を取得してます。
  114. 288

  115. Type: Address のData Group • Type: Address のData Groupは、Address欄(Key)に任意のサブ ネットを登録できます。

    • 例えば、許可対象の送信元サブネットを格納しておく使い方が想定されま す。 291
  116. 292

  117. Type: String のData Group • Type: String のData Groupは、String欄(Key)に任意の文字列を 格納できるため、自由度が高い形式です。

    • 自由度が高い分、様々な入力が可能なため、入力値の妥当性確認 (Validation)や入力値エラー時のエラー ハンドリングは開発者側で実装 する必要があります。 293
  118. 294

  119. 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
  120. 完全一致(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
  121. 前方一致(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
  122. 中間一致(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
  123. 後方一致(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
  124. 組み合わせ 完全一致, 前方一致, 中間一致, 後方一致 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
  125. 正規表現(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
  126. 正規表現(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
  127. 認証除外(送信元&宛先) 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
  128. 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 偽サイトも許可の対象に入ってしまう。
  129. 設定データの移植/変換の失敗例 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は登録できない。 移植/変換
  130. 設定データの移植/変換 317 ???? 既存導入済み (更改元) F5 BIG-IP 新規導入 (更改先) ##

    ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 移植/変換は、更改先/元の形式の違いを考えて 設定データを移行する必要があるため頭脳労働になります。 そのため、考慮漏れが起きないアルゴリズムに落とし込めなければ、 単純作業としてマンパワーで処理をスケールするのが困難です。
  131. Data Groupの限界 • Data Groupはユーザー定義データの格納先としては便利ですが、Key- Value Store型となるため、Firewall Policyのようにテーブル型でデータを保 持したい場合には不向きです。そのため、設定データの保持形式に表現の限 度があるのを認識しておいてください。

    • URLの格納先としてはURL Categoriesがありますが、あくまでもURLを対象 としたデータ設計となっています。 • iRulesのコードとして直書きする方式もありますが、運用時のコード編集は ヒューマン エラーを引き起こす可能性が高くなるため危険です。 318
  132. 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内でも使用される文字と、 区切り文字が重複しないように考慮が必要になります。
  133. iRulesとData Groupの設計の注意点 • iRules内のロジック改修が後から発生しないように、要件をよく洗い出し た上で設計します。 • ロジックが変わると、設定データの保持形式に影響する可能性があります。 • 例えば、URLを対象にAction(例: 認証除外の有無)指定を後から行いたくなっ

    た場合、設定データの保持形式にActionの項目を追加する必要が出てきます。 • Data Groupの設定データ保持形式が変わらないように設計します。 • 例えば、項目が新たに追加されると、既存データに対してその項目を明示的に設 定し直したり、項目が存在しない場合のデフォルトの動作を考慮する必要が出て きます。 323
  134. 処理フロー / 実装箇所 • 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 これらの設定方法を全て把握して、 適切に使用する必要があります。
  135. みんなちがって、みんないい? 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社 公開ナレッジ
  136. アクセス ログ • BIG-IPでのアクセス ログは必要に応じて、iRulesの log コマンドやHSL (High Speed Logging)を用いて独自フォーマットで作成します。

    • その場合、各イベントで取得可能なデータが変わる点を踏まえて、ログ出力の設計を 行う必要があります。 • iRulesによるカスタマイズの粒度が高くなると、トラブル シューティングが難しくなるため、 ログ レベルに応じてメッセージの出力度合を変えるなどの対策が必要です。 • 適切なアクセス ログが無ければ、どのData Groupのどのレコードにマッチした処理 か?などの判別が追えなくなります。 329
  137. 導入検討の方へ • 顧客の要件を満たせるかの確認は、検証用途の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
  138. PoC (Proof of Concept) / 概念実証 • BIG-IPはiRulesによる機能拡張が行えるため、単純な機能レベルの確 認をPoCで行うと、優位性が高く見える可能性があります。 •

    そのため、導入後の運用面を考慮するのであれば、要件の実現に際して のiRulesの使用有無と、iRulesを用いている場合の複雑性の確認をす るのが好ましいと考えられます。 333
  139. 必要な人材の観点 • BIG-IPの有識者 • SSL Orchestrator(旧SSL Forward Proxy)の有識者は少ないように見受けられる ため、少なくともLTMとAPMの有識者が居ると好ましいです。 •

    Forward Proxyの有識者 • 既存導入済み機器がBIG-IPとは限らない点と、iRulesによるスクラッチ開発の点におい てForward Proxyの動作の理解が必要になります。 • アプリケーション開発の有識者 • iRulesによるスクラッチ開発は基盤寄りの知見のみでは収まらないため、アプリケーション 開発の知見が必要になります。また、コードによる拡張により脆弱性を生まないために、セ キュリティの知見も必要になります。 335
  140. 運用保守チーム(導入後) 次期更改チーム(未来) 導入チーム(導入時) 時系列と人材の関係性 336 BIG-IPエキスパート Forward Proxy エキスパート アプリケーション開発

    エキスパート BIG-IPエンジニア 導入時だけエキスパートを投入しても、 複雑な設計だと後工程の運用保守をしていけない。 次期更改時に移行対応が可能な人材やSIerは存在するのか? ? ? ブラック ボックス状態 のBIG-IP これは本当にBIG-IPなのか?
  141. 更改 From: BIG-IP => To: BIG-IP • 既存(更改元)と新規(更改先)の機器が共にBIG-IPの場合は、バージョ ンの変化があります。 •

    応用実装をしている場合は、標準機能で実装可能な要素が増えている 場合、標準実装で再実装し直すのかの検討が必要です。 • バージョンアップに伴い、iRulesのコマンドにアップデートがある可能性があ ります。そのまま既存踏襲するにおいても、iRulesのコードもそのまま動くか は確認が必要です。 337 設定データの保持構造の見直しで、 移植/変換も大変だ!
  142. 成果物の一例 • 基本設計書 • パラメータ シート • フローチャート 339 スクラッチ開発状態の動作を正しく理解して、フローチャートを書けますか?

    Visioで書く場合はライセンスの準備はありますか? SSLOが大量に作成するオブジェクトは全部書きますか? それとも明示的に指定するものだけ書きますか? SSLOの設定方針やスクラッチ開発したiRulesを、 誰が見ても分かりやすく網羅的に書けますか? 運用手順書 私のこと、忘れてない?運用軽視ですか? 運用手順書なしに誰でも運用できますか?
  143. 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
  144. 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スキーム)を指定して接続しに行きます。
  145. 補足資料: 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