Linuxクライアントでのウィルス対策(ClamAVを使用したリアルタイム検索っぽいウィルス対策)

Linux環境を再インストールしたので、ウィルス対策まわりの設定をしました。
今回は、以下の組み合わせで、リアルタイム検索っぽい環境を構築しました。

    1. ClamAVによる定期スキャン
    2. ClamAV + DansGuardian + Squidによるダウンロードファイルのウィルス対策とコンテンツフィルタリング
    3. ClamFSによるリアルタイムスキャン(保護されたディレクトリ確保)

メールのウィルス対策については、普段Gmailメインなので今回は考慮していません。(添付ファイルのウィルス スキャン - Gmail ヘルプ)

ClamAVによる定期スキャン

ClamAVをインストールし、cronによる定期スキャンを設定しました。
スキャン間隔は、週次スキャン(ホームディレクトリのみ)、月次スキャン(全ファイルシステム)に設定しました。

$ sudo aptitude install clamav clamav-daemon clamav-freshclam clamtk
  • 定期スキャンの設定
$ crontab -l 
00 20 * * 0	-r -l $HOME/var/log/clamscan/clamav.log $HOME > /dev/null 2>&1
$ cat /etc/crontab
00 21 1 * *	root	clamscan -r -l /var/log/clamav/clamscan.log / > /dev/null 2>&1

ClamAV + DansGuardian + Squidによるダウンロードファイルのウィルス対策とコンテンツフィルタリング

  • DansGuardianとSquidのインストール

Squidは、2.7系をインストールしました。

$ sudo aptitude install dansguardian squid
  • DansGuardianの設定

DansGuardianの全体設定とClamAVとの連携設定を行います。

$ cd /etc/dansguardian
$ sudo diff dansguardian.conf.org dansguardian.conf
5,6d4
< UNCONFIGURED - Please remove this line after configuration
< 
27c25
< language = 'ukenglish'
---
> language = 'japanese'
66c64
< #loglocation = '/var/log/dansguardian/access.log'
---
> loglocation = '/var/log/dansguardian/access.log'
431c429
< #contentscanner = '/etc/dansguardian/contentscanners/clamdscan.conf'
---
> contentscanner = '/etc/dansguardian/contentscanners/clamdscan.conf'
613,614c611,612
< #daemonuser = 'dansguardian'
< #daemongroup = 'dansguardian'
---
> daemonuser = 'clamav'
> daemongroup = 'clamav'
$ cd contentscanners
$ sudo diff clamdscan.conf.org clamdscan.conf
4c4
< #clamdudsfile = '/var/run/clamav/clamd.sock'
---
> clamdudsfile = '/var/run/clamav/clamd.ctl'

/etc/dansguardiandansguardian.confの"UNCONFIGURED"行を削除しないと、DansGuardianは起動しません。
"daemonuser","daemongroup","clamdudsfile"等は環境に合わせて設定してください。
Squidとの連携関連は、以下のパラメータです。(DansGuardian、Squidともdebパッケージを使用している場合は、デフォルト設定で問題ないと思います。)

    • filterport = 8080 (DansGuardianの待受ポート)
    • proxyip = 127.0.0.1
    • proxyport = 3128 (Squidの待受ポート)

/etc/squid/squid.confにlocalhost(127.0.0.1)からのみの接続を許可するよう設定します。
主な設定パラメータは以下のとおりです。

  • DansGuardianとSquidの起動
$ sudo /etc/init.d/dansguardian start
$ sudo /etc/init.d/squid start
$ sudo update-rc.d dansguardian defaults
  • ブラウザの設定

使用するブラウザのプロキシ設定に、以下の設定を行います。

Google Chromeの場合は、[オプション]->[高度な設定]->[プロキシ設定を変更]で行います。

  • 動作確認

ブラウザを起動し、Googleで"アダルト"というキーワードで検索し、"アクセスは拒否されました。"というページが表示されれば、コンテンツフィルタは正常に稼働しています。
また、eicarサイトにアクセスし、HTTP経由で"eicar.com.txt"をクリックした時に、"アクセスは拒否されました。"というページが表示されれば、ウィルス検索も正常に稼働しています。

  • コンテンツフィルタの設定

/etc/dansguardian/lists以下にホワイトリストブラックリストなど、コンテンツフィルタに関する設定ファイルがあるので、利用状況によって設定変更してください。
例えば、Googleで"アダルト"というキーワードで検索したい場合は、/etc/dansguardian/lists/exceptionsitelistに"www.google.co.jp"を追加し、DansGuardianを再起動してください。

ClamFSによるリアルタイムスキャン(保護されたディレクトリ確保)

/tmpと/homeを保護されたディレクトリに設定しました。

  • ClamFSのインストール
$ sudo aptitude install clamfs
$ sudo mkdir /etc/clamfs
$ cd /usr/share/doc/clamfs
$ sudo gunzip -d clamfs-sample.xml.gz
$ sudo cp clamfs-sample.xml /etc/clamfs/clamfs-tmp.xml
$ sudo cp clamfs-sample.xml /etc/clamfs/clamfs-home.xml
  • ClamFSの設定

設定ファイルの/etc/clamfs/clamfs-*.xmlの"filesystem"パラメータに、保護するディレクトリを指定します。

##
# /etc/clamfs/clamfs-tmp.xml
##
<filesystem root="/tmp" mountpoint="/clamfs/tmp" public="yes" nonempty="yes" />
##
# /etc/clamfs/clamfs-home.xml
##
<filesystem root="/home" mountpoint="/clamfs/home" public="yes" nonempty="yes" />
$ sudo mkdir -p /clamfs/tmp
$ sudo chgrp adm /clamfs/tmp 
$ sudo chmod g+w /clamfs/tmp 
$ sudo mkdir -p /clamfs/home
$ sudo chgrp adm /clamfs/home 
$ sudo chmod g+w /clamfs/home
  • ClamFSの起動
$ sudo clamfs /etc/clamfs/clamfs-tmp.xml
$ sudo clamfs /etc/clamfs/clamfs-home.xml

正常に起動すると、/clamfs/tmp及び/clamfs/homeに、/tmpと/homeがマウントされます。
OS起動時にClamFSが起動するように、/etc/rc.localに起動コマンドを追加します。

  • 動作確認

保護されているディレクトリ(/clamfs/*)で、eicarのzipファイルを解凍すると、"Operation not permitted"で拒否され、/var/log/messageにeicarファイルが発見されたメッセージが出力されます。
保護ディレクトリへの書き込み(コピー)時には発見されませんが、読み込み(解凍)のタイミングで発生されます。
注意しなければならないのは、あくまでも保護ディレクトリである/clamfs/*以下でないとウィルスが発見されないことです。マウント元の/tmpや/homeディレクトリではウィルスは発見されません。

その他のウィルス対策ソフト

Linuxで動くウィルス対策ソフトには、ClamAV以外にも以下のようなものがあります。(Linuxをクライアントとして使う場合です。)

いずれもフリーで利用可能ですが、オープンソースではありません。