2013年12月20日金曜日

[.tested] Clam AntiVirusによるWebフィルタリング [Debian Wheezy][AX3][A7]


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
  :

一度再起動し、ブラウザより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

警告表示用のコンテンツサーバとして、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

 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

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

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フィルタリングも比較的簡単に実装出来ますので、別途パフォーマンスのチューニングポイントと合わせてご紹介します。

0 件のコメント:

コメントを投稿