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

CentOS 7 Clam AntiVirusインストール

2015年1月4日修正
clamscanでスキャンすると時間が結構かかってたので、より高速に動作するclamdscanでウイルススキャンするように変更。また、除外ディレクトリーも新たに設定。
※clamdscanはスキャンして、変更の無いファイルは2度目以降のスキャンをスキップするので高速である。

■Clam AntiVirusをRepoforgeリポジトリからインストール
yumでインストールする場合、Repoforgeリポジトリを追加しておく必要がある

[root@server1 ~]# yum -y install clamd
読み込んだプラグイン:fastestmirror, langpacks, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * centosplus: ftp.nara.wide.ad.jp
 * epel: mirrors.ustc.edu.cn
 * extras: ftp.nara.wide.ad.jp
 * rpmforge: ftp.neowiz.com
 * updates: ftp.nara.wide.ad.jp
77 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).
--> トランザクションの確認を実行しています。
---> パッケージ clamd.x86_64 0:0.98.4-1.el7.rf を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package            アーキテクチャー    バージョン                      リポジトリー           容量
====================================================================================================
インストール中:
 clamd              x86_64              0.98.4-1.el7.rf                 rpmforge              158 k

トランザクションの要約
====================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 158 k
インストール容量: 680 k
Downloading packages:
clamd-0.98.4-1.el7.rf.x86_64.rpm                                             | 158 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : clamd-0.98.4-1.el7.rf.x86_64                                        1/1
  検証中                  : clamd-0.98.4-1.el7.rf.x86_64                                        1/1

インストール:
  clamd.x86_64 0:0.98.4-1.el7.rf

完了しました!

■設定ファイル変更

[root@server1 ~]# vi /etc/clamd.conf

#除外ディレクトリーを指定
# Don't scan files and directories matching regex
# This directive can be used multiple times
# Default: scan all
#ExcludePath ^/proc/
#ExcludePath ^/sys/
#------追加ここから------
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/backup/
ExcludePath ^/home/share/
#--------ここまで--------

#ルートで動作するように変更
User clamav
↓
#User clamav

#壊れたファイルは誤検出が多いため無効
DetectBrokenExecutables yes
↓
#DetectBrokenExecutables yes

#圧縮ファイルのスキャンは無効
# ClamAV can scan within archives and compressed files.
# Default: yes
ScanArchive yes
 ↓
ScanArchive no

※どのディレクトリを除外ディレクトリーに指定するかは以下を参照。
CentOSの各ディレクトリに格納されているファイルについて

bin    CentOSに最初から有るコマンド群
boot   ブートに関するファイル
dev    デバイスに関するファイル
etc    コンフィグファイル
home   root以外のユーザーディレクトリ
lib    コマンドを実行するためのファイル
lib64  コマンドを実行するための64ビット用ファイル
media  CDやDVDのマウントポイント
mnt    ファイルシステムのマウントポイント
opt    パッケージのインストール先
proc   プロセスやカーネルに関するファイル
root   rootユーザーのディレクトリ
run    プロセスのデータ /var/runは/runのシンボリックリンク
sbin   管理者が使用するコマンド
srv    システムのサービスデータ
sys    ドライバ関連のファイル
tmp    テンポラリファイル
usr    ユーザーが共通で使うプログラム群。
     ※/usr/share/applicationsがWindowsのコントロールパネルに相当
var    ログやApacheのデフォルトのドキュメントルートなど

■Clam AntiVirusの起動

clamdの起動
[root@server1 ~]# systemctl start clamd

clamdの自動起動設定
[root@server1 ~]# systemctl enable clamd
clamd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig clamd on
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).

■「freshclam」を使用してVirusDBをアップデート

ウィルス定義ファイルの更新機能を有効化
[root@server1 ~]# sed -i 's/Example/#Example/g' /etc/freshclam.conf

