- 2009年3月19日 12:42 PM
- Network
世知辛い…
弊社でもgmailがアクセス規制対象になってしまったので、緊急用に穴をあけてみよう。
今回はLunarNight Laboratoryで公開されているweb proxy3をsakuraのレンタルサーバに設置し、コンテンツフィルタリングを回避してみる。
自宅サーバや管理権限をもっているレンタルサーバを使えばSSL-VPNで何とでもなるのだけど、現在借りているデーモン起動できないレンタルサーバ内で手軽にやってみようという趣旨である。
まずは現状の整理とやりたい事
- 社内から社外へのアクセスは、proxyサーバ経由でhttp,httpsのみ許可されている。
- その他のプロトコルはファイアウォールでアクセス制限されている
- proxyサーバは用途別に複数設置されていて、proxy.pacを利用した制御をおこなっている
- インターネットへ抜けるproxyサーバはコンテンツフィルタリングサーバと連携して、規制サイトへのアクセスを禁止する。
回避ルートとしては、インターネットへ抜けるproxyサーバを使って規制対象外のホストを踏み台とし、規制対象サイトへのアクセスを試みる。
通信経路は緑のルートとなる。一般的なコンテンツフィルタリングを回避する手段としては、ReverseProxyを用いることが多いのだが、Reverse Proxyを設置するには、一般のレンタルサーバでは権限の関係で敷居が高い。
その上、「絶対パス指定を埋め込んでいるサイト」「JavaScript等でリダイレクトされるサイト」等、対応できないサイトが多い。

緑のルートが、今回の回避ルートである。動作的には、fowarding Proxyと同じなので、絶対パスやリダイレクトの問題は解決する筈(期待値)
CGIプロキシのインストール方法
WebProxy3は3つのモジュールにわかれている。
- ローカルプロキシとして動作するWindowsバイナリファイル(Windowsクライアント)
- CGIプロキシとして動作するスクリプト(サーバ:perl)
- プロキシとして動作するWindowsバイナリファイル(サーバ:win32専用)
今回はCGIプロキシを選択し、レンタルサーバとして借りているsakuraのサーバに設置した。
WebProxy3_CGI_Serverフォルダの中にある下記ファイル、フォルダ(+中身)をサーバの公開ディレクトリにアップロードする。
webproxy3.cgi register.cgi .htaccess ./lib ./sysdata/ ./sysdata/log/
場合によっては、Perlのパスの変更をする必要がある。(同梱ドキュメントに記載)
上記ディレクトリを他人が踏み台として利用できないように.htaccessファイルにて認証およびアクセス制御の設定をする。 【参考】
webproxy3.cgi および register.cgiは705か755あたりにパーミッションを変更する。
Windowsクライアントの設定
実行して接続ボタンをおせば、プロキシとして動作する。

サーバ設定
CGIを設置したサーバのURLを設定する。NativeサーバはWindows版のサーバを起動した時。
CGIサーバなので、今回はチェックボックスをはずしておく。ユーザ名、パスワードはCGIへのBASIC認証のパスワードにする。
パスワードを設定していない場合(セキュリティ上推奨せず)は、設定してもしなくてもよい。
プロキシ設定
社内プロキシのアドレスとポートを設定する。プロキシに認証が必要な場合は、適宜設定する。
直接インターネットに接続できる環境の場合は「proxyを使う」をはずしておく。
システム設定
特にデフォルトから弄くる必要なし。最大接続数やタイムアウトはもう少し短めにしておくと吉。
Firefoxで設定して使ってみる
Firefoxで利用するproxyをWebproxy3に変更してみる。

ねんがんの2chの画面をてにいれたぞ!
proxy.pacを改造でござる
さてと、このままだと社内の他のサーバが見れないので既存のproxy.pacに手をくわえる。
当然、サーバで配布しているproxy.pacの編集は管理者ではないとできないので、お手軽にローカルに保存しローカルのproxy.pacを読ませるようにする。
- 今までどおりProxy(もしくはDIRECT)で閲覧したいサイトを指定
- httpsはCGI-Proxyでは動作しない(と思う)ので既存のproxyを利用
function FindProxyForURL(url, host)
{
if shExpMatch (host, "*.社内ドメイン.co.jp") <-- 社内網は直接接続
return "DIRECT";
else if shExpMatch (url, "*.google.com") <------- 特定URLは利用しない
return "PROXY 社内proxyアドレス:ポート";
else if (url.substring(0, 6) == "https:") <------ httpsも利用しない
return "PROXY 社内proxyアドレス:ポート";
else
return "PROXY localhost:8080"; <----------------それ以外はCGIプロキシを利用
}
こんな感じ。CGIプロキシと連携して通常のフォワーディングプロキシと同じように使えるのは便利かも。
追記

gmailはhttpであれば問題なく動作することを確認できた。あらら…(すぐに解決するとは思わなかった俺)
この記事に関連するエントリはまだ存在しません
- 新しい: macリビングPC化計画
- 古い: 読書メモ200902
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://blog.moooi.jp/archives/24/trackback
- トラックバックの送信元リスト
- gmailアクセスを会社から利用し続けるための方法 - moiblog より