Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法


投稿日:2014年3月18日
  • 0
  • 0



動作する環境の限られたClamukoによるリアルタイムスキャン

dazuko

このページではClam AntiVirusの一機能であるClamukoでリアルタイムスキャンをする方法を解説します。

かなり癖のある機能で、動作させるには一般の環境構築とは異なる、特殊な操作が必要になります。


Clamukoによるリアルタイムスキャンの前提条件

1.Clam AntiVirus」がインストールされ適切に設定されている
インストール方法は「無料で使えるLinuxのアンチウイルスソフト「Clam AntiVirus」の導入と設定の解説」を参照してください。

2.Capability Module」がモジュール化され読み込まれていること
モジュール化の方法は「CentOSでカーネルの再構築を行いカーネルモジュールを有効にする方法」を参照してください。

Clamukoを導入する際の注意

さらに注意点として、これから解説する方法は「32bitのCentOS5.8でカーネルが2.6.17、Clam AntiVirus 9.7」という環境で動作テストしています。

「64bitのCentOS 5.9でカーネルは2.6.18」という環境で再現しようとしたところ、様々なエラーが出て結局導入は断念しました。断念の顛末は「こちら」。
Clam AntiVirusのバージョン0.98からはDazukoを利用したリアルタイムスキャンは廃止されました。他方Linuxでは、Capability Moduleのファイルアクセス通知機能を廃止し、Fanotifyに移行しています。

ウイルススキャンという更新頻度が重要な分野ですが、基幹部の開発が終了しているため、上記のバグが解消される見込みは皆無です。

そのため、記事を投稿しておいて恐縮ですが、古い環境にリアルタイムスキャンを導入したいという特殊な環境以外はおすすめしません。

これからウイルス対策ソフトでリアルタイムスキャンを利用したいという方は、将来性も考えてFanotifyがサポートされるカーネル2.6.37以降を導入することをお勧めします。

Dazukoとは

前置きが長くなって失礼しました。
それではDazukoについて概要を把握しておきます。
日経BPさんの解説が端的で解りやすいので引用させていただきます。

アプリケーションのファイルアクセスを監視する仮想的なデバイスドライバーである。独H+BEDV Datentechnik GmbH社(現在の社名はAvira GmbH社)が同社のウイルス対策ソフト「AntiVir」向けに開発した。現在はオープンソースプロジェクトのコミュニティによって開発が進められている。名前の由来は、ドイツ語で「ファイルアクセスコントロール」を意味する「Dateizugriffskontrolle」からきている。バージョン番号が2.xまでを「Dazuko」、同 3.x以降を「DazukoFS」と呼ぶ。

Dazukoとは」より

補足するならDazukoFSモジュールもFanotifyの登場により開発は停止しています。


Dazukoの導入

導入方法は公式のInstallation_HOWTO_(Dazuko_2.x)で解説されています。
この解説に沿って導入作業を進めていきます。

Dazukoのダウンロード

まず「本家のダウンロードページ」ヘアクセスします。
今回使うのは下のDazuko 2.3.9です。リンクをコピーしてwgetでダウンロードします。

dazuko01
# su - ←rootユーザーでログイン、ホームディレクトリに移動
# wget http://dazuko.dnsalias.org/files/dazuko-2.3.9.tar.gz
# tar -xvf dazuko-2.3.9.tar.gz ←解凍

コンパイル

# cd dazuko-2.3.9 ←作業ディレクトリに移動
# ./configure ←makeファイルの作成
(省略)
=======================
 Configuration summary
=======================

module events = ON_OPEN ON_EXEC
devfs support = no
rsbac support = no
stacking support = yes
path resolution = registered daemon context
module debug = no
library 1.x compatibility = yes

# make ←コンパイル

インストールのテスト

インストールのテストを行います。

# make test
/sbin/modprobe commoncap
/sbin/insmod ./dazuko.ko
/sbin/rmmod dazuko
--> test successful :)

test successful」と出力されれば正しくmakeファイルが作成されています。

モジュールの読み込みテスト

続いてdazukoの動作テストのため一旦モジュールを読み込みます。
(解説には/sbin/insmod dazuko.koとありましたが、以下の方法で動作しました。)

# /sbin/insmod ./dazuko.ko
# cat /proc/modules ←正しく読み込めたか調べる
commoncap 7296 1 dazuko, Live 0xe081c000

以上のように「dazuko」と表示されれば正しく読み込めています。他にもコマンドで「cat /proc/devices」としても表示できます。

モジュールの動作テスト

正しく読み込めることが分かったら、今度は動作テストです。

# cd example_c
# make
# ./example /home /usr/home

すると「/home」ディレクトリの監視を開始します。

そこで別の端末(Tera Termなど)を起動して「/home」ディレクトリ内のファイルを開いたり編集してみます

# vi /home/test ←別端末で作成

すると監視している端末では以下のように表示されます。

OPEN   uid:0 pid:3796 mode:33152 flags:1 file_uid:0 file_gid:0 file_mode:33152 file_device:0 file_size:0 file:/home/.test.swp
OPEN   uid:0 pid:3796 mode:33152 flags:1 file_uid:0 file_gid:0 file_mode:33152 file_device:0 file_size:0 file:/home/.test.swpx
OPEN   uid:0 pid:3796 mode:33152 flags:1 file_uid:0 file_gid:0 file_mode:33152 file_device:0 file_size:0 file:/home/.test.swp
OPEN   uid:0 pid:3796 mode:33206 flags:1 file_uid:0 file_gid:0 file_mode:33206 file_device:0 file_size:0 file:/home/test

これらの表示がされれば正しくファイルの動作を監視できています。

Dazukoインストール

無事に動作テストが成功したので、このままインストールを行います。
後でアンインストールやらファイル管理が楽なようにpacoを使ってインストールします。

