squidGuardをCentOS8に導入する
SquidGuardは、プロキシソフトSquidでブラックリストを使用するためのURLリダイレクタです。squidguardには2つの大きな利点があります:高速であることと、無料であることです。SquidGuardは、GNU Public Licenseに基づいて公開されています。
これをSquidに導入するやり方をここでは示します。まずは、下記の記事を参考にCentOS8にsquidGuardをインストールします。
すると、/etc/squid/squidGuard.confが生成されていることがわかります。squidと同様にこのファイルをいじる事で、squidGuardを動作させることができます。まずは、squidGuard.confのコピーをとっておき(squidGuard.conf.defaultなど)、このファイルを下記のように編集すれば、最低限の動作確認ができます。
# vim squidGuard.conf
dbhome /var/squidGuard/acl_list #ブラックリストがあるところ
logdir /var/log/squidGuard # アクセスログが出るところ(/var/log/squid/の中にもsquidGuard.confが出てくるが、)
src test {ip xxx.yyy.zzz.aaa # please input your IP address}
dest test_list {
domainlist test/domains #dbhomeを中心とした相対パスである。
urllist test/urls
}
acl {
test {
pass !test_list any #test_listにあるリスト以外の全てのアクセスを許可する
redirect http://example.com/error.html
}
default {
pass none
redirect http://admin.foo.bar.de/cgi/blocked?clientaddr=%a+clientname=%n+clientuser=%i+clientgroup=%s+targetgroup=%t+url=%u
}
===
その際、与えた /var/squidGuard/acl_list/test/domeinsとurlsは下記のように作る。
URL例・domain例 共通
yahoo.co.jp
youtube.com
.. など
===
その後、
# squidGuard -b -d -C all
とうって、domainsとurlsを読み込んでsquidGuardにとって読めるデータベースを作る。コマンドを打っても何も応答がない時はエラーが起きているので、/var/log/squidGuard/squidGuard.log のメッセージを見て対処する。squidGurad.confの文法ミスであることが多い。
[成功例] 2021-07-23 22:19:05 [8386] squidGuard stopped (1627046345.736)
[失敗例] 2021-07-23 09:47:27 [83071] Going into emergency mode
===
結局必要なのかどうか、わからずじまいだったが OSや管理状態によってはsquidGuard関連のファイルの所有者を squid にしておく必要があるらしい。
# chown -R squid /var/squidGuard/acl_list/
# chown -R squid /var/log/squidGuard/
# chown squid /usr/bin/squidGuard
===
最後に出来上がったsquidGuardを本体のsquidと連携しよう。これは/etc/squid/squid.conf で元々ブラックリストの登録をしていた部分にこの文を挿入する。
# vi squid.conf
...
acl CONNECT method CONNECT #この直後くらい
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf # これを書き加える
...
注意! squidGuardのインストールバージョンによるが、squidGuardのsとGがそれぞれ小文字、大文字になっているか確認すること。筆者はこの部分の最後のパスをsquidguard.conf としてしまい、ドツボにハマってしまった。
===
組み込んだので、最後に適用する。
# systemctl restart squid
これで、squidがurlsやdomainsで登録したところにアクセスできなくなっているかどうかを確認すれば良い。
(注記) squidGuardのユーザー名は数字が使えない。また、パスワードも確か大文字が使えなかったはず。