2008.07.10
プロキシサーバ squid で、アクセス元を隠蔽
プロキシサーバ
プロキシ(proxy)とは、代理という意味。つまりは代理サーバである。
簡単に(乱暴に?)言ってしまえば自分のPCからネットに直接つなぐのではなく、間に入って代理でネットにつなぐ役割をするサーバのこと。
簡単に図示すれば、以下のようになる。
- 直接接続
自分のPC - (インターネット) - 外部サーバ
- プロキシ経由
自分のPC - プロキシサーバ - (インターネット) - 外部サーバ
昔からある技術だけど、今みたいにブロードバンド化が進みそこら中に光回線が張り巡らされる以前は、プロキシサーバは「キャッシュマシン」として働きトラフィック軽減に役立つということで広く普及した。複数のPCがプロキシサーバを経由してネットを見に行く構成にしておくと、プロキシサーバにキャッシュがあればまずはそのデータを使ってページを表示し、キャッシュがない場合だけ外部につなぎに行く。別々の人が同じページを見るのであればキャッシュ化しておいた方が効率は良い、というわけだ。
またプロキシサーバは、ローカルPCの各種データが外部に漏れないように情報隠蔽機能としても活躍する。
どのPCからのアクセスであっても全てがこの「代理サーバ」からのアクセスのように見せることが可能になる。
また、プロキシサーバの機能を提供するアプリケーションは、アクセス制限も設定できることが多い。つまりは外部への接続を許可するかどうかをプロキシサーバでも管理できる。
ここでは「やりいか」のアイコンがかわいい squid を紹介。
squid はGPLライセンスで提供されるフリーウェアで、開発の歴史が長いので安定性も良い。
詳しくは wikipedia で。
http://ja.wikipedia.org/wiki/Squid_cache
例によって、CentOSにインストールする。yumコマンドで一発だ。
2007年末に公開された最新版の「3.0」ではなく、「2.6」が入ると思うが特別問題はない。
yum -y install squid
サービスを立ち上げる前に、最低限設定をしておこう。
squid の設定ファイルは、/etc/squid/squid.conf にある。
vi /etc/squid/squid.conf
# NETWORK OPTIONS
(略)
http_port 8080 #8080に変更
# ACCESS CONTROLS
(略)
acl CONNECT method CONNECT
acl localnet src 192.168.11.0/255.255.255.0 #追加
acl vpnnet src 10.8.0.0/255.255.255.0 #追加
(略)
http_access allow localhost
http_access allow localnet #追加
http_access allow vpnnet #追加
http_access deny all
# MISCELLANEOUS
(略)
forwarded_for off #offに変更
(略)
error_directory /usr/share/squid/errors/Japanese #追加
(略)
header_access X-Forwarded-For deny all #追加
header_access Via deny all #追加
header_access Cache-Control deny all #追加
ファイルの登場位置はバラバラかもしれないので、それぞれ検索して適切な位置に記述する。
最後にまとめて書くと、動かない可能性が高い(例えば deny all 以下に allow を書いても無効になるので)。
ポートの変更や、アクセスを許可するIPの設定、ヘッダの設定などを行えば完了だ。
VPN経由での接続デモをするために、ローカルIPは2パターン設定してある。
最後に記載した header_access の 3行 はプロキシ経由で接続している痕跡を残さないための設定。
あとはサービスを起動するだけでOK。
service squid start
ブラウザを使ってプロキシ経由でWebページを見るには、I.E.の場合は
[ツール]-[インターネットオプション]-[接続タブ]-[LANの設定ボタン]-[LANにプロキシサーバーを使用するをチェック]-[詳細設定ボタン]-[HTTPの使用するプロキシのアドレスにサーバーのIPアドレス、ポートに8080と入力]
で完了する。
試しに、デタラメなIPアドレスを入力して、接続できないことを確認すると良いかもしれない。
その後に、正しいIPアドレスを入れて接続ができれば、プロキシサーバを経由していることがわかる。
で、診断くんにアクセスして「プロキシのあり/なし」でどう変わるのかを見てみよう。
診断くんというのは、各種ヘッダからプロキシ度をチェックしてくれるサイト。各種ヘッダ情報も表示されるのでちょっとしたチェックにも使える。
接続先のサーバから、自分のアクセスはどう見えているかを知りたいときなどに使ってみよう。
squid でもうちょっと遊んでみるのはまたの機会に。

Trackback URL
Comment & Trackback
Comment feed
Comment