$Date: 2016/05/31 23:39:26 $
既存のURLフィルター機能では、HTTPS通信に対するフィルタリングの手段が提供されていませんでした。これを解消するため、プロキシを経由したHTTPS通信に対してURLフィルタリングを実施する機能(以下、本機能)を今回新たに追加します。
通常、プロキシ経由でHTTPSアクセスを行う場合、Webブラウザはプロキシに対してHTTPSサーバーへの代理接続を要求し、Webブラウザ〜HTTPSサーバー間のデータのやり取りは全てプロキシを経由することになります(SSLトンネリング)。
本機能では対応機器自身がHTTPSプロキシサーバーとなり、Webブラウザがプロキシへ代理接続を要求する際に渡す情報を元にフィルタリングを行い、通信の可否を決定します。
また、DHCPサーバー機能と連携し、DHCPパケットにWPADオプション(252)を適宜追加します。これによって、DHCPクライアントが使用するWPAD対応のWebブラウザに対し、HTTPSアクセスがプロキシ経由となる設定へ自動的に変更するよう促します。
ヤマハ製品では以下の機種およびファームウェアで、プロキシ経由のHTTPS URLフィルター機能をサポートしています。
機種 | ファームウェア |
---|---|
FWX120 | Rev.11.03.02 以降 |
本機能を動作させるには対応機器をHTTPSプロキシ(サーバー)とする必要がありますが、デフォルト設定ではHTTPSプロキシは起動していません。HTTPSプロキシを起動させるには以下のコマンドを設定します。
url filter https-proxy use on
なお、上記のコマンドが設定されると同時に、対応機器が送信するDHCPパケットには自動的にWPADオプション(252)が追加されます。これにより、対応機器をDHCPサーバーとするDHCPクライアントにて使用するWPAD対応Webブラウザに対し、HTTPSアクセスのみ対応機器のHTTPSプロキシを経由するよう、自動的な設定変更を促します。
次に対応機器のHTTPSプロキシを経由する、HTTPSコネクションに対するフィルターを設定します。
フィルターの定義には既存のurl filterコマンドを使用します。ただし、KEYWORDによりフィルタリングするURL(文字列)は以下に示す形式であることに注意してください。
https://ホスト名:ポート番号
つまり、通常のHTTPコネクションへのフィルターのようにパス名を含むURLをKEYWORDにしてフィルタリングすることはできません。
一方、プロキシへの接続ポート番号は一意であり、このポートへのアクセスだけを監視すれば、プロキシ経由のHTTPSコネクションはすべて検査することができます。従って、監視対象のサーバーポート番号を事前に限定する必要はなく、任意のサーバーポート宛のコネクションをフィルタリングします。
なお、フィルターの適用にはurl INTERFACE proxy filter https-proxyコマンドを使用します。
以下は、本機能を利用するためのフィルター定義、および適用設定の一例です。
url filter 101 reject-log https://www.yamaha.co.jp 192.168.100.11 url filter 102 pass-nolog :443 url filter 110 reject-nolog * url lan2 proxy filter out https-proxy 101 102 110
ここで、フィルター番号101の定義は任意のサーバーポート宛のコネクションにマッチすることに注意してください。HTTPS通信のデフォルトサーバーポート番号(443)への接続のみにマッチさせたい場合は、明示的に「https://www.yamaha.co.jp:443」と指定する必要があります。
またフィルター番号102のように、ポート番号部分だけを指定することで宛先ポート番号のみを判定基準とするフィルターを定義することも可能です。
その他、フィルターで破棄したコネクションに対してはステータスコード403(Forbidden)の応答を返し、その直後にコネクションを切断します。
本機能を実際に作用させるには、HTTPSアクセスがプロキシ経由になるようWebブラウザの設定を変更する必要があります。対応機器からは、 DHCPパケットのWPADオプション(252)を使用してWebブラウザ側での自動設定を促します。また、HTTPサーバー機能に対応した機種ならば、 対応機器自身がプロキシ自動設定ファイルを配布することも可能です。
本機能を作用させるためのWebブラウザの設定方法は主に2通りあります。
前者の自動設定にWebブラウザが対応していない場合は、後者のようにプロキシ設定ファイルが存在するURLを手動で指定する必要があります。このとき、対応機器が提供するプロキシ設定ファイルのURLを指定する場合には以下のように設定してください。
http://<対応機器のFQDNまたはIPアドレス>/wpad.dat
対応機器のHTTPサーバー機能の待ち受けポート番号がデフォルト(80)でない場合は以下のような形式になります。
http://<対応機器のFQDNまたはIPアドレス>:<ポート番号>/wpad.dat
具体的な設定方法については各Webブラウザのマニュアル等を参照してください。
一例として、Windows 7でInternet Explorer 9を使用する場合の設定例を記載します。
また、対応機器が提供するプロキシ設定ファイルのアクセスルールは以下の通りです(上から順に適用)。
上記とは異なる方針のプロキシ設定ファイルを配布したい場合は、別途HTTPサーバーを立て、任意のプロキシ設定ファイルをサーバー上に用意する必要があります。なお、対応機器が通知するDHCPパケットのWPADオプションの内容、つまりCURLを変更するにはurl filter https-proxy curlコマンドを使用します。
プロキシの自動設定/手動設定に関して、現時点で確認している各Webブラウザとの対応状況を以下に示します。
ブラウザ名 | バージョン | 自動設定(DHCP) | 自動設定(DNS) | 手動設定 |
---|---|---|---|---|
Internet Explorer | 9.0 | ○ | ○ | ○ |
Windows版 Firefox | 15.0.1 | × | ○ | ○ |
Windows版 Google Chrome | 22.0.1229.79 m | ○ | ○ | ○ |
以下のMIB変数で、プロキシ経由のHTTPS URLフィルターが適用された統計情報を取得することができます。
[書式]
- url filter https-proxy use switch
- no url filter https-proxy use
[設定値及び初期値]
- switch
[設定値] :
設定値 説明 on プロキシ経由のHTTPS URL フィルターを使用する off プロキシ経由のHTTPS URL フィルターを使用しない - [初期値] : off
[説明]プロキシ経由のHTTPS通信を対象にURLフィルタリングを実施するか否かを設定する。
本コマンドが'on'のとき、SSLトンネリングを処理するHTTPSプロキシをRT自身で立ち上げ、Webクライアントからの代理接続要求、および以降のデータ中継を処理する。 ここで、url interface proxy filterコマンドによってプロキシ経由のHTTPSアクセスに対するフィルターが適用されていれば、当該インターフェースに対してフィルタリングが実施される。 なお、適用されていなければ無条件で通過する。
また、代理接続先が本機自身となるような要求は破棄する。
本コマンドを有効にするにはurl filter useコマンドが'on'である必要がある。
[書式]
- url filter id kind keyword [src_addr[/mask]]
- no url filter id
[設定値及び初期値]
- id
- [設定値] : フィルター番号 (1..21474836)
- [初期値] : -
- kind
[設定値] :
設定値 説明 pass, pass-nolog 一致すれば通す ( ログに記録しない ) pass-log 一致すれば通す ( ログに記録する ) reject, reject-log 一致すれば破棄する ( ログに記録する ) reject-nolog 一致すれば破棄する ( ログに記録しない ) - [初期値] : -
- keyword
[設定値] :
設定値 説明 任意の文字列 フィルタリングする URL の全部もしくは一部 ( 半角 255 文字以内 ) * すべての URL に対応 - [初期値] : -
- src_addr : IP パケットの始点 IP アドレス
[設定値] :
設定値 説明 任意の IPv4 アドレス 1 個の IPv4 アドレス 範囲指定 間に - ( ハイフン ) を挟んだ 2 つの IP アドレス、- を後ろにつけた IP アドレス、または - を前につけた IP アドレス ( 範囲指定 ) * すべての IP アドレスに対応 省略 省略時は * と同じ - [初期値] : -
- mask
- [設定値] : ネットマスク長 ( src_addr がネットワークアドレスの場合のみ指定可 )
- [初期値] : -
[説明]
URL によるフィルターを設定する。本コマンドで設定されたフィルターは、 url interface filter コマンドで用いられる。
指定されたキーワードに、大文字のアルファベットが含まれる場合、それらを小文字に変換して保存する。
プロキシ経由のHTTPSコネクションに対するフィルタリングでは、keywordにより検査するURL(文字列)が、“https://ホスト名:ポート番号“であることに注意する必要がある。
[書式]
- url interface proxy filter dir https-proxy list
- url pp proxy filter dir https-proxy list
- url tunnel proxy filter dir https-proxy list
- no url interface proxy filter dir
- no url pp proxy filter dir
- no url tunnel proxy filter dir
[設定値及び初期値]
- interface
- [設定値] : LAN インターフェース名、WAN インターフェース名、ブリッジインターフェース名
- [初期値] : -
- dir
[設定値] :
設定値 説明 in 入力方向の HTTPS コネクションをフィルタリングする out 出力方向の HTTPS コネクションをフィルタリングする - [初期値] : -
- list
- [設定値] : 空白で区切られた URL フィルター番号の並び (128 個以内)
- [初期値] : -
[説明]url filter url filterコマンドで設定したフィルターを組み合わせて、本機のHTTPSプロキシを経由するHTTPSアクセスに対して適用される。 設定できるフィルターの数は、128 個以内、またはコマンドライン文字列長 (4095 文字 ) で入力できる範囲内である。 指定されたすべてのフィルターにマッチしないパケットは破棄される。
[書式]
- url filter https-proxy listen port
- no url filter https-proxy listen
[設定値及び初期値]
- port
- [設定値] : ポート番号(1..65535)
- [初期値] : 8080
[説明]HTTPSプロキシの待ち受けポート番号を設定する。
[書式]
- url filter https-proxy curl url [dhcp-scope=scope_num...]
- no url filter https-proxy curl
[設定値及び初期値]
- url
[設定値] :
設定値 説明 none プロキシ自動設定ファイルのURLを通知しない local 本機が提供する設定ファイルへのURL(http://本機のIPアドレス/wpad.dat) プロキシ自動設定ファイルが存在するURL http://で始まる文字列で、半角255文字以内 - [初期値] : local
- scope_num
- [設定値] : DHCPスコープ番号(カンマ「,」で区切って複数指定可能、ハイフン「-」を使用して範囲指定も可能)
- [初期値] : -
[説明]WPAD(Web Proxy Auto-Discovery)により通知するプロキシ自動設定ファイルのURL(CURL: Configuration URL)を設定する。 なお、WPADで定義されるCURLの通知方法のうち、本機ではDHCPオプション(252)による通知のみ対応している。
本コマンドの設定に応じて、本機のDHCPサーバーが送信するDHCPパケットにWPADオプション(252)を自動的に追加し、CURLを通知する。 なお、本コマンドが none の場合、もしくはurl filter https-proxyコマンドが off の場合はWPADオプションを追加しない。
dhcp-scopeオプションを指定することにより、本コマンドを適用させるDHCPスコープを特定することができる。 このオプションを指定しない場合は、すべてのスコープに対して適用される。 なお、適用対象のスコープにdhcp optionコマンドでWAPD(252)オプションが設定されている場合は、そちらの設定値が優先される。
[ノート]本機自身をCURLに設定する場合、httpd service onの設定が必要である。
[書式]
- show url filter https-proxy
- show url filter https-proxy interface
- show url filter https-proxy pp [peer_num]
- show url filter https-proxy tunnel [tunnel_num]
[設定値及び初期値]
- interface
- [設定値] : LAN インターフェース名、WAN インターフェース名、ブリッジインターフェース名
- [初期値] : -
- peer_num
- [設定値] : 相手先情報番号
- [初期値] : -
- tunnel_num
- [設定値] : トンネルインターフェース番号
- [初期値] : -
[説明]
インターフェースに適用されているプロキシ経由のHTTPSコネクションのURLフィルターの中で、どのフィルターに何回マッチしたかの統計情報を表示する。
インターフェースが指定されない場合は、すべてのインターフェースの情報を表示する。
表示される内容は以下の通り。
- フィルター番号
- 始点 IP アドレス
- HTTPS コネクションとフィルターが一致した回数
[ノート]
url filter コマンドで、キーワード、IP アドレスの両方に "*" を設定したフィルターがインターフェースに適用されている場合、HTTPS コネクションがこのフィルターとマッチした回数は表示されない。
[書式]
- clear url filter https-proxy
- clear url filter https-proxy [interface]
- clear url filter https-proxy pp [peer_num]
- clear url filter https-proxy tunnel [tunnel_num]
[設定値及び初期値]
- interface
- [設定値] : LAN インターフェース名、WAN インターフェース名、ブリッジインターフェース名
- [初期値] : -
- peer_num
- [設定値] : 相手先情報番号
- [初期値] : -
- tunnel_num
- [設定値] : トンネルインターフェース番号
- [初期値] : -
[説明]プロキシ経由のHTTPS URL フィルターの統計情報を消去する。インターフェースが指定されない場合は、すべてのインターフェースの情報を消去する。
url filter https-proxy use on .. (1) url filter 1 reject * 192.168.0.100 .. (2) url filter 2 reject info * .. (2) url filter 3 reject yamaha 192.168.0.2-192.168.0.10 .. (2) url filter 4 reject http://aaa.bbb.ccc/ * .. (2) url filter 1000 pass * * .. (2) url filter 11 reject aaa.bbb.ccc:443 192.168.0.100 .. (3) url filter 12 reject https://ddd.eee.fff: * .. (4) url filter 2000 pass :443 * .. (5) pp select 1 url pp filter out 1 2 3 4 1000 .. (6) url pp proxy filter out https-proxy 11 12 2000 .. (6) (1)... プロキシ経由のHTTPSコネクションのフィルタリングを有効にする。また同時に、 対応機器にてHTTPSプロキシサーバーを起動させる。 (2)... HTTPコネクション向けのフィルター設定群 (3)... 192.168.0.100のホストから、aaa.bbb.cccで終わるサーバー名の443番ポートへの アクセスを禁止する。 (4)... すべてのホストから、https://ddd.eee.fff(全ポート宛)へのアクセスを禁止す る。 (5)... すべてのホストから、443番ポート宛のアクセスを許可する。 (6)... PP[1]の出力方向において、(2)フィルター群をHTTPコネクションへ適用、また(3)〜 (5)のフィルターをプロキシ経由のHTTPSコネクションへ適用する。
# show url filter https-proxy pp 1 pp 1 [OUT]: フィルター番号 始点IPアドレス 回数 ---------------------------------------- 11 192.168.0.10 15 11 192.168.0.27 11 12 192.168.0.27 113 2000 192.168.0.10 917 #
LAN配下のクライアントに対してプロキシの自動設定を促したい。このとき、LAN配下のクライアントにはDNSサフィックスとして 「example.local」が与えられているものとし、DHCPパケット経由による自動設定、およびDNS経由による自動設定に対応させる。
WAN側 | | lan2 (dhcpクライアント) +---------+ | RT-A | +---------+ | lan1 (192.168.100.1/24) | +---+---+---+ | | | | PC1 PC2 PC3 PC4 (DNSサフィックス : example.local)
ip route default gateway dhcp lan2 ip lan1 address 192.168.100.1/24 ip lan2 address dhcp ip lan2 nat descriptor 1 nat descriptor type 1 masquerade nat descriptor address outer 1 primary url filter https-proxy use on .. (1) dhcp service server dhcp server rfc2131 compliant remain-silent dhcp scope 1 192.168.100.101-192.168.100.120/24 .. (2) dns server dhcp lan2 dns static a wpad.example.local 192.168.100.1 .. (3) (1)... プロキシ経由のHTTPS URLフィルター機能を有効にします。 (2)... LAN配下のホストへDHCPアドレスを配布し、同時にWPADオプション(252)を付与 してCURLを通知します。 (3)... CURLの問い合わせでDNSを使用するホストに対し、設定ファイルの配布元がRT 自身であることを通知します。 これを受信したホストはCURLを「http://192.168.100.1/wpad.dat」と見なして 設定ファイルの取得を試みます。
LAN配下のクライアントに対してプロキシの自動設定を促したい。このとき、LAN配下のクライアントにはDNSサフィックスとして 「example.local」が与えられているものとし、DHCPパケット経由による自動設定、およびDNS経由による自動設定に対応させる。
また、LANは以下のクライアントに対してWindows UpdateのみWEBアクセスを許可する。
WAN側 | | lan2 (dhcpクライアント) +---------+ | RT-A | +---------+ | lan1 (192.168.100.1/24) | +---+---+---+ | | | | PC1 PC2 PC3 PC4 (DNSサフィックス : example.local)
ip route default gateway dhcp lan2 ip lan1 address 192.168.100.1/24 ip lan1 inbound filter list 1 100 ip lan2 address dhcp url lan2 filter out 1 2 3 4 1000 url lan2 proxy filter out https-proxy 11 2000 ip lan2 nat descriptor 1 ip inbound filter 1 reject-nolog * * tcp * https .. (1) ip inbound filter 100 pass-nolog * * * * * nat descriptor type 1 masquerade nat descriptor address outer 1 primary url filter 1 pass windowsupdate.com .. (2) url filter 2 pass download.microsoft.com .. (2) url filter 3 pass ntservicepack.microsoft.com .. (2) url filter 4 pass wustat.windows.com .. (2) url filter 1000 reject url filter 11 pass update.microsoft.com .. (3) url filter 2000 reject * url filter https-proxy use on .. (4) dhcp service server dhcp server rfc2131 compliant remain-silent dhcp scope 1 192.168.100.101-192.168.100.120/24 .. (5) dns server dhcp lan2 dns static a wpad.example.local 192.168.100.1 .. (6) (1)... プロキシを経由せずにSSL通信を行おうとする端末からのパケットを破棄します。 (2)... PCがプロキシを経由せずにアクセスするURLに対するフィルターです。 (3)... PCがプロキシを経由してアクセスするURLに対するフィルターです。 (4)... プロキシ経由のHTTPS URLフィルター機能を有効にします。 (5)... LAN配下のホストへDHCPアドレスを配布し、同時にWPADオプション(252)を付与 してCURLを通知します。 (6)... CURLの問い合わせでDNSを使用するホストに対し、設定ファイルの配布元がRT 自身であることを通知します。 これを受信したホストはCURLを「http://192.168.100.1/wpad.dat」と見なして 設定ファイルの取得を試みます。
Windows 7でInternet Explorer 9を使用する場合の設定方法としては以下の3種があります。
設定手順としては、いずれの場合も「インターネットオプション」の[接続]タブを開き、[LANの設定]ボタンを押下し「ローカルエリアネットワーク(LAN)の設定」ダイアログを表示します。
「ローカルエリアネットワーク(LAN)の設定」ダイアログの「設定を自動的に検出する(A)」のチェックボックスを有効にすることで、DHCPやDNSで動的にプロキシ自動設定ファイルが格納されたURLを取得するようになります。プロキシ自動設定ファイルに記載された処理にしたがってプロキシサーバーにアクセスするようになります。
「ローカルエリアネットワーク(LAN)の設定」ダイアログの「自動構成スクリプトを使用する(S)」のチェックボックスを有効にすることで、静的にプロキシ自動設定ファイルを指定することができます。アドレス(R)のテキストボックスに記載されたURLに格納されたプロキシ自動設定ファイルにしたがってプロキシサーバーにアクセスするようになります。
「ローカルエリアネットワーク(LAN)の設定」ダイアログの「LANにプロキシサーバーを使用する(これらの設定はダイヤルアップまたはVPN接続には適用されません)(X)」のチェックボックスを有効にすることで、静的にプロキシサーバーを指定することができます。その際、[詳細設定(C)]ボタンを押下し、HTTPSを使用した通信のみプロキシサーバーを経由するように設定します。
「ローカルエリアネットワーク(LAN)の設定」ダイアログで[詳細設定(C)]ボタンを押下すると、「プロキシの設定」ダイアログが表示されます。Secure(S)のテキストボックスにプロキシサーバーのURLとポート番号を入力して[OK]ボタンを押下します。
本機能において出力されるSYSLOGメッセージの一覧を以下に示します。なお、実際に出力される各メッセージの先頭には"[URL FILTER] "というプレフィックスが付与されます。
レベル | 出力メッセージ | 内容 |
---|---|---|
NOTICE | Passed at INTERFACE DIR(NUM) https-proxy filter: SRC_ADDR : HOST:PORT | INTERFACEのDIR方向に適用したフィルター番号NUMのフィルターにマッチした、SRC_ADDRからHOST:PORTへのコネクションを通過させた。 |
Rejected at INTERFACE DIR(NUM) https-proxy filter: SRC_ADDR : HOST:PORT | INTERFACEのDIR方向に適用したフィルター番号NUMのフィルターにマッチした、SRC_ADDRからHOST:PORTへのコネクションを破棄した。 | |
DEBUG | https-proxy started (listen port[XXXX]) | HTTPSプロキシを起動した(待ち受けポートはTCPXXXX番)。 |
https-proxy sleeping | HTTPSプロキシを停止した。 | |
cannot start https-proxy (listen port[XXXX]) | HTTPSプロキシを起動できなかった(使用ポートはTCPXXXX番) |