対象サーバはCentOS 7とします。
1.EPELリポジトリを追加していなければ、追加します。
$yum install epel-release
- 必要なときのみ明示的に指定してEPELリポジトリを使用するよう、デフォルトでは無効化
$vi /etc/yum.repos.d/epel.repo enabled=0 // 1から0に変更
- ClamAV本体(clamavパッケージ)と、ウイルス定義ファイルおよび定義更新機能(clamav-updateパッケージ)clamd(リアルタイムスキャンで使用)をインストール
$yum --enablerepo=epel install clamav clamav-update clamd
CentOS 6ではパッケージ名が異なり、clamavとclamav-dbパッケージをインストール
$yum --enablerepo=epel install clamav clamav-db
4. 次に、ウイルス定義の更新を行う。ウイルス定義の更新コマンドは /usr/bin/freshclam で、その設定ファイルは、/etc/freshclam.conf ですので、このファイルを開いて確認、変更する。 Example 行がコメントアウトされていることを確認します。また、ウイルス定義配布サーバーの設定である DatabaseMirror 行で、日本のミラーサーバーを追加登録します。 日本のミラーサーバーからの取得に失敗することもあるので、デフォルトの database.clamav.net も残しておきます。
DatabaseMirror db.jp.clamav.net // 日本のDBミラーサイトをデフォルトの前に追記 # database.clamav.net is a round-robin record which points to our most # reliable mirrors. It's used as a fall back in case db.XY.clamav.net is # not working. DO NOT TOUCH the following line unless you know what you # are doing. DatabaseMirror database.clamav.net // これはそのまま残す
5. ウイルス定義の更新、ウイルス定義を最新バージョンに更新する。
$freshclam
ウイルス定義ファイルは、/var/lib/clamav に保存されている。
- スキャンのテスト
スキャンは、clamscanコマンドを使用する。主なオプションは次の通りである。
–infected オプション :ウイルス検知したファイルの情報のみ出力 –recursive オプション :指定したディレクトリ配下を再帰的にスキャン –remove オプション :これを指定しない限り、ウイルス検知したファイルの自動削除は行わない –max-filesizeオプション :スキャン対象のファイルサイズ上限値の設定 –max-scansizeオプション:ファイルの先頭からどれだけ走査するか
$clamscan --infected --recursive /var
コマンド実行結果からは、以下のようなことが分かる。
Known viruses: ウイルス定義数 Engine version: ClamAVのバージョン Scanned directories: スキャンしたディレクトリ数 Scanned files: スキャンしたファイル数 Infected files: ウイルス検知数 Data scanned: スキャンしたファイルサイズの合計 Data read: スキャン走査したデータサイズ(圧縮データの展開分含む?)の合計 Time: スキャン処理時間
これらのオプション設定は、man clamscanで確認できる。
次にリアルタイムスキャンの設定方法を示します。
- rpmforgeの有効化
$ wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-XX(version#).rpm $ rpm -ivh rpmforge-release-*.rpm $ yum -y update rpmforge-release
- clamd.confファイルの編集
User root ← (fanotifyを使うため、rootユーザでのアクセスが必要) ScanOnAccess yes OnAccessIncludePath /tmp ← (オンアクセススキャンを有効にするディレクトリ・ファイルを列挙) OnAccessIncludePath /home/test1 ← ….
- SELinuxポリシの変更
clamd(antivirus_tタイプ)が各フォルダ・ファイルにアクセス出来るように、ポリシを一部追加してあげる必要がある。
(1) “selinux-policy-devel”パッケージをインストール (2) 適当なディレクトリで下記のように”clamav.te”ファイルを作成
module clamav.pol 1.0; require { type user_tmp_t; type antivirus_t; type var_run_t; type home_root_t; type user_home_dir_t; <-- スキャンするディレクトリの typeを追加 class sock_file { create unlink setattr }; class dir read; class capability sys_admin; class file { read getattr open }; } #============= antivirus_t ============== #!!!! This avc can be allowed using the boolean 'antivirus_can_scan_system‘ allow antivirus_t self:capability sys_admin; allow antivirus_t home_root_t:dir read; <-- スキャンするディレクトリの typeを追加 allow antivirus_t home_root_t:file { read getattr open }; <-- スキャンするディレクトリの typeと、アクションを追加 allow antivirus_t user_home_dir_t:dir read; <-- スキャンするディレクトリの typeを追加 allow antivirus_t user_home_dir_t:file { read getattr open }; <-- スキャンするディレクトリの typeと、アクションを追加 allow antivirus_t user_tmp_t:file open; allow antivirus_t var_run_t:sock_file { create unlink setattr };
- 次のコマンドで、ポリシモジュールを作成し、ロードする
$ make -f /usr/share/selinux/devel/Makefile $ semodule I clamav.pp
- clamdのサービスを起動
$/etc/init.d/clamd start $ ps axZ|grep clamd
- ClamAV+fanotifyのテスト
(1). /home/test1以下に、テスト用の無害なウィルス(EICAR)をコピー
$ cat /tmp/eicar.txt X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* $ cp /tmp/eicar.txt /home/test1
(2). /var/log/messagesにEICARを見つけた旨のログが出力される
$ tail -2 /var/log/clamav/clamd.log Sun Aug 10 23:19:32 2014 -> ScanOnAccess: Max file size limited to 5242880 bytes Sun Aug 10 23:19:44 2014 -> ScanOnAccess: /home/test1/eicar.txt: Eicar-Test-Signature FOUND