VirusDBをアップデート
[root@server1 ~]# freshclam
ClamAV update process started at Sun Jan  4 12:47:36 2015
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.98.4 Recommended version: 0.98.5
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cld is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-19879.cdiff [100%]
daily.cld updated (version: 19879, sigs: 1301911, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 244, sigs: 44, f-level: 63, builder: dgoddard)
Database updated (3726180 signatures) from db.local.clamav.net (IP: 218.44.253.75)
Clamd successfully notified about the update.

※clamAVのバージョンが古いというメッセージが出るが、特に問題ないので放置。

■VirusDB自動アップデートスクリプトの作成
yumでインストールすると自動で毎日アップデートしてくれるが、何らかの理由でファイルが無いという場合には以下のファイルを作成。

[root@server1 ~]# vi /etc/cron.daily/freshclam
#!/bin/sh

### A simple update script for the clamav virus database.
### This could as well be replaced by a SysV script.

### fix log file if needed
LOG_FILE="/var/log/clamav/freshclam.log"
if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
    chmod 644 "$LOG_FILE"
    chown clamav.clamav "$LOG_FILE"
fi

/usr/bin/freshclam \
    --quiet \
    --datadir="/var/clamav" \
    --log="$LOG_FILE" \
    --daemon-notify="/etc/clamd.conf"

■clamscanでウイルススキャン
※/rootディレクトリをスキャンしてウイルスが見つかった場合だけ表示、削除する。

[root@server1 ~]# clamscan /root --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 3720154
Engine version: 0.98.4
Scanned directories: 1456
Scanned files: 3455
Infected files: 0
Data scanned: 139.04 MB
Data read: 3429.55 MB (ratio 0.04:1)
Time: 36.553 sec (0 m 36 s)

■より高速に動作するclamdscanでウイルススキャン
※clamdscanはウイルススキャンして、変更の無いファイルは2度目以降のウイルススキャンをスキップするので高速である。

[root@server1 ~]# clamdscan /root
/root: OK

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 21.567 sec (0 m 21 s)

■clamdscanの定期自動実行設定(毎日実行するので/etc/cron.dailyに保存)

[root@server1 ~]# vi /etc/cron.daily/clamdscan
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
CLAMSCANTMP=`mktemp`
 
clamdscan / --remove > $CLAMSCANTMP 2>&1
 
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found" hoge@example.com
 
