CentOS7にClam AntiVirusをインストールする。

今回はCentOS7にClam AntiVirus(以下Calmav)をインストールしていきます。

RPMforgeにあるclamdとは異なり、epelリポジトリのClamAVは機能ごとに色々なパッケージに分かれてるようです。

Clamavをインストールする。

ClamAVパッケージをインストールする。

# yum -y install --enablerepo=epel clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
# yum -y install --enablerepo=epel clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: mirror.dmmlabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ clamav.x86_64 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-data.noarch 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-devel.x86_64 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-filesystem.noarch 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-lib.x86_64 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-scanner-systemd.x86_64 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-server-systemd.x86_64 0:0.100.1-1.el7 を インストール
---> パッケージ clamav-update.x86_64 0:0.100.1-1.el7 を インストール
---> パッケージ clamd.x86_64 0:0.100.1-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================================================================
 Package                                    アーキテクチャー           バージョン                        リポジトリー              容量
========================================================================================================================================
インストール中:
 clamav                                     x86_64                     0.100.1-1.el7                     epel                     641 k
 clamav-data                                noarch                     0.100.1-1.el7                     epel                     159 M
 clamav-devel                               x86_64                     0.100.1-1.el7                     epel                      45 k
 clamav-filesystem                          noarch                     0.100.1-1.el7                     epel                      26 k
 clamav-lib                                 x86_64                     0.100.1-1.el7                     epel                     757 k
 clamav-scanner-systemd                     x86_64                     0.100.1-1.el7                     epel                      25 k
 clamav-server-systemd                      x86_64                     0.100.1-1.el7                     epel                      25 k
 clamav-update                              x86_64                     0.100.1-1.el7                     epel                     100 k
 clamd                                      x86_64                     0.100.1-1.el7                     epel                     118 k

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

総ダウンロード容量: 160 M
インストール容量: 163 M
Downloading packages:
(1/9): clamav-0.100.1-1.el7.x86_64.rpm                                                                           | 641 kB  00:00:00
(2/9): clamav-data-0.100.1-1.el7.noarch.rpm                                                                      | 159 MB  00:00:02
(3/9): clamav-devel-0.100.1-1.el7.x86_64.rpm                                                                     |  45 kB  00:00:00
(4/9): clamav-filesystem-0.100.1-1.el7.noarch.rpm                                                                |  26 kB  00:00:00
(5/9): clamav-lib-0.100.1-1.el7.x86_64.rpm                                                                       | 757 kB  00:00:00
(6/9): clamav-scanner-systemd-0.100.1-1.el7.x86_64.rpm                                                           |  25 kB  00:00:00
(7/9): clamav-server-systemd-0.100.1-1.el7.x86_64.rpm                                                            |  25 kB  00:00:00
(8/9): clamav-update-0.100.1-1.el7.x86_64.rpm                                                                    | 100 kB  00:00:00
(9/9): clamd-0.100.1-1.el7.x86_64.rpm                                                                            | 118 kB  00:00:00
----------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                     56 MB/s | 160 MB  00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : clamav-filesystem-0.100.1-1.el7.noarch                                                                  1/9
  インストール中          : clamav-lib-0.100.1-1.el7.x86_64                                                                         2/9
  インストール中          : clamav-update-0.100.1-1.el7.x86_64                                                                      3/9
  インストール中          : clamd-0.100.1-1.el7.x86_64                                                                              4/9
  インストール中          : clamav-server-systemd-0.100.1-1.el7.x86_64                                                              5/9
  インストール中          : clamav-scanner-systemd-0.100.1-1.el7.x86_64                                                             6/9
  インストール中          : clamav-0.100.1-1.el7.x86_64                                                                             7/9
  インストール中          : clamav-devel-0.100.1-1.el7.x86_64                                                                       8/9
  インストール中          : clamav-data-0.100.1-1.el7.noarch                                                                        9/9
  検証中                  : clamav-server-systemd-0.100.1-1.el7.x86_64                                                              1/9
  検証中                  : clamav-0.100.1-1.el7.x86_64                                                                             2/9
  検証中                  : clamav-scanner-systemd-0.100.1-1.el7.x86_64                                                             3/9
  検証中                  : clamav-update-0.100.1-1.el7.x86_64                                                                      4/9
  検証中                  : clamav-devel-0.100.1-1.el7.x86_64                                                                       5/9
  検証中                  : clamav-data-0.100.1-1.el7.noarch                                                                        6/9
  検証中                  : clamav-lib-0.100.1-1.el7.x86_64                                                                         7/9
  検証中                  : clamd-0.100.1-1.el7.x86_64                                                                              8/9
  検証中                  : clamav-filesystem-0.100.1-1.el7.noarch                                                                  9/9

