(22) CentOS7にアンチウイルスソフト(ClamAV)のインストール
linuxサーバーによく使われている無償版のアンチウイルスソフト ClamAVをインストールします。
以前はrepoforgeからインストールしていましたが最近は更新されていないみたいだし、epelからの方がなにかと便利なので、こちらを使います。
epelリポジトリを有効にます。
# yum install epel-release
通常はepelリポジトリを有効にしないように設定ファイルを修正します
# vi /etc/yum.repos.d/epel.repo
enabled=1
↓
enabled=0
ClamAVをepelリポジトリからインストールします。
# yum install --enablerepo=epel clamav clamav-server clamav-server-systemd clamav-update clamav-scanner
ログを記録するディレクトリを作ります。
# mkdir /var/log/clamav
# chmod 766 /var/log/clamav
一応、ウイルス定義ファイル更新設定ファイルのオリジナルを保存しておきます。
# cp /etc/freshclam.conf /etc/freshclam.conf.org
ウイルス定義ファイル更新設定ファイルを編集します。
# vi /etc/freshclam.conf
---------------------------------------
#Example Exsampleが有効だと動かないのでコメントアウトします
#UpdateLogFile /var/log/freshclam.log ログファイルの場所
↓
UpdateLogFile /var/log/clamav/freshclam.log
#LogFileMaxSize 2M ログファイルの最大サイズ設定
↓
LogFileMaxSize 5M
#LogTime yes タイムスタンプを記録
↓
LogTime yes
#LogRotate yes ローテーションをする
↓
LogRotate yes
#DatabaseOwner clamupdate データベース所有者の指定
↓
DatabaseOwner root
#NotifyClamd /path/to/clamd.conf 更新通知のための設定ファイル指定
↓
NotifyClamd /etc/clamd.d/scan.conf
定義ファイルの自動更新ファイル(clamav-update)が有ることを確認します
# cat /etc/cron.d/clamav-update
## Adjust this line...
MAILTO=root (MAILTO="" にするとメイル報告が送られないようにできます)
## It is ok to execute it as root; freshclam drops privileges and becomes
## user 'clamupdate' as soon as possible
0 */3 * * * root /usr/share/clamav/freshclam-sleep
一応、オリジナルのClam AntiVirus設定ファイルを保存しておきます。
# cp /etc/clamd.d/scan.conf /etc/clamd.d/scan.conf.org
Clam AntiVirus設定ファイルを編集します
# vi /etc/clamd.d/scan.conf
----------------------------------------
#Example (コメントアウトしてあることを確認)
#LogFile /var/log/clamd.scan
↓
LogFile /var/log/clamav/clamd.log
#LogFileMaxSize 2M
↓
LogFileMaxSize 5M
#LogTime yes
↓
LogTime yes
#LogRotate yes
↓
LogRotate yes
#LocalSocket /run/clamd.scan/clamd.sock
↓
LocalSocket /var/run/clamd.scan/clamd.sock
#FixStaleSocket yes 異常終了時にソケットを削除する指定
↓
FixStaleSocket yes
#ExcludePath ^/proc/ スキャンしないディレクトリを指定
#ExcludePath ^/sys/
↓
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
User clamscan
↓
User root
ウイルス定義ファイルを最新化します
# freshclam
clamdをスタートします。
# systemctl start clamd@scan
clamdが自動起動するように設定します。
# systemctl enable clamd@scan
疑似ウイルスファイルが検出できるかテストします。
テスト用疑似ウイルスファイルを/rootにダウンロードします
# cd /root
# wget http://www.eicar.org/download/eicar.com
手動で/rootディレクトリをスキャンしてみます
この時にオプションで--remove をつけるとウィルスを発見したときに自動的に削除します。
# clamdscan -c /etc/clamd.d/scan.conf /root
/root/eicar.com: Win.Test.EICAR_HDB-1 FOUND
----------- SCAN SUMMARY -----------
Infected files: 1 <---検出されました
Time: 13.666 sec (0 m 13 s)
Start Date: 2021:02:26 16:19:47
End Date: 2021:02:26 16:20:00
検出確認できたので疑似ウイルスファイル(eicar.com)を削除します。
# rm /root/eicar.com
指定時刻にウイルススキャンをするためには、動作時刻のランダム化をしないモジュール(cronie-noanacron)をインストールします。
・現在の設定を確認(何も設定されていません)
# cat /etc/crontab
・動作時刻のランダム化をしないモジュール(cronie-noanacron)をインストール
# yum install cronie-noanacron
・動作時刻のランダム化をしているモジュール(cronie-anacron)をアンインストール
# yum remove cronie-anacron
・実行時刻の設定
# vi /etc/cron.d/dailyjobs
-------------------------------
# run-parts (ここ以下に記述されています)
15 3 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
45 3 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
10 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
指定時刻にウイルススキャンをするためのスクリプトを設定します。
# vi /etc/cron.daily/clamdscan.sh
-------------------------------
#!/bin/sh
clamdscan -c /etc/clamd.d/scan.conf --remove /home /usr/local /usr/src /tmp /var /data
# chmod 755 /etc/cron.daily/clamdscan.sh