[ -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
echo "clamdscan normal end" | mail -s "Virus Not Found" hoge@example.com
 
rm -f $CLAMSCANTMP

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

[root@server1 ~]# chmod +x /etc/cron.daily/clamdscan

■ウィルススキャン確認

[root@server1 ~]# sh /etc/cron.daily/clamdscan

ウイルススキャンが終了すると、問題なければ以下の様なメールが届く。
Virus Not Found

clamdscan normal end

■再起動するとclamdが起動しないというトラブル発生

[root@server1 ~]# systemctl status clamd
clamd.service - SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server.
   Loaded: loaded (/etc/rc.d/init.d/clamd)
   Active: failed (Result: exit-code) since 日 2014-07-20 11:26:16 JST; 2min 7s ago
  Process: 21056 ExecStart=/etc/rc.d/init.d/clamd start (code=exited, status=1/FAILURE)

 7月 20 12:09:17 server1.yokensaka.com systemd[1]: Starting SYSV: Clam AntiVirus Daemon is a T.....
 7月 20 12:09:17 server1.yokensaka.com clamd[1034]: clamd daemon 0.98.4 (OS: linux-gnu, ARCH: ...4)
 7月 20 12:09:17 server1.yokensaka.com clamd[1034]: Log file size limited to 4294967295 bytes.
 7月 20 12:09:17 server1.yokensaka.com clamd[1034]: Reading databases from /var/clamav
 7月 20 12:09:17 server1.yokensaka.com clamd[1034]: Not loading PUA signatures.
 7月 20 12:09:17 server1.yokensaka.com clamd[1034]: Bytecode: Security mode set to "TrustSigned".
 7月 20 12:09:33 server1.yokensaka.com clamd[1034]: Loaded 3502516 signatures.
 7月 20 12:09:34 server1.yokensaka.com clamd[1034]: TCP: Bound to address 127.0.0.1 on port 3310
 7月 20 12:09:34 server1.yokensaka.com clamd[1034]: TCP: Setting connection queue length to 30
 7月 20 12:09:34 server1.yokensaka.com clamd[1034]: LOCAL: Socket file /var/run/clamav/clamd.s...ry
 7月 20 12:09:34 server1.yokensaka.com clamd[1034]: Can't unlink the socket file /var/run/clam...ck
 7月 20 12:09:34 server1.yokensaka.com clamd[1021]: Starting Clam AntiVirus Daemon: ERROR: LOC...ry
 7月 20 12:09:34 server1.yokensaka.com clamd[1021]: ERROR: Can't unlink the socket file /var/r...ck
 7月 20 12:09:34 server1.yokensaka.com clamd[1021]: [失敗]
 7月 20 12:09:34 server1.yokensaka.com systemd[1]: clamd.service: control process exited, code...=1
 7月 20 12:09:34 server1.yokensaka.com systemd[1]: Failed to start SYSV: Clam AntiVirus Daemon.....
 7月 20 12:09:34 server1.yokensaka.com systemd[1]: Unit clamd.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

ソケットファイルが見つからないというエラーで clamd が起動しなくなる。原因はcentos7では/ver/runがtempfsになったので再起動後にはディレクトリ等全て消えてしまう。なのでソケットファイルが見つからないというエラーになるのではと思う。

■手動でソケット用ディレクトリーを作成してclamdを起動させてみる

[root@server1 ~]# mkdir /var/run/clamav
[root@server1 ~]# chown -R clamav:clamav /var/run/clamav
[root@server1 ~]# chmod -R 700 /var/run/clamav
[root@server1 ~]# systemctl start clamd
[root@server1 ~]# systemctl status clamd
clamd.service - SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server.
   Loaded: loaded (/etc/rc.d/init.d/clamd)
   Active: active (running) since 日 2014-07-20 12:02:43 JST; 7s ago
  Process: 2583 ExecStart=/etc/rc.d/init.d/clamd start (code=exited, status=0/SUCCESS)
 Main PID: 2586 (clamd)
   CGroup: /system.slice/clamd.service
           └─2586 clamd

 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: ELF support enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: Detection of broken executables enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: Mail files support enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: OLE2 support enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: PDF support enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: SWF support enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: HTML support enabled.
 7月 20 12:02:42 server1.yokensaka.com clamd[2586]: Self checking every 600 seconds.
 7月 20 12:02:43 server1.yokensaka.com clamd[2583]: Starting Clam AntiVirus Daemon: [  OK  ]
 7月 20 12:02:43 server1.yokensaka.com systemd[1]: Started SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server..

起動できた

再起動後にディレクトリーを作成するように設定ファイルを編集(赤字の部分を追記)

[root@server1 ~]# vi /etc/init.d/clamd
#!/bin/sh
#
# Startup script for the Clam AntiVirus Daemon
#
# chkconfig: 2345 61 39
# description: Clam AntiVirus Daemon is a TCP/IP or socket protocol \
#              server.
# processname: clamd
# pidfile: /var/run/clamav/clamd.pid
# config: /etc/clamav.conf

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

[ -x /usr/sbin/clamd ] || exit 0

start(){
        echo -n "Starting Clam AntiVirus Daemon: "
        #再起動後にclamavのdirを作成
        mkdir /var/run/clamav > /dev/null 2>&1
        schown clamav:clamav /var/run/clamav > /dev/null 2>&1
        daemon clamd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/clamd
        return $RETVAL
}

stop() {
        echo -n "Stopping Clam AntiVirus Daemon: "
        killproc clamd
        rm -f /var/clamav/clamd.socket
        rm -f /var/run/clamav/clamav.pid
        RETVAL=$?
        echo
        ### heres the fix... we gotta remove the stale files on restart
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/clamd
        return $RETVAL
}

restart() {
        stop
        start
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status clamd
        RETVAL=$?
        ;;
  restart|reload)
        restart
        ;;
  condrestart)
        [ -e /var/lock/subsys/clamd ] && $0 restart
        RETVAL=$?
        ;;
  *)
        echo "Usage: clamd {start|stop|status|restart|reload|condrestart}"
        exit 1