インストール:
  clamav.x86_64 0:0.100.1-1.el7                  clamav-data.noarch 0:0.100.1-1.el7     clamav-devel.x86_64 0:0.100.1-1.el7
  clamav-filesystem.noarch 0:0.100.1-1.el7       clamav-lib.x86_64 0:0.100.1-1.el7      clamav-scanner-systemd.x86_64 0:0.100.1-1.el7
  clamav-server-systemd.x86_64 0:0.100.1-1.el7   clamav-update.x86_64 0:0.100.1-1.el7   clamd.x86_64 0:0.100.1-1.el7

完了しました!

SELinuxを無効化する。

SELinuxはセキュリティ管理をしてくれるとても大事なモジュールです。
しかし、慣れていないとSELinuxによる強力なアクセス制限によってインストール作業や運用業務で返って大きな手間が増えてしまうこともあります。
ClamAVの動作も例外ではなく、SELinuxによって正常に動作することができなくなってしまうので、今回はSELinuxを無効化させます。

次のコマンドでSELinuxの状態を確認します。

# getenforce     ← SELinux状態確認
Enforcing        ← SELinux有効

次のコマンドでSELinuxを無効化させます。

# setenforce 0

再度SELinuxの状態を確認します。

# getenforce      ← SELinux状態確認
Permissive        ← SELinux無効

SELinuxの設定ファイルを開き、システム起動時のSELinuxを無効化させます。

vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
#SELINUX=enforcing  ←#を付けてコメントアウト
SELINUX=disabled   ←追記する
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

ウィルス定義の最新化。

ウィルス定義の更新設定ファイルを開きます。

# vi /etc/freshclam.conf

viエディタで/Comment or remove the line below.へジャンプして、その下の行にあるExampleをコメントアウトします。

# Comment or remove the line below.
Example

⬇このように修正します。

# Comment or remove the line below.
#Example

同様に/Send the RELOAD command to clamd.へジャンプして、行末へNotifyClamd /etc/clamd.d/scan.confを追記します。

# Send the RELOAD command to clamd.
# Default: no
#NotifyClamd /path/to/clamd.conf

⬇このように追記します。

# Send the RELOAD command to clamd.
# Default: no
#NotifyClamd /path/to/clamd.conf
NotifyClamd /etc/clamd.d/scan.conf

ウィルス定義自動更新設定の編集は必要なくなった模様。

従来の0.99.4では/etc/sysconfig/freshclamの編集が必要でしたが、今回使用するVer0.100.0-1では編集箇所が存在しなかったので割愛します。

Clamav設定

Clamavの設定ファイルを開きます。

# vi /etc/clamd.d/scan.conf

ファイルの中身は軽く1500行ほどあるので割愛しますが、修正する場所はほんの数ヶ所です。
viエディタで/Comment or remove the line below.と入力して当該行へジャンプして、次の行のExampleの行頭に#をつけてコメントアウトします。

# Comment or remove the line below.
Example

⬇このように修正します。

# Comment or remove the line below.
#Example

上記と同じように/Run as another userで当該行へジャンプして、行末のUser clamscanをroot権限で使用するため、行頭に#をつけてコメントアウトします。

# Run as another user (clamd must be started by root for this option to work)
# Default: don't drop privileges
User clamscan

⬇このように修正します。

# Run as another user (clamd must be started by root for this option to work)
# Default: don't drop privileges
#User clamscan

/Path to a local socketで当該行へジャンプして、#LocalSocket /var/run/clamd.scan/clamd.sockの#を外して有効にします。

# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
#LocalSocket /var/run/clamd.scan/clamd.sock

⬇このように修正します。

# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
LocalSocket /var/run/clamd.scan/clamd.sock

上記3ヶ所の修正が済んだら保存します。

Clamavの起動。

Clamavを起動します。
実行後は特にメッセージもなく少しの間を置いてカーソルが返って来ます。

# systemctl start clamd@scan

次にClamavを自動起動に設定します。

# systemctl enable clamd@scan

ウィルス定義の最新化。

次のコマンドを実行します。

