LoginSignup
12
15

More than 5 years have passed since last update.

Clam AntiVirus を AWS EC2 にインストールする

Last updated at Posted at 2016-09-15

やりたい事

AWS の EC2 インスタンスに無料の Clam AntiVirus をインストールし、定期的にスキャンして感染していた場合メールで通知します。

インストール

sudo su -l
yum install -y clamd clamav-db

コンフィグ編集

clamd.conf

そのままの場所だとclamdが想定するパスではないので、コピーして編集します。
service clamd.scan start では初期パスが使われるので、シンボリックリンクを貼っておきます。

cp /etc/clamd.d/scan.conf /etc/clamd.conf
mv /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.bak
ln -s /etc/clamd.conf /etc/clamd.d/scan.conf
vi /etc/clamd.conf
# コメントアウトする
# Example

# コメントアウトして root で動作するようにする
# User clamav

# コメントアウトされてなかったらコメントアウトする
# DetectBrokenExecutables yes

# ログ系の設定
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogTime yes
LogSyslog yes
LogRotate yes

# ローカルモードで動作させる
LocalSocket /var/run/clamd.scan/clamd.sock
LocalSocketMode 660

# 除外ディレクトリ指定
ExcludePath ^/proc/
ExcludePath ^/sys/

freshclam.conf

vi /etc/freshclam.conf
# コメントアウトする
# Example

# ログ系の設定
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogSyslog yes
LogRotate yes

# アップデートしたら Clamd に通知して再読込させる
# service clamd start してないと失敗する模様?
NotifyClamd /etc/clamd.conf

ウィルス定義の更新設定

vi /etc/sysconfig/freshclam
#FRESHCLAM_DELAY=disabled-warn  # REMOVE ME

サービスの起動

Clamd 起動

clamd start

LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days!  ***
LibClamAV Warning: ***   Please update it as soon as possible.    ***
LibClamAV Warning: **************************************************

clamd start 後の stop, restart について

clamd startしたあと、clamd stopしても「ソケットが使われてるよ」エラーになります。

ERROR: LOCAL: Socket file /var/run/clamd.scan/clamd.sock is in use by another process.

start した後は、ソケットを介して clamd を通信するようです。
http://clamav-jp.osdn.jp/jdoc/clamav.html

下記のようにソケットを介してコマンドを送れば停止できます。

echo SHUTDOWN | nc -U /var/run/clamd.scan/clamd.sock

ウィルス定義のアップデート

freshclam

ClamAV update process started at Thu Sep 15 05:40:56 2016
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.98.7 Recommended version: 0.99.2
DON'T PANIC! Read http://www.clamav.net/support/faq
Empty script main-56.cdiff, need to download entire database
Downloading main.cvd [100%]
(中略)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 283, sigs: 53, f-level: 63, builder: neo)
Database updated (4832725 signatures) from database.clamav.net (IP: 27.96.54.66)

サービスとして clamd 起動

# もし clamd start してたら下記で止める
echo SHUTDOWN | nc -U /var/run/clamd.scan/clamd.sock

# サービスとして起動
chkconfig clamd.scan on
service clamd.scan start

自動でウィルス定義をアップデート

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.

/usr/bin/freshclam --quiet
chmod 755 /etc/cron.daily/freshclam

自動でウィルススキャンして感染していたらメール通知

touch /usr/local/bin/clamdscan_path.sh
chmod 755 /usr/local/bin/clamdscan_path.sh
vi /usr/local/bin/clamdscan_path.sh
#!/bin/sh

if [ $# -ne 1 ]; then
  echo "Usage : clamdscan_path.sh /scan/target/path/" 1>&2
  exit 1
fi

SCAN_DIR=$1
LOG="/var/log/clamdscan_result.log"
LOG_LATEST="/var/log/clamdscan_result.log.latest"
FROM="noreply@test.com"
TO="sample@mail.com"

#-----------------------------
# update clamd

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

#-----------------------------
# restart clamd (release memory)

/sbin/service clamd.scan restart > /dev/null

#-----------------------------
# scan

/usr/bin/clamdscan --infected --log=$LOG $SCAN_DIR > $LOG_LATEST

#-----------------------------
# send email if virus is found

cat $LOG_LATEST | grep 'FOUND' > /dev/null
if [ "$?" -eq 0 ]
then
  {
    echo "From: $FROM"
    echo "To: $TO"
    echo "Subject: [SERVER] Virus Found in `hostname`"
    echo
    echo "Virus Found in `hostname`"
    echo
    cat $LOG
  } | /usr/sbin/sendmail -f $FROM $TO

fi

cronで定期的に起動するようにする

crontab -e
## Virus Check

# 例えばホームディレクトリを毎朝3時にスキャン
00 3 * * * /usr/local/bin/clamdscan_path.sh /home/

clamd はそこそこ重たいので、このスクリプトでは毎回再起動してます。スクリプト内で再起動しない場合は、週一くらいで再起動させるcronを登録すると良いでしょう。

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15