IMPOV::In My Point Of View

仕事、SEO、ウェブマーケティング、時事問題、健康、生き方などなど、書きたいことを勝手に書き倒しているブログです。とどのつまり「便所の落書き」

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時間おきに実行される。