1 views

実現する機能

SELinuxを有効にしているので、Linux用のフリーのアンチウィルスソフトの必要性を感じていなかったのですが、サーバーの稼働から半年以上が経過したので、この辺りでClam AntiVirusを導入することにしました。本当にウィルスに感染していないのか、確認してみたくなったのです。例えていえば、ウィルスソフトは玄関の鍵、SELinuxは各部屋の鍵です。ウィルスが家の玄関や廊下に潜んでいるのか興味津々です。

事前準備

CentOS 7.0 インストール直後の初期設定を参照してRPMforgeリポジトリが導入済であること
本サイトは「CentOSで自宅サーバー構築」サイトの記述を引用して作成

Clam AntiVirusインストール

[root@ufuso ~]# yum -y install clamd --enablerepo=rpmforge
 ← Clam AntiVirusインストール
インストール:
  clamd.x86_64 0:0.98.4-1.el7.rf                                                

依存性関連をインストールしました:
  clamav.x86_64 0:0.98.4-1.el7.rf       clamav-db.x86_64 0:0.98.4-1.el7.rf      

完了しました!

Clam AntiVirus設定

[root@ufuso ~]# vi /etc/clamd.conf ← clamd設定ファイル編集
# Run as another user (clamd must be started by root for this option to work)
# Default: don't drop privileges
User clamav
↓
#User clamav ← root権限で動作するようにする

[root@ufuso ~]# vi /etc/freshclam.conf ← ウィルスデータベース更新設定ファイル編集

# Uncomment the following line and replace XY with your country
# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list.
#DatabaseMirror db.XY.clamav.net
DatabaseMirror db.jp.clamav.net ← ウィルスデータベース入手元を日本に変更

Clam AntiVirus起動

[root@ufuso ~]# systemctl start clamd ← clamd起動

[root@ufuso ~]# systemctl enable clamd ← 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, ...).

[root@ufuso ~]# chkconfig clamd on ← clamd自動起動設定やり直し

ウィルス定義ファイル最新化

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

[root@ufuso ~]# freshclam ← ウィルス定義ファイル最新化
Clamd successfully notified about the update.

※以後のウィルス定義ファイルのアップデートは、/etc/cron.daily/freshclamにより毎日自動で行われる

ウィルススキャン定期自動実行設定

[root@ufuso ~]# vi clamscan ← ウィルススキャン実行スクリプト作成

#!/bin/bash

PATH=/usr/bin:/bin

# clamd update
yum -y update clamd > /dev/null 2>&1

# excludeopt setup
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

# signature update
freshclam > /dev/null

# virus scan
CLAMSCANTMP=`mktemp`
clamscan --recursive --remove ${excludeopt} / > $CLAMSCANTMP 2>&1
[ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && 

# report mail send
grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found in `hostname`" root
rm -f $CLAMSCANTMP

[root@ufuso ~]# chmod +x clamscan ← ウィルススキャン実行スクリプトへ実行権限付加

[root@ufuso ~]# echo "/backup/backup.tar.bz2" >> clamscan.exclude
 ← 例として/backup/backup.tar.bz2をスキャン対象外にする

[root@ufuso ~]# echo "/proc/" >> clamscan.exclude
 ← 例として/procディレクトリをスキャン対象外にする

[root@ufuso ~]# echo "/sys/" >> clamscan.exclude
 ← 例として/sysディレクトリをスキャン対象外にする

※ディレクトリを除外する場合は末尾に「/」を付加すること

[root@ufuso ~]# mv clamscan /etc/cron.daily/
 ← ウィルススキャン実行スクリプトを毎日自動実行されるディレクトリへ移動

これで、毎日定期的に全ファイルのウィルススキャンが行われ、ウィルスを検知した場合のみroot宛にメールが送られてくるようになる。
※Clam AntiVirusインストールディレクトリにテスト用ウィルスがあるので、インストール後最初の全体スキャンでは必ずウィルス検知メールがくる

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください