前回 に引き続き、今回もClamAVを使ったレシピです。今回はhavpというHTTPプロクシを用いて、Webアクセスのフィルタリングや、マルウェアを発見した場合の通知の設定を行ってみましょう。
havpのインストール
havp(HTTP Antivirus Proxy)は、ClamAVを用いたHTTPプロクシを構成するためのソフトウェアです。次のコマンドでインストールするか、Synapticからインストールしてください。
havpのインストールよりも前に、clamav・clamav-freshclamの2つのパッケージがインストールされている必要があるので、以下のように先にclamavとclamav-freshclamをインストールします(前回すでにインストールしている場合はhavpパッケージだけをインストールして構いません) 。
$ sudo apt-get install clamav clamav-freshclam
$ sudo apt-get install havp
もし誤ってhavpだけを先にインストール指定すると、havpの起動に失敗して次のようなメッセージが出力されます。
havp (0.86-1build1) を設定しています ...
グループ `havp' (GID 128) を追加しています...
終了。
Using 102400 kilobytes for building loopback-device /var/lib/havp/havp.loop with mandatory locks, this MAY take a little while so please be patient... building loopback-device finished!
Mounting /var/lib/havp/havp.loop under /var/spool/havp ...done
Starting havp: Starting HAVP Version: 0.86
LibClamAV Error: cli_loaddb(): No supported database files found in /var/lib/clamav/
One or more scanners failed to initialize!
Check errorlog for errors.
Exiting..
invoke-rc.d: initscript havp, action "start" failed.
dpkg: havp の処理中にエラーが発生しました (--configure):
サブプロセス post-installation script はエラー終了ステータス 1 を返しました
このような場合、clamavとfreshclamパッケージをインストールし、次のコマンドを実行してください。
$ sudo /etc/init.d/clamav-freshclam restart
$ sudo apt-get install -f
インストール後、Webブラウザ側でhavpをHTTPプロクシとして利用するための設定が必要です。[ システム] →[ 設定] →[ ネットワークのプロキシ]とたどって設定画面を開いてください(図1 ) 。
図1 ネットワークのプロキシ
設定画面で[マニュアルでプロキシの設定を行う]を選択し、サーバのアドレスとして127.0.0.1、ポートに8080を入力し、「 全てのプロトコルで同じプロキシを使う」にチェックを入れます(図2 ) 。
図2 havpを利用するように設定
Firefoxなどを使っている場合、ブラウザ側で「システムのプロキシ設定を利用する」などといった設定が有効になっていますので、この設定を行うことでアクセスがhavp経由に切り替わります。
このままではアンチウイルスソフトウェアとして正しく機能しているか分かりませんので、テストを行ってみましょう。http://www.eicar.org/anti_virus_test_file.htm へアクセスし、“ Download area using the standard protocol http” と書かれたサンプルファイルをダウンロードしてみてください(図3 ) 。確認しやすくするために、「 リンク先を名前を付けて保存」ではなく、eicar.com.txtをクリックしてみると良いでしょう[1] 。
図3 EICARのサンプルファイル
これらのサンプルファイルをダウンロードしようとアクセスした時点で、( 図4 )のような画面が表示されるでしょう(もし「リンク先を名前を付けて保存」していた場合、ダウンロードしたファイルがこの画面のHTMLになっているはずです) 。実際のマルウェアであってもこの動作は同様に行われますので、誤ってマルウェアを表示してしまう頻度は小さくなるでしょう。
ただし、SSL(HTTPS)経由の通信の場合にはフィルタが機能しませんので、全ての通信が安全なわけではありません[2] 。
図4
制限として、ClamAVは商用のアンチウイルスソフトウェアに比べると、検知できるマルウェアの数がそれほど多くなく、また、最新のマルウェアへの追従速度もそれほど速くありません。これはパターンの更新がボランティアに頼っていることが原因のひとつです。
また、ClamAVは内部の動作として、圧縮されたファイルを展開し、中身に問題がないかチェックする、といった動作も行いますが、この動作にはしばしば脆弱性が見つかります。ClamAVそのものの確実なアップデートを行わないとかえって危険ですので、できるだけ確実にソフトウェアアップデートを行うようにしてください。
havpのアクセス制限
havpはデフォルトではアクセス制限が行われておらず、他のPCからも利用できてしまいます。LAN内で利用するには問題がありませんが、グローバルIPアドレスが振られる環境では外部のユーザにも利用できてしまい、望ましくありません。
この動作を抑制するためには、/etc/havp/havp.configで設定を行います。「 # BIND_ADDRESS 127.0.0.1」というコメントアウトされた行があるはずですので、行頭のコメント記号を除去してください。
設定変更後、次の操作を行います。
$ sudo lsof -i |grep havp
havp 12398 havp 4u IPv4 23251309 TCP *:webcache (LISTEN)
havp 12399 havp 4u IPv4 23251309 TCP *:webcache (LISTEN)
havp 12401 havp 4u IPv4 23251309 TCP *:webcache (LISTEN)
※ havpプロセスが *:webcache で待ち受けていることを確認します。
$ sudo /etc/init.d/havp restart
※ havpを再起動します。
$ sudo lsof -i |grep havp
havp 18743 havp 3u IPv4 23291773 TCP localhost:webcache (LISTEN)
havp 18744 havp 3u IPv4 23291773 TCP localhost:webcache (LISTEN)
havp 18746 havp 3u IPv4 23291773 TCP localhost:webcache (LISTEN)
※ havpプロセスが localhost:webcache で待ち受けていることを確認します。
再起動以前は*:webcacheで待ち受けていた(webcacheはTCP:8080を意味します)havpプロセスが、localhost:webcacheで待ち受けるようになることを確認してください。
新種のマルウェアを発見した場合
ClamAVではhttp://www.clamav.net/sendvirus/で、新種のマルウェアの検体を受け付けています(「 マルウェアの検体」とは、トロイの木馬やワームであればファイルそのものですし、ファイル感染型のウイルスであれば『ウイルスに感染したファイル』です。) 。もしClamAVでチェックできないマルウェアを見つけた場合は、上記のURLから検体を提供すると良いでしょう(できればClamAVだけでなく、商用アンチウイルスソフトウェアベンダーの検体受付にも送付すべきです) 。
ClamAVをターミナルから使う
ここまで色々な形でClamAVを使う方法を紹介してきましたが、ClamAVはターミナルから利用することもできます。簡単な使い方を説明しましょう。
まず、ClamAVが対応しているマルウェアの一覧は次のコマンドで出力できます。そのままでは出力量が非常に多いので、以下のようにlessに流し込むのが良いでしょう。
$ sigtool --list-sigs | less
ClamAVの現在のパターンファイルバージョンを確認するには次のコマンドを用います。出力は「ClamAVそのもののバージョン/パターンファイルのバージョン/パターンファイルの更新日」です。
$ sigtool --version
ClamAV 0.92.1/7999/Sun Aug 10 20:05:47 2008
パターンファイルの更新はclamav-freshclamパッケージが導入されていれば自動的に実行されていますが、手動で実行することもできます。以下のようにfreshclamコマンドを実行してください。
$ sudo freshclam
ClamAV update process started at Mon Aug 11 01:08:43 2008
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.92.1 Recommended version: 0.93.3
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cvd is up to date (version: 47, sigs: 312304, f-level: 31, builder: sven)
daily.cvd is up to date (version: 7999, sigs: 82973, f-level: 33, builder: ccordes)
実際のスキャンは次のコマンドで行えます。例では /tmp 以下をスキャン対象にしています。ディレクトリを対象にした場合、そのディレクトリ以下にある全てのファイルがスキャンされます。標準では1ファイルごとに結果が表示されてしまいますので、例では“ OK” と“ Empty file” が含まれる行を表示しないように抑制しています。通常は「clamscan /tmp | egrep "FOUND|Infected"」とし、マルウェアに関する出力だけを得ても良いでしょう。
$ clamscan /tmp | egrep -v "OK|Empty file"
/tmp/eicar.com.txt: Eicar-Test-Signature FOUND
----------- SCAN SUMMARY -----------
Known viruses: 394242
Engine version: 0.92.1
Scanned directories: 1
Scanned files: 10
Infected files: 1
Data scanned: 0.03 MB
Time: 8.274 sec (0 m 8 s)
KlamAVなどのフロントエンドを用いない場合、これらのコマンドをcronに登録して自動実行するのが有効です。