Squid で匿名プロキシを立てる
Cent OS などの RHEL系Linux を使っている場合、
# yum install squid
でインストール出来ます。
2.7系や3.1系などの最新版を使いたい場合には http://www.squid-cache.org/Versions/ より tarボールをダウンロードしてき make するとよいでしょう。
» squid.conf の設定 ~基本編~
始めに squid.conf の基本設定です。
- http_port
- LISTEN するポート番号です。デフォルトは 3128 なのですが、8080 にするのが慣例だったりしますが、何でも構いません。LISTENする IPアドレスを書くこともできます。
http_port 8080
- LISTEN するポート番号です。デフォルトは 3128 なのですが、8080 にするのが慣例だったりしますが、何でも構いません。LISTENする IPアドレスを書くこともできます。
- cache_store_log
- cache store ログですが、
cache_store_log none
とか書いちゃっていいです。このファイルを見ればキャッシュされた時間とか色々分かりますが、サイズがどんどん大きくなっていくので正直邪魔です。
- access ログくらいはとっておいた方がいいでしょう。
- cache store ログですが、
- acl
- https を通し、CONNECT メソッドを許可する場合には何もしなくても構いません。
が、CONNECT メソッドを許可するということは、直接的な TCP/IP を squid を使うクライアントに許可してしまうことになるので、セキュリティ的には本当はあまり好ましくありません。しかし、NAPT(IPマスカレード)じゃない環境で https 通信させるためには必須です。CONNECT メソッドを禁止する場合には##acl CONNECT method CONNECT
とします。(自分で明示的にコメントアウトしたものは ## とかしておくと後で分かり易いです。)
- squid を利用するクライアントを限定させたい場合にはこの acl タグを使います。
acl PermittedHosts src 192.168.10.0/24
と言った感じのアクセス許可を書いてください。(書いただけではアクセス制御はされません。http_access で使用します。)
- https を通し、CONNECT メソッドを許可する場合には何もしなくても構いません。
- http_access
- # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS と書かれた行を探してください。この下に
http_access allow PermittedHosts
と書いておきます。PermittedHosts の部分は、先ほどの acl に合わせます。この数行下に http_access deny all があることを確認しておいてください。これで、許可された IP アドレス以外の squid の利用を防げます。(アクセスしても Access Denied と表示されるようになる。)
- # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS と書かれた行を探してください。この下に
- cache_effective_user / cache_effective_group
- 常駐する squid プロセスのユーザを指定します。squid にしておきます。グループも同じです。
cache_effective_user squid cache_effective_group squid
- 常駐する squid プロセスのユーザを指定します。squid にしておきます。グループも同じです。
» squid.conf の設定 ~匿名編~
お待たせしました(笑)。ここから匿名にするための設定です。
- visible_hostname
- エラーメッセージなどの表示の際に、そのメッセージの下部に表示されるホスト名を変更するためのタグです。何も書かないと gethostbyname()関数で取得した値が表示されるとありますので、つまり squid が起動しているサーバのホスト名が表示されます。それでも構わないという場合はいいのですが、何か適当な値に設定しておく方が安心です。
visible_hostname proxy.example.com
などと設定しておけば良いでしょう。
- エラーメッセージなどの表示の際に、そのメッセージの下部に表示されるホスト名を変更するためのタグです。何も書かないと gethostbyname()関数で取得した値が表示されるとありますので、つまり squid が起動しているサーバのホスト名が表示されます。それでも構わないという場合はいいのですが、何か適当な値に設定しておく方が安心です。
- forwarded_for
- 既定では HTTP_X_FORWARDED_FOR という環境変数に接続元の IP アドレスを載せて接続先サーバへ通知するのですが、これを止めさせます。
forwarded_for off
これで HTTP_X_FORWARDED_FOR の内容は unknown になります。しかし、この HTTP_X_FORWARDED_FOR という環境変数はプロキシ特有の環境変数なので、そもそも出力させたくない場合には別の設定(header_access)が必要となります。(とは言え、精神的に気持ち悪いのでこの設定は必ず off にしておく方が精神衛生上も良いでしょう )
- 既定では HTTP_X_FORWARDED_FOR という環境変数に接続元の IP アドレスを載せて接続先サーバへ通知するのですが、これを止めさせます。
ここまでの設定で、少なくとも接続元の IP アドレスが漏れる心配はなくなりました。(設定はたった2つですが!)
しかし、まだプロキシ特有の環境変数が出力されているので、これを送らないように変更します。
- header_access
- squid.conf の中で、この設定を変更すると HTTP標準に違反すると警告されていますが、変更します。
意味は、簡単で、deny all の前に書いた環境変数を出力しないようになります。指定するときは、HTTP_を取り除き、_(アンダーバー)を -(ハイフン) にします。 - HTTP_X_FORWARDED_FOR 環境変数を出力しないようにします。
header_access X-Forwarded-For deny all
- HTTP_VIA 環境変数を出力しないようにします。
header_access Via deny all
- HTTP_CACHE_CONTROL 環境変数を出力しないようにします。
header_access Cache-Control deny all
HTTP_CACHE_CONTROL は Internet Explorer も使っているようですが、まぁ、送らなくてもいいでしょう。
- 以下の2つは書くことを奨励しません。
header_access referer deny all header_access user-agent deny all
- HTTP_REFERER をチェックしている CGI などは多数あります。これは何処から飛んできたかを示す環境変数で、リンク元とかの特定に利用されているほか、不正な CGI呼び出しなどをこの環境変数をチェックして調べている場合が数多いサイトであります。確かにこちら側の情報が流れてしまうのですが、これは消さない方がいいです。
- 次の HTTP_USER_AGENT は、使っているブラウザなどの情報を示すもので、これは消しても構いません。あるいは、header_replace で、テキトーに変更するのも Okay です。しかし、どういったブラウザからアクセスされているのか統計を取っているページなどもあるため、消しても消さなくてもいいと言った感じです。
- squid.conf の中で、この設定を変更すると HTTP標準に違反すると警告されていますが、変更します。
前のページ
関連するコンテンツ
- VPN 接続した N-06C にプロキシを通す ~N-06C の VPN 事情
- VPN 接続時には広告を表示させない ~N-06C の VPN 事情
- N-06C の VPN 事情
- ポートを開いているプロセス
- Service Temporarily Unavailable のお詫び
コメントを残す