squid + squidGuard でフィルタリング
PC参号機に、Ubuntu 9.10 を入れ、次男+三男坊に開放したのだが、「アクセス制限が必要じゃないか」という指摘をカミさんから受けた。
Windows機なら、インストールしているF-SecureのInternet Securityにそんな機能も搭載しているが、対象はUbuntuのデスクトップ機。
ネットで探して、しばし考え、我が家の現状では自鯖機のUbuntuでやるのが、一番手っ取り早く、安上がりと判断した。
Windows機なら、インストールしているF-SecureのInternet Securityにそんな機能も搭載しているが、対象はUbuntuのデスクトップ機。
ネットで探して、しばし考え、我が家の現状では自鯖機のUbuntuでやるのが、一番手っ取り早く、安上がりと判断した。
前説
いろいろ解決策はあると思われる中、やはりLinuxを使うのが安上がりだ。 ましてや制限したい対象がUbuntuだからなおさらだ。
Linuxでの設定という事で、全くの初心者だと厳しいかもしれないが、そこは、いろいろネットの情報を元にやってきたので、第一のハードルは超えている。
使うのは squid + squidGuard。
squidとはプロキシサーバ、ウェブキャッシュのフリーソフトウェアで、Linuxの世界ではプロキシサーバでは定番的な存在。
そんな squid という名前は聞いたことはあったが、使ったことは一度もなかった。
squid だけでもある程度のフィルタリングはできるようだが、フィルタリング用のヘルパーアプリ(?)として squidGuard というものがあり、squidから起動されフィルタリング処理・動作するらしい。 squidではなく、squidGuardを使った時の良さ・違いは最初良く判らなかったが、考えるに。
- squidでフィルタリング処理までやってしまうと、アップアップになってしまい、本業のプロキシ作業に支障をきたす、的なところだろう、多分。
- squidGuard用にブラックリストの一覧が世の中に出回っていて、更にはメンテしてくれている方もいるらしい。
餅は餅屋、という事だな。
squidGuardはドメイン名、URLでのフィルタリングで、コンテンツでのフィルタリングまではしない。 なのでこのリスト(ブラックリスト)が肝となる。 幾つかメンテされているリストがあるらしいが、Shalla's blacklistsを利用する事にする。 商用利用じゃなければ無料で利用する事ができるらしい。
という事で、「squid + squidGuard」で逝くことにした。
幸いにもネットでは先人達が squid + squidGuard のセットアップを実践した結果を、日本語で記録として結構残していて、比較的簡単に設定する事ができた。(自分なりに壁にも当たったが)
この場を借りてお礼します。 m(_ _)m
手順
我が自鯖機は、Ubuntu 8.10 LTSのサーバーエディション。
自鯖機には基本的にモニタは接続していないので、(仮)メイン機のXPS M1210よりPoderosaでSSHでログインして作業を行う。
- squid、squidGuard のインストール
- squid の設定。(主にsquid.confの設定)
- クライアントPCのプロキシ設定・テスト
- squidGuard の設定。(squidGuard.conf、ブラックリストの設定)
- squid の起動(再起動)
の手順で行く。 ところどころ間違っているかもしれないが、自分なりにまとめとく。
(上記のうち 4、5は次章に飛ぶ)
1.squid、squidGuard のインストール
プロンプトより下記をタイプ
$ sudo apt-get install squid
・・・・いろいろな文字列が表示される。
$ sudo apt-get install squidGuard
・・・・いろいろな文字列が表示される。
・・・・いろいろな文字列が表示される。
$ sudo apt-get install squidGuard
・・・・いろいろな文字列が表示される。
上記でsquid, squidGuardに必要なモジュールがインストールされる。 インストールされたのは
$ sudo dpkg --list | grep squid
ii squid 2.6.18-1ubuntu3 Internet object cache (WWW proxy cache)
ii squid-common 2.6.18-1ubuntu3 Internet object cache (WWW proxy cache) - co
ii squidguard 1.2.0-8.2ubuntu2 filter, redirector and access controller plu
ii squid 2.6.18-1ubuntu3 Internet object cache (WWW proxy cache)
ii squid-common 2.6.18-1ubuntu3 Internet object cache (WWW proxy cache) - co
ii squidguard 1.2.0-8.2ubuntu2 filter, redirector and access controller plu
まとめると
| モジュール | インストール版 | 最新版 |
|---|---|---|
| squid | 2.6.18 | 3.1.0.14 |
| squidGuard | 1.2.0-8.2 | 1.4 |
最新版からは、かなり遅れを取っているが、これはUbuntuが8.04 LTSというのが大きいだろう。 8.04 は2008年4月にリリースされた版でLTSはLong Term Supportの略。 サーバ版は
ソースからコンパイルとか、debパッケージを拾ってくれば入れられない事も無いかもしれないが、ちとメンドイので止めとく。 コンパイルとかすると無用なトラブルが発生しそうな気配あるし。
また、既にリリースされてから結構経つ、という事は結構枯れているという事を意味するし、セキュリティ・バグフィックスなどはサポートチームがメンテするだろうから、安定しているという意味では、こちらがいいかもしれない。
2.squid の設定。(主にsquid.confの設定)
squid をインストールすると、ディレクトリ /etc/squid が作成され、そこに squid.conf というsquidの所作を決める設定ファイルが格納される。 オリジナルのサイズは4500行にものぼる設定ファイルを全て理解するのはかなり困難なので、動かすのに必要な箇所をいぢっていく。
ただ4500行と言っても、コメントや解説もたくさんあるので、実際の設定行は1000行にも満たない、いや200,300行にも満たないんじゃないだろうか。
設定したパラメータ群
- http_port
http_port 8080プロキシサーバーのポート番号。 デフォルトは3128だが、一般的に使われる「8080」に。
930行あたり。
- cache_dir
cache_dir ufs /var/spool/squid 500 16 256ディスクキャッシュの定義。 ディレクトリ名の後ろは最大サイズ。デフォルトは100MBだったのを500MBに変更。
1850行あたり。
- icp_port
icp_port 0ICPはプロキシ同士でキャッシュを交換するためのUDPベースのプロトコル。 デフォルトでは「3130」が設定されているが、他にプロキシサーバーが無ければ「0」に。
3610行あたり。
- cache_mem
cache_mem 16 MBキャッシュメモリ量。 デフォルトは「8MB」
1640行あたり。
- forwarded_for
forwarded_for offアクセスする端末のIPアドレスをアクセス先Webサーバーに知られたくない場合の設定。 デフォルトは「on」
4330行あたり。
- アクセス制限
squidにアクセスする対象を設定する。 デフォルトではlocalhostだけの許可になっているので、対象をサブネットに広げる。 locallanは任意名。 IPアドレスは自分の環境に合わせて記述する。
acl locallan src 192.168.100.0/255.255.255.0645行あたり。
http_access allow locallan
- visible_hostname
squidが生成するページに出るホスト名。 設定した方が幸せになるらしい。 取りあえず適当な値を設定。visible_hostname hogehage.com
3070行あたり。
- プロキシ経由でアクセスをアクセス先に知られないようにする
header_access X-Forwarded-For deny all最下行に追加。
header_access Via deny all
header_access Cache-Control deny all
以上、設定後squid を起動してみる。
$ sudo /etc/init.d/squid start
/var/log/squid/access.log にログされるので、エラーが発生していたら、そちらを参照していろいろいぢってみるべし。
3.クライアントPCのプロキシ設定・テスト
アクセスするクライアントPCのブラウザのプロキシ設定を行う。
- Internet Explorer
メニューから「ツール」→「インターネットオプション」を選択。
「接続」タブの「LANの設定」をクリック。
「プロクシサーバー」の欄で、「LANにプロキシサーバーを使用する・・・」にチェックを入れ、その下にsquidが動作するサーバーのIPアドレスとポート(8080)を入力する。
- Firefox
メニューから「ツール」→「オプション」を選択。
「詳細」タブを選択し、更に「ネットワーク」タブをクリック。
「接続」欄の「接続設定」をクリック。
「手動でプロキシを設定する」にチェックを入れ、
「HTTPプロキシ」に squidが動作するサーバーのIPアドレスとポート(8080)を入力する。
これで設定終了。 この状態でYahoo 等にアクセスして問題なく表示できれば、ちゃんと squid が動作している事。
念のため、squidを停止してからアクセスしてみる。
$ sudo /etc/init.d/squid stop
でsquid停止後、クライアントからアクセス。

確かにアクセスできない。(IEの例)
続く
◆参照サイト:Shalla's blacklists
◆関連ログ:「squid + squidGuard」ネタ


![トロン:レガシー [Blu-ray]](http://ecx.images-amazon.com/images/I/51stKBdzK%2BL._SL160_.jpg)
![ミッション:インポッシブル/ゴースト・プロトコル ブルーレイ+DVDセット(デジタル・コピー付) [Blu-ray]](http://ecx.images-amazon.com/images/I/51foiQ98iuL._SL160_.jpg)


![ハリー・ポッターと死の秘宝 PART 2 [Blu-ray]](http://ecx.images-amazon.com/images/I/61TQHHRDBAL._SL160_.jpg)
COMMENTS
※本記事に関係ないと判断した COMMENTS はお断りしております。