無料のウイルスソフトclamvを導入する
インストール
dnf --enablerepo=epel install clamav clamav-scanner-systemd clamav-update
設定
cp /etc/clamd.d/scan.conf{,.org} vi /etc/clamd.d/scan.conf
#LogFile /var/log/clamd.scan ↓ LogFile /var/log/clamd.scan #LogFileMaxSize 2M ↓ LogFileMaxSize 2M #LogTime yes ↓ LogTime yes #LogRotate yes ↓ LogRotate yes #LocalSocket /run/clamd.scan/clamd.sock ↓ LocalSocket /run/clamd.scan/clamd.sock #FixStaleSocket yes ↓ FixStaleSocket yes #ExcludePath ^/proc/ ↓ ExcludePath ^/proc/ #ExcludePath ^/sys/ ↓ ExcludePath ^/sys/ User clamscan ↓ User root
freshclamの設定
scan.conf編集直後にサービス起動しようとすると、エラーが発生した(No supported database filesといったエラーが出ていた)
freshclamが怪しいと思い、freshclam実施後に再度起動を試みたところ
無事起動したのでサービス起動前にfreshclamを実施する
cp /etc/freshclam.conf{,.org} vi /etc/freshclam.conf
#UpdateLogFile /var/log/freshclam.log ↓ UpdateLogFile /var/log/freshclam.log #LogFileMaxSize 2M ↓ LogFileMaxSize 2M #LogTime yes ↓ LogTime yes #LogRotate yes ↓ LogRotate yes #DatabaseOwner clamupdate ↓ DatabaseOwner root #DatabaseMirror database.clamav.net ←ウィルス定義ファイルのダウンロード先 ↓ DatabaseMirror db.jp.clamav.net #NotifyClamd /path/to/clamd.conf ←ウイルス定義ファイル更新をclamdに通知 ↓ NotifyClamd /etc/clamd.d/scan.conf
freshclam
サービスの起動と自動起動
systemctl enable clamd@scan
systemctl start clamd@scan
試しにスキャン
スキャンテスト
clamscan --infected --remove --recursive ----------- SCAN SUMMARY ----------- Known viruses: 8748947 Engine version: 0.103.0 Scanned directories: 9 Scanned files: 16 Infected files: 0 ↑0になっていることを確認
テスト用ウイルスをダウンロード
wget http://www.eicar.org/download/eicar.com
再度スキャン
clamscan --infected --remove --recursive /tmp/eicar.com: Win.Test.EICAR_HDB-1 FOUND ↑エイカーファイルが検知されることを確認 /tmp/eicar.com: Removed. ↑エイカーファイルが駆除されることを確認 ----------- SCAN SUMMARY ----------- Known viruses: 8748947 Engine version: 0.103.0 Scanned directories: 9 Scanned files: 2 Infected files: 1 ↑検知結果が先ほどの0から1に代わっていることを確認
自動定期実行スキャンスクリプトの作成
vi /etc/cron.daily/clamdscan
#!/bin/bash # 設定ファイル 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
スキャン除外設定
echo ExcludePath ^/tmp/clamdscan-quarantinedir-.*/ >> /etc/clamd.d/scan.conf ↑ウイルス隔離ディレクトリをスキャン対象外にする
除外設定反映
systemctl restart clamd@scan
まとめ
clamを使う際にスペック不足でサービス起動できないことも多く、今回の構築でも不安だった。サービスを起動直後のメモリの使用率を確認すると、availableが案の定非常に少なくなっていたので不安だったが、一定時間経過後に確認すると負荷が大幅に下がっていることが確認できたので安心した。(起動時にウイルス定義を読み込むためだと思う)
★サービス起動直後
free -mh total used free shared buff/cache available Mem: 808Mi 689Mi 59Mi 0.0Ki 59Mi 28Mi
★一定時間経過後
free -mh total used free shared buff/cache available Mem: 808Mi 57Mi 686Mi 0.0Ki 64Mi 657Mi
スキャン除外設定は今後運用していきながら適宜増やしていく予定
参考
https://aulta.co.jp/archives/7671
https://centossrv.com/clamav.shtml
コメント