はじめに
HTTPSプロキシについてちょっと勉強する機会があったのでまとめます
構成
構築手順
プロキシーサーバには「CentOS7.5」と定番「squid」を使用する
・squidのリポジトリを準備 /etc/yum.repos.d/squid.conf
[code lang=text] [squid] baseurl=http://www1.ngtech.co.il/repo/centos/$releasever/$basearch/ failovermethod=priority enabled=1 gpgcheck=0 [/code]
・epelの有効化 /etc/yum.repos.d/epel.repo
[code lang=text] [epel] …
常時利用、基本リポジトリと同様に利用
enabled=1 priority=1 [/code]
・インストール
yum install perl-Crypt-OpenSSL-X509 squid
・/etc/squid/squid.confを編集 とりあえず最終行に以下を追記
[code lang=text] sslproxy_options NO_SSLv2,NO_SSLv3,NO_TLSv1,SINGLE_DH_USE
forwarded_for off request_header_access Referer deny all request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all [/code]
・squidのリスタート
systemctl restart squid
テスト
クライアント側から以下コマンドでプロキシーサーバ経由でHTTPSとHTTPへのアクセスを行い違いをみる ここではプロキシーサーバのIPとportは172.168.0.210:3128である。 curlでコンテンツダウンロードしてみる
curl -L -O --proxy 172.168.0.210:3128 https://xxxxxx/xxx/xxxx
curl -L -O --proxy 172.168.0.210:3128 http://xxxxxx/xxx/xxxx
ログ確認
HTTPへのアクセス
[code lang=text] 1538383639.389 0 172.168.3.201 TCP_MEM_HIT/200 14740 GET http://www.xxxxx.tokyo.jp/xxxxxx.html - HIER_NONE/- text/html [/code]
HTTPSへのアクセス
[code lang=text] 1538383760.574 151 172.168.3.201 TCP_TUNNEL/200 301405 CONNECT www.xxxxx.com:443 - HIER_DIRECT/180.235.251.31 - [/code]
まとめ
プロキシーをする場合でもやはりHTTPSではアクセスの中身は見えない。がURLについては確認できる。 ということはHTTPSアクセスについてもURLフィルタリングは可能ということ。(コンテンツフィルタリングは不可能) ただ一般的にHTTPSの場合証明書不一致のエラーをブラウザが表示する。回避するにはクライアントープロキシー間で別の証明書を用意する必要があるが不特定多数が使用する環境では準備をするのが難しいため意図的にプロキシーサーバをおいてフィルタリングするのはいろいろ問題となる。 (ホテルによくある無料WIFIシステムなどがこれに近い)
自分だけの環境であればアクセス元をウヤムヤにできたりIP制限回避できたり、自分用のログとったりまぁ使いみちありそう(普通は使わない)。
*URLフィルタリング・・・URLを判断基準にした、見せたくないページを見せない行為・機能・仕組み *コンテンツフィルタリング・・・ページの中身を判断基準にして見せたくないページを見せない行為・機能・仕組み