clamav-update
clamav-update のフォーラム
 
 FAQFAQ   検索検索   メンバーリストメンバーリスト   ユーザーグループユーザーグループ   登録する登録する 
 プロフィールプロフィール   プライベートメッセージをチェックするプライベートメッセージをチェックする   ログインログイン 

clamd を利用した効率的なスキャンコマンド

 
新しいトピックを投稿   トピックに返信    clamav-update Forum Index -> Idle Talk
前のトピックを表示 :: 次のトピックを表示  
投稿者 メッセージ
okamura
Site Admin


登録日: 2006.11.13
記事: 291
所在地: 埼玉県

記事日時: 2007-01-02 00:29:31+00:00    記事の件名: clamd を利用した効率的なスキャンコマンド 引用付きで返信

clamd を利用した効率的なスキャンコマンドを公開しようとしているのですが、公開用にリメイクを始めて色々悩んでいます。

そのコマンドの方針は「スキャンする必要がないものはスキャンしない」というものです。例えば、作成日時と更新日時のどちらか新しい方が最後にスキャンした日時よりも一ヶ月以上前のファイルは、一ヶ月経っても問題ないと判定されたファイルです。ClamAV のウィルスデータベースの更新頻度から考えてこの一ヶ月という期間は十分な期間で、事実上今後新たなウィルスデータベースで問題が発見される可能性はないと言えるでしょう。したがってそのファイルは事実上安全なファイルと判断できます。そのようなファイルはスキャンしなくてもよいからスキャンしません。

この判断を加えると、僕の Mac の使い方ではホームのスキャン時間を四分の一に節約できます。また今までに受信したメールを我が家のメールサーバ(Linux)にほとんど残してあるのですが、そのメール群の場合は三十分の一よりももっと節約できます。

しかし悩みどころがあります。

【悩みどころ1 : データベース】
今までにスキャンした記録を残すことになるのですが、その記録を効率的に利用できるようにする必要があります。データベースを使えば効率的に記録を活用できますが、一般的にはデータベースを使用するとなると別途インストールしなければなりません。ほとんどの UNIX 系プラットフォームで使用できる Berkeley DB を使用すると、ホーム程度ならまだしもマシン全体となるとその記録を分散する必要があります。そうでないと、そのデータベースのロードや更新に時間がかかりすぎたりメモリを浪費したりして逆に効率が悪くなるからです。

Berkeley DB の場合、僕の Mac では / 直下のディレクトリ毎にデータベースを作れば問題ない程度に分散できます。しかしそれでは一般性に欠けます。一般性を保って効率性も落とさないようにするには相当努力が必要です。MySQL などが使用できれば問題ないのですが…。

【悩みどころ2 : clamscan との互換性】
clamd を使用するスキャンに clamdscan コマンドが既にありますが、これは clamscan コマンドがサポートする --exclude オプションなどが使用できません。しかも clamd.conf にはぴったり該当するディレクティブがありません。(限定的な環境で相当するオプションはありますが、Mac OS X では使えません。)

これらをサポートするベター clamdscan コマンドとしても開発したのですが、スキャンの経過などのロギングをそっくりそのまま同じにしないと clamscan コマンドや clamdscan コマンドの代替として互換性に問題があるケースが出てくるでしょう。例えば clamscan の代替として ClamXav や ClamXavSentry から使用する場合です。

現在僕だけで使っているスキャンコマンドは perl による全くのスクラッチなのですが、このような互換性を重視すると clamscan や clamdscan のソースを流用するかあるいはそれぞれへのパッチによる機能付加とした方が開発や保守の効率が高まります。矛盾するようですが、その結果既に開発してあるものは捨てなければならないのでリリースは更にずっと先になるでしょう。


というわけで、既にできているものにちょっと手直しを入れて公開のつもりだったのですが、根本からどうしようかと悩み中です。開発者ベースの話でコメントしづらいとは思ったのですが、一人でウニウニするのも嫌になってきたので、ヒントなどが貰えたらラッキーだなと思いここに書いてみた次第です。
_________________
OKAMURA
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動 AIM
t0mori



登録日: 2006.11.17
記事: 105
所在地: 東京都

記事日時: 2007-01-02 13:34:46+00:00    記事の件名: 気休め的コメント 引用付きで返信

