ClamAV 0.98.7 インストール

ClamAVのバージョン0.98.7がepelリポジトリで利用可能になった。rpmforgeのClamAVが0.98.4からなかなかアップデートされないので、epelのClamAV 0.98.7に入れ替えることにした。(4月29日にバージョン0.98.6のインストールとして書いたが、5月9日に0.98.7になったので、ClamAV 0.98.7 インストールに修正)

インストールされてるclamをアンインストール

[root@server2 ~]# yum -y remove clam*

設定ファイルを削除

[root@server2 ~]# rm /etc/cron.daily/clamdscan
[root@server2 ~]# rm /etc/tmpfiles.d/clamd.conf

yumのリポジトリ確認

[root@server2 ~]# cd /etc/yum.repos.d
[root@server2 yum.repos.d]# ls -la
合計 72
drwxr-xr-x.   2 root root  4096  4月 25 14:47 .
drwxr-xr-x. 154 root root 12288  4月 25 10:33 ..
-rw-r--r--    1 root root  1656  9月 14  2014 CentOS-Base.repo
-rw-r--r--    1 root root  1664  8月 23  2014 CentOS-Base.repo.rpmnew
-rw-r--r--    1 root root  1309  4月  1 07:27 CentOS-CR.repo
-rw-r--r--    1 root root   649  4月  1 07:27 CentOS-Debuginfo.repo
-rw-r--r--    1 root root  1331  4月  1 07:27 CentOS-Sources.repo
-rw-r--r--    1 root root  1002  4月  1 07:27 CentOS-Vault.repo
-rw-r--r--    1 root root   290  4月  1 07:27 CentOS-fasttrack.repo
-rw-r--r--    1 root root  1056 11月 26 01:23 epel-testing.repo
-rw-r--r--    1 root root   972  4月 25 14:47 epel.repo
-rw-r--r--    1 root root   739  6月 12  2014 mirrors-rpmforge
-rw-r--r--    1 root root   717  6月 12  2014 mirrors-rpmforge-extras
-rw-r--r--    1 root root   728  6月 12  2014 mirrors-rpmforge-testing
-rw-r--r--    1 root root  1128  1月  2 21:46 rpmforge.repo

2015年5月10日現在、yumでインストール可能なclamパッケージ

[root@server2 yum.repos.d]# cd
[root@server2 ~]# yum list | grep clam
clamav.x86_64                           0.98.7-1.el7          epel
clamav-data.noarch                      0.98.7-1.el7          epel
clamav-filesystem.noarch                0.98.7-1.el7          epel
clamav-lib.x86_64                       0.98.7-1.el7          epel
clamav-update.x86_64                    0.98.7-1.el7          epel
clamav-data-empty.noarch                0.98.7-1.el7          epel
clamav-db.x86_64                        0.98.4-1.el7.rf       rpmforge
clamav-devel.x86_64                     0.98.7-1.el7          epel
clamav-milter.x86_64                    0.98.7-1.el7          epel
clamav-milter-systemd.noarch            0.98.7-1.el7          epel
clamav-milter-sysvinit.noarch           0.98.7-1.el7          epel
clamav-scanner.noarch                   0.98.7-1.el7          epel
clamav-scanner-systemd.noarch           0.98.7-1.el7          epel
clamav-scanner-sysvinit.noarch          0.98.7-1.el7          epel
clamav-server.x86_64                    0.98.7-1.el7          epel
clamav-server-systemd.noarch            0.98.7-1.el7          epel
clamav-server-sysvinit.noarch           0.98.7-1.el7          epel
clamd.x86_64                            0.98.4-1.el7.rf       rpmforg

CentOSの場合、clamはyumリポジトリのepelとrpmforgeの両方で提供されているが、インストールされてるバージョンよりも別のリポジトリのバージョンが新しくなると、yum updateが失敗する問題が発生する。clamの更新は、インストール元以外のリポジトリのclamを除外し、インストール元のリポジトリからのみ行われるようにする

今回は、epelのclamを使うのでrpmforge.repoのclamを除外

[root@server2 ~]# vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 7 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el7/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
exclude=clam* ← epelのclamを使うのでrpmforgeのclamは除外
         (yum updateのエラー対策)

rpmforgeが無効になってるか確認

[root@server2 ~]# yum list | grep clam
clamav.x86_64                           0.98.7-1.el7          epel
clamav-data.noarch                      0.98.7-1.el7          epel
clamav-filesystem.noarch                0.98.7-1.el7          epel
clamav-lib.x86_64                       0.98.7-1.el7          epel
clamav-update.x86_64                    0.98.7-1.el7          epel
clamav-data-empty.noarch                0.98.7-1.el7          epel
clamav-devel.x86_64                     0.98.7-1.el7          epel
clamav-milter.x86_64                    0.98.7-1.el7          epel
clamav-milter-systemd.noarch            0.98.7-1.el7          epel
clamav-scanner.noarch                   0.98.7-1.el7          epel
clamav-scanner-systemd.noarch           0.98.7-1.el7          epel
clamav-server.x86_64                    0.98.7-1.el7          epel
clamav-server-systemd.noarch            0.98.7-1.el7          epel
clamav-server-sysvinit.noarch           0.98.7-1.el7          epel

clamavとclamav-updateをインストール

[root@server2 ~]# yum -y install clamav clamav-update
読み込んだプラグイン:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.yz.yamagata-u.ac.jp
 * centosplus: ftp.yz.yamagata-u.ac.jp
 * epel: ftp.cuhk.edu.hk
 * extras: ftp.yz.yamagata-u.ac.jp
 * rpmforge: ftp.neowiz.com
 * updates: ftp.yz.yamagata-u.ac.jp
84 packages excluded due to repository priority protections
依存性の解決をしています
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--> トランザクションの確認を実行しています。
---> パッケージ clamav.x86_64 0:0.98.7-1.el7 を インストール
--> 依存性の処理をしています: clamav-lib = 0.98.7-1.el7 のパッケージ: clamav-0.98.7-1.el7.x86_64
--> 依存性の処理をしています: libclamav.so.6(CLAMAV_PUBLIC)(64bit) のパッケージ: clamav-0.98.7-1.el7.x86_64
--> 依存性の処理をしています: libclamav.so.6(CLAMAV_PRIVATE)(64bit) のパッケージ: clamav-0.98.7-1.el7.x86_64
--> 依存性の処理をしています: data(clamav) のパッケージ: clamav-0.98.7-1.el7.x86_64
--> 依存性の処理をしています: libclamav.so.6()(64bit) のパッケージ: clamav-0.98.7-1.el7.x86_64
---> パッケージ clamav-update.x86_64 0:0.98.7-1.el7 を インストール
--> 依存性の処理をしています: clamav-filesystem = 0.98.7-1.el7 のパッケージ: clamav-update-0.98.7-1.el7.x86_64
--> 依存性の処理をしています: group(clamupdate) のパッケージ: clamav-update-0.98.7-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ clamav-data.noarch 0:0.98.7-1.el7 を インストール
---> パッケージ clamav-filesystem.noarch 0:0.98.7-1.el7 を インストール
---> パッケージ clamav-lib.x86_64 0:0.98.7-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package                       アーキテクチャー   バージョン                 リポジトリー      容量
====================================================================================================
インストール中:
 clamav                        x86_64             0.98.7-1.el7               epel             806 k
 clamav-update                 x86_64             0.98.7-1.el7               epel              89 k
依存性関連でのインストールをします:
 clamav-data                   noarch             0.98.7-1.el7               epel              95 M
 clamav-filesystem             noarch             0.98.7-1.el7               epel              19 k
 clamav-lib                    x86_64             0.98.7-1.el7               epel             3.7 M

トランザクションの要約
====================================================================================================
インストール  2 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 99 M
インストール容量: 108 M
Downloading packages:
(1/5): clamav-0.98.7-1.el7.x86_64.rpm                                        | 806 kB  00:00:00
(2/5): clamav-filesystem-0.98.7-1.el7.noarch.rpm                             |  19 kB  00:00:00
(3/5): clamav-lib-0.98.7-1.el7.x86_64.rpm                                    | 3.7 MB  00:00:00
(4/5): clamav-update-0.98.7-1.el7.x86_64.rpm                                 |  89 kB  00:00:00
(5/5): clamav-data-0.98.7-1.el7.noarch.rpm                                   |  95 MB  00:00:11
----------------------------------------------------------------------------------------------------
合計                                                                8.9 MB/s |  99 MB  00:00:11
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : clamav-filesystem-0.98.7-1.el7.noarch                               1/5
  インストール中          : clamav-data-0.98.7-1.el7.noarch                                     2/5
  インストール中          : clamav-lib-0.98.7-1.el7.x86_64                                      3/5
  インストール中          : clamav-update-0.98.7-1.el7.x86_64                                   4/5
  インストール中          : clamav-0.98.7-1.el7.x86_64                                          5/5
  検証中                  : clamav-data-0.98.7-1.el7.noarch                                     1/5
  検証中                  : clamav-filesystem-0.98.7-1.el7.noarch                               2/5
  検証中                  : clamav-lib-0.98.7-1.el7.x86_64                                      3/5
  検証中                  : clamav-update-0.98.7-1.el7.x86_64                                   4/5
  検証中                  : clamav-0.98.7-1.el7.x86_64                                          5/5

インストール:
  clamav.x86_64 0:0.98.7-1.el7                  clamav-update.x86_64 0:0.98.7-1.el7

依存性関連をインストールしました:
  clamav-data.noarch 0:0.98.7-1.el7             clamav-filesystem.noarch 0:0.98.7-1.el7
  clamav-lib.x86_64 0:0.98.7-1.el7

完了しました!

2個のパッケージと3個の依存関係のパッケージがインストールされる

clamav-0.98.7-1.el7.x86_64
clamav-update-0.98.7-1.el7.x86_64
clamav-data-0.98.7-1.el7.noarch
clamav-filesystem-0.98.7-1.el7.noarch
clamav-lib-0.98.7-1.el7.x86_64

rpmコマンドでファイルのパスを確認

[root@server2 ~]# rpm -qliv clamav
Name        : clamav
Version     : 0.98.7
Release     : 1.el7
Architecture: x86_64
Install Date: 2015年05月10日 07時33分04秒
Group       : Applications/File
Size        : 2247528
License     : GPLv2
Signature   : RSA/SHA256, 2015年04月30日 22時54分50秒, Key ID 6a2faea2352c64e5
Source RPM  : clamav-0.98.7-1.el7.src.rpm
Build Date  : 2015年04月30日 03時47分04秒
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.clamav.net
Summary     : End-user tools for the Clam Antivirus scanner
Description :
Clam AntiVirus is an anti-virus toolkit for UNIX. The main purpose of this
software is the integration with mail servers (attachment scanning). The
package provides a flexible and scalable multi-threaded daemon, a command
line scanner, and a tool for automatic updating via Internet. The programs
are based on a shared library distributed with the Clam AntiVirus package,
which you can use with your own software. The virus database is based on
the virus database from OpenAntiVirus, but contains additional signatures
(including signatures for popular polymorphic viruses, too) and is KEPT UP
TO DATE.
-rwxr-xr-x    1 root    root                    90376  4月 30 03:46 /usr/bin/clambc
-rwxr-xr-x    1 root    root                    94024  4月 30 03:46 /usr/bin/clamconf
-rwxr-xr-x    1 root    root                   175992  4月 30 03:46 /usr/bin/clamdscan
-rwxr-xr-x    1 root    root                   172008  4月 30 03:46 /usr/bin/clamdtop
-rwxr-xr-x    1 root    root                   119280  4月 30 03:46 /usr/bin/clamscan
-rwxr-xr-x    1 root    root                    94224  4月 30 03:46 /usr/bin/clamsubmit
-rwxr-xr-x    1 root    root                   160872  4月 30 03:46 /usr/bin/sigtool
drwxr-xr-x    2 root    root                        0  4月 30 03:47 /usr/share/doc/clamav-0.98.7
-rw-r--r--    1 root    root                     3203  4月 23 04:49 /usr/share/doc/clamav-0.98.7/AUTHORS
-rw-r--r--    1 root    root                       24  4月 23 04:49 /usr/share/doc/clamav-0.98.7/BUGS
-rw-r--r--    1 root    root                    18738  4月 23 04:49 /usr/share/doc/clamav-0.98.7/COPYING
-rw-r--r--    1 root    root                   736067  4月 24 01:02 /usr/share/doc/clamav-0.98.7/ChangeLog
-rw-r--r--    1 root    root                       61  4月 23 04:49 /usr/share/doc/clamav-0.98.7/FAQ
-rw-r--r--    1 root    root                     1861  4月 23 04:49 /usr/share/doc/clamav-0.98.7/NEWS
-rw-r--r--    1 root    root                    98200  4月 23 04:49 /usr/share/doc/clamav-0.98.7/README
-rw-r--r--    1 root    root                      138  4月 23 04:49 /usr/share/doc/clamav-0.98.7/UPGRADE
-rw-r--r--    1 root    root                   214798  4月 24 01:07 /usr/share/doc/clamav-0.98.7/clamdoc.pdf
-rw-r--r--    1 root    root                   120286  4月 24 01:07 /usr/share/doc/clamav-0.98.7/phishsigs_howto.pdf
-rw-r--r--    1 root    root                   126165  4月 24 01:07 /usr/share/doc/clamav-0.98.7/signatures.pdf
-rw-r--r--    1 root    root                      658  4月 30 03:46 /usr/share/man/man1/clambc.1.gz
-rw-r--r--    1 root    root                      494  4月 30 03:46 /usr/share/man/man1/clamconf.1.gz
-rw-r--r--    1 root    root                     1449  4月 30 03:46 /usr/share/man/man1/clamdscan.1.gz
-rw-r--r--    1 root    root                     2259  4月 30 03:46 /usr/share/man/man1/clamdtop.1.gz
-rw-r--r--    1 root    root                     3903  4月 30 03:46 /usr/share/man/man1/clamscan.1.gz
-rw-r--r--    1 root    root                      451  4月 30 03:46 /usr/share/man/man1/clamsubmit.1.gz
-rw-r--r--    1 root    root                     1709  4月 30 03:46 /usr/share/man/man1/sigtool.1.gz
-rw-r--r--    1 root    root                     4091  4月 30 03:46 /usr/share/man/man5/clamav-milter.conf.5.gz
-rw-r--r--    1 root    root                     6197  4月 30 03:46 /usr/share/man/man5/clamd.conf.5.gz

[root@server2 ~]# rpm -qliv clamav-update
Name        : clamav-update
Version     : 0.98.7
Release     : 1.el7
Architecture: x86_64
Install Date: 2015年05月10日 07時33分03秒
Group       : Applications/File
Size        : 182427
License     : GPLv2
Signature   : RSA/SHA256, 2015年04月30日 22時57分27秒, Key ID 6a2faea2352c64e5
Source RPM  : clamav-0.98.7-1.el7.src.rpm
Build Date  : 2015年04月30日 03時47分04秒
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.clamav.net
Summary     : Auto-updater for the Clam Antivirus scanner data-files
Description :
This package contains programs which can be used to update the clamav
anti-virus database automatically. It uses the freshclam(1) utility for
this task. To activate it, uncomment the entry in /etc/cron.d/clamav-update.
-rw-------    1 root    root                      203  4月 30 03:38 /etc/cron.d/clamav-update
-rw-r--r--    1 root    root                     8561  4月 30 03:46 /etc/freshclam.conf ← 設定ファイル
-rw-r--r--    1 root    root                       62  4月 30 03:38 /etc/logrotate.d/clamav-update
-rw-r--r--    1 root    root                      955  4月 30 03:38 /etc/sysconfig/freshclam ← 設定ファイル
-rwxr-xr-x    1 root    root                   165176  4月 30 03:46 /usr/bin/freshclam
-rwxr-xr-x    1 root    root                     1492  4月 30 03:38 /usr/share/clamav/freshclam-sleep
-rw-r--r--    1 root    root                     2168  4月 30 03:46 /usr/share/man/man1/freshclam.1.gz
-rw-r--r--    1 root    root                     3810  4月 30 03:46 /usr/share/man/man5/freshclam.conf.5.gz
-rw-rw-r--    1 clamupdaclamupda                    0  4月 30 03:46 /var/lib/clamav/daily.cld
-rw-rw-r--    1 clamupdaclamupda                    0  4月 30 03:46 /var/lib/clamav/main.cld
-rw-rw-r--    1 root    clamupda                    0  4月 30 03:46 /var/log/freshclam.log

ウィルス定義ファイル最新化の有効化
Clam AntiVirus 設定ファイル/etc/freshclam.confの編集

[root@server2 ~]# vi /etc/freshclam.conf
# Comment or remove the line below.
Example
#Example ← #を追加してコメントアウト(最新化の有効化)

# Path to the database directory.
# WARNING: It must match clamd.conf's directive!
# Default: hardcoded (depends on installation options)
#DatabaseDirectory /var/lib/clamav
DatabaseDirectory /var/lib/clamav ← コメントを解除

# Path to the log file (make sure it has proper permissions)
# Default: disabled
#UpdateLogFile /var/log/freshclam.log
UpdateLogFile /var/log/freshclam.log ← コメントを解除

# By default when started freshclam drops privileges and switches to the
# "clamav" user. This directive allows you to change the database owner.
# Default: clamav (may depend on installation options)
#DatabaseOwner clamupdate
DatabaseOwner clamupdate ← コメントを解除

# Uncomment the following line and replace XY with your country
# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
# You can use db.XY.ipv6.clamav.net for IPv6 connections.
#DatabaseMirror db.XY.clamav.net
DatabaseMirror db.jp.clamav.net ← ウィルス定義ファイル入手元を日本に変更

Clam AntiVirus 設定ファイル/etc/sysconfig/freshclamの編集

[root@server2 ~]# vi /etc/sysconfig/freshclam
### !!!!! REMOVE ME !!!!!!
### REMOVE ME: By default, the freshclam update is disabled to avoid
### REMOVE ME: network access without prior activation
FRESHCLAM_DELAY=disabled-warn  # REMOVE ME
 ↓
#FRESHCLAM_DELAY=disabled-warn  # REMOVE ME ← #を追加してコメントアウト(自動アップデート有効化)

ウィルス定義ファイルの更新

[root@server2 ~]# freshclam
ClamAV update process started at Sun May 10 07:40:32 2015
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
WARNING: getfile: daily-19996.cdiff not found on remote server (IP: 120.29.176.126)
WARNING: getpatch: Can't download daily-19996.cdiff from db.jp.clamav.net
WARNING: getfile: daily-19996.cdiff not found on remote server (IP: 203.178.137.175)
WARNING: getpatch: Can't download daily-19996.cdiff from db.jp.clamav.net
WARNING: getfile: daily-19996.cdiff not found on remote server (IP: 218.44.253.75)
WARNING: getpatch: Can't download daily-19996.cdiff from db.jp.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cld updated (version: 20440, sigs: 1384927, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 254, sigs: 45, f-level: 63, builder: anvilleg)
Database updated (3809197 signatures) from db.jp.clamav.net (IP: 120.29.176.126)
[root@server2 ~]# freshclam
ClamAV update process started at Sun May 10 07:43:46 2015
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
daily.cld is up to date (version: 20440, sigs: 1384927, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 254, sigs: 45, f-level: 63, builder: anvilleg)

ウィルススキャン確認(/etc/passwdをスキャンしてみる)

[root@server2 ~]# clamscan --infected --remove --recursive /etc/passwd

----------- SCAN SUMMARY -----------
Known viruses: 3803624
Engine version: 0.98.7
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 19.003 sec (0 m 19 s)

毎日ウィルス定義ファイルを最新化して、全てのファイルをスキャンするスプリクト作成

[root@server2 ~]# vi /etc/cron.daily/clamscan.sh
#!/bin/bash
PATH=/usr/bin:/bin

# ウイルススキャン除外リスト設定
excludelist=/root/clamscan.exclude
if [ -s $excludelist ]; then
for i in `cat $excludelist`
do
if [ $(echo "$i"|grep \/$) ]; then
i=`echo $i|sed -e 's/^\([^ ]*\)\/$/\1/p' -e d`
excludeopt="${excludeopt} --exclude-dir=$i"
else
excludeopt="${excludeopt} --exclude=$i"
fi
done
fi

# clamavをアップデート
yum -y update clamav > /dev/null 2>&1

# ウィルス定義ファイルを最新化
freshclam > /dev/null

# ウイルスに関するメッセージを入れる変数作成
CLAMSCANTMP=`mktemp`

# スキャン実行、ウイルスが有ったら削除、mktempで作成したファイルにメッセージを入れる
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1

# ウイルスが有った場合メッセージをメール送信
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found" hoge@example.com

# ウイルスが無く正しく動作している場合もメール送信
[ -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
echo "clamscan normal end" | mail -s "Virus Not Found" hoge@example.com

# メールを送ったらmktempで作成したファイルは破棄
rm -f $CLAMSCANTMP

Clam AntiVirus定期自動実行スクリプトに実行権限付加

[root@server2 ~]# chmod 700 /etc/cron.daily/clamscan.sh

スキャン除外設定

[root@server2 ~]# echo "/proc/" >> clamscan.exclude
[root@server2 ~]# echo "/sys/" >> clamscan.exclude
[root@server2 ~]# echo "/backup/" >> clamscan.exclude
[root@server2 ~]# echo "/home/share/" >> clamscan.exclude

デフォルトでインストールされるウィルス定義ファイルの自動最新化スクリプトを削除

[root@server2 ~]# rm -f /etc/cron.d/clamav-update

ちなみにデフォルトでは3時間毎に更新チェックするような設定になっている

[root@server2 ~]# vi /etc/cron.d/clamav-update
## Adjust this line...
MAILTO=root

## It is ok to execute it as root; freshclam drops privileges and becomes
## user 'clamupdate' as soon as possible
0  */3 * * * root /usr/share/clamav/freshclam-sleep