インストール
いつも通りyumでインストール。
yum install epel-release #以前に行っていれば不要
yum install clamav clamav-update clamav-scanner-systemd
設定ファイル更新
動作の為の設定をもろもろ。
-
/etc/clamd.d/scan.conf
ClamAVの基本設定を行う。vi /etc/clamd.d/scan.conf
#Example #コメントアウト 存在すると動作しなくなる LogFile /var/log/clamd/clamd.scan #コメントをはずす&修正 ログの有効化 LogFileMaxSize 2M #コメントをはずす ログファイルのサイズ LogTime yes #コメントをはずす ログに時間を表示 LogRotate yes #コメントをはずす ログローテーションを有効化 LocalSocket /var/run/clamd.scan/clamd.sock #コメントをはずす ローカルソケット使用 FixStaleSocket yes #コメントをはずす 異常終了のときにソケット削除 ExcludePath ^/proc/ #コメントをはずす 除外フォルダ設定 ExcludePath ^/sys/ #コメントをはずす 除外フォルダ設定 ExcludePath ^/boot/ #追加 除外フォルダ設定 ExcludePath ^/tmp/clamdscan/ #追加 除外フォルダ設定 User root #追加 実行ユーザ
-
/etc/freshclam.conf
ClamAVのウィルス定義ファイルの更新についての設定を行う。vi /etc/freshclam.conf
#Example #コメントアウト 存在すると動作しなくなる UpdateLogFile /var/log/freshclam/freshclam.log #コメントをはずす&修正 ログの有効化 LogFileMaxSize 2M #コメントをはずす ログファイルのサイズ LogTime yes #コメントをはずす ログに時間を表示 LogRotate yes #コメントをはずす ログローテーションを有効化 DatabaseOwner root #追加 検査用データベースの所持者 DatabaseMirror db.jp.clamav.net #追加 ウィルス定義ファイルの更新先を日本のものにする #NotifyClamd /path/to/clamd.conf #コメントアウト 下記に修正 NotifyClamd /etc/clamd.d/scan.conf #追加 ウィルス定義の更新があった場合の通知先
この辺り導入のバージョンによって違うっぽい。
シンボリックリンク作成
Clamdを使用する際、設定ファイル /etc/clamd.d/scan.conf ではなく /etc/clamd.conf を見にいくようなので、設定を1本化するため、シンボリックリンクを作成する。
mv /etc/clamd.conf /etc/clamd.conf.bak
ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
ウィルス定義最新化
最新のウィルス定義ファイルを取得する。
freshclam
起動
設定が終わったら起動する。
systemctl start clamd@scan #起動
systemctl enable clamd@scan #自動起動設定
実行テスト
ここまで設定が完了し起動したら、実際にウィルススキャンを行ってみる。
-
正常終了の場合
clamdscan /root #rootフォルダを検索
/root: OK #ウィルスなし
----------- SCAN SUMMARY -----------
Infected files: 0
Time: 0.232 sec (0 m 0 s) -
ウィルスが存在する場合
wget http://www.eicar.org/download/eicar.com #ウィルステスト用ファイルのダウンロード ls
anaconda-ks.cfg eicar.com #テスト用ファイルeicar.comが保存されているclamdscan /root --remove #rootフォルダを検索。ウィルスファイルを見つけたら削除するよう指定(--remove)
/root/eicar.com: Eicar-Test-Signature FOUND #ウィルスファイルが検出される
/root/eicar.com: Removed. #ウィルスファイルを削除
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 0.065 sec (0 m 0 s)ls #ウィルステスト用ファイルeicar.comが削除されているのを確認
anaconda-ks.cfg
定期実行
定期的に検査を行えるよう、cronに登録を行っておく。
- スクリプト作成
/etc/cron.dailiyフォルダ内にclamdscanという名前でスクリプトを作成する。vi /etc/cron.daily/clamdscan
#!/bin/bash MAIL_TO=root MAIL_SUBJECT="`hostname -s` `date +%Y%m%d_%H-%M-%S` ClamAV" mkdir -p /tmp/clamdscan/ CLAMD_SCAN_LOG=`mktemp /tmp/clamdscan/temp.XXXXXX` QUARANTINE_DIR=`mktemp -d /tmp/clamdscan/quarantinedir-$(date +%Y%m%d).XXXXXX` clamdscan --move=${QUARANTINE_DIR} / 2>&1 > ${CLAMD_SCAN_LOG} if [ -z "$(grep FOUND$ ${CLAMD_SCAN_LOG})" ]; then echo "$MAIL_SUBJECT OK" | mail -s "$MAIL_SUBJECT OK" $MAIL_TO rm -rf ${QUARANTINE_DIR} else grep -A 1 FOUND$ ${CLAMD_SCAN_LOG} | mail -s "$MAIL_SUBJECT NG" $MAIL_TO fi rm -f ${CLAMD_SCAN_LOG}
-
パーミッション変更
chmod 744 /etc/cron.daily/clamdscan
なにかあった時の為にメールの宛先だけ修正を行っておく。
vi /etc/cron.d/clamav-update
MAILTO=root #適時修正
ログローテーション
お好みでログローテーションを修正する。
-
ウィルス定義ファイル更新のfreshclamはclamav-updateという名前で/etc/logrotate.d/に最初から作成されているので、それを適宜修正する。
vi /etc/logrotate.d/clamav-update
/var/log/freshclam/freshclam.log { daily notifempty missingok rotate 30 dateext compress delaycompress create 640 root root }
-
clamdの方は存在しないので新規作成する。
vi /etc/logrotate.d/clamd
/var/log/clamd/clamd.scan { daily notifempty missingok rotate 30 dateext compress delaycompress create 640 root root }
-
ログ格納用のフォルダを作成。
confファイルに設定した通りのフォルダ構成に適時修正すること。mkdir /var/log/clamd mkdir /var/log/freshclam
終わり
次はlogwatch辺りかな。