前々回にご紹介したClam AntiVirusの追加記事です。
記事の分量が多くなりすぎてしまい、1回だけの記事では今一つ舌足らずだった部分がありましたので、それを補足する記事を投稿します。
今回の内容は、
- on-access scanning(リアルタイムスキャンとも)について
- 実際のウイルス駆除のテスト
の2点についてです。
on access scanningについて
On-Access スキャン(リアルタイムスキャン)は、ファイルが 作成・変更・読み込みされるタイミングで即座にスキャン を実行する機能です。
clamavパッケージに含まれる ” clamonacc ” コマンドで実行します。
fanotifyについて
ファイルを作成したり読込するたびにスキャンを作動させる為、ファイルの動作を監視して待ち構えておく必要があります。
普段からその監視を行なっている機能が ” fanotify ” です。
その ” fanotify ” を利用するため、ClamAV をrootで実行する必要があります。
” fanotify ” も調べれば奥深いみたいですが今回は取り敢えず、rootで実行のみ知っておけばOK。
” fanotify ” の存在は、コマンド ” ls /proc/sys/fs ” で、 ” fanotify ” があれば確認出来ます。

” fanotify ” はlinuxのカーネル3.8以上で動作します。(表示のカーネルは6.6.63)

インストールと設定
普通にclamavのパッケージをインストールすれば、その中に ” clamonacc ” が含まれています。
インストール
下記にてclamavパッケージをインストールします。
sudo apt install clamav clamav-daemon

ウイルス定義ファイル更新
下記コマンドを順に実行し、ウイルス定義ファイルを更新します。
- sudo systemctl stop clamav-freshclam
- sudo freshclam
- sudo systemctl start clamav-freshclam
clamdの設定
スミマセン、ここの設定の部分はあまり自信がありません。よく分かっていないままなので詳しい説明が出来ませんし、多分より良い設定があると思います。
On-Access スキャンを有効にするため、設定ファイル /etc/clamav/clamd.conf を編集します。
下例ではnanoを用いて設定ファイル ” clamd.conf ” を開いています。
sudo nano /etc/clamav/clamd.conf

カーソルを上下矢印キーで移動して、以下の変更を行います。
変更1
- User clamavをコメントアウト
- User rootを追記
# Use clamav
User root

変更2
最下段に以下の5行を追加します。
- OnAcccessIncludePath /home (スキャン対象の設定:例として ” /home ” を対象とする場合です。別のディレクトリがある場合は行を追加していきます)
- OnAccessPrevention yes (マルウェア検出時にアクセスをブロック)
- OnAccessExtraScanning yes (読み取りアクセス時にもスキャン)
- OnAccessMountPath / (ルートをマウントパスに指定)
- OnAccessExcludeRootID yes (ルートIDを除外)

” Ctrl + O ” → ”Enter ” → ” Ctrl + X ” でnanoを保存終了します。
参考 root権限について
kaliではデフォルトではrootが設定されていませんが、作成することが出来ます。
デフォルトでrootが存在しない理由は、普段からroot権限で操作していると何でも可能な代わりに、致命的なミスをやらかす懸念があるからです。
root権限への昇格の仕方
まだroot権限を作成していない場合には、 ” sudo -i ” でrootアカウントを作成し、 ” passwd root ” でroot用のパスワードを設定します。
sudo -i

すでにrootアカウントを作成している場合は、 ” su ” コマンド後にroot用パスワードを入力します。
一般ユーザーへの降格の仕方
root権限状態で ” su 降格先のユーザー名 ” で降格できます。(パスワード不要です)
su kali

clamd起動
root権限にて行います。
systemctl enable –now clamav-daemon

clamav-daemonの作動状況の確認
systemctl status clamav-daemon
clamonacc起動
root権限にて ” clamonacc ” コマンドを実行します。
clamonacc –config-file=/etc/clamav/clamd.conf –log=/var/log/clamav/clamonacc.log –move=/var/quarantine

3つのオプションの解説
オプション | 意味 | 場所(例) |
–config-file= | 設定の読込元 | /etc/clamav/clamd.conf |
–log= | ログの保存先 | /var/log/clamav/clamonacc.log |
–move= | 見つかったマルウェアの隔離先 | /var/quarantine |
” clamonacc ” コマンドの実行以後は、ファイル操作を行う毎に逐次ウイルススキャンが行われます。(次項で検証します)
参考:clamonaccヘルプ
参考までに ” clamonacc ” のヘルプです。

アンチウイルスの動作テスト
次に実際のウイルス(と言っても本物ではなく、テスト用の無害なダミーウイルス)を使用したウイルス検出テストを行います。
ダミーのウイルス取得
まずは、ダミーのウイルスを取得します。
EICAR (European Institute for Computer Antivirus Research) により作成されたテストファイルです。
無害なファイルですが、アンチウイルスソフトからはウイルスとして認識されます。
EICARのサイトからダウンロードリンクを辿るか、又は下記のいずれかでダウンロード出来ます。
wget https://secure.eicar.org/eicar.com
wget https://secure.eicar.org/eicar.com.txt

下記がダミーウイルスの中身です。その実体は68バイトのテキストであり、アンチウイルスソフトはこれをウイルスとして認識します。
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

ダウンロードの代わりに上記の内容のテキストファイルを作成すれば、それをダミーウイルスファイルとして代用できます。
検証1 clamscan
まずはデーモンを使わない手動スキャン(オンデマンドスキャン) ” clamscan ” によるテストです。
clamscan /home/kali –move=/var/quarantine
スキャン対象ディレクトリは ” /home/kali ” 、隔離ファイルの送り先は ” /var/quarantine ” としています。
今回ダミーウイルスは ” /home/kali ” 直下の階層にある為、時短の為に ” -r ” オプション(深い階層までスキャンする設定)は使用していません。


無事、ダミーウイルス ” eicar.com.txt ” を見つけていますが、隔離場所に送ることには失敗しています。
送り先 ” /var/quarantine ” に書き込む権限が無いようです。そこでまずは ” sudo ” をつけちゃいます。
sudo clamscan /home/kali –move=/var/quarantine


今回は無事ダミーウイルスを発見して、隔離することが出来たようです。
” /home/kali ” からはダミーウイルス ” eicar.com.txt ” が消失し、 ” /var/quarantine ” 内に収容されています。

検証2 clamdscan
次にデーモン ” clamdscan ” を使用したスキャンです。
まずは先程収容所送りにしたダミーウイルスを釈放して ” /home/kali ” に連れ戻します。
sudo mv /var/quarantine/eicar.com.txt /home/kali

ダミーウイルス ” eicar.com.txt ” は、ホームディレクトリに連れ戻されています。

書き込み権限の変更
先程は ” sudo ” をつけて無理矢理書き込みましたが、今回は ” /var/quarantine ” 収容所の書込み権限を変更して、 ” sudo ” をつけなくても書き込めるようにしてみます。
ls -l /var

” /var/quarantine ” 収容所にはrootしか書き込めないようになっています。
最下段が、 ” drwxr-xr-x ” となっており、6番目と9番目の文字が ” w ” になっていません。
これを誰でも書き込めるように変更します。
sudo chmod go+w /var/quarantine

” /var/quarantine ” は誰からでも書き込めるように変更されています。

最下段が、 ” drwxrwxrwx ” となっており、6番目と9番目の文字が ” w ” になっています。
” clamdscan ” によるスキャン実行
clamdscan –fdpass –move=/var/quarantine /home/kali

sudoなしでも ” eicar.co.txt ” が発見され、かつ ” /var/quarantine ” 収容所に移送できています。
検証3 clamonacc
デーモンを使用したon-accessスキャンです。
まず、ルート権限に昇格し、clamonaccコマンドを実行します。
su
clamonacc –config-file=/etc/clamav/clamd.conf –log=/var/log/clamav/clammonacc.log –move=/var.quarantine
上記コマンドによって、以後のオンアクセススキャンが開始されます。

権限を一般ユーザーに降格しておきます。

ここで試しにテキストエディタmousepadを使って、先程のダミーファイルと同じ内容のファイルを新たに作成してみました(命名は ” eicar0.txt ” )が、作成直後に即座に収容所に送られました。

オンアクセススキャンは成功です。
ログを確認してみます。
sudo cat /var/log/clamav/clamonacc.log
検出と隔離の様子が確認出来ます。

まとめ
今回は、以前のclam AV紹介編の追補記事として、
- on-access scanningについてと、
- 実際のダミーウイルスを用いた駆除テスト
を行いました。
ところでウイルスの隔離収容所にはいつの間にか多数の知らない「囚人」が隔離されていますが…見ないフリをしておこう…。
コメント