# cd /root/dazuko-2.3.9
# paco -D make install

pacoの使い方はまた別の機会に紹介します。インストールしないで実行する場合はディレクトリを移動して「make install」とするだけでインストールできます。

せっかくpacoでインストールしたので、どんなファイルがインストールされたのかチェックしてみます。

# paco -f dazuko-2.3.9
dazuko-2.3.9:
/lib/modules/2.6.17/extra/dazuko.ko
/lib/modules/2.6.17/modules.alias
/lib/modules/2.6.17/modules.ccwmap
/lib/modules/2.6.17/modules.dep
/lib/modules/2.6.17/modules.ieee1394map
/lib/modules/2.6.17/modules.inputmap
/lib/modules/2.6.17/modules.isapnpmap
/lib/modules/2.6.17/modules.ofmap
/lib/modules/2.6.17/modules.pcimap
/lib/modules/2.6.17/modules.seriomap
/lib/modules/2.6.17/modules.symbols
/lib/modules/2.6.17/modules.usbmap

以上でDazukoのインストールは完了です。


Clamukoを有効にする

環境が整ったのでClam AntiVirusの設定ファイルを編集してClamukoを有効にします。

# vi /etc/clamd.conf

500行目あたりにある以下のセクションあたりから編集します。

##
## Clamuko settings
##

clamukoによるリアルタイムスキャンを有効にする

#ClamukoScanOnAccess yes
↓
ClamukoScanOnAccess yes

スキャンのタイミングを指定

上から、開くとき、閉じるとき、実行中という指定。

#ClamukoScanOnOpen yes
#ClamukoScanOnClose yes
#ClamukoScanOnExec yes
↓
ClamukoScanOnOpen yes
ClamukoScanOnClose yes
ClamukoScanOnExec yes

スキャンするディレクトリの指定

ひとまず「/home」だけ有効にしておく。全てのファイル操作を監視する関係上「/proc」などを指定すると重くなるので注意。

#ClamukoIncludePath /home
↓
ClamukoIncludePath /home

再起動して設定を有効に。

# /etc/rc.d/init.d/clamd restart

モジュールの読み込み順序の変更

Clamukoを正しく動作させるにはdazukoモジュールを読み込んでから、clamdを起動する必要があります。

clamdを自動起動の状態にしておくと、OSが立ち上がった時には起動しているため、一旦clamdを停止してからdazukoモジュールを読み込み、再度起動する必要があるため、2度手間になります。

そこで独自設定用スクリプトである「/etc/rc.local」に順序良く起動するように指定をします。

clamdの自動起動を解除

# chkconfig clamd off

続いて「rc.local」の編集

最終行に追記します。

# vi /etc/rc.local

# dazukoの自動ロード
modprobe dazuko

# clamdの自動ロード
/etc/rc.d/init.d/clamd start

これでサーバの再起動を行えば自動でClamukoが有効になります。

正しく動作していればウイルス発見時にログファイル「/var/log/messages」に以下のように出力されます。
/home」ディレクトリにテストウイルスであるeicar.comをダウンロードしてファイルを開こうとした際のエラー

Feb 12 21:15:10 linux clamd[2745]: Clamuko: /home/eicar.com: Eicar-Test-Signature FOUND

またClamukoが有効な状態でウイルスファイルを開こうとするとroot権限であっても「permission denied」と表示されアクセスを拒否されます。


Dazukoを利用したClamukoのリアルタイムスキャンは、セキュリティモジュールがまだ黎明期だった頃に開発されました。しかもファイルアクセスや権限の操作は非常にデリケートな分野のため、とにかく競合やバグが多く、利用できる環境も限られています。

動作しなかったら深追いをせず、別の方法を探すことをお勧めします。


現在のページを共有する



現在のページに関連する記事

Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 Capability Moduleをモジュール化することで起こる様々な不具合
Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 無料で使えるLinuxのアンチウイルスソフト「Clam AntiVirus」の導入と設定の解説
Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 メモリ消費の多いClam AntiVirusの代替としてSophos Anti-Virus for Linuxを使う方法
Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 メールサーバが「451 Local Error」を返した際の対処法
Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 ClamAVとClamSMTPを利用してPostfixのメールをウイルスチェック
Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 CentOSでカーネルの再構築を行いカーネルモジュールを有効にする方法
Clam AntiVirusのClamukoでウイルスのリアルタイムスキャンを有効にする方法 Linuxの基本の基本。Linuxの基本的なディレクトリ構成

おすすめの記事

WordPressのサイトをHTTPS化して学ぶLet’s Encryptの使い方

WordPressのサイトをHTTPS化して学ぶLet’s Encryptの使い方

Apacheのmod_rewriteモジュールの使い方を徹底的に解説

Apacheのmod_rewriteモジュールの使い方を徹底的に解説

初めてでも理解できるようになる「Firefox機能拡張の開発」

初めてでも理解できるようになる「Firefox機能拡張の開発」

メールのエラーコードと、メールサーバのmaillog解析方法まとめ

メールのエラーコードと、メールサーバのmaillog解析方法まとめ

GMO系列のホスティングサービスでGmailへメールが送信できない不具合が発生中

GMO系列のホスティングサービスでGmailへメールが送信できない…

fluentdとNorikraでDoS攻撃を遮断し、メールで通知する方法

fluentdとNorikraでDoS攻撃を遮断し、メールで通知する方法

「このアプリがシャットダウンを妨げています」と表示されるがアプリがわからない場合の対処法

「このアプリがシャットダウンを妨げています」と表示されるが…

SNSのカウントをキャッシュするWordPressのプラグインを作成しました

SNSのカウントをキャッシュするWordPressのプラグインを作成し…


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。