CentOS 7 に ClamAV をインストールしてデーモンとして動かす
【2018/7/8追記:/etc/clamd.d/scan.conf の設定部分に追記しました。】
ユーティリティのインストールと設定 という記事で、ClamAV のインストールについて書いたのですが、色々とダメな内容でしたので改めてこちらに記事を起こします。
RepoForge Project が閉鎖してしまったので、この記事では epel から ClamAV をインストールしてデーモンとして常駐させます。
また、スキャンも、折角常駐させたデーモンを使って行う設定をします。
一応、前出の記事でインストしたものを削除するところから書きますので、rpmforge の clamd をインストールしてない場合は、最初の節を読み飛ばして下さい。
(2017/03/06 追記:freshclamした際のデーモンへの通知が上手くいかないので、DatabaseOwnerの設定を追記)
rpmforge 版 clamd の削除
まずは、rpmforge のレポジトリを yum がデフォルトでは参照しないように設定しておきます。
また、競合回避のため、epel で、clamav を除外設定している場合はその設定を削除します。
vim /etc/yum.repos.d/rpmforge.repo enable=0 # 1 になっているパートがあったら 0 にしておく。 vim /etc/yum.repos.d/epel.repo exclude clam* # このような除外設定があれば、これを削除 #clamd を停止し、自動実行もオフにします。 systemctl stop clamd systemctl disable clamd #前の記事でスキャン実行用のスクリプトを cron に登録した場合はこれも停止 vim /etc/cron.d/clamdscan #取り敢えず全行コメントアウト #アンインストール yum remove clamd clamav-db clamav # clam* で remove でも良い
epel から clamav をインストールする
epel を導入していない場合は、リポジトリをインストール。
yum install epel-release
clamav 本体とデーモン、アップデートツールをインストール
yum install clamav clamav-scanner-systemd clamav-update
設定ファイルを編集
vim /etc/clamd.d/scan.conf # Comment or remove the line below. # Example ←コメントアウトする # 以下はお好みで、該当部分を探しコメントを外して有効化 LogFile /var/log/clamd.scan LogFileMaxSize 2M LogRotate yes # ローカルソケットの設定を探しコメントを外して有効化 LocalSocket /var/run/clamd.scan/clamd.sock # ユーザーをコメントアウトして root で動作させる #User clamscan # スキャンしないディレクトリを設定しておく(必要に応じて適宜ディレクトリ追加) # Don't scan files and directories matching regex # This directive can be used multiple times # Default: scan all ExcludePath ^/proc/ ExcludePath ^/sys/ ExcludePath ^/home/share/ # 199行目ぐらいにある以下の設定をコメントアウト(2018/7/8追記) # AllowSupplementaryGroups yes
clamdscan は、/etc/clamd.conf に設定ファイルを参照しに行くので、シンボリックリンクを設定。
ln -s /etc/clamd.d/scan.conf /etc/clamd.conf
データベース更新用の設定ファイルを編集
vim /etc/freshclam.conf # Comment or remove the line below. # Example ←コメントアウト # 以下はお好みで、該当部分を探しコメントを外して有効化 UpdateLogFile /var/log/freshclam.log LogFileMaxSize 2M LogRotate yes # コメントを外して、root を設定(2017/03/06追記) DatabaseOwner root # コメントを外してパスを変更(2017/03/06追記) NotifyClamd /etc/clamd.conf vim /etc/sysconfig/freshclam # FRESHCLAM_DELAY=disabled-warn # REMOVE ME 最終行をコメントアウト
(2017/03/06追記 ここから)
なお、DatabaseOwner を変更した場合、データベースの所有者も変更しないとうまく動かない。
そこで、所有者の変更をするかデータベースを削除して再度 freshclam で取得する。
cd /var/lib/clamav #所有者を変更する場合 chown root:root * #データベースを削除して再取得する場合 rm -rf * freshclam
(2017/03/06追記 ここまで)
自動起動の設定
コマンドは、clamd@scan
systemctl start clamd@scan #clamd起動 systemctl status clamd@scan #clamd稼働状況 systemctl enable clamd@scan #clamd自動起動設定 systemctl list-unit-files | grep clamd* #自動起動の確認
定義ファイルの更新と起動確認
ウィルス定義ファイルの更新
freshclam
起動確認(デーモンでスキャンするには、 clamscan ではなく、clamdscan)
clamdscan /root # 以下の様な表示がでれば動作できている。 /root: OK ----------- SCAN SUMMARY ----------- Infected files: 0 Time: 2.085 sec (0 m 2 s) # 全体をスキャンする場合 clamdscan /
あとは、 cron に、 clamdscan / を適当なスケジュールで登録しておけば良い。
なお、freshclam の自動実行は、/etc/cron.d/clamav-update で設定されており、 /usr/share/clamav/freshclam-sleep が3時間おきに実行される。