Clam AntiVirus は、オープンソースで提供されるクロスプラットフォームのアンチウイルスソフトウェアであり、OpenBlocksが採用するDebianにおいてもパッケージが用意されています。
Clam AntiVirus:
今回、clamav、squid3、squidclamav(+c-icap)による、webアンチウィルスゲートウェイについて、squidを利用した、proxy型構成、および、透過型の構成について、設定の手順を紹介します。
OBDN技術ブログによる動作検証は、該当するソフトウェアの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
<検証環境>
OpenBlocks AX3/4 Debian 7.1 kernel: 3.2.40
OpenBlocks AX7 Debian 7.1 kernel: 3.2.40
1.事前準備
squidclamavは最新のパッケージをビルドする必要がありますので、開発環境および、必要なライブラリをあらかじめインストールしておく必要がります。
開発環境のインストール
# aptitude install build-essential
ライブラリのインストール
# aptitude install curl libcurl4-gnutls-dev c-icap libicapapi-dev
2.clamav-daemonのインストールと設定
clamavをdebianのパッケージよりインストールします。
# aptitude installclamav-daemon
パッケージインストールにより、clamdは自動的に立ち上がる設定となりますが、初期化のために、一度手動で立ち上げを行う必要があるようです。
# /etc/init.d/clamav-daemon start
3.squid3のインストールと初期設定
squid3をdebianのパッケージからインストールします。
# aptitude install squid3
まずは、web proxyとして必要な設定を行います。
/etc/squid3/squid.conf の、該当する部分を追加または、コメントを外してください。
今回は、localnetとして、192.168.3.x を設定し、そこに許可を与えています。
:
acl localnet src 192.168.3.0/24 # local network
:
http_access allow localnet
:
acl localnet src 192.168.3.0/24 # local network
:
http_access allow localnet
:
一度再起動し、ブラウザよりproxyサーバを指定して動作確認します。
# /etc/init.d\squid3 restart
squidclamavを使用するための、c-icapの設定追加については次項で説明します。
4.squidclamavのインストールと設定
squidclamavを入手します。
SquidClamav : Securing Web Delivery (antivirus for Squid):
より、最新の6.10を入手しました。
# wget http://sourceforge.net/projects/squidclamav/files/squidclamav/6.10/squidclamav-6.10.tar.gz
解凍し、ビルド、インストール作業を行います。
# tar xvzf squidclamav-6.10.tar.gz
# cd squidclamav-6.10
# ./configure --prefix=/usr/local/c-icap
# make
# make install
# cd squidclamav-6.10
# ./configure --prefix=/usr/local/c-icap
# make
# make install
警告表示用のコンテンツサーバとして、apache2を使用しています。
新規にインストールする場合は、以下の手順となります。
# aptitude install apache2
squidclamavをビルドした場所より、警告用画面表示のcgiをapache2のデフォルトのcgi-binディレクトリへコピーします。
# cp cgi-bin/clwarn.cgi /usr/lib/cgi-bin
/etc/squidclamav.confを編集し、redirect先を指定します。
サーバのIPアドレスはご使用のものを記述してください。
# tredirect http://192.168.3.103/cgi-bin/clwarn.cgi
5.squid3+c-icapの設定
squid3の追加設定
/etc/squid3/squid.confを編集し、c-icapに対応した以下のパラメータを変更、もしくは追加記述して下さい。
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header X-Authenticated-User
icap_preview_enable on
icap_preview_size 1024
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
icap_send_client_ip on
icap_send_client_username on
icap_client_username_encode off
icap_client_username_header X-Authenticated-User
icap_preview_enable on
icap_preview_size 1024
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
c-icap関連の設定
/etc/c-icap/c-icap.confに、以下の記述を追加します。
Service squidclamav squidclamav.so
c-icap を自動起動させるため、/etc/default/c-icapを修正します。
START=yes
c-icapおよび、squid3を再起動します。(もしくはreboot)
# /etc/init.d\squid3 restart
# /etc/init.d\c-icap restart
# /etc/init.d\c-icap restart
6.proxy型設定での動作確認
テスト用のデータとして、以下のサイトのデータを利用します。
Home ° EICAR - European Expert Group for IT-Security:
テスト用ウィルスをダウンロードすると、以下の警告画面が表示されます。
7.透過型構成への変更
proxyサーバの設定が不要な透過モードでのWebフィルタリングを行う場合は、ブリッジ構成のため、ネットワークポートを複数備えるAX3もしくはA7を使用します。
ブリッジ構成へのネットワーク設定変更
ブリッジの構成のために、bridge-utilsをインストールします。
# aptitude install bridge-utils
/etc/network/interfaces を編集し、eth0、eth1の設定を全てコメントで外し、
br0を設定します。
( 以下の設定はこちらでのテスト環境ですので、ご自身の環境に合わせて変更して下さい)
auto br0
iface br0 inet static
address 192.168.3.103
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.1
dns-nameservers 172.16.12.10
bridge_ports eth0 eth1
iface br0 inet static
address 192.168.3.103
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255
gateway 192.168.3.1
dns-nameservers 172.16.12.10
bridge_ports eth0 eth1
iptablesによる、ポートの変換設定
ポート80から送出されたリクエストパケットを3128へリダイレクトする設定を行います。
# iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128
/etc/squid3/squid.confを編集します。
http_port 3128 transparent
本装置は、フィルタを行いたいノードのHubの上流へIN-OUTの形で接続してください。
8.さいごに
今回は、clamavを使用したWebフィルタリング装置の構築方法として、proxy型/透過型の最低限必要な設定を行いました。
squidに関しては、URLフィルタリングも比較的簡単に実装出来ますので、別途パフォーマンスのチューニングポイントと合わせてご紹介します。