clamdscanの使用方法に関するメモ [Linux]
以下は、clamdscan を使いやすくすることを目的としたメモ(備忘録)である。
(clamdscan のバージョン: 0.103.6)
1. スキャンしたファイルの表示
(1) -i オプションを指定せず、-z オプションを指定
下記の情報が追加表示される。 ・ウイルスが発見されなかったファイルのパス名 ただし、表示の対象はコマンドラインで直接指定されたファイルのみである。
(補足)
・-z を指定しないと表示されない。
-z: ウイルスが発見された後もスキャンを継続
・-i を指定の場合には、上記の追加表示は実施されない。
2. 再帰的なスキャンが実施されることの確認
対象がディレクトリの場合には、再帰的にスキャンが実施される。
明確な説明がないため、テストの実行結果から判断した。
(1) 階層の深さの制限
・設定ファイルの MaxDirectoryRecursion で指定する。
・設定値に関する詳細な説明資料はない。
(a) -z オプションを指定しないと必要な情報が出力されない。
(b) 設定値に誤りがある場合、エラーメッセージが出力される。
ERROR: Incorrect argument format for option MaxDirectoryRecursion ERROR: Can't parse clamd configuration file /tmp/clamd.conf (終了ステータスは 2 となる。)
(c) 設定値を超える深さにファイルが存在する場合、ワーニングが出力される。
WARNING: Directory recursion limit reached (終了ステータスは 2 となる。)
(d) 実行結果からの判断
・設定できる値は 0 以上である。 ・n(>=1) の場合: 指定ディレクトリの n 階層下のディレクトリまでが対象 指定ディレクトリ内の全ファイル(ディレクトリを含)が対象 指定ディレクトリ内のサブディレクトリは、指定された階層までが対象 ・0 の場合: 無制限となっているように思われる。 少なくとも、指定ディレクトリのみに限定するようにはならない。
(2) 再帰的なスキャンが実施されていることの証明
・サブディレクトリ内のテスト用ウイルスを見つけている。
(eicar.zip は、ウイルス検索のテストファイルである。)
・サブディレクトリ内の除外パスを除外している。
# clamdscan -z --stdout /work /work/backup: Excluded /work/lost+found: Excluded /work/linux/grub2/super_grub2_disk_hybrid_2.04s1.iso: Excluded /work/test/cache: Excluded /work/test/xxx.iso: Excluded /work/test/x1/x2/eicar.zip: Win.Test.EICAR_HDB-1 FOUND ----------- SCAN SUMMARY ----------- Infected files: 1 Time: 3.750 sec (0 m 2 s) ...
3. 一時的に設定を変更しての実行
別の設定ファイルを使用することにより、対応可能である。
(例) -- 除外パスの追加
・元の設定ファイルをコピーし、別の設定ファイルを作成
・上記で作成した設定ファイルに、除外パス(ExcludePath) を追加
・clamdscan の --config-file オプションで上記で作成した設定ファイルを指定
(補足)
上記で --config-file を使用した clamdscan にのみ追加設定が適用される。
--config-file を使用しない clamdscan には元の設定が適用される。
(ExcludePath、MaxDirectoryRecursion について動作を確認)
4. 効果が不明のオプション
(1) -v オプション
'be verbose' とのみ説明されており、効果が不明である。
また、-v の指定の有無による実行結果の違いを見つけられない。