Linux用のアンチウィルスは、ClamAVがスタンダードな感じだけれど、Windowsでよく使われているAVGは、Linux版がある。
CnetOS 6.5にAVG for Linuxをインストールする手順について。
<環境>
OS:CentOS 6.5/64bit kernel:2.6.32-431.el6.x86_64.rpm
AVGは、以下からダウンロード。
http://free.avg.co.jp/download/files/alf
※URLが変更になった場合は、Webサイトのトップから探す
インストール
インストールはRPMパッケージなので簡単。
# cd /usr/local/src/ # wget http://download.avgfree.com/filedir/inst/avg2013flx-r3118-a6926.i386.rpm # rpm -ivh aavg2013flx-r3118-a6926.i386.rpm 準備中... ########################################### [100%] 1:avg2013flx ########################################### [100%] Installing 'avgd' service initscripts... Registering 'avgd' service to runlevels... Please do configuration with /opt/avg/av/bin/avgsetup Generating unique user id Processing command line ... Cfg file not specified using /opt/avg/av/cfg/diagcfg.xml. New installation ID succesffully generated. Starting AVG AV Starting avgd[ OK ]
以下のファイルは、コメントのみで内容は空。
/etc/avg.conf
設定ファイルは下記のディレクトリにある。
/opt/avg/av/cfg/
サービスの起動と停止は以下のようにする。
起動
# /etc/init.d/avgd start
停止
# /etc/init.d/avgd stop
ウィルス定義の更新。初回は少し時間がかかる。cronで定期的に自動更新する。
# avgupdate
スキャン
スキャンは以下のようにする。/tmp 以下にテスト用ウィルス(eicar)を置いてテスト。
# avgscan /tmp/ AVG command line Anti-Virus scanner Copyright (c) 2013 AVG Technologies CZ Virus database version: 3722/7313 Virus database release date: Mon, 07 Apr 2014 14:32:00 +0900 /tmp/eicar.com Virus identified EICAR_Test Files scanned : 92(92) Infections found : 1(1) PUPs found : 0 Files healed : 0 Warnings reported : 0 Errors reported : 0
テスト用のウィルスファイル(EICAR_Test)が検知された。
リアルタイムスキャン
Linux版のAVGでは、リアルタイムスキャン(リアルタイム保護、オンアクセス保護とも呼ばれると思う)に対応している。
/opt/avg/av/doc/README を見ると、
For on-access scanning feature either redirfs, dazuko or dazukofs is needed. Please follow the avgoad(1) man page for more detail description.
と記載がある。「avgoad」が該当するプロセスらしい。
確認しても、デフォルトではこのプロセスは動作していないようである。
# ps aux | grep avgoad
/opt/avg/av/doc/README.oad に手順が記載してあった。
DazukoFS/Dazuko on Linux/RedirFS/Fanotify のいずれかを使う。
Dazuko on LinuxはAVGでは非推奨。Fanotifyは、kernel 2.6.36 以上でなければ使えない。
CentOS6.5の場合、DazukoFS または RedirFSとなる。
ここでは、DazukoFSによりリアルタイムスキャンがされるよう設定する。
まずはカーネルソースの入手
# yum install kernel-devel
DazukoFSの入手
# wget http://dazuko.dnsalias.org/files/dazukofs-3.1.4.tar.gz →ビルドできないので、古いバージョンに・・・ # wget http://dazuko.dnsalias.org/files/dazukofs-3.1.2.tar.gz
展開
# tar zxf dazukofs-3.1.2.tar.gz # cd dazukofs-3.1.2
ビルド
# make make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules make[1]: ディレクトリ `/usr/src/kernels/2.6.32-431.el6.x86_64' に入ります CC [M] /usr/local/src/dazukofs-3.1.2/super.o /usr/local/src/dazukofs-3.1.2/super.c: In function ‘dazukofs_statfs’: /usr/local/src/dazukofs-3.1.2/super.c:62: 警告: passing argument 1 of ‘vfs_statfs’ from incompatible pointer type include/linux/fs.h:2026: note: expected ‘struct path *’ but argument is of type ‘struct dentry *’ CC [M] /usr/local/src/dazukofs-3.1.2/inode.o CC [M] /usr/local/src/dazukofs-3.1.2/file.o CC [M] /usr/local/src/dazukofs-3.1.2/dentry.o CC [M] /usr/local/src/dazukofs-3.1.2/mmap.o CC [M] /usr/local/src/dazukofs-3.1.2/group_dev.o CC [M] /usr/local/src/dazukofs-3.1.2/ign_dev.o CC [M] /usr/local/src/dazukofs-3.1.2/ctrl_dev.o CC [M] /usr/local/src/dazukofs-3.1.2/dev.o CC [M] /usr/local/src/dazukofs-3.1.2/event.o LD [M] /usr/local/src/dazukofs-3.1.2/dazukofs.o Building modules, stage 2. MODPOST 1 modules CC /usr/local/src/dazukofs-3.1.2/dazukofs.mod.o LD [M] /usr/local/src/dazukofs-3.1.2/dazukofs.ko.unsigned NO SIGN [M] /usr/local/src/dazukofs-3.1.2/dazukofs.ko make[1]: ディレクトリ `/usr/src/kernels/2.6.32-431.el6.x86_64' から出ます
モジュールのインストール
# make dazukofs_install make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules make[1]: ディレクトリ `/usr/src/kernels/2.6.32-431.el6.x86_64' に入ります Building modules, stage 2. MODPOST 1 modules make[1]: ディレクトリ `/usr/src/kernels/2.6.32-431.el6.x86_64' から出ます mkdir -p /lib/modules/`uname -r`/kernel/fs/dazukofs cp dazukofs.ko /lib/modules/`uname -r`/kernel/fs/dazukofs /sbin/depmod -ae
下記へモジュールがコピーされる。
/usr/src/kernels/2.6.32-431.el6.x86_64/kernel/fs/dazukofs/dazukofs.ko
モジュールのロード
# modprobe dazukofs
確認
# /sbin/lsmod | grep dazuko dazukofs 35843 0 # dmesg | grep dazukofs dazukofs: loaded, version=3.1.2
AVGの設定で、Default.setup.features.oad=true となっているか確認する。
# avgcfgctl | grep Default.setup.features.oad Default.setup.features.oad=true
モジュールを指定する。
# avgcfgctl | grep Default.oad.use Default.oad.use=fanotify
上記を変更する。変更は、下記のコマンドで行う。
DazukoFSの場合
# avgcfgctl -w Default.oad.use=dazukofs
RedireFSの場合
# avgcfgctl -w Default.oad.use=avflt
DazukoFSを使う場合の設定を確認する。
# avgcfgctl | grep Default.oad.dazuko Default.oad.dazuko.cache.hashtable_size=4096 Default.oad.dazuko.cache.max_items_number=65536 Default.oad.dazuko.events.close=false Default.oad.dazuko.events.close_modified=true Default.oad.dazuko.events.exec=true Default.oad.dazuko.events.open=true Default.oad.dazuko.paths.exclude=|/dev|/proc|/sys| Default.oad.dazuko.paths.include=
/tmp 以下をリアルタイムスキャン対応にする。
# avgcfgctl -w 'Default.oad.dazuko.paths.include=|/tmp|'
設定確認
# avgcfgctl | grep Default.oad.dazuko.paths.include Default.oad.dazuko.paths.include=|/tmp|
AVGサービスを再起動
# /etc/init.d/avgd restart
プロセス確認
# ps aux | grep avgoad root 22833 0.2 0.6 101104 3388 pts/0 Sl 11:51 0:00 /opt/avg/av/bin/avgoad
対象ディレクトリをDazukoFSでマウントする。
# mount -t dazukofs /tmp /tmp
リアルタイムスキャンに対応しているか動作確認
# cat /tmp/eicar.com.txt
cat: /tmp/eicar.com.txt: 許可されていない操作です
対象ディレクトリのアンマウント
# umount /tmp/ umount /tmp: デバイスがビジーです。 →AVGサービスを停止しなければならない # /etc/init.d/avgd stop # umount /tmp/ →AVGサービスを停止するとアンマウントできる
リアルタイムスキャンに対応していない状態でファイルを開いてみる。
# cat /tmp/eicar.com.txt
→内容が表示される(保護されていない)
リアルタイムスキャンに対応させる場合の注意点としては・・・
DazukoFSでマウント→AVGプロセスを起動の順では動作しない。
AVGプロセス起動→DazukoFSでマウントの順である必要がある。