検証

目次

1.blacklistインストール・設定

2.サードパーティ製ブラックリストの使用方法

1.blacklistの設定とsquidへの紐づけ

ブラックリストは下記ディレクトリに格納されます。
# ls /var/squidGuard/
blacklists.tar.gz

※上記ディレクトリをblacklistsのホームディレクトリに設定すると、コンフィグレーション時に「Segmentation fault」エラーが発生しますので、新たにディレクトリを作成し、blacklistsを移動します。
※「Segmentation fault」になる現象はCentOS公式でBugであることが確認されています。
>https://bugzilla.redhat.com/show_bug.cgi?id=1050096

# mkdir -p /var/lib/squidGuard/db
# mv blacklists.tar.gz /var/lib/squidGuard/db

解凍し、中身を確認します。
# cd /var/lib/squidGuard/db
# tar zxvf blacklists.tar.gz

どのような内容が記載されているのか、一例として、「hacking」のurlの一部を確認します。
# head hacking/urls
195.154.205.178
208.180.68.131/bo2k
209.151.231.90/bo
216.136.171.196/projects/bo2k
216.218.249.82/pt=xsw626
217.172.160.232/blackbook
24-7-search.com/poc/good.wmf
4smartpromos.com/cp/scripts/ads.wmf
64.89.20.160/pt=xsw626
66.28.56.34/cgi-bin
# cat hacking/urls |wc -l
72
72個エントリ-されています。
「spyware」のdomainsを見てみます。
# head domains
66.45.255.251
66.33.0.35
ads.7days.ae
cracks.am
ads.angop.ao
banners.bannerlandia.com.ar
smartad.mercadolibre.com.ar
ads.pagina12.com.ar
traff.asia
ad.adworx.at
# cat domains |wc -l
9918
9918個エントリ-されています。

対象となるドメインやURLは定義されたファイルに1行につき1つ記入していきます。

手動で登録するためのマイブラックリストとホワイトリストを作成します。
※今回はブラックリスト方式を採用するため、ホワイトリストは作成しません。

