CentOS Stream 8 のウィルス対策にClam AntiVirusをインストール

CentOS Stream 8 をVMware ESXi にインストールした覚書です。

今回は、wheel ユーザーの設定を行っていきたいと思います。

wheel ユーザーの設定をすると、 su するときにパスワードが不要になります。
また、 su で root になれるユーザーを制限することもできます。

なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。

環境

実施日2021-08-12
サーバ VMware ESXi 6.7 U3
OS CentOS Stream 8
cat /etc/redhat-release
CentOS Stream release 8

Clam AntiVirusのインストール

epelからインストールします。

epelをまだ設定していない場合はこちら

dnf --enablerepo=epel install clamav clamav-scanner-systemd clamav-update

設定の変更

vi /etc/clamd.d/scan.conf
# をつけてコメントアウト
# Example

コメントを外す
LogFile /var/log/clamd.scan
LogFileMaxSize 2M
LogTime yes
LogRotate yes
LocalSocket /var/run/clamd.scan/clamd.sock
FixStaleSocket yes
ExcludePath ^/proc/
ExcludePath ^/sys/

変更
User root

コマンド集

# 手動起動
systemctl start clamd@scan

# 自動起動が有効か確認
systemctl list-unit-files | grep clamd*

# 自動起動にセット
systemctl enable clamd@scan

# 起動状況の確認
systemctl status clamd@scan

ウィルスデータベースの設定

vi /etc/freshclam.conf
# をつけてコメントアウト
# Example

コメントを外す
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogRotate yes

変更
DatabaseOwner root
DatabaseMirror db.jp.clamav.net
NotifyClamd /etc/clamd.d/scan.conf

手動でウィルスデータベースを更新

freshclam -u root

スキャンテスト

# スキャンテスト
clamscan --infected --remove --recursive

# テスト用ウィルスをダウンロード
cd /tmp
wget http://www.eicar.org/download/eicar.com
wget http://www.eicar.org/download/eicar.com.txt
wget http://www.eicar.org/download/eicar_com.zip
wget http://www.eicar.org/download/eicarcom2.zip

# もう一度、スキャンテスト
clamscan --infected --remove --recursive
# テスト用ウィルスがひっかかったことを確認できます。

# ディレクトリを指定してスキャン
clamscan --infected --remove --recursive /tmp

スキャンスクリプトの作成

cd
vi clamscan
#!/bin/bash

PATH=/usr/bin:/bin

# clamd update
dnf -y update clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd > /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


# 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
chmod +x clamscan

スキャン対象外の設定

vi /root/clamscan.exclude
/dev/
/etc/
/media/
/mnt/
/opt/
/proc/
/run/
/srv/
/sys/
/usr/
/var/

ディレクトリのときは末尾の / 必須

自動定期スキャン登録

crontab -e
MAILTO="cron@example.com"
0 * * * * /root/clamscan