labunix's blog

labunixのラボUnix

Windows版Squidのエラーページをカスタマイズする。


■Windows版Squidのエラーページをカスタマイズする。  Linux版のSquidはSquidGuardで制御しているので、以下のようにbash/CGIで返している。  同様のフォーマットでsquidのblacklistを出力したい。  squidGuardではリストをDB化する。  squidでエラーページを変更した場合は以下の実行を行う。 > c:\squid\sbin\squid.exe -n Squid -k check > c:\squid\sbin\squid.exe -n Squid -k recofigure ■squidGuardの場合のエラーページについて  SquidGuardのクエリを受け取るbash/CGI  http://d.hatena.ne.jp/labunix/20120827squidホワイトリストの設定  ※ブラックリストの前に来るようにする。   aclの定義とhttp_accessの定義の場所はデフォルトの設定を参考にする。 > find "whitelist" c:\squid\etc\squid.conf ---------- ETC\SQUID.CONF acl whitelist dstdomain "c:\squid\etc\whitelist" acl whitelist_regex url_regex "c:\squid\etc\whitelist_regex" http_access allow whitelist http_access allow whitelist_regexsquidのブラックリストの設定  ※「c:\squid」にインストールした場合 > find "blacklist" c:\squid\etc\squid.conf ---------- ETC\SQUID.CONF acl blacklist dstdomain "c:\squid\etc\blacklist" acl blacklist_regex url_regex "c:\squid\etc\blacklist_regex" http_access deny blacklist http_access deny blacklist_regex ■実はGowがあるので、中身は以下のようになっているが、  ほとんど私個人のもの。主に広告や脆弱性があると思ったところをブロックしている。 C:\squid>grep . c:\squid\etc\*list* c:\squid\etc\blacklist:b.st-hatena.com c:\squid\etc\blacklist:85.159.232.33 c:\squid\etc\blacklist:239.255.255.250 c:\squid\etc\blacklist:8.27.249.253 c:\squid\etc\blacklist:208.71.107.153 c:\squid\etc\blacklist:208.71.107.159 c:\squid\etc\blacklist:208.71.106.171 c:\squid\etc\blacklist:ja.y8.com c:\squid\etc\blacklist:www.gomplayer.jp c:\squid\etc\blacklist:.doubleclick.net c:\squid\etc\blacklist:i.adingo.jp c:\squid\etc\blacklist:www.google-analytics.com c:\squid\etc\blacklist:jp.real.com c:\squid\etc\blacklist:toolbarqueries.google.com c:\squid\etc\blacklist:plusone.google.com c:\squid\etc\blacklist:ads.nicovideo.jp c:\squid\etc\blacklist:web-jp.ad-v.jp c:\squid\etc\blacklist:.1e100.net c:\squid\etc\blacklist:.amazon.com c:\squid\etc\blacklist:.bing.com c:\squid\etc\blacklist:74.125.31.125 c:\squid\etc\blacklist:rp.jp.real.com c:\squid\etc\blacklist:.opt.ne.jp c:\squid\etc\blacklist_regex:^http://b.st-hatena.com/js/bookmark_button.js c:\squid\etc\blacklist_regex:bookmark_button.js c:\squid\etc\blacklist_regex:^http://www.gomplayer.jp c:\squid\etc\blacklist_regex:.1e100.net c:\squid\etc\blacklist_regex:.amazon.com c:\squid\etc\blacklist_regex:.bing.com c:\squid\etc\blacklist_regex:www.bing.com c:\squid\etc\blacklist_regex:^http://jp.real.com c:\squid\etc\blacklist_regex:^https://toolbarqueries.google.com c:\squid\etc\blacklist_regex:^https://plusone.google.com c:\squid\etc\blacklist_regex:^https://ads.nicovideo.jp/ c:\squid\etc\blacklist_regex:web-jp.ad-v.jp c:\squid\etc\blacklist_regex:.opt.ne.jp c:\squid\etc\whitelist:d.hatena.jp/labunix c:\squid\etc\whitelist_regex:d.hatena.jp/labunix/ ■squidのエラーページ  ※デフォルトでは英語のページ。   まずは日本語のページにする。(実はあまり意味が無いw) > find "error_directory" c:\squid\etc\squid.conf ---------- C:\SQUID\ETC\SQUID.CONF # TAG: error_directory # error_directory c:/squid/share/errors/English error_directory c:/squid/share/errors/Japanese ■ブロックしたときのページ内にURLが埋め込まれている仕組みを見る。 > find "HREF" c:\squid\share\errors\Japanese\ERR_ACCESS_DENIED ---------- C:\SQUID\SHARE\ERRORS\JAPANESE\ERR_ACCESS_DENIED <A HREF="%U">%U</A> ■上記を参考に以下を作成  Debian   > type c:\squid\share\errors\Japanese\ERR_ACCESS_DENIED <html><head><title>302 Access Denied</title></head> <body> <br/> <pre> a=%a b=%b c=%c d=%d e=%e f=%f g=%g h=%h i=%i j=%j k=%k l=%l m=%m n=%n o=%o p=%p q=%q r=%r s=%s t=%t u=%u v=%v w=%w x=%x y=%y z=%z </pre> </body> </html> ■出力は以下のようになる。  ブラウザ情報はログには出るので、諦めることにする。 a=- b=%b c=ERR_ACCESS_DENIED d=%d e=0 f=nothing g= h=dummy-winxp i=192.168.188.155 j=%j k=%k l=%l m=[not available] n=%n o=[not available] p=80 q=%q r=%r s=squid/2.6.STABLE23 t=13/Oct/2012:23:32:34 +0900 u=http://b.st-hatena.com/js/bookmark_button.js v=%v w=webmaster x=%x y=%y z=[unknown] ■上記を参考に、以下のSquidGuardのbash/CGIに書式をあわせる。  SquidGuardのクエリを受け取るbash/CGI  http://d.hatena.ne.jp/labunix/20120827 > type c:\squid\share\errors\Japanese\ERR_ACCESS_DENIED <html><head><title>302 Access Denied</title></head> <body> <br/> <table border="0"> <tr> <td>Status</td> <td>302 Access Denied</td> </tr> <tr> <td>From</td> <td>url:%U<br/>clientaddr:%i</td> </tr> <tr> <td>Browser</td> <td>Unknown</td> </tr> </table> </body> </html> ■出力は以下のようになる。  「Generated」行が冗長。  「構文エラーのコメント命令」による回避は可能だが、  気持ち悪いので許容するものとする。 Status 302 Access Denied From url:http://b.st-hatena.com/js/bookmark_button.js clientaddr:192.168.188.155 Browser Unknown Generated Sat, 13 Oct 2012 14:59:15 GMT by dummy-winxp (squid/2.6.STABLE23) ■ソースを見ると、自動的に追加されている様子。 <BR clear="all"> <HR noshade size="1px"> <ADDRESS> Generated Sat, 13 Oct 2012 14:59:15 GMT by dummy-winxp (squid/2.6.STABLE23) </ADDRESS> </BODY></HTML> ■以下にあるように自動的に付くフッターを消すには再コンパイルが必要。  Remove Squid footer completely  http://techspalace.blogspot.jp/2008/01/remove-squid-footer.html ■コメントを閉じないことにはなるが、以下のように書ける。 ソースを見ないような一般ユーザなら誤魔化せる。  Gowを使った「tail」というズルをした。  ※ソースを見れば追加された分を読むことが出来るが、表示はされない。   但し、コメント命令を閉じていないので、構文エラーである。 > tail -1 c:\squid\share\errors\Japanese\ERR_ACCESS_DENIED <!-- ■バージョン情報は消しましょうか。 > find "suppress_version" etc\squid.conf ---------- ETC\SQUID.CONF # TAG: httpd_suppress_version_string on|off # httpd_suppress_version_string off httpd_suppress_version_string on Generated Sat, 13 Oct 2012 15:38:38 GMT by dummy-winxp (squid)