F5 SSLO セットアップガイド InterSafe WebFilter編¶
最終更新日: 2021年1月22日
F5 SSL Orchestrator (SSLO)と WEB フィルタリング製品である InterSafe WebFilter との連携手順をご紹介致します。 (本ガイドは、一度BIG-IPを設定したことのある方を対象とした内容となっております。)
はじめに¶
このページでは、これらのオフィシャルなドキュメントの補足となる資料や、複数の機能を組合せてソリューションを実現する方法をご紹介いたします。 F5のオフィシャルなドキュメントはこちらにございます。
- AskF5: https://support.f5.com/csp/home
- F5 Cloud Docs: https://clouddocs.f5.com/
- F5 DevCentral(コミュニティ): https://devcentral.f5.com/
F5 SSLO (L3 Explicit Proxy) とInterSafe WebFilterの連携設定¶
本章では、SSLOの可視化ゾーンにInterSafe WebFilterを配置し、ICAPプロトコルで連携する構成について、ご紹介致します。
F5 SSLOとInterSafe WebFilter連携の流れ¶
F5 SSLOとInterSafe WebFilterの連携の流れは以下の通りです。
- クライアントがパソコン(AD)にログオンします。
- SSLOでユーザ認証を実施し(NTLM認証、Kerberos認証の場合は自動的に認証が実施されます)、SSL通信を復号します。
- WEB接続先情報とSSLOで認証が成功したユーザ情報を InterSafe WebFilterにICAPで送ります。
- ユーザ情報を元にURLフィルタリングルールを適用し、接続が許可されていないWEBサイトの場合は、ブロック画面をクライアントに表示します。
- 許可された通信に関しては、SSL 通信を再暗号化し、WEBサーバへ接続します。
本ガイドの利用バージョンと構成イメージ¶
本ガイドは、以下の製品バージョンを利用して、作成しております。
利用バージョン
製品名 バージョン F5 SSL Orchestrator v15.1.2-0.0.9Final ‒ 7.5.2 InterSafe WebFilter Ver.9.1 Build1501Note
- (各F5代理店でサポート可能な範囲において、)極力最新のバージョンを適用頂くことをおすすめ致します。最新のバージョンはAskF5でご確認下さい。
- Proxy認証を行いたい場合は、APMのライセンスが必要となります。
本ガイドにおける構成イメージ
ライセンスアクティベーション、プロビジョニング、CA証明書/鍵登録¶
Next ボタンを押します。
ライセンスをアクティベーションします。
以下のモジュール((SSL復号・再暗号化:LTM,AVR,iRulesLX,SSLO)&(認証:APM)) をプロビジョニングします。(ライセンスはSSLOとAPMの2つを利用しています。)
Next ボタンを押します。
ホスト名、タイムゾーン、Rootパスワード を設定して、Next ボタンを押します。
SSLOでサーバ証明書を書き換える際に利用する CA証明書、CA鍵 を選択し、任意の名前 を設定し、Next ボタンを押します。
Finished ボタンを押します。
最新版のSSL Orchestrator RPMへのアップグレード¶
AskF5(https://support.f5.com/)より最新版のSSLO RPMをダウンロードします。(SSLOにプリインストールされているRPMのバージョンが最新の場合は、以下の操作は不要です。)
SSL Orchestrator >> Configuration の画面にて、右上の アップグレードボタン を押します。
Choose File にて、先程ダウンロードしたRPMを選択し、Upload and Install を押します。
バージョンがアップグレードされていることを確認します。
Networkの基本設定¶
VLANの設定を行います。
Self IPの設定を行います。
デフォルトゲートウェイの設定を行います。
DNS, NTPの設定¶
DNSの設定を行います。
NTPの設定を行います。
InterSafe WebFilterにてHTTP/HTTPS判別するための設定(Local Traffic Policyの設定)¶
InterSafe WebFilter ICAP版は、ICAPのリクエストヘッダの一部でHTTPサーバへの通信かHTTPSサーバへの通信かを判別しています。InterSafe WebFilterがHTTP/HTTPS判別可能となるようにLocal Traffic Policyにてルールを作成します。
Local Traffic >> Policies >> Policies List にて、Create ボタンを押します。
任意のポリシー名 を入力し、Create Policy ボタンを押します。
HTTPS用のルールを作成します。Rulesの Create ボタンを押します。
任意のRule名 を入力し、Match all of the following conditions: の + マークをクリックし、以下のように入力します。
Match all of the following conditions: 必要有無 TCP
port
is
any of
443
atclient accepted
time.必須 Apply to traffic on local
side ofexternal
interface必須 同様に、Do the following when the traffic is matched: の + マークをクリックし、以下のように入力し、Save ボタンを押します。(デバック用のログルールは任意で追加します。)
Do the following when the traffic is matched: 必要有無 Insert
HTTP Header
namedurihttps
with valuetcl:[HTTP::uri]
atrequest
time.必須 Replace
HTTP URI
full string
with valuetcl:https://[HTTP::host][HTTP::uri]
atrequest
time.必須 Disable
response adapt
atresponse
time.必須 Log message
tcl: HTTPs(443) URI was replaced to: [HTTP::uri]
atrequest
time.任意 Facility: local0
Priority:info
任意 同様にHTTP用のルールを作成します。
Match all of the following conditions: 必要有無 TCP
port
is
any of
80
atclient accepted
time.必須 Apply to traffic on local
side ofexternal
interface必須 Do the following when the traffic is matched: 必要有無 Insert
HTTP Header
namedurihttp
with valuetcl:[HTTP::uri]
atrequest
time.必須 Replace
HTTP URI
full string
with valuetcl:http://[HTTP::host][HTTP::uri]
atrequest
time.必須 Disable
response adapt
atresponse
time.必須 Log
messagetcl: HTTP(80) URI was replaced to: [HTTP::uri]
atrequest
time.任意 Facility: local0
Priority:info
任意 2つのルール作成後は、以下のようになります。Save Draft ボタンを押します。
Publish ボタンを押すと、以下のようになります。
NTLM認証設定¶
APMで行う認証の設定を行います。ここでは、NTLM認証の設定を行います。ADサーバ(ドメインコントローラ、DNS)の構築済みであることを前提としております。
Access >> Authentication >> NTLM >> Machine Account を選択し、Create ボタンを押します。
任意の名前 を設定し、Machine Account Name には 任意のSSLO識別名 を入力し、Domain FQDN、Adminユーザ名 と パスワード を入力し、Join を押します。
以下のようになります。
Access >> Authentication >> NTLM >> NTLM Auth Configuration を選択し、Create ボタンを押します。
任意の名前 を設定し、Machine Account Name は 先程作成したもの を選択します。Domain Controller FQDN List には ご利用のドメイン名(FQDN名) を指定し、Finished ボタンを押します。
Access >> Profiles/Policies >> Access Profiles(Per-Session Policies) を選択し、Create ボタンを押します。
任意の名前 を設定し、Policy Type に SWG-Explicit を選択し、Customization Type に Standard を選択し、User Identification Method にて、Credential を選択し、NTLM Auth Configuration に 先程作成したもの を選択し、Languages は ご利用の言語 を選択して、Finished ボタンを押します。
作成されたAccess Profileの一覧から先程作成したプロファイルを見つけ、Per-Session Policy欄の Edit を押します。
ブラウザの別タブにVPEが表示されます。Startの右隣の + ボタンを押します。
Authenticationタブの NTLM Auth Result を選択し、Add Item、Save を押します。
NTLM Auth Resultの右のSuccessfulにつながるフローを Deny から Allow に変更します。
左上の Apply Access Policy を押し、ブラウザのVPEタブを閉じます。
認証ヘッダ挿入用iRuleの作成¶
ここでは、ユーザ認証ヘッダ(X-Authenticated-User)とAPMで認証されたユーザ名(session.logon.last.username)をICAPリクエストに挿入するためのiRuleを作成します。ICAPはHTTPをカプセリングしますので、認証情報を挿入するためには以下の2つのiRuleが必要となります。また、InterSafe WebFilter ICAP版に認証ユーザ名を理解してもらうために、ユーザ名の手前に ldap:/// を加え、Base64エンコーディング をする必要があります。
Local Traffic >> iRules にて、Create ボタンを押します。任意の名前 を入力して、Definition に以下サンプルiRuleを入力し、Finished ボタンを押します。(以下のiRuleはあくまでもサンプルとなります。同じ主旨の内容であれば下記と同じでなくても構いません。)
例1)HTTPリクエストヘッダに認証情報を挿入するためのiRuleサンプル
### Add this iRule to Virtual Server:ssloS_XXXX-t-4 ### when HTTP_REQUEST { # Create the HDR list and insert the X-Server-IP value set hdr [list "X-Server-IP:[IP::local_addr]"] # Add the authenticated user information if it exists if { [ACCESS::session data get session.logon.last.username] ne "" } { # In case of NLTM/Basic Auth lappend hdr "X-Authenticated-User:[b64encode ldap:///[ACCESS::session data get session.logon.last.username]]" } # Add above info to the table temporarily and add an ICAP-X header set guid [expr {int(rand()*1e12)}] table set ${guid} ${hdr} 10 10 HTTP::header replace ICAP-X ${guid} }
例2)ICAPリクエストヘッダに認証情報を挿入するためのiRuleサンプル
### Add this iRule to ssloS-XXXX-req ### when ICAP_REQUEST { if { [HTTP::header exists "ICAP-X"] } { # Get the header and the value from table set hdrs [table lookup [HTTP::header "ICAP-X"]] # Add it to ICAP header foreach x ${hdrs} { ICAP::header add [lindex [split ${x} ":"] 0] [lindex [split ${x} ":"] 1] } # Remove the temporary http header. But the data would show up in the ICAP header. HTTP::header remove "ICAP-X" } }
2つ目のiRuleにおいて、ICAP-XヘッダはHTTPヘッダ上からは削除されますが、ICAPヘッダに残ります。このヘッダは無害ですが、気になる場合は、InterSafe WebFilterのヘッダコントロールにて削除して下さい。また、接続テストをされる際には、変数情報をログ出力するなどして意図する値が入っているか確かめて頂くことをおすすめします。例1)認証ユーザ名を確認するデバッグlog local0. “Username: [ACCESS::session data get session.logon.last.username]”例2)エンコードされた内容を確認するデバッグlog local0. “Encoded username: b64encode ldap:///[ACCESS::session data get session.logon.last.username]]”例3)ヘッダー内容を確認するデバッグforeach attr “[HTTP::header names]” {log local0. “$attr : [HTTP::header value $attr]”}
SSLO Guided ConfigurationによるSSLOの設定¶
SSL Orchestrator >> Configuration を選択します。DNS と NTP と Route が Configure となっているのを確認し、Next ボタンを押します。
任意の名前 を設定し、SSL Orchestrator Topologiesとして、L3 Explicit Proxy を選択し、Save&Next ボタンを押します。
任意の名前 を設定し、右上の Show Advanced Setting をクリックし、Client-side SSL にて、利用したい TLSのバージョン を選択します。
CA Certificate KeyChain にて、既にインポート済みのCAファイルを選択して Done を押します。
Server-side SSL も同様に利用したい TLSバージョン を選択します。
期限切れの証明書や自己署名証明書に対しての動作も確認し、Save&Next を押します。
Add Service を押します。
Generic ICAP Service を選択し、Add ボタンを押します。
任意の名前 を設定し、ICAP Devices に InterSafe WebFilterのIPアドレス と ポート番号 を設定し、Done を押します。
Preview Max Length に 0 を入力し、ICAP Policy に既に作成済みの Local Traffic Policy を選択し、Save を押します。Save&Next を押します。
Service Chain List で Add を押します。
任意の名前 を設定し、先程作成したサービスを右に移動させ、Save ボタンを押します。(InterSafe WebFilterのサービスが上にくるようにします。)
Service Chain ができたことを確認し、Save&Next ボタンを押します。
All Trafficの ペンマーク をクリックします。
先程作成した Service Chain を選択し、OK ボタンを押します。
Save&Next ボタンを押します。
Proxy Server Settings にクライアントからプロキシとしてアクセスさせるIPアドレスを入力し、既に作成済みの Access Profile を選択し、Ingress Network として、クライアントからアクセス可能な VLAN を選択し、Save&Next ボタンを押します。
本テスト構成では、Manage SNAT Settings で Auto Map、Gateways で Default Route を選択し、Save&Next ボタンを押します。(設定は検証環境に合わせてください。)
Save&Next ボタンを押します。
必要に応じて、設定内容を見直し、 Deploy ボタンを押します。
OK ボタンを押し、Deployに成功すると以下のような緑色の DEPLOYED マークが表示されます。
右上の System Settings アイコンを選択します。
SSLOがExplicit Proxyとして利用する DNS を設定し、Deploy を押します。
InterSafe WebFilterと連携するサービスに関しては認証ヘッダを挿入するために、Protectedの 鍵 マークを外します。
既に作成済みの iRule を追加します。Local Traffic >> Virtual Servers>> において、ssloS_XXXX(任意)-t-4 という名称のVirtual Serverを選択し、Resources タブを選択、HTTPリクエストヘッダに認証情報を挿入するための iRule を選択し、Finished を押します。
ICAPリクエストヘッダに加えるための iRule を追加します。Local Traffic >> Virtual Servers において、ssloS_XXXX(任意)-req という名称のVirtual Serverを選択し、Resources タブを選択、ICAPリクエストヘッダに認証情報を挿入するための iRule を選択し、Finished を押します。
Note
- セキュリティデバイスがICAPサービス、HTTPサービスの場合、SSL復号していないトラフィックをサービスチェーンに流せません。
InterSafe WebFilter の設定¶
InterSafe WebFilterのインストールは終了しているものとします。 また、ここでは一部の認証連携に関わる設定方法の紹介のみとなります。詳細につきましてはアルプスシステムインテグレーションまでお問い合わせください。
IP認証の設定¶
[サーバ管理]-[認証設定] をクリックします。 [認証設定] が表示されます。
[ユーザ認証]-[有効] チェックボックスを オン にし、 [保存] をクリックします。
LDAPサーバの登録と管理¶
[サーバ管理]-[LDAPサーバ設定] をクリックします。
[LDAPサーバ設定] タブの [サーバを登録] をクリックします。
LDAPサーバの情報を入力し、 [保存] ボタンをクリックします。
SSLOとの認証連携設定¶
※設定ファイルを直接編集する必要があります。 管理画面の終了、WebFilterサービスを停止して行ってください。
- <インストールディレクトリ>/conf/proxy.inf ファイルをテキストエディタで開きます。
- [CONTROL_CFG] セクションに 「ICAP_AUTHENTICATION=TRUE」 を追加します。
管理画面から [サーバ管理]-[認証設定] を開き、 [LDAP連携を行う] をクリックして [保存] ボタンをクリックします。
- 管理画面から [サーバ管理]-[LDAPサーバ設定] を開き、ICAPクライアントで指定しているActiveDirectoryを指定します。
- [LDAPユーザ同期へ] をクリックして認証するアカウントの選択、またはLDAP自動連携機能を設定します。
クライアントからの接続テスト¶
クライアントにSSLOの CA証明書 をインストールします。
コマンドラインで確認する場合は、以下を利用します。
curl -vk --proxy 10.100.35.201:3128 –proxy-ntlm –proxy-user 'se001:ilovef5!' https://xxxx.xxx
ブラウザで確認する場合は、プロキシ設定にSSLOを加えてからWEB接続を確認します。
WEB通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられている ことを確認します。
ブラックリストの宛先への通信が ブロック されることを確認します。
SSL復号除外サイトの通信が成功するか確認します。サーバ証明書がSSLOのCA証明書で 書き換えられていない ことを確認します。
Note
- ブロックページの他にも、一時解除(Passwordあり・なし)、規制解除申請画面を表示することができます。
- 規制画面表示で警告が表示される場合、InterSafe WebFilter の証明書配布をお願い致します
その他¶
各種ログ¶
- テストの際には、以下のSSLOにおけるログを参照して下さい。
- SSLO全般ログやiRuleでlocal0で指定したログ
- /var/log/ltm
- APM(認証)のログ
- /var/log/apm
- SSL Guided Configuration(iAppLX/REST)に関わるログ
- /var/log/restnoded/restnoded.log | /var/log/restjava.0.log
- その他、SSLOに関するトラブルシューティングは以下のAskF5記事をご参照下さい。
- K26520133: Troubleshooting SSL Orchestrator(SSLO) https://support.f5.com/csp/article/K26520133
- SSL可視化バイパス設定を行っているサイトでは、InterSafeの規制画面が表示されない場合があります。
- 規制画面を表示する必要があるサイトについては、SSLO上でのパイパス設定を行わないでください。
- 本ガイドでは、Webで利用するデフォルトのポート番号に関してInterSafeポート規制機能との連携方法を記載しています。
- 記載外のポートに対して、ポート規制機能を利用する場合、ガイド内1.7の設定を 必要なポートに対して追加してください。
- InterSafe認証機能については、以下機能と連携可能であることを確認しています。
- IPアドレス認証 | Basic認証(ローカル) | Basic認証(LDAP連携)