Fedora のSquid SRPM からRHL9 用RPM を作る

PuTTY でsocks proxy の機能を利用する」、とてもベンリです。

ネットワークセキュリティHACKS―プロが使うテクニック&ツール100選
Andrew Lockhart 渡辺 勝弘 鶴岡 信彦 黒川 原佳 新井 貴之 松田 綾爾 鈴木 和也
オライリー・ジャパン (2005/01)
売り上げランキング: 7,807
通常24時間以内に発送

「ネットワークセキュリティHACKS―プロが使うテクニック&ツール100選」 の「HACK #76」 によると、SSH のsocks はsocks 4 のようなのですけど、socks 4 ではDNS のクエリをSSH 接続先でなく、通常接続時のDNS に飛ばしているようなのです。このため、外部からSSH 経由で繋いだ時、IP アドレスを指定しないとアクセスできなかったりする(コレの対処はローカルPC のhosts ファイルに書く) のと、接続元の環境でどうしてもアクセスの痕跡が残ってしまう、という2つの問題がある、ということが分かりました。
これの対処法として書かれているのが、「HACK #75」 の、SSH 経由でSquid を使う、という方法です。なのでSquid の設定をしてみましょう。とりあえず、最新版のパッケージを作って入れ替えます。
最新版は"squid-2.5.STABLE9" のようですが、Fedora のリポジトリにあったのは"squid-2.5.STABLE8-2.src.rpm" だったので、これを頂いてきます。Squid のアドバイザリを見るに、今のところは"2.5.STABLE8" であれば大丈夫そうです。
ダウンロードできたら、おもむろにインストール。


# rpm -ivh squid-2.5.STABLE8-2.src.rpm

適当なエディタで"/usr/src/redhat/SPECS/squid.spec" を開き、RHL9 のgcc(ウチの環境だと"gcc-3.2.2-5") では認識されないコンパイルオプション、"-fPIE" を探し出してこれを削除します。2箇所くらいあるはず。セーブして、いざコンパイル。


# rpmbuild -ba --target i686 squid.spec

できあがったら、インストール。


# rpm -Uvh /usr/src/redhat/RPMS/i686/squid-2.5.STABLE8-2.i686.rpm

"/etc/squid/squid.conf" を適当なエディタで編集。基本的には「squid の設定」 の設定そのままで、あと、"visible_hostname" にホスト名を入れます。以下は例。


visible_hostname alectrope.jp

セーブしたら、キャッシュを初期化します。ちなみに"/var/spool/squid/" 以下にキャッシュされます。


# squid -z

起動。上手くいかない場合はログファイルとかあたりのアクセス権が"squid:squid" になってるかとかを確認します。


# /etc/rc.d/init.d/squid start

あとは適当にブラウザにproxy の設定をして、正常にアクセスできる + ログファイルに残っていることが確認できたらOK です。Squid は色々な事が出来るようですが、ひとまずこのへんで。
十分なHDD 資源を用意して、全てのアクセスをキャッシュするようにすれば、それだけでローカルミラーになるなぁ。


(2005/03/07 13:59 追記)
デフォルトの設定で使うと、プロキシ丸出しであちこちにアクセスすることになります。掲示板によっては書き込みできなくなったりすることもあるかもなので、以下のページなどを参考にして、その対策などしておくとよさそうです。

つまりはいわゆる「匿名串」 を作る、という話なのですが、自分自身が使う場合には匿名の意味は全くないですし、必要に応じて設定するとよさげです。こんなものを外部公開したりするとリスクがものすごく高いのでそのあたりにも注意しましょう。
設定が終わったら、以下のサイトなどでチェック。

ウチでの追加設定項目は以下の5つ。


visible_hostname none
forwarded_for off
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all

(2005/04/05 21:16 追記)
内部ページからのリファラはカットしておくとよりセキュアになるかも。これはかなりベンリっぽいので、早速設定。