専門的知識はさっぱりなので、あくまで利用者としての意見(茶々とも言う)を……。

【悩みどころ1】に関しては、そのBerkeley DBとやらの導入とか扱いが、どの程度の敷居の高さなのか分らないのでなんともコメントしづらい所ですし、参考になりそうな事を言えそうにありません。

【悩みどころ2】に関してですが、それは配布後に路線変更などするのは難しい事案なのでしょうか?
#文面から推察するに、きっと根本的に違うものなんでしょうね。

AntiVirusと言うソフトの性格上、早めに使えるなら利用者にとってはそれが一番ありがたいような気もします。取りあえずver.1としてリリースして、互換性の高いバージョンは追々、と言う事でも良いような気がしますが、どんなもんでしょ?
ver.1を利用する事で、互換性の高いバージョンへの移行コストが高くなってしまうようだと問題かも知れませんが、どちらでも同じ、と言う事なら現状のバージョンを使ってみたいです。

#個人的には、年末、週次のチェックが始まって丸1日近くスキャンに費やされていた
#りしましたんで、利用出来るものなら使わせて頂きたいな、と思ったりです。
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信
okamura
Site Admin


登録日: 2006.11.13
記事: 291
所在地: 埼玉県

記事日時: 2007-01-03 00:12:28+00:00    記事の件名: Re: 気休め的コメント 引用付きで返信

コメントどうもです。

Berkeley DB はほとんどの UNIX 系 OS の環境では何もしなくても使えるものです。もっとも Perl から使うためにはそれ用の Perl モジュールをインストールしなければなりません。

t0mori wrote:
【悩みどころ2】に関してですが、それは配布後に路線変更などするのは難しい事案なのでしょうか?
#文面から推察するに、きっと根本的に違うものなんでしょうね。
ええ、中身は全く別なソフトになりますが、ユーザから見たら大して変わらないかも。clamscan と clamdscan によく似たコマンドか、拡張された clamdscan あるいは clamscan という感じです。後者の場合 Berkeley DB を使う部分のために何かをインストールする必要は無くなります。

t0mori wrote:
#個人的には、年末、週次のチェックが始まって丸1日近くスキャンに費やされていた
#りしましたんで、利用出来るものなら使わせて頂きたいな、と思ったりです
丸一日というのはまた凄いですが、そうなんですよね、時間かかり過ぎなんですよね。CPU や Core が二つ以上あるマシンならともかく、1 CPU、1 Core だと全体パワーをかなり浪費してしまいますし。

α版でもない単なる試作版(コンセプト実証版)として出してみるっていう位置づけがよいかもしれません。
_________________
OKAMURA
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動 AIM
Atsushi



登録日: 2006.11.17
記事: 46
所在地: 愛知県

記事日時: 2007-01-04 01:20:07+00:00    記事の件名: Re: 気休め的コメント 引用付きで返信

okamura wrote:
α版でもない単なる試作版(コンセプト実証版)として出してみるっていう位置づけがよいかもしれません。


スキャンの高速化には私も興味があるのでコンセプト版でも良いので試してみたいと言う気持ちは私も持っています。
ただ、ClamXavでも監視フォルダは指定できますし、それで動きのあるファイルは補足できるのでは?と思っています。よくわかりませんが、ウイルスが活動していればなにかファイルに変更があったりすると思うので、ここで引っかかると思うのです。もちろん監視していない部分もあるので意味はあると思いますがそこまでする必要があるのかなぁ?と。OKAMURAさんが例示されていた設定では重要な部分は監視するようになっていたと思いますし。

あと、データベースの件ですが、実際のところシステムにどの程度負荷がかかるのでしょう?ファイルをいつスキャンしたとか、作成日とかも記録されるとのことですが、そのデータベースはリアルタイムに作られるのではないですか?
だとしたら巨大なデータベースを常に読み書きしているように思われ、システムに多大な負荷がかかるような気がするのは気のせいでしょうか?
だからDBを分散とか書かれているように思うのですが、常にいろんなファイルが読み書きされているように思うので負荷は多そうに感じます。OKAMURAさんのところでは問題ないレベルとのことですが、どの程度のCPUとメモリが占有されているかわかりますでしょうか?
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動
okamura
Site Admin