# freshclam
ClamAV update process started at Sat Jul 14 21:05:32 2018
WARNING Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.100.0 Recommended version: 0.100.1
DON'T PANIC! Read https://www.clamav.net/documents/upgrading-clamav
main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Downloading daily-24612.cdiff [100%]
Downloading daily-24613.cdiff [100%]
Downloading daily-24614.cdiff [100%]
Downloading daily-24615.cdiff [100%]
Downloading daily-24616.cdiff [100%]
Downloading daily-24617.cdiff [100%]
Downloading daily-24618.cdiff [100%]
Downloading daily-24619.cdiff [100%]
Downloading daily-24620.cdiff [100%]
Downloading daily-24621.cdiff [100%]
Downloading daily-24622.cdiff [100%]
Downloading daily-24623.cdiff [100%]
Downloading daily-24624.cdiff [100%]
Downloading daily-24625.cdiff [100%]
Downloading daily-24626.cdiff [100%]
Downloading daily-24627.cdiff [100%]
Downloading daily-24628.cdiff [100%]
Downloading daily-24629.cdiff [100%]
Downloading daily-24630.cdiff [100%]
Downloading daily-24631.cdiff [100%]
Downloading daily-24632.cdiff [100%]
Downloading daily-24633.cdiff [100%]
Downloading daily-24634.cdiff [100%]
Downloading daily-24635.cdiff [100%]
Downloading daily-24636.cdiff [100%]
Downloading daily-24637.cdiff [100%]
Downloading daily-24638.cdiff [100%]
Downloading daily-24639.cdiff [100%]
Downloading daily-24640.cdiff [100%]
Downloading daily-24641.cdiff [100%]
Downloading daily-24642.cdiff [100%]
Downloading daily-24643.cdiff [100%]
Downloading daily-24644.cdiff [100%]
Downloading daily-24645.cdiff [100%]
Downloading daily-24646.cdiff [100%]
Downloading daily-24647.cdiff [100%]
Downloading daily-24648.cdiff [100%]
Downloading daily-24649.cdiff [100%]
Downloading daily-24650.cdiff [100%]
Downloading daily-24651.cdiff [100%]
Downloading daily-24652.cdiff [100%]
Downloading daily-24653.cdiff [100%]
Downloading daily-24654.cdiff [100%]
Downloading daily-24655.cdiff [100%]
Downloading daily-24656.cdiff [100%]
Downloading daily-24657.cdiff [100%]
Downloading daily-24658.cdiff [100%]
Downloading daily-24659.cdiff [100%]
Downloading daily-24660.cdiff [100%]
Downloading daily-24661.cdiff [100%]
Downloading daily-24662.cdiff [100%]
Downloading daily-24663.cdiff [100%]
Downloading daily-24664.cdiff [100%]
Downloading daily-24665.cdiff [100%]
Downloading daily-24666.cdiff [100%]
Downloading daily-24667.cdiff [100%]
Downloading daily-24668.cdiff [100%]
Downloading daily-24669.cdiff [100%]
Downloading daily-24670.cdiff [100%]
Downloading daily-24671.cdiff [100%]
Downloading daily-24672.cdiff [100%]
Downloading daily-24673.cdiff [100%]
Downloading daily-24674.cdiff [100%]
Downloading daily-24675.cdiff [100%]
Downloading daily-24676.cdiff [100%]
Downloading daily-24677.cdiff [100%]
Downloading daily-24678.cdiff [100%]
Downloading daily-24679.cdiff [100%]
Downloading daily-24680.cdiff [100%]
Downloading daily-24681.cdiff [100%]
Downloading daily-24682.cdiff [100%]
Downloading daily-24683.cdiff [100%]
Downloading daily-24684.cdiff [100%]
Downloading daily-24685.cdiff [100%]
Downloading daily-24686.cdiff [100%]
Downloading daily-24687.cdiff [100%]
Downloading daily-24688.cdiff [100%]
Downloading daily-24689.cdiff [100%]
Downloading daily-24690.cdiff [100%]
Downloading daily-24691.cdiff [100%]
Downloading daily-24692.cdiff [100%]
Downloading daily-24693.cdiff [100%]
Downloading daily-24694.cdiff [100%]
Downloading daily-24695.cdiff [100%]
Downloading daily-24696.cdiff [100%]
Downloading daily-24697.cdiff [100%]
Downloading daily-24698.cdiff [100%]
Downloading daily-24699.cdiff [100%]
Downloading daily-24700.cdiff [100%]
Downloading daily-24701.cdiff [100%]
Downloading daily-24702.cdiff [100%]
Downloading daily-24703.cdiff [100%]
Downloading daily-24704.cdiff [100%]
Downloading daily-24705.cdiff [100%]
Downloading daily-24706.cdiff [100%]
Downloading daily-24707.cdiff [100%]
Downloading daily-24708.cdiff [100%]
Downloading daily-24709.cdiff [100%]
Downloading daily-24710.cdiff [100%]
Downloading daily-24711.cdiff [100%]
Downloading daily-24712.cdiff [100%]
Downloading daily-24713.cdiff [100%]
Downloading daily-24714.cdiff [100%]
Downloading daily-24715.cdiff [100%]
Downloading daily-24716.cdiff [100%]
Downloading daily-24717.cdiff [100%]
Downloading daily-24718.cdiff [100%]
Downloading daily-24719.cdiff [100%]
Downloading daily-24720.cdiff [100%]
Downloading daily-24721.cdiff [100%]
Downloading daily-24722.cdiff [100%]
Downloading daily-24723.cdiff [100%]
Downloading daily-24724.cdiff [100%]
Downloading daily-24725.cdiff [100%]
Downloading daily-24726.cdiff [100%]
Downloading daily-24727.cdiff [100%]
Downloading daily-24728.cdiff [100%]
Downloading daily-24729.cdiff [100%]
Downloading daily-24730.cdiff [100%]
Downloading daily-24731.cdiff [100%]
Downloading daily-24732.cdiff [100%]
Downloading daily-24733.cdiff [100%]
Downloading daily-24734.cdiff [100%]
Downloading daily-24735.cdiff [100%]
Downloading daily-24736.cdiff [100%]
Downloading daily-24737.cdiff [100%]
Downloading daily-24738.cdiff [100%]
Downloading daily-24739.cdiff [100%]
Downloading daily-24740.cdiff [100%]
Downloading daily-24741.cdiff [100%]
Downloading daily-24742.cdiff [100%]
Downloading daily-24743.cdiff [100%]
Downloading daily-24744.cdiff [100%]
Downloading daily-24745.cdiff [100%]
Downloading daily-24746.cdiff [100%]
Downloading daily-24747.cdiff [100%]
Downloading daily-24748.cdiff [100%]
Downloading daily-24749.cdiff [100%]
Downloading daily-24750.cdiff [100%]
Downloading daily-24751.cdiff [100%]
daily.cld updated (version: 24751, sigs: 2013133, f-level: 63, builder: neo)
Downloading bytecode-320.cdiff [100%]
Downloading bytecode-321.cdiff [100%]
Downloading bytecode-322.cdiff [100%]
Downloading bytecode-323.cdiff [100%]
Downloading bytecode-324.cdiff [100%]
bytecode.cld updated (version: 324, sigs: 89, f-level: 63, builder: neo)
Database updated (6579471 signatures) from database.clamav.net (IP: 104.16.186.138)

ウィルススキャンテストを実施する。

ウィルススキャンテストを実施します。

# clamdscan -c /etc/clamd.d/scan.conf --remove
/etc/clamd.d: OK

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

テスト用ウィルスを搭載してのウィルススキャンテストを実施。

テスト用ウィルスをダウンロードする。

次の4つのテスト用ウィルスをダウンロードします。

# wget https://www.eicar.org/download/eicar.com
# wget https://www.eicar.org/download/eicar.com.txt
# wget https://www.eicar.org/download/eicar_com.zip
# wget https://www.eicar.org/download/eicarcom2.zip
# wget https://www.eicar.org/download/eicar.com
--2018-07-14 21:33:32--  https://www.eicar.org/download/eicar.com
www.eicar.org (www.eicar.org) をDNSに問いあわせています... 213.211.198.62
www.eicar.org (www.eicar.org)|213.211.198.62|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 68 [application/octet-stream]
`eicar.com' に保存中

100%[=======================================================================================>] 68          --.-K/s 時間 0s

2018-07-14 21:33:33 (2.12 MB/s) - `eicar.com' へ保存完了 [68/68]

# wget https://www.eicar.org/download/eicar.com.txt
--2018-07-14 21:34:08--  https://www.eicar.org/download/eicar.com.txt
www.eicar.org (www.eicar.org) をDNSに問いあわせています... 213.211.198.62
www.eicar.org (www.eicar.org)|213.211.198.62|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 68 [application/octet-stream]
`eicar.com.txt' に保存中

100%[=======================================================================================>] 68          --.-K/s 時間 0s

2018-07-14 21:34:09 (2.06 MB/s) - `eicar.com.txt' へ保存完了 [68/68]

