ClamAVを使ってみる

ClamAVというのは、アンチウィルスソフトですな。Linuxで使える、オープンソースなアンチウィルスソフト。

それで、このClamAVというのは、端末から操作する類の、つまり、CUIなソフトです。なので、GUIで操作したい人には、ClamTK(GTK環境向け)、あるいは、KlamAV(KDE環境向け)などのGUIインターフェイスもあります。

本稿では、CUIインターフェイスな、ClamAVを使用します。

定義ファイル更新〜ウィルススキャン

で、まず、ClamAVのウィルス定義ファイルなどを最新に。

$ sudo freshclam

これで文字通り、freshなclamです。

しかし、いつの間にか、ClamAV自体が最新版ではなくなって、最新版が出ていた場合、この、freshclamの操作の際に、以下のようなメッセージが出ます。

ClamAV update process started at (日付)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: (今使っているClamのVer.番号) Recommended version: (最新のClamのVer.番号)
DON'T PANIC! Read http://www.clamav.net/support/faq
(以下、定義ファイルのVerなどに関する情報)

あなたのClamAVは、ちょっと古いですネ!(意訳)と言われているところ。

ClamAVが最新じゃ無いから、新しいの入れろよーと、そう言うことです。まあ、これに関して、Ubuntuユーザの場合、どうするべきなんでしょうかね。リポジトリの奴が更新されるまで、待つべきでしょうな。それが無理だと、俺は最新版のClamでなきゃ使わんと言うのであれば、最初に書いた、PPAから引っ張ってくる方向で一つ。

それと、もう一つ。ClamAVをインストールすると、Freshclamのプロセスが動き始めるので、別段、手動で定義ファイル更新をしなくてもいいそうです(……と、僕が調べたところでは書いてあった)。実際、ウィルスチェックをしてないときでも、システムモニタの『プロセス』(ツールバー『表示』で、『全てのプロセス』を選択してね)を見ると、ちゃんとfreshclamというのが動いているので、そういうことなんでしょう。

ともかく、そうだ、clamAVの定義ファイルの更新を済ませたら、次に、ウィルスチェックをしましょう、と。

sudo clamscan -r /home

プログラムの名前がClamAVなので、ついつい、コマンドからも、clamav -r /homeでいけるんじゃないかなんて思いがちですが、間違わないように。 clamscan ですから。オプションにつけた、-r は、『指定ディレクトリ以下を、再帰的にスキャン』の意味。この場合、/home以下のディレクトリが、最下層まで、再帰的にスキャンされます。

それで、実行すれば、スキャン開始。

そして、端末上に、スキャンされたファイルの名前が、"OK"などのステータス付きで、だーっと流れ、圧縮ファイルのスキャンに手間取っているさまなどを見せながらも、結果、異常がなければ、以下のようになり、終了。

----------- SCAN SUMMARY -----------
Known viruses: 609270
Engine version: 0.95.2
Scanned directories: 986
Scanned files: 9981
Infected files: 0
Data scanned: 738.98 MB
Data read: 2657.94 MB (ratio 0.28:1)
Time: 77.957 sec (1 m 17 s)

ClamAV『なんもあれへんかったよ。良かったな』

0.96.xのエラー

と、まあ、上のように簡単に使えるClamAV。だけども、ここ最近、少しおかしい。

ClamAVの Ver.0.96.1くらい(Ubuntuでは、10.04から? もう少し前だった記憶もあり)から、ファイルシステム全体のウィルススキャン( $ sudo clamscan -r / )をしようとすると、大体、/sysディレクトリを調べ始めたところで、以下のようなエラーが山ほど出て、止まる。というか、ものすごいCPU性能と時間を費やし始め、それ以後のスキャンに進めない状態になる。

LibClamAV Warning: fmap_readpage: pread fail: asked for ???? bytes @ offset ??, got ?

上記の?マークには数字が入ります。環境によって、ここの数字が違うようなので、混乱のないよう、数字部分だけ伏せ字にしました。

結論から言ってしまうと、これは、『そういう仕組み』なんだそうで、/sysディレクトリは仮想的なディレクトリで、スキャンすべき実体がないので、エラーが出る……というわけで、エラーが出ること自体には問題はないそうです。(だからって止まるこたぁなかろう、とも思う。)

ただし、解決方法がないわけでもなく、/sys、/proc、/devなど、同じような性質のディレクトリを、対象から外してスキャンすれば、普通にできるようになるよ、ということで、以下。

$ sudo clamscan -r -i --exclude-dir=^/sys\|^/proc\|^/dev /

まあ、その場しのぎ風なというか、そのまま、その場しのぎですが、今のところ、こうか……。後はppaから、最新のClamAV入れるとか。僕は、おとなしく、最新が通常のリポジトリに載るのを待ちます。(平成23年7月現在、Debian Squeeze、clamscanのver.0.97.1に於いて、同様のメッセージが出るものの、スキャンは普通に進むようになりました)。