登録日: 2006.11.13
記事: 291
所在地: 埼玉県

記事日時: 2007-01-04 08:23:02+00:00    記事の件名: 定期スキャンの意義とシステム負荷について 引用付きで返信

【定期スキャンの意義】
市販のウィルス対策ソフトでもそうですが、監視やリアルタイムのスキャンでは対策としては不十分だと考えています。理由はウィルスが出回ってからそれが発見されて手元のウィルスデータベースに反映されるまで、あるいはそのウィルスを発見できる本体のバージョンがリリースされて手元のマシンで稼働し始めるまでにタイムラグがあるからです。水際でのスキャンに加えて、そこで漏れたものを探す定期スキャンがあれば、後からウィルスデータベースに加わったものも発見できます。

そのため定期的なスキャンも重要になってきます。ウィルスデータベースの更新頻度が ClamAV のように高い製品でない場合はウィルスデータベースの更新があったら全体スキャンするというのが理想的です。(ただしそういう製品に出会ったことがありません。) 出したいと思っている試作品ではその後から追加されるというところに着目していて、それを期待する期間を制限することで無駄を省きます。

【システム負荷】
試作品は次のように動作します。
  1. スキャン開始直前に既に消されたファイルの記録をデータベースから削除する。
  2. ファイルをスキャンすると、そのファイルのスキャン日時を記録する。
    ファイルの作成日時と更新日時の新しい方はいつでもファイル自身から取得できるので記録しない。
このためスキャンしていないときには全く動きがないので、普段は全く負荷はかかりません。リアルタイムで記録するためにはシステムのカーネル(OSのコア部分)に手を入れなければなりません。Intego の VirusBarrier はカーネルのモジュールを追加していますが、これはその目的のためと推測しています。ここまではやりません。

データベースの分散云々の話は、この 1 の動作のときにかかる時間を節約するために必要になってきます。例えば PowerBook G4 で 50GB ほどディスクを使用していた場合、システム全体を一つのデーターベースで賄うと 1 の動作に一時間とかかかってしまいます。全体として同じ数のファイルがあっても複数に分けると一つあたり数分で終わり、足し合わせても 10 分程度に抑えられます。また作成直後に行ったパフォーマンスの比較では 2 による処理時間の伸びはほとんど見られませんでした。
_________________
OKAMURA
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動 AIM
fu7mu4



登録日: 2006.11.13
記事: 40

記事日時: 2007-01-05 12:37:08+00:00    記事の件名: 引用付きで返信

データベースを使わずに、find/mdfindで更新、作成時間が条件内のファイルのリストを作成して、そのファイルだけscanするのではいかがでしょう。
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信 メールを送信 投稿者のウェブサイトに移動
okamura
Site Admin


登録日: 2006.11.13
記事: 291
所在地: 埼玉県

記事日時: 2007-01-05 22:28:03+00:00    記事の件名: スキャンしたという証拠が欲しいのです 引用付きで返信

今までデータベースにファイルの内容の MD5 ハッシュ値を持たせてみたり色々試行錯誤したので、その発想ができない状態になってました。「なるほど!」と一瞬思ったのですが、それだと駄目なんです。というのは最後にスキャンした時間との差でもう必要ないと判断するから最後にスキャンした時間が欲しいのです。

でもデータベースのエントリ数を少なくするのには役に立つアイデアです。おかげでいいこと思いつきました。記録はディレクトリに限定しておいて、その中で新しいファイルや更新されたファイルだけをスキャンすることにすれば、データベースはぐんと小さくなりますね。

あ、でもそうするとファイル狙い撃ちのスキャンができなくなる…。もうちょっと練ってみます。
_________________
OKAMURA
トップに戻る
ユーザーのプロフィールを表示 プライベートメッセージを送信 投稿者のウェブサイトに移動 AIM
特定期間内の記事を表示:   
新しいトピックを投稿   トピックに返信    clamav-update Forum Index -> Idle Talk All times are GMT + 9 Hours
Page 1 of 1

 
移動先:  
新規投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
投票参加: 不可


Hosting by SourceForge.jp
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : PHPBB JAPAN / EUC-JP Edition : JP Support Forum