ブログ - FWX120でURLフィルタを使ってみる
ヤマハのファイアウォールルータには,「外部データベース参照型URLフィルター」という機能があって,トレンドマイクロとかの外部の会社が提供するURLリストとレピテーション情報をリスト化して参照する仕組みがあるのだけど,それを使わないでただのファイアウォールとして使う場合のURLフィルタを使ってみることにした.
つまり,今回の場合「内部データベース参照型URLフィルター」を使うということになる.
GUIじゃなくてコマンドラインで入れたいタイプなので,試行錯誤したけど,想定通りうまくいかなかった.それは次の3つの視点について理解が足りてなかった.
URLフィルタは,HTTP向けが先で,HTTPS用は後から追加された
HTTP向けのフィルタはルータへの入り口で効き,HTTPSはルータに入った後で効く
世の中のWebサイトはHTTPとHTTPS両方用意されているわけでは無い
特に3つ目の部分でハマった.
まずは最小限のHTTPのみのURLフィルタを設定した例.
この例では,url filterの10600でtoyotaという文字がURLに含まれているとブロックされ,それ以外は10727によって通過できる.

この設定で,toyotaにアクセスしようとするとこうなる.

ちなみに,トヨタにアクセスしたく無いのではなく,HTTPサイトが用意されているのでtoyotaがちょうどよかった...
次に,HTTPSでのURLフィルタを追加設定した例.
この例では,url filterの1010000でnissanという文字が含まれているとブロックされ,それ以外は1010127によって通過できる.

この設定を生かすためには,url filter https-proxy use onによってルータ内(今回はFWX120)でHTTPSプロキシを稼働させておく必要がある.
定義した1010000と1010127は,url lan1 proxyによって評価される.
PCなどの通信元ではルータ(FWX120)上で動作するHTTPSプロキシに接続するように設定が必要になる.

例えば,Windows 10のプロキシ設定.
「設定を自動的に検出する」となっている場合,wpad.datファイルがダウンロードされてプロキシが設定される.
暗黙的にダウンロードされるwpad.datファイルは次のようなものでした.
ちなみに,デフォルトで,8080ポートになるが,url filter https-proxy liten 8081などでポートを変更することも可能.
URLフィルタでブロックされたサイトにアクセスした場合,HTTPSだとエラーページが用意されてないので,次のようになる.

おまけとして今回使った全設定.
つまり,今回の場合「内部データベース参照型URLフィルター」を使うということになる.
GUIじゃなくてコマンドラインで入れたいタイプなので,試行錯誤したけど,想定通りうまくいかなかった.それは次の3つの視点について理解が足りてなかった.
特に3つ目の部分でハマった.
まずは最小限のHTTPのみのURLフィルタを設定した例.
ip route default gateway 192.168.20.1
ip lan1 address 192.168.100.1/24
ip lan2 address 192.168.20.50/24
ip lan2 nat descriptor 200
url lan2 filter out 10600 10727 🈁
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
url filter 10600 reject toyota * 🈁
url filter 10727 pass * * 🈁
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dns server 1.1.1.1
dns private address spoof on

この設定で,toyotaにアクセスしようとするとこうなる.

ちなみに,トヨタにアクセスしたく無いのではなく,HTTPサイトが用意されているのでtoyotaがちょうどよかった...
次に,HTTPSでのURLフィルタを追加設定した例.
ip route default gateway 192.168.20.1
ip lan1 address 192.168.100.1/24
url lan1 proxy filter in https-proxy 1010000 1010127 🈁
ip lan2 address 192.168.20.50/24
ip lan2 nat descriptor 200
url lan2 filter out 10600 10727
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
url filter 10600 reject toyota *
url filter 10727 pass * *
url filter 1010000 reject nissan * 🈁
url filter 1010127 pass * * 🈁
url filter https-proxy use on 🈁
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dns server 1.1.1.1
dns private address spoof on

この設定を生かすためには,url filter https-proxy use onによってルータ内(今回はFWX120)でHTTPSプロキシを稼働させておく必要がある.
定義した1010000と1010127は,url lan1 proxyによって評価される.
PCなどの通信元ではルータ(FWX120)上で動作するHTTPSプロキシに接続するように設定が必要になる.

例えば,Windows 10のプロキシ設定.
「設定を自動的に検出する」となっている場合,wpad.datファイルがダウンロードされてプロキシが設定される.
暗黙的にダウンロードされるwpad.datファイルは次のようなものでした.
function FindProxyForURL(url, host)
{
var hostip = dnsResolve(host);
if (isInNet(hostip, "127.0.0.1", "255.255.255.255") ||
isInNet(hostip, "192.168.100.0", "255.255.255.0")) {
return "DIRECT";
}
if (url.substring(0, 6) == "https:" ||
shExpMatch(host, "update.microsoft.com") ||
shExpMatch(host, "*.update.microsoft.com")) {
return "PROXY 192.168.100.1:8080";
}
return "DIRECT";
}
URLフィルタでブロックされたサイトにアクセスした場合,HTTPSだとエラーページが用意されてないので,次のようになる.

おまけとして今回使った全設定.
login password *
administrator password *
console character ascii
console prompt [FWX120-1]
login timer 6666666
ip route default gateway 192.168.20.1
ip keepalive 1 icmp-echo 10 5 192.168.20.1
ip lan1 address 192.168.100.1/24
url lan1 proxy filter in https-proxy 1010000 1010127
ip lan2 address 192.168.20.50/24
ip lan2 nat descriptor 200
url lan2 filter out 10600 10727
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
nat descriptor masquerade static 200 1 192.168.100.20 tcp www
url filter 10600 reject toyota *
url filter 10727 pass * *
url filter 1010000 reject nissan *
url filter 1010127 pass * *
url filter https-proxy use on
syslog debug off
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
dns server 1.1.1.1
dns private address spoof on
schedule at 1 */* 09:00:00 * ntpdate ntp.nict.jp
schedule at 2 */* 21:00:00 * ntpdate ntp.jst.mfeed.ad.jp
httpd host lan1
statistics traffic on