raspberry pi 3にclamavを導入する
最近、raspberry piのセキュリティが気になって色々と設定しているのですが、今回はclamavの設定を書きます。ドキュメントなど読むと、clamavには2種類の動かし方があるようです。
1. scanのときにプロセスを立ち上げる方法
2. デーモンを立ち上げておく方法
1の方法でファイルをscanするときは、clamscanコマンド。2の方法でファイルをscanするときは、clamdscanコマンドを利用します。この2種類のコマンドを比較すると、scanの速度に違いがありました。
(ちなみに、自分が見つけた中では公式のサイトのpdfドキュメントが一番詳しく記載されていました。https://github.com/vrtadmin/clamav-faq/raw/master/manual/clamdoc.pdf)
raspberry pi 3上で732個のファイル(ファイルの合計の大きさは2.4GB)のscanを比較した場合
clamscan: 3min19sec clamdscan: 2min9sec
デーモンを立ち上げていると、一定のメモリ量が常に消費されてしまいますが、scan時のパフォーマンスはデーモンモードのほうが良さそうです。一番避けたい設定はclamdをデーモンで立ち上げているのに、scanはclamscanで実行している場合です。こうすると、scan時にメモリを追加で消費することになってしまい、scanのスピードも遅くなります。
www.riscascape.net
clamavは、指定されたファイルをscanして、データベースに登録されたウイルス署名と一致したファイルがないかどうか確認します。ですので、ウイルス署名のデータベース情報は定期的に更新される必要があります。freshclamコマンドはインターネットから最新のウイルス署名情報を取得してくれます。freshclamにもデーモンモードがあり、デーモンで起動していると、定期的にウイルス署名情報を取得するようです。
以上を踏まえて、自分の場合は、以下のようにraspberry piにclamavを設定しました。これで、webコンテンツ以下のファイルに対して毎日深夜の時間帯にスキャンをかけ、virusが検知されたらslackに通知されるようになります。
1. install clamav
apt-get update apt-get install clamav clamav-daemon
2. update virus definition database
freshclam
3. create script file (hooks.slack.com のURLは適宜変更)
cd /root vi virusscan.sh ------------------------------------------------ #!/bin/bash PATH=/usr/bin:/bin # virus scan CLAMSCANTMP=`mktemp` TIME=`date` MESSAGE="Virus is detected!!: ${TIME}" clamdscan /var/www/html/data > $CLAMSCANTMP 2>&1 # report slack grep FOUND$ $CLAMSCANTMP && \ curl -X POST --data-urlencode 'payload={"channel": "#alerts", "username": "alerts", "text": "'"${MESSAGE}"'", "icon_emoji": ":dog:"}' https://hooks.slack.com/services/XXXXXXXX/XXXXXXXX/XXXXXXXX rm -f $CLAMSCANTMP ------------------------------------------------ chmod 700 virusscan.sh
4. set cron job
crontab -e ------------------------------------------------ 00 04 * * * sh /root/virusscan.sh ------------------------------------------------
ドキュメントを読むと、以下のコマンドがあったのでメモも兼ねて記載しておきます。
clamconf
- clamavの設定情報を表示する
root@raspberrypi:~# clamconf | head Checking configuration files in /etc/clamav Config file: clamd.conf ----------------------- LogFile = "/var/log/clamav/clamav.log" StatsHostID = "auto" StatsEnabled disabled StatsPEDisabled = "yes" StatsTimeout = "10" LogFileUnlock disabled
clamtop
- clamav用のtopコマンド
ClamdTOP version 0.99.2 Mon Jul 17 23:41:19 2017 NO CONNTIME LIV IDL QUEUE MAXQ MEM HOST ENGINE DBVER DBTIME 1 00:00:14 1 0 0 0 471M local 0.99.2 23571 2017-07-17 17h Details for Clamd version: ClamAV 0.99.2/23571/Mon Jul 17 17:08:59 2017 Primary threads: live 1 idle 0 max 12 ┌───────────────────────────────────────┐ [||| ] │Mem: heap 1M mmap 0M unused 0M│ Queue: 0 items 0 max │Libc: used 1M free 0M total 1M│ [ ] │Pool: count 1 used 470M total 470M│ │[||||||||||||||||||||||||||||||||||||] │ └───────────────────────────────────────