# wget https://www.eicar.org/download/eicar_com.zip
--2018-07-14 21:34:16--  https://www.eicar.org/download/eicar_com.zip
www.eicar.org (www.eicar.org) をDNSに問いあわせています... 213.211.198.62
www.eicar.org (www.eicar.org)|213.211.198.62|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 184 [application/octet-stream]
`eicar_com.zip' に保存中

100%[=======================================================================================>] 184         --.-K/s 時間 0s

2018-07-14 21:34:17 (5.59 MB/s) - `eicar_com.zip' へ保存完了 [184/184]

# wget https://www.eicar.org/download/eicarcom2.zip
--2018-07-14 21:34:23--  https://www.eicar.org/download/eicarcom2.zip
www.eicar.org (www.eicar.org) をDNSに問いあわせています... 213.211.198.62
www.eicar.org (www.eicar.org)|213.211.198.62|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 308 [application/octet-stream]
`eicarcom2.zip' に保存中

100%[=======================================================================================>] 308         --.-K/s 時間 0s

2018-07-14 21:34:24 (8.84 MB/s) - `eicarcom2.zip' へ保存完了 [308/308]

テスト用ウィルス入りでウィルススキャンテストを実施する。

先ほどと同様にウィルススキャンテストを実施します。

# clamdscan -c /etc/clamd.d/scan.conf --remove
/etc/clamd.d/eicar.com: Eicar-Test-Signature FOUND
/etc/clamd.d/eicar.com: Removed.
/etc/clamd.d/eicar.com.txt: Eicar-Test-Signature FOUND
/etc/clamd.d/eicar.com.txt: Removed.
/etc/clamd.d/eicar_com.zip: Eicar-Test-Signature FOUND
/etc/clamd.d/eicar_com.zip: Removed.
/etc/clamd.d/eicarcom2.zip: Eicar-Test-Signature FOUND
/etc/clamd.d/eicarcom2.zip: Removed.

----------- SCAN SUMMARY -----------
Infected files: 4
Time: 0.012 sec (0 m 0 s)

このように、4つのウィルスを発見し削除されました。
これで動作テストは完了となります。

ウィルススキャンの定期自動実行の設定を施す。

/etc/cron.daily/clamdscanを開き、日次実行スクリプトを作成したら、以下のスクリプトを記述します。

#!/bin/sh

# 設定ファイル
CONFIG=/etc/clamd.d/scan.conf

# スキャン実行
# ※ウイルス検知時は隔離ディレクトリへ隔離
CLAMSCANLOG=`mktemp`
QUARANTINEDIR=/tmp/clamdscan-quarantinedir-$(date +%Y%m%d)
mkdir -p ${QUARANTINEDIR}
clamdscan -c ${CONFIG} --move=${QUARANTINEDIR} / > ${CLAMSCANLOG} 2>&1

# ウイルス検知時のみroot宛にメール通知
if [ -z "$(grep FOUND$ ${CLAMSCANLOG})" ]; then
    rm -rf ${QUARANTINEDIR}
else
    grep -A 1 FOUND$ ${CLAMSCANLOG} | mail -s "Virus Found in `hostname` => ${QUARANTINEDIR}" root
fi

# スキャンログをシスログに出力
cat ${CLAMSCANLOG} | logger -t $(basename ${0})
rm -f ${CLAMSCANLOG}

ウィルススキャン日次実行スクリプトへ実行権限を付与します。

# chmod +x /etc/cron.daily/clamdscan

スキャン対象外のディレクトリを設定する。
例えば、/procディレクトリをスキャン対象外とするならば、以下の様に記述し実行します。
全てをスキャンする場合なら、このような設定は不要です。

# echo ExcludePath ^/proc/ >> /etc/clamd.d/scan.conf

スキャン対象外のディレクトリを設定した場合は、最後にClamavを再起動が必要になります。

# systemctl restart clamd@scan

以上で、Clamavのインストールと設定は完了となります。

この記事はいかがでしたか?
良かったらポチッとお願いします!励みになります!!


//