今回は、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のリポジトリに存在するため、インストールは非常に簡単です。
インストールするとclamavグループが作成されるため、現在使用しているユーザーにclamavグループ権限を与えます。
追加したグループを有効にするため、一度ログアウトして再ログインします。
パターンファイルの更新と初回スキャン
何はなくとも、clamavのパターンファイルを更新します。
メッセージはいろいろと表示されますが、main.cvdとdaily.cvdとbytecode.cvdが[100%]と表示されていれば、あとは無視してもいいでしょう。
続いてホームフォルダーをスキャンしてみます。
-rはフォルダーを再帰的に検索するオプションで、-iは感染しているファイルだけを表示するオプションです。
ホームフォルダー以外を検索する時は権限がないことも多いでしょうから、sudoをつけてclamscanコマンドを実行してください。
自動実行
cronで自動実行するための設定方法はいくつかありますので、お好みの方法で設定してください。今回は/etc/cron.dにファイルを置く方法で設定します。
この例では、毎日12:00にユーザーikuyaのホームフォルダをスキャンし、その結果を/home/ikuya/.clamav-home-results.txtに書き込んでいます。
なお、パターンファイルの更新は自動的に行っています。設定自体は/etc/clamav/freshclam.confにあります。自動実行を止めたい場合は、
を実行し、[手動]に変更してください。通常は自動更新から変更する理由はあまり多くありません[1]。
ほかにも、ファイルサーバーを使用する場合はその領域もスキャンする設定を行ってください。その場合はroot権限で実行するといいでしょう。
Byobuで通知する
前述のとおりByobuを使用しますが、Ubuntuとそのフレーバーではデフォルトでインストールされていないので、インストールします。Ubuntuサーバーではインストールされています。
インストール後、何はともあれ起動します(図1)。
Byobuは画面下部にさまざまなステータスが表示されているのが特徴ですが、これは細かくカスタマイズすることができるばかりか、自分で作ることもできます。設定方法はF9キーを押してByobu設定メニューを表示し(図2)、[ステータス通知の切り替え]を選択してエンターキーを押してください。ここにカスタム(custom)があるので、これを選択した状態でスペースキーを押し(図3)、チェックを入れてTabキーで[適用]に移動し、エンターキーを押してください。Tabキーを押して[Exit]に移動し、エンターキーを押すと設定メニューが終了します。
これで自分で作成したステータスが表示できるようになったので、あとはスクリプトを作成します。仕様はWikiにあるとおりで、非常に簡単です。
まずはスクリプトを置くフォルダーを作成します。
ここに10_virusというスクリプトを作成します。中身は次のとおりです。
もちろんこのままでも動作しますが、あくまでこれは例ですので好きなように書き換えてください。
作成後、実行権限を与えます。
Byobuは自動的にこのスクリプトを読み込むため、表示も自動的に変わります(図4)。
なお、ファイル名にある"_"の前の"10"は、10秒毎にスクリプトを実行するという意味です。これほど頻繁に実行する理由もないため、適宜数字を増やしてください。
また、ほかの場所のスキャン結果は別ファイル(~/.clamav-samba-results.txtなど)に保存し、このファイルを確認する別のスクリプトを作成するといいでしょう。その場合は"from home"の部分を"from samba"とかにすれば、区別が付きやすくていいのではないかと思います。
ウイルスが見つかった場合
不幸にしてウイルスが見つかってしまった場合、どうすればいいのでしょうか。いきなり削除することもできますが、まずは特定のフォルダーに移動させるのがいいでしょう。よって、まずは移動するフォルダーを作成します。
続いて移動させます。
移動後は注意深く中身を確認してから削除しましょう。
clamavの精度は?
clamavはアンチウイルスソフトとしてどのぐらい信頼できるのでしょうか。今回は筆者宛てに届いたspamメールの中からウイルス付きと思われるファイルを28個ピックアップしてスキャンしてみました。なお、本当にウイルス付きのファイルかどうかは確認していませんので、その点はご注意ください。
2016年7月9日現在では、以下の結果になりました。
28個のうち3個がウイルスであると判定しています。
Ubuntuでも使用できるSophos Antivirus for Linuxは個人用では無料で使用できるため、今回試してみました。すると15個のファイルが20個のウイルスに感染しているという結果が出ました(図5)。
Windows 10に付属するWindows Defenderでは、9個のウイルスが発見できました(図6)。
サンプル数が少なすぎるのでどの程度信頼していいのかという問題はありますが、clamavではやや心もとない結果となってしまいました。それでも原稿執筆中最初にスキャンした時は一つしか見つかりませんでしたが、その後3つまで増えたことは付記しておきます。