# cd /var/squidGuard/blacklists
# mkdir good bad
# cd bad
例としてITセキュリティ研究所のHP(https://www.itseclab.jp/)とyahoo(http://www.yahoo.co.jp)を登録
# echo “itseclab.jp” > domains
# echo “yahoo.co.jp” > domains
# echo “www.itseclab.jp” > urls
# echo “www.yahoo.co.jp” > urls

設定ファイルに定義づけを行っていきます。
ここでは、例としてbadとadultのみ定義していきます。
# cd /etc/squid/
# cp -p squidGuard.conf squidGuard.conf.org
# vi squidGuard.conf

 

併せて、ブラックリストホームディレクトリをsquidユーザ・グループに設定します。
# chown -R squid:squid /var/lib/squidGuard/db/

設定した内容をdb化します。
# squidGuard -C all

※プロンプトが帰ってこない場合、不整合を起こしてハングしていることがあります。
下記コマンドでログ(/var/log/squid/squidGuard.log)を確認しながら実行してください。

  • 正常終了ログ

     
  • エラーログ

     

設定が正常にされているか、以下コマンドでテストをします。
echo “https://www.itseclab.jp/ 192.168.11.17/ – – GET” | squidGuard -c /etc/squid/squidGuard.conf -d

正常に終了していれば、以下のログが出力されます。

※Requestとなり、ブロックページへリダイレクトされていますので、正常に処理されています。
続いて、192.168.12.0/24セグメントのadminユーザの場合を確認しておきます。

# echo “https://www.itseclab.jp/ 192.168.12.2/ – – GET” | squidGuard -c /etc/squid/squidGuard.conf -d

 

ブロックページへリダイレクトされないため、正常に処理されていることが確認できました。

テストが正常に終了したら、最後にsquid.confに対してsquidGuardの設定を反映します。

# echo “url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf” >> /etc/squid/squid.conf
# echo “url_rewrite_bypass on” >> /etc/squid/squid.conf

※url_rewrite_bypass
リダイレクトできなくなった場合に無視するかどうかを指定します。このオプションをOnに設定しなかった場合、squidGuardがクラッシュまたは過負荷状態になると、異常終了します。

また、各ディレクトリをsquidユーザに変更してください。
# chown -R squid:squid /etc/squid/
# chown -R squid:squid /var/lib/squidGuard/
# chown -R squid:squid /var/log/squid/

サービス再起動して、実際にブラウザから確認します。
# systemctl restart squid

 

  • http通信のブロック(yahoo.co.jp)
  • https通信のブロック(ITセキュリティ研究所HP)
    ※squidフォーラムで言及されていますが、https通信はプロトコルのデザイン上、あらゆる干渉を受けないため、ブロックページにリダイレクトされず、下記のように表示されてしまいます。
    主要な有償製品でも、https通信は通常このように表示されます。

ログ上でもブロックされていることが確認できました。
# tail -f /var/log/squidGuard/block.log

 

 

2.サードパーティ製ブラックリストの使用方法

 

公式HPによると、squidGuardをインストールした際に使用するテスト用ブラックリストでの運用は、本番での利用は推奨されていません。
他にもクオリティの高い無償のサードパーティ製ブラックリストが提供されています。
http://www.squidguard.org/blacklists.html

Shella Secure Serviceは最も規模が大きく現在170万のリストがエントリーされています。
公式HP:http://www.shallalist.de/
例として、このブラックリストを使用する方法をご紹介します。
※通常の商用利用にはShalla Secure Serviceへメールでコンタクトし、使用承諾書への署名が必要です。詳細は下記URLに記載されています。
http://www.shallalist.de/licence.html

下記コマンドでダウンロードし、tarで展開します。
# wget http://www.shallalist.de/Downloads/shallalist.tar.gz
# tar zxvf shallalist.tar.gz

BLというディレクトリ配下に各カテゴリに分けらたリストが格納されていますので、dbhomeにコピーします。
# cp -rp BL /var/lib/squidGuard/db/
find . -type f /var/lib/squidGuard/db/BL

 

※global_usageに各カテゴリの解説が記載されています。

ここで設定ファイルに変更点(blacklistsとBLの置換)が出ましたので、変更します。
# vi /etc/squid/squidGuard.conf
:%s/blacklists/BL/gc(すべてyを選択)

goodとbadもコピーします。
cp -rp good/ /var/lib/squidGuard/db/BL
# cp -rp bad/ /var/lib/squidGuard/db/BL

DB化して完了です。
# squidGuard -C all

テストを実行します。
URLにはadultカテゴリリストのあったものを選択しています。
# echo “http://001radiostorm.com/stream/hardrock.asx/ 192.168.11.17/ – – GET” |squidGuard -c /etc/squid/squidGuard.conf -d

ブロックされていることを確認できました。

リストのUpdateが必要になった場合は、下記URLにupdate用のスクリプトがあります。
http://www.shallalist.de/helpers.html

例として、shalla_update.v2.shを確認すると、インストール方法の違いや、OS環境により変更点がありますので、これらを適時変更し、このスクリプトをcronで定期的に実行することで、最新化することができます。

変更点
tarpath=”/usr/bin/tar”
chownpath=”//usr/bin/chown”
dbhome=”/var/lib/squidGuard/db”
squidGuardowner=”squid:squid”
workdir=”/var/lib/squidGuard/db/tmp”
httpget=”/usr/bin/wget” #追記
wgetlogdir=”/var/tmp” #追記

 

まとめ

  • squidGuardでは、通常のIPレンジ指定だけでなく、ユーザをグルーピングしてフィルタリングすることも可能。
  • 既成・自前のブラックリストの使用・更新、自前のホワイトリストの作成・更新によるブロックができ、基本性能は有償製品と同じように使用できる。
  • https通信はブロックページにリダイレクトされない。
  • 現在、日本のブラックリストは無料で提供されていない。
  • サードパーティー製のブラックリストを使用する場合は、商用利用の使用承諾が必要である。