esac

exit $RETVAL

2015/1/2追記
以前はclamdの設定ファイルを編集していたが、/etc/tmpfiles.d/にclamd.confを追記することで、OS起動時に/var/run/clamavディレクトリを作成できるように変更

[root@server1 ~]# vi /etc/tmpfiles.d/clamd.conf
d /var/run/clamav 0755 root root - ← 追加
[root@server1 ~]# systemd-tmpfiles --create clamd.conf

systemdをリロード
[root@server1 ~]# systemctl daemon-reload
clamdを再起動
[root@server1 ~]# systemctl restart clamd

■確認

[root@server1 ~]# reboot

[root@server1 ~]# systemctl status clamd
clamd.service - SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server.
   Loaded: loaded (/etc/rc.d/init.d/clamd)
   Active: active (running) since 金 2015-01-02 16:24:11 JST; 30s ago
  Process: 1005 ExecStart=/etc/rc.d/init.d/clamd start (code=exited, status=0/SUCCESS)
 Main PID: 1480 (clamd)
   CGroup: /system.slice/clamd.service
           └─1480 clamd

 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: ELF support enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: Detection of broken executables enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: Mail files support enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: OLE2 support enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: PDF support enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: SWF support enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: HTML support enabled.
 1月 02 16:24:10 server1.yokensaka.com clamd[1480]: Self checking every 600 seconds.
 1月 02 16:24:11 server1.yokensaka.com clamd[1005]: Starting Clam AntiVirus Daemon: [  OK  ]
 1月 02 16:24:11 server1.yokensaka.com systemd[1]: Started SYSV: Clam AntiVirus Daemon is a TC.....
Hint: Some lines were ellipsized, use -l to show in full.

自動起動できた。

■epel.repoでclamを除外 2015年2月14日追記
Clam AntiVirusはRepoforgeリポジトリのものを使っているが、Repoforgeリポジトリとepelリポジトリの両方を有効にしていると、Clam AntiVirusのyum updateでエラーになり、全てのupdateが出来なくなるので、epel.repoでclamを除外しておく。

[root@server1 ~]# vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1 ← 1 に設定
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=clam* ← clamはRepoforgeのものを使うのでepelのclamは除外

ClamAV version: 0.97.3にアップデート

今までは、ClamAVの最新版が出るとその都度wgetでソースからインストールしてたが、yumでインストールすることにした。
■古いバージョンのclamavがある場合はアンインストールしておく

アンインストール用にバックアップしてあったモジュールを展開。
[root@server1 ~]# tar zxvf clamav-0.97.2_self.tar.gz
clamav-0.97.2のディレクトリへ移動
[root@server1 ~]# cd clamav-0.97.2
clamav-0.97.2のアンインストール
[root@server1 clamav-0.97.2]# make uninstall
clamav-0.97.2のファイルとディレクトリーを削除
[root@server1 clamav-0.97.2]# cd
[root@server1 ~]# rm -f clamav-0.97.2_self.tar.gz
[root@server1 ~]# rm -rf clamav-0.97.2
古いバージョンのディレクトリーの削除
[root@server1 ~]# rm -rf /usr/local/clamav

■Clam AntiVirusのインストール
yumでインストールする場合、レポジトリにEPELを追加しておく必要がある

[root@server1 ~]# yum -y install clamd
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
* base: rsync.atworks.co.jp
* centosplus: centos.tt.co.kr
* epel: ftp.yz.yamagata-u.ac.jp
* extras: rsync.atworks.co.jp
* updates: centos.tt.co.kr
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package clamd.i686 0:0.97.3-3.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================
Package               Arch                 Version                      Repository            Size
====================================================================================================
Installing:
clamd                 i686                 0.97.3-3.el6                 epel                 128 k
Transaction Summary
====================================================================================================
Install       1 Package(s)
Total download size: 128 k
Installed size: 380 k
Downloading Packages:
clamd-0.97.3-3.el6.i686.rpm                                                  | 128 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : clamd-0.97.3-3.el6.i686                                                          1/1
Installed:
clamd.i686 0:0.97.3-3.el6
Complete!

■設定ファイル変更
ルートで動作するように変更

[root@server1 ~]# vi /etc/clamd.conf
User clam
↓
#User clam

■Clam AntiVirusの起動

[root@server1 ~]# /etc/rc.d/init.d/clamd start
Starting Clam AntiVirus Daemon:                            [  OK  ]
clamdの自動起動設定
[root@server1 ~]# chkconfig clamd on
[root@server1 ~]# chkconfig --list clamd
clamd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

■「freshclam」を使用してVirusDBをアップデート

ウィルス定義ファイルの更新機能を有効化
[root@server1 ~]# sed -i 's/Example/#Example/g' /etc/freshclam.conf
VirusDBをアップデート
[root@server1 ~]# freshclam
ClamAV update process started at Wed Feb 15 20:23:11 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Downloading daily-14460.cdiff [100%]
daily.cld updated (version: 14460, sigs: 97288, f-level: 63, builder: ccordes)
bytecode.cld is up to date (version: 167, sigs: 40, f-level: 63, builder: edwin)
Database updated (1141715 signatures) from db.jp.clamav.net (IP: 203.178.137.175)

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

[root@server1 ~]# clamscan --infected --remove --recursive /etc/passwd
----------- SCAN SUMMARY -----------
Known viruses: 1140422
Engine version: 0.97.3
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 8.730 sec (0 m 8 s)
version: 0.97.3でスキャンされてることを確認

■Clam AntiVirusの定期自動実行設定

毎日自動的にウィルス定義ファイル最新化して、全てのファイルのウィルススキャンを行うスプリクトの作成
[root@server1 ~]# vi clamscan
#!/bin/bash
PATH=/usr/bin:/bin
# clamd update
yum -y update clamd > /dev/null 2>&1
# excludelist
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
# scan
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
# report
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP

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

[root@server1 ~]# chmod +x clamscan

■ウィルススキャン実行スクリプトを毎日自動実行されるディレクトリへ移動

[root@server1 ~]# mv clamscan /etc/cron.daily/

■スキャン除外設定

/backupディレクトリと/sysディレクトリをスキャン対象外にするように設定
[root@server1 ~]# echo "/backup/" >> clamscan.exclude
[root@server1 ~]# echo "/sys/" >> clamscan.exclude

freshclam でエラー

今朝、freshclamが正常に動いてなくエラーになってるメールが届いた。
/etc/cron.daily/freshclam:
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
ERROR: Can’t open /var/log/clamav/freshclam.log in append mode (check permissions!).
どうもパーミッションが悪いからエラーになってるようだ。
ログのオーナーを確認

[root@server1 ~]# ll /var/log/clamav
合計 200
-rw-r--r-- 1 clamav clamav  9824 10月  1 23:52 2012 clamd.log
-rw-r--r-- 1 clam   clam   26371  9月  9 08:24 2012 clamd.log-20120909
-rw-r--r-- 1 clam   clam   26769  9月 16 08:22 2012 clamd.log-20120916
-rw-r--r-- 1 clam   clam   26828  9月 23 08:38 2012 clamd.log-20120923
-rw-r--r-- 1 clam   clam   54325  9月 30 07:07 2012 clamd.log-20120930
-rw-r--r-- 1 clamav clamav     0  9月 30 07:07 2012 freshclam.log
-rw-r--r-- 1 clam   clam    4401  9月  9 08:24 2012 freshclam.log-20120909
-rw-r--r-- 1 clam   clam    4917  9月 16 08:22 2012 freshclam.log-20120916
-rw-r--r-- 1 clam   clam    5084  9月 23 08:38 2012 freshclam.log-20120923
-rw-r--r-- 1 clam   clam    4841  9月 30 07:07 2012 freshclam.log-20120930

古いものはオーナーが clam だが新しいものは clamav になっている。
オーナーの変更

[root@server1 ~]# chown clamav:clamav /var/log/clamav/clamd*
[root@server1 ~]# chown clamav:clamav /var/log/clamav/freshclam*

再確認

[root@server1 ~]# ll /var/log/clamav
合計 200
-rw-r--r-- 1 clamav clamav 10159 10月  2 00:22 2012 clamd.log
-rw-r--r-- 1 clamav clamav 26371  9月  9 08:24 2012 clamd.log-20120909
-rw-r--r-- 1 clamav clamav 26769  9月 16 08:22 2012 clamd.log-20120916
-rw-r--r-- 1 clamav clamav 26828  9月 23 08:38 2012 clamd.log-20120923
-rw-r--r-- 1 clamav clamav 54325  9月 30 07:07 2012 clamd.log-20120930
-rw-r--r-- 1 clamav clamav     0  9月 30 07:07 2012 freshclam.log
-rw-r--r-- 1 clamav clamav  4401  9月  9 08:24 2012 freshclam.log-20120909
-rw-r--r-- 1 clamav clamav  4917  9月 16 08:22 2012 freshclam.log-20120916
-rw-r--r-- 1 clamav clamav  5084  9月 23 08:38 2012 freshclam.log-20120923
-rw-r--r-- 1 clamav clamav  4841  9月 30 07:07 2012 freshclam.log-20120930

freshclam を使用して VirusDB をアップデート

[root@server1 ~]# freshclam
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

やはりエラーになり、アップデート出来ない。
/etc/freshclam.conf を確認。
DatabaseOwner が clam になってたので clamav に直す。

[root@server1 ~]# vi /etc/freshclam.conf
# 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 clam
    ↓
DatabaseOwner clamav

/etc/logrotate.d/freshclam を確認。
ここは clamav だったが、clam になってたら clamav に直す。

[root@server1 ~]# vi /etc/logrotate.d/freshclam
/var/log/clamav/freshclam.log {
missingok
notifempty
create 644 clamav clamav ← clam になってたら  clamav に直す
}

再度 VirusDB をアップデート

[root@server1 ~]# freshclam
ERROR: Can't create temporary directory /var/lib/clamav/clamav-b130a8764a48d3f68ae52c545a0a9c06
Hint: The database directory must be writable for UID 502 or GID 502

テンポラリファル/var/lib/clamav/clamav-*を作れない。
データベースのディレクトリは UID 502 または GID 502 が書き込み可能である必要がある。
というエラーが出る。
UID 502 または GID 502 を書き込み可能に変更

[root@server1 ~]# chown 502:502 /var/lib/clamav
[root@server1 ~]# chmod 755 /var/lib/clamav
として VirusDB をアップデート
[root@server1 ~]# freshclam
ClamAV update process started at Tue Oct  2 00:34:26 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
nonblock_connect: connect timing out (30 secs)
Can't connect to port 80 of host db.jp.clamav.net (IP: 219.106.242.51)
Trying host db.jp.clamav.net (120.29.176.126)...
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
Downloading daily-15418.cdiff [100%]
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
Downloading daily-15419.cdiff [100%]
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
Downloading daily-15420.cdiff [100%]
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
daily.cld updated (version: 15435, sigs: 275855, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 190, sigs: 36, f-level: 63, builder: neo)
ERROR: Can't open /var/lib/clamav/mirrors.dat for writing
Database updated (1320278 signatures) from db.jp.clamav.net (IP: 203.178.137.175)

/var/lib/clamav/mirrors.dat もオーナーが違うようだ。
なので、/var/lib/clamav/mirrors.dat もオーナー変更して VirusDB をアップデート。

[root@server1 ~]# chown clamav:clamav /var/lib/clamav/mirrors.dat
[root@server1 ~]# freshclam
ClamAV update process started at Tue Oct  2 00:36:35 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
nonblock_connect: connect timing out (30 secs)
Can't connect to port 80 of host db.jp.clamav.net (IP: 219.106.242.51)
Downloading daily-15433.cdiff [100%]
Downloading daily-15434.cdiff [100%]
Downloading daily-15435.cdiff [100%]
daily.cld updated (version: 15435, sigs: 275855, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 190, sigs: 36, f-level: 63, builder: neo)
Database updated (1320278 signatures) from db.jp.clamav.net (IP: 203.178.137.175)

アップデート出来た。とりあえずこれで様子を見てみよう。

ウィルス対策(Clam Antivirus)

Clam AntivirusはGPLライセンスに従って利用することができるオープンソースのソフトウェアであり、LinuxやBSD、Mac OS Xなど各種UNIX系のシステムで動作するアンチウイルスソフト。しかしyumではなかなか最新版にアップデートされないのでwgetでソースからインストールすることにする。
■古いバージョンのclamavがある場合はアンインストールしておく

アンインストール用にバックアップしてあったモジュールを展開。
[root@server1 ~]# tar zxvf clamav-0.97.1_self.tar.gz
clamav-0.97.1のディレクトリへ移動
[root@server1 ~]# cd clamav-0.97.1
clamav-0.97.1のアンインストール
[root@server1 clamav-0.97.1]# make uninstall
clamav-0.97.1のファイルとディレクトリーを削除
[root@server1 clamav-0.97.1]# cd
[root@server1 ~]# rm -f clamav-0.97.1_self.tar.gz
[root@server1 ~]# rm -rf clamav-0.97.1
古いバージョンのディレクトリーの削除
[root@server1 ~]# rm -rf /usr/local/clamav

■ユーザとグループの作成

clamavはインストールする前に
「clamav」という名前のユーザとグループを作成しておく必要がある。
[root@server1 ~]# groupadd clamav
[root@server1 ~]# useradd -g clamav -s /bin/false clamav

■最新版のClamAVをダウンロード (最新版は公式サイトで確認できる

[root@server11 ~]# wget http://downloads.sourceforge.net/clamav/clamav-0.97.2.tar.gz
--2011-09-19 18:44:56--  http://downloads.sourceforge.net/clamav/clamav-0.97.2.tar.gz
downloads.sourceforge.net をDNSに問いあわせています... 216.34.181.59
downloads.sourceforge.net|216.34.181.59|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://downloads.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz [続く]
--2011-09-19 18:44:56--  http://downloads.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz
downloads.sourceforge.net:80 への接続を再利用します。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: http://jaist.dl.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz [続く]
--2011-09-19 18:44:57--  http://jaist.dl.sourceforge.net/project/clamav/clamav/0.97.2/clamav-0.97.2.tar.gz
jaist.dl.sourceforge.net をDNSに問いあわせています... 2001:200:141:feed::feed, 150.65.7.130
jaist.dl.sourceforge.net|2001:200:141:feed::feed|:80 に接続しています... 失敗しました: 接続を拒否されました.
jaist.dl.sourceforge.net|150.65.7.130|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 44703953 (43M) [application/x-gzip]
`clamav-0.97.2.tar.gz' に保存中
100%[=========================================================================>] 44,703,953  15.3M/s 時間 2.8s
2011-09-19 18:45:00 (15.3 MB/s) - `clamav-0.97.2.tar.gz' へ保存完了 [44703953/44703953]
clamav-0.97.2を展開
[root@server1 ~]# tar zxvf clamav-0.97.2.tar.gz
ダウンロードしたファイルを削除
[root@server1 ~]# rm -f clamav-0.97.2.tar.gz
clamav-0.97.2ディレクトリーへ移動
[root@server1 ~]# cd clamav-0.97.2
Makefileを自動作成するためのツール「configure」を実行。
[root@server1 clamav-0.97.2]# ./configure --prefix=/usr/local/clamav
途中、zlib-devel パッケージがインストールされてないようでエラーになった。
zlib-devel パッケージをインストール。
[root@server1 ~]# yum install zlib-devel
再度「configure」を実行。
[root@server1 clamav-0.97.2]# ./configure --prefix=/usr/local/clamav
makeを実行し、clamavをインストール
[root@server1 clamav-0.97.2]# make
[root@server1 clamav-0.97.2]# make install

■アンインストール用にバックアップしておく

[root@server1 clamav-0.97.2]# cd
[root@server1 ~]# tar cvf clamav-0.97.2_self.tar ./clamav-0.97.2
[root@server1 ~]# gzip clamav-0.97.2_self.tar

■設定ファイル変更
インストールが正常に完了したらまず、二つの設定ファイル
/usr/local/clamav/etc/freshclam.conf
/usr/local/clamav/etc/clamd.conf
をエディタで開きExampleと書かれた行をコメントアウトし、保存。

[root@server1 ~]# vi /usr/local/clamav/etc/freshclam.conf
# Comment or remove the line below.
Example
↓
#Example
[root@server1 ~]# vi /usr/local/clamav/etc/clamd.conf
# Comment or remove the line below.
Example
↓
#Example

■「freshclam」を使用してVirusDBをアップデート

[root@server1 ~]# /usr/local/clamav/bin/freshclam
ClamAV update process started at Mon Sep 19 19:24:31 2011
main.cvd is up to date (version: 53, sigs: 846214, f-level: 53, builder: sven)
WARNING: getfile: daily-13357.cdiff not found on remote server (IP: 219.106.242.51)
WARNING: getpatch: Can't download daily-13357.cdiff from database.clamav.net
WARNING: getfile: daily-13357.cdiff not found on remote server (IP: 203.212.42.128)
WARNING: getpatch: Can't download daily-13357.cdiff from database.clamav.net
WARNING: getfile: daily-13357.cdiff not found on remote server (IP: 27.96.54.66)
WARNING: getpatch: Can't download daily-13357.cdiff from database.clamav.net
WARNING: Incremental update failed, trying to download daily.cvd
Downloading daily.cvd [100%]
daily.cvd updated (version: 13636, sigs: 193983, f-level: 60, builder: arnaud)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 144, sigs: 41, f-level: 60, builder: edwin)
Database updated (1040238 signatures) from database.clamav.net (IP: 120.29.176.126)

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

[root@server1 ~]# /usr/local/clamav/bin/clamscan --infected --remove --recursive /etc/passwd
----------- SCAN SUMMARY -----------
Known viruses: 1038820
Engine version: 0.97.2
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 8.935 sec (0 m 8 s)
version: 0.97.2でスキャンされてることを確認

■Clam AntiVirusの定期自動実行設定

毎日自動的にウィルス定義ファイル最新化して、全てのファイルのウィルススキャンを行うスプリクトの作成
[root@server1 ~]# vi clamscan
#!/bin/bash
PATH=/usr/bin:/bin
# excludelist
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
CLAMSCANTMP=`mktemp`
/usr/local/clamav/bin/freshclam > /dev/null
/usr/local/clamav/bin/clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP

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

[root@server1 ~]# chmod 700 clamscan

■cron編集

[root@server1 ~]# crontab -e
00 03 * * * /root/clamscan ← 追加(毎日3:00にClam AntiVirusの定期自動実行)

■スキャン除外設定

/backupディレクトリと/sysディレクトリをスキャン対象外にするように設定
[root@server1 ~]# echo "/backup/" >> clamscan.exclude
[root@server1 ~]# echo "/sys/" >> clamscan.exclude