Ubuntu Weekly Recipe

第429回ウイルススキャンの結果を通知する

今回は、Ubuntuでウイルススキャンを実行する意義を確認したうえで、Ubuntuらしく結果を通知する方法を考えてみます。

Ubuntuとアンチウイルスソフト

Ubuntuで使用できる著名なアンチウイルスソフトは、第30回第31回でも取り上げましたclamavです。そのフロントエンドであるclamtkは現在でも開発が継続されていますが、klamavはQt3から4や5へポーティングされず、Qt3はずいぶん前にUbuntuのリポジトリからは削除されているため、それに伴いklamavも削除されています。時の流れを感じます。

Ubuntuでウイルススキャンは必要なのか?

今更述べるまでもありませんが、世の中に出回っているウイルスプログラムは、ほとんどがWindowsで動作するものです。Ubuntuを始めとしたLinuxで動作するものはあまり多くはありません。であればウイルススキャンを実行する必要はないのかといわれると、そのようなこともないように思うのです。UbuntuはSambaなどをインストールするとファイルサーバーにもなります。LAN内にWindows PCが一台もないというのは考えにくいですし、ファイルサーバーにある段階でウイルスを検出できれば、より安全に運用できることは言うまでもありません。

というわけでウイルススキャンを実行するとして、どのぐらいの頻度で実行すればいいのでしょうか。まず、リアルタイムスキャンは不要でしょう。ということは、定時で実行すればよさそうです。ファイルサーバーであれば常時電源オンにしていることが多いでしょうし、そうでない場合もあまり負荷の高くない時間に行えばいいでしょう。

問題は、ウイルスが見つかった場合どのような通知を行えば気づくことができるのかということですが、Ubuntuサーバーを使用している場合は、Byobuを使用しているはずなので、これを使わない手はありません。なお、Byobuに関しては第72回第291回第383回で取り上げていますので、あわせてこちらもご覧ください。どのように使うのかは後述します。

なお、今回はclamtkは使用しません。よってすべての操作はコマンドラインで行います。

clamavのインストール

clamavはUbuntuのリポジトリに存在するため、インストールは非常に簡単です。

$ sudo apt install clamav

インストールするとclamavグループが作成されるため、現在使用しているユーザーにclamavグループ権限を与えます。

$ sudo gpasswd -a $USER clamav

追加したグループを有効にするため、一度ログアウトして再ログインします。

パターンファイルの更新と初回スキャン

何はなくとも、clamavのパターンファイルを更新します。

$ sudo freshclam

メッセージはいろいろと表示されますが、main.cvdとdaily.cvdとbytecode.cvdが[100%]と表示されていれば、あとは無視してもいいでしょう。

続いてホームフォルダーをスキャンしてみます。

$ clamscan -r -i $HOME

-rはフォルダーを再帰的に検索するオプションで、-iは感染しているファイルだけを表示するオプションです。

ホームフォルダー以外を検索する時は権限がないことも多いでしょうから、sudoをつけてclamscanコマンドを実行してください。

自動実行

cronで自動実行するための設定方法はいくつかありますので、お好みの方法で設定してください。今回は/etc/cron.dにファイルを置く方法で設定します。

$ cat /etc/cron.d/clamav
00 12    * * *   ikuya  clamscan -r -i /home/ikuya > /home/ikuya/.clamav-home-results.txt

この例では、毎日12:00にユーザーikuyaのホームフォルダをスキャンし、その結果を/home/ikuya/.clamav-home-results.txtに書き込んでいます。

なお、パターンファイルの更新は自動的に行っています。設定自体は/etc/clamav/freshclam.confにあります。自動実行を止めたい場合は、

$ sudo dpkg-reconfigure clamav-freshclam

を実行し、⁠手動]に変更してください。通常は自動更新から変更する理由はあまり多くありません[1]⁠。

ほかにも、ファイルサーバーを使用する場合はその領域もスキャンする設定を行ってください。その場合はroot権限で実行するといいでしょう。

Byobuで通知する

前述のとおりByobuを使用しますが、Ubuntuとそのフレーバーではデフォルトでインストールされていないので、インストールします。Ubuntuサーバーではインストールされています。

$ sudo apt install byobu

インストール後、何はともあれ起動します図1⁠。

$ byobu
図1 Byobuの画面
画像

Byobuは画面下部にさまざまなステータスが表示されているのが特徴ですが、これは細かくカスタマイズすることができるばかりか、自分で作ることもできます。設定方法はF9キーを押してByobu設定メニューを表示し図2⁠、⁠ステータス通知の切り替え]を選択してエンターキーを押してください。ここにカスタム(custom)があるので、これを選択した状態でスペースキーを押し図3⁠、チェックを入れてTabキーで[適用]に移動し、エンターキーを押してください。Tabキーを押して[Exit]に移動し、エンターキーを押すと設定メニューが終了します。

図2 Byobu設定メニュー
画像
図3 customを選択
画像

これで自分で作成したステータスが表示できるようになったので、あとはスクリプトを作成します。仕様はWikiにあるとおりで、非常に簡単です。

まずはスクリプトを置くフォルダーを作成します。

$ mkdir -p ~/.byobu/bin

ここに10_virusというスクリプトを作成します。中身は次のとおりです。

#!/bin/sh
VIRUS=$(cat ~/.clamav-home-results.txt |grep Infected|cut -f 3 -d " ")
if [ -n "$VIRUS" ]; then
    echo "Virus(es): $VIRUS found from home"
fi

もちろんこのままでも動作しますが、あくまでこれは例ですので好きなように書き換えてください。

作成後、実行権限を与えます。

$ chmod +x ~/.byobu/bin/10_virus

Byobuは自動的にこのスクリプトを読み込むため、表示も自動的に変わります図4⁠。

図4 自作のステータスが追加できた
画像

なお、ファイル名にある"_"の前の"10"は、10秒毎にスクリプトを実行するという意味です。これほど頻繁に実行する理由もないため、適宜数字を増やしてください。

また、ほかの場所のスキャン結果は別ファイル(~/.clamav-samba-results.txtなど)に保存し、このファイルを確認する別のスクリプトを作成するといいでしょう。その場合は"from home"の部分を"from samba"とかにすれば、区別が付きやすくていいのではないかと思います。

ウイルスが見つかった場合

不幸にしてウイルスが見つかってしまった場合、どうすればいいのでしょうか。いきなり削除することもできますが、まずは特定のフォルダーに移動させるのがいいでしょう。よって、まずは移動するフォルダーを作成します。

$ cd /var/lib/clamav/
$ sudo mkdir infected
$ sudo chown clamav:clamav infected/
$ sudo chmod 775 infected/

続いて移動させます。

$ clamscan -r -i $HOME --move=/var/lib/clamav/infected

移動後は注意深く中身を確認してから削除しましょう。

clamavの精度は?

clamavはアンチウイルスソフトとしてどのぐらい信頼できるのでしょうか。今回は筆者宛てに届いたspamメールの中からウイルス付きと思われるファイルを28個ピックアップしてスキャンしてみました。なお、本当にウイルス付きのファイルかどうかは確認していませんので、その点はご注意ください。

2016年7月9日現在では、以下の結果になりました。

/home/ikuya/virus/SCAN000783445.zip: Win.Trojan.Locky-30621 FOUND
/home/ikuya/virus/report_id.zip: Win.Trojan.Generickd-405 FOUND
/home/ikuya/virus/IMG6161754.zip: Win.Trojan.Locky-30621 FOUND

----------- SCAN SUMMARY -----------
Known viruses: 4612786
Engine version: 0.99
Scanned directories: 1
Scanned files: 28
Infected files: 3
Data scanned: 6.33 MB
Data read: 2.34 MB (ratio 2.71:1)
Time: 6.734 sec (0 m 6 s)

28個のうち3個がウイルスであると判定しています。

Ubuntuでも使用できるSophos Antivirus for Linuxは個人用では無料で使用できるため、今回試してみました。すると15個のファイルが20個のウイルスに感染しているという結果が出ました図5⁠。

図5 Sophos Antivirus for Linuxでの結果
画像

Windows 10に付属するWindows Defenderでは、9個のウイルスが発見できました図6⁠。

図6 Windows Defenderでの結果
画像

サンプル数が少なすぎるのでどの程度信頼していいのかという問題はありますが、clamavではやや心もとない結果となってしまいました。それでも原稿執筆中最初にスキャンした時は一つしか見つかりませんでしたが、その後3つまで増えたことは付記しておきます。

おすすめ記事

記事・ニュース一覧