

| squidインストール(2002.04) |
【インストール】
前提条件としてSolaris8で構築する場合はここのフリーソフトのインストールは
行っているものとします。Linuxでは特に気にする必要はないです。
[root@home6 squid]# tar zxf squid-2.5.STABLE6-src.tar.gz
[root@home6 squid]# cd squid-2.5.STABLE6
●パッチ適用
apacheのチャンクのセキュリティ勧告に伴って
squidもパッチを適用したほうがいいようです。
パッチの適用は以下のパッチをとってきて当てましょう。
http://www.squid-cache.org/Versions/v2/2.4/bugs/squid-2.4.STABLE6-deny_transfer_encoding.patch
パッチはsquidを展開したディレクトリの中においているものとします。
[root@home3 squid-2.4.STABLE6]# patch -p1 < squid-2.4.STABLE6-deny_transfer_encoding.patch
Hunk #1 succeeded at 2688 (offset 1 line). patching file `src/HttpHeader.c' patching file `src/enums.h' |
| hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? #http_port 8080 http_port 192.168.128.13:3128 ※↑↓複数のIPアドレスでリスンしたい場合は複数行記述する https_port 192.168.128.13:3128 no_cache deny QUERY cache_mem 8 MB acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl myhome src 192.168.128.0/255.255.255.0 ↑かならず追記デフォルトではローカル以外アクセスできない acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access allow myhome ↑かならず追記デフォルトではローカル以外アクセスできない http_access deny manager !myhonme cachemgrを使う場合は追記 ↑ http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all #icp_access allow all icp_access deny all visible_hostname squid.example.com ↑↓これがないと起動時にエラーが出ます。 cache_effective_user cached cache_effective_user nobody cache_effective_group nobody pid_filename /var/run/squid.pid cache_log /usr/local/squid/logs/cache.log cache_dir /usr/local/squid/cache 20000 1024 1024 ※cache_dir の次は ディレクトリ名 キャッシュ容量MB(20GB) サブディレクトリの分割個数(1024個) サブディレクトリの下の分割個数(1024個) cache_mem 512 MB ※squidが使うメモリは指定の2〜3倍になることを計算にいれて 適切に設定してください。 # ftp_user Squid@ ※ftpサイトへのアクセス時に使用するユーザIDになります。 デフォルトでも別に問題なくアクセスできると思いますが一応 実際にメールアドレスを入れたほうが良いかも。 時には実在するメールアドレスでないとアクセスできないときがあるので。 # logfile_rotate 10 ※ログファイルを保存する世代数を指定できます。 squidは"/usr/local/squid/sbin/squid -k rotate"このコマンドを実行すると ログのローテーションを実行できます。 そこで過去のログをどれだけ残すかをここで決めるということになります。 も週一回とかのローテーションで組んでいてひとつのファイルが大きい場合は この数を2とか3にすると良いかもしれません。 とりあえず運用上様子を見て後から決めてみてください。 # hierarchy_stoplist hotmail.com ※もしHot Mailサイトにうまくアセスでいないとかユーザから苦情来たときは この設定を入れておけば何とかいけるはず・・・ |
[root@home6 squid]# ps -ef |grep squid
| nobody | 668 | 666 | 0 | 18:03:33 | ? | 0:01 | (squid) | -D |
| root | 666 | 1 | 0 | 18:03:33 | ? | 0:00 | /usr/local/squid/sbin/squid | -D |

| #!/bin/sh PATH=$PATH:/usr/bin:/bin export PATH case "$1" in start) if [ ! -f /var/run/squid.pid ]; then echo "Squid Starting"; /usr/local/squid/sbin/squid -D -f /usr/local/squid/etc/squid.conf; else echo "process squid allready running!\n"; exit 1; fi ;; stop) if [ -f /var/run/squid.pid ]; then /usr/local/squid/sbin/squid -k kill; #kill `cat /var/run/squid.pid`; echo "Squid Stopped"; else echo "process squid not running!\n"; exit 1; fi ;; restart) "$0" stop; sleep 1; "$0" start; ;; *) echo "usage: /etc/rc2.d/S99squid {start|stop}" esac exit 0 |
| 0 4 * * 0 /usr/local/squid/sbin/squid -k rotate > /dev/null 2>&1 |
【アクセス制限】
●URLでのアクセス制限
・aromanという単語が含まれるサイトを拒否
・http://www.microsoft.co.jpで始まるサイトを拒否
# vi /usr/local/squid/etc/squid.conf
でaclを書いているあたりを探します。
/^acl
そこに以下の2行を追加する
| acl deny_url aroman acl deny_url2 url_regex ^http://www.microsoft.com |
そしてhttp_accessでaclを適用している行を探す
/^http_access
その一番最初のhttp_access上に
| http_access deny deny_url http_access deny deny_url2 |
後はsquidを再起動
# /etc/init.d/squid restart
クライアントからアクセス制御ができているかどうか試してみよう。

のようになればOKでしょう。
このエラーメッセージを変え足りもできます。
あとアダルトサイトを規制したりもできます。
http://squid.robata.org/faq_10.html
が非常に参考になります。
【情報漏洩を防ぐ】
たいしたことはできないが、squidを使ってまず
診断君などを見てみよう。
以下の環境変数が外部に漏れているので
なるべく漏れる情報を少なくしたい。
2.4では制限がありますのでなるべく2.5を使うことをお勧めします。
| 変数名 | squid.conf設定値 | 説明 |
| HTTP_X_FORWARDED_FOR | forwarded_for off | LAN上のローカルIPを外に出さない |
| HTTP_VIA | visible_hostname unknown | LAN上のローカルドメイン名を公開しない |
| HTTP_USER_AGENT | anonymize_headers deny User-Agent WWW-Authenticate Link | クライアントPCの使用しているブラウザ種別を公開しない |
| HTTP_USER_AGENT | fake_user_agent Mozilla/4.0 (compatible; MSIE 12.3;Windows NT 5.1;) | クライアントのブラウザの情報をすべて同じにする。 |
| HTTP_REFERER | anonymize_headers deny From Referer Server | リンク元の情報を公開しない |
squid2.5以上だと
| 変数名 | squid.conf設定 | 説明 |
| HTTP_X_FORWARDED_FOR | header_access X-Forwarded-For deny all | LAN上のローカルIPを外に出さない |
| HTTP_VIA | header_access Via deny all | LAN上のローカルドメイン名を外に出さない |
| HTTP_CACHE_CONTROL | header_access Cache-Control deny all | CACHE_CONTROL情報を外に出さない |
でヘッダー情報を出さないようにできるようです。
同じ設定をsquid2.4でやると
| 2004/08/17 23:48:43| parseConfigFile: line 2796 unrecognized: 'header_access
X-Forwarded-For deny all ' 2004/08/17 23:48:43| parseConfigFile: line 2797 unrecognized: 'header_access Via deny all ' 2004/08/17 23:48:43| parseConfigFile: line 2798 unrecognized: 'header_access Cache-Control deny all ' |
となります。なので上記のようなものでしか対応できないでしょう。
squidだと外のサーバに知られないためにはsquid2.5以上をつかった
前述の3行を入れるのがよいでしょう。
この3行をsquid.confの最下行にでも入れておくと
おそらく外のサーバからはproxyとはわかりません。
診断君などで検査してみましょう。