約 13 分で読めます。
Raspberry Pi 4にアンチウィルスソフトであるclamavをインストールしました!
nextcloudを入れたはいいけど、セキュリティが心配。
なにかいいセキュリティ対策はないかな?
こんな疑問を解決します。
clamavは知っていて、ウィルススキャンサーバーの構築方法を知りたい方はこちら。
Raspberry Pi 4で行うべきセキュリティ対策
基本的なセキュリティ対策は大きく以下です。
・アンチウィルスソフトの導入
・オンデマンド型
・リアルタイム型
・ウェブアプリケーションファイアウォールの導入
・ログインユーザー設定変更
・piの削除
・新規ユーザー作成
・SSHで公開鍵認証でのみログイン可能にする
今回はそのなかの1つである
アンチウィルスソフトの導入
についてお話します。
Raspberry Pi 4に入れられるアンチウィルスソフトは何がある?
Raspberry Pi 4にインストール可能なアンチウィルスソフト、ということでWindows向けのソフトであるSymantecやMcAfee、を入れようとしても無理です。
理由は、Raspberry Pi用のインストーラーが提供されていないためです。
また、Linux向けのソフトであるAvast/AVGやKasperskyも同様の理由で入れることができません。
ということで、今回は記事執筆時点で唯一インストール可能なclamavを入れることにします。
オンデマンド型/リアルタイム型とは
ウィルス検出には大きく2つあります。
オンデマンドとリアルタイムです。
オンデマンドとは、ユーザーがウィルススキャンしたいときにスキャン実行する方式のことです。
リアルタイムとは、ユーザーの操作とは関係なく、何かしらのデータ書込が発生した瞬間に自動的にスキャン実行する方式のことです。
オンデマンドスキャンの特徴は以下です。
・スキャン実行したいタイミングを自分で決められる
・即時検出ができない
→ 感染したファイルを開いてしまうリスクがある
リアルタイムスキャンの特徴は以下です。
・即時検出が可能
・何もしないときでもCPU・メモリを使用する
それぞれの方式をまとめると以下となります。
方式 | 利点 | 懸念点 |
オンデマンド | システム全体へのパフォーマンス低下タイミングを設計できる | 感染ファイルを開いてしまうリスクあり 怪しいファイルは別途スキャンを徹底するなど個別対策が必要 |
リアルタイム | 感染ファイルを開くリスクが少ない | 常駐するため、CPU/メモリを常に使う システム全体のパフォーマンス検証が必要 |
どちらが絶対的に優れているというものではないです。
リアルタイムの方がウィルス感染のリスクは少ないですが、システム全体のパフォーマンスが下がり、性能目標を達成できなくなった、何てこともありえます。
まずはオンデマンド型+個別対応でリスクを減らす努力をするという運用もありでしょう。
今回はまずclamavのオンデマンド型で導入・運用までを目指します。
clamavのインストール
これは簡単です。
clamavパッケージが用意されていますので、aptコマンドでさっくり入れられます。
pi@raspberrypi:~ $ sudo apt install clamav
clamavで知っておくべきコマンドは2つあります。
・clamscan: スキャン実行する
・freshclam: ウィルス定義を更新する
このうちfreshclamはclamavインストール直後からバックグラウンドで動いています。
自分で動かす必要はなさそうです。
pi@raspberrypi:~ $ ps aux | grep [f]reshclam clamav 608 0.0 0.5 53672 10276 ? Ss 00:35 0:00 /usr/bin/freshclam -d --foreground=true
clamscanは指定したファイル・ディレクトリをスキャンするコマンドです。
やってみましょう。
# テスト用ウィルスをダウンロード pi@raspberrypi:~ $ wget -q https://secure.eicar.org/eicar.com # スキャン実行 pi@raspberrypi:~ $ clamscan eicar.com /home/pi/eicar.com: Win.Test.EICAR_HDB-1 FOUND ----------- SCAN SUMMARY ----------- Known viruses: 8935348 Engine version: 0.102.4 Scanned directories: 0 Scanned files: 1 Infected files: 1 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 59.575 sec (0 m 59 s)
1つのファイルをスキャンするのに1分もかかり、またメモリ使用量も1GBと超巨大でした。
これはclamscanの動作が以下のようになっているためと推測できます。
・ウィルス定義をclamscanのメモリ領域に読み出す
・スキャンする
日中に実行するとサーバーにアクセスしているユーザーがもろに影響受けます。
そのため、スキャン実行するのはサーバーが暇な真夜中などに設定するのがいいでしょう。
試しにRaspberry Pi 4の主要ディレクトリをスキャンしてみました。
約18分でした。
pi@raspberrypi:~ $ sudo clamscan --recursive /bin /home /srv /var /boot /etc /lib /opt /root /sbin /usr (略) ----------- SCAN SUMMARY ----------- Known viruses: 8935348 Engine version: 0.102.4 Scanned directories: 5745 Scanned files: 44543 Infected files: 0 Data scanned: 1930.79 MB Data read: 1862.09 MB (ratio 1.04:1) Time: 1093.140 sec (18 m 13 s)
これをcron.dailyで回してみます。
cron.dailyなら毎日適当な時刻に自動実行されます。
もしウィルスを検出したら該当ファイルを/opt/clamav/quarantine/に移動し、メールを送るようなスクリプトを作ってみました。
#!/bin/bash logger "Starting clamav daily scan..." CLAMSCAN_LOG=/tmp/clamscan.log.$$ QUARANTINE_DIR=/opt/clamav/quarantine MAIL_ADDRESS=abc@hotmail.com clamscan --recursive --infected --suppress-ok-results --move=${QUARANTINE_DIR} --exclude-dir=${QUARANTINE_DIR} /bin /home /srv /var /boot /etc /lib /opt /root /sbin /usr > ${CLAMSCAN_LOG} if [ 0 != $( grep 'Infected files' ${CLAMSCAN_LOG} | cut -f 3 -d' ' ) ]; then logger "Virus found!" cat ${CLAMSCAN_LOG} | mail -s 'Virus detected!' ${MAIL_ADDRESS} else logger "Virus not found." fi rm ${CLAMSCAN_LOG} logger "Finished clamav daily scan..."
実行にはmailコマンドが必要です。
使えない場合はpostfixやqmailなどメーラーを入れておく必要があります。
pi@raspberrypi:~ $ sudo apt install postfix mailutils # もしくは pi@raspberrypi:~ $ sudo apt install qmail mailutils
実行権限を付け、/etc/cron.daily/にコピーします。
ファイル名をclamav-dailyscanとしました。
pi@raspberrypi:~ $ chmod 755 clamav-dailyscan pi@raspberrypi:~ $ sudo cp clamav-dailyscan /etc/cron.daily/
翌日に実際動作したか確認します。
テストウィルスを置いておきます。
pi@raspberrypi:~ $ grep clamav /var/log/syslog Nov 15 06:25:01 raspberrypi root: Starting clamav daily scan... Nov 15 06:44:22 raspberrypi root: Finished clamav daily scan... pi@raspberrypi:~ $ ls /opt/clamav/quarantine/ eicar.com eicar.com.1
無事動いているようですね!
メールをチェックしたらちゃんと通知が来ていました。
いい感じです!
6時頃にこのスクリプトが動くため、ウィルス検出時も6時頃にメールが送られることになります。
そのため、スマホでの通知が発生しないメールアドレスに送るのが良いでしょう。
終わりに
いかがでしたか。
アンチウィルスはセキュリティの基礎なだけに外さずにやっておきたいですね!
次回は↓の記事でリアルタイムスキャンの設定を行います!
こちらではWeb Application Firewall(WAF)であるmod-securityのインストールを解説します!
また、↓のページには、Raspberry Pi 4をnextcloudサーバーとしてクラウドストレージとして動かすまでを各ステップ順を追って説明しています!
こちらも合わせてどうぞ!
Comments