ロボット、サーバーの事などをたまに更新。

memo

You are here:  home arrow etc arrow fedora arrow Antivirをインストールする1 - fedora8
Antivirをインストールする1 - fedora8
2007/11/11 日曜日 00:00:00 JST

Linuxにアンチウイルスソフトをインストールします。

Linuxに対応したアンチウイルスソフトというと、ClamAVとか、avast!とか思いついたのですが、今回はAntivirというドイツ製のものを使ってみます。なんでも、リアルタイムスキャン(OPEN/CLOSE/EXECUTE)もできるそうで、なんだかおもしろそうじゃないですか。ちなみに、SELinuxは無効しなければならないようです。

リアルタイムスキャンはオプションですが、これを使用するにはカーネルを再構築しなくてはならない事と、dazukoというソフトが必要です。こいつぁ、めんどいぜ。

インストールした時点の環境

Fedora8 i686 kernel-2.6.23.1-42.fc8
AntiVir  2.1.11-30
dazuko-2.3.4

yum-utils, rpmdevtools(+fakeroot)のインストール

yum-utilsはsrpmなどをリポジトリから簡単に取得する為、rpmdevtoolsはユーザー環境で作業するのを簡単にしてくれる物。最初、rootでカーネルを再構築していたら、/  パーティションが100%近くになって失敗したぜい。
fedora8ではrpmdevtoolsはインストール済みでした。インストール時に選んだパッケージにもよるんだろう。

$ su -c 'yum install yum-utils'

作業ディレクトリの初期化

$ rpmdev-setuptree 

~/rpmbuild/以下に BUILD, RPMS, SOURCES, SPECS, SRPMSが作成される。 

 

カーネルのソースパッケージを取得する

$ yumdownloader --source kernel-`uname -r`
$ su -c 'yum-builddep kernel-`uname -r`.src.rpm'

  

カーネルソースパッケージのインストール

$ rpm -Uvh kernel-`uname -r`.src.rpm
 警告: グループ kojibuilder は存在しません - root を使用します....... <- これは無視

 

カーネルのコンフィグファイルを編集する

$ cd ~/rpmbuild/SOURCES/
$ vi config-generic

#
# Security options
#
CONFIG_SECURITY=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_CAPABILITIES=m <-'y' を 'm'に

 

カーネルパッケージを作成する

カーネルパッケージ名を変更する(ちゃんとした方法では無い気がするが・・・)

$ cd ../SPECS
$ vi kernel.spec

# Polite request for people who spin their own kernel rpms:
# please modify the "buildid" define in a way that identifies
# that the kernel isn't the stock distribution kernel, for example,
# by setting the define to ".local" or ".bz123456"
#
#% define buildid .local
%define dist .fc8_DAZUKO

カーネルオプションを設定(必須ではない)

$ rpmbuild -bp --target=`uname -m` ./kernel.spec
$ cd ../BUILD/kernel-2.6.23/linux-2.6.23.i686/
$ make menuconfig
$ cd ~/rpmbuild/SPECS/

カーネルパッケージをビルド 

$ rpmbuild -bb --with baseonly --without debuginfo --target=`uname -m` ./kernel.spec
※1, ※2, ※3

※1) 途中で何か聞かれるところがある

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 282 more bytes)

ランダムな数値を生成する為になんか他の事しれくれってことか?

※2) 構築に仮領域が結構いるみたい 1 - 2G位使うかも。

※3) --with, --withoutでdebuginfoを飛ばしたりしているけど、オプションなしで全部構築するとエライ時間がかかるので、とりあえず必要なものだけ生成しましたー。P4  2.4G  mem 1Gマシンでコンパイル中、放っておいてオプション無しで5時間以上(途中で止めた)、オプション付きで2時間位で終わりました。

 

カーネルパッケージをインストールする

$ cd ~/rpmbuild/RPMS/i686/
$ su -c 'rpm -ivh kernel-2.6.23.1-42.fc8_DAZUKO.i686.rpm'
$ su -c 'rpm -ivh kernel-devel-2.6.23.1-42.fc8_DAZUKO.i686.rpm'

 

カーネルモジュール化した`capability.ko`をロードするスクリプトを作成する

fedora7の時は何事も無かったのですが、fedora8ではこのまま起動すると、下記の画面がでるようになりました。

Image

まだ、はっきりしていないのですが、どうやらD-Busというサービスがちゃんと起動していない為のようです。
`/var/log/messages`を見ると、D-Busを利用するサービスが口々に「..../var/run/dbus/system_bus_socket: No such file or directory」などと言いまくっているのでだめなんでしょ。`capability.ko`が読み込まれているとちゃんと起動するようです。

最初、`rc.local`に`modprobe capability`と記述したのですが、D-Busサービスの起動スクリプト`messagebus`は`S27`で、rc.localはS99という順で起動するので意味が無かったようです。

面倒なんですが、S27以前にモジュールを読み込ませるスクリプトを作ります。
違う良い方法があったら誰かおしえて〜!

  1. #!/bin/sh
  2. #
  3. # chkconfig: 345 26 74
  4. # description: load capability.ko
  5. #
  6.  
  7. # Source function library.
  8. . /etc/init.d/functions
  9.  
  10. RETVAL=0
  11.  
  12. module=capability
  13.  
  14. start() {
  15. echo -n "Starting $prog: loading module "
  16. echo -n "${module} "
  17. /sbin/modprobe $module >/dev/null 2>&1
  18.  
  19. RETVAL=$?
  20. if [ $RETVAL -eq 0 ] ; then
  21. echo_success
  22. echo
  23. else
  24. echo_failure
  25. echo
  26. fi
  27. }
  28. stop() {
  29. echo -n "Stopping $prog: "
  30.  
  31. /sbin/modprobe -r $module >/dev/null 2>&1
  32.  
  33. RETVAL=$?
  34. if [ $RETVAL -eq 0 ] ; then
  35. echo_success
  36. echo
  37. else
  38. echo_failure
  39. echo
  40. fi
  41. }
  42.  
  43. restart() {
  44. stop
  45. start
  46. RETVAL=$?
  47. }
  48. # See how we were called.
  49. case "$1" in
  50. start)
  51. start
  52. ;;
  53. stop)
  54. stop
  55. ;;
  56. restart|reload|condrestart)
  57. restart
  58. ;;
  59. *)
  60. echo "Usage: $0 {start|stop|restart|reload|condrestart}"
  61. exit 1
  62. esac
  63.  
  64. exit $RETVAL
 

上記のスクリプトを`capability`として実行権限を付与して`/etc/rc.d/init.d/`に設置

$ su -c '/sbin/chkconfig --add capability'

これで、起動時にcapability.koがロードされ、D-Busサービスも問題なく起動するはずれす。

  

nvidiaドライバーの作成 (必須ではない)

自分のマシンはGeforce4のグラフィックボードを積んでいて、`livna`より提供されているnvidia-96xxというドライバパッケージを使っています。オリジナルのカーネル用にnvidiaドライバも再構築しなければならないのはいいのですが、fedora8よりメンテナが変わったのかspecファイルなど構成が結構変更されていました。

現時点の最新バージョン`nvidia-96xx-kmod-96.43.01-16.lvn8.src.rpm`をダウンロードして、とりあえず`rpmbuild`をしてみたのですが、kmodtool(livna提供のパッケージ版)が必要!、、だとか、buildsys-build-rpmfusion-kerneldevpkgsが無い!だとか面倒くさくなってきたので、fedora7版のspecファイルを変更してビルドすることにしました。

どっかから(ftp://ftp.iij.ad.jp/pub/linux/fedora/updates/7/SRPMSとか)`nvidia-96xx-kmod-96.43.01-1.2.6.23.1_21.fc7.src.rpm`を拾ってくる。

$ rpm -Uvh nvidia-96xx-kmod-96.43.01-1.2.6.23.1_21.fc7.src.rpm
$ cd ~/rpmbuild/SPECS/
$ vi nvidia-96xx-kmod.spec
カーネルのバージョンを編集
%{!?kversion: %define kversion 2.6.23.1-42.fc8_DAZUKO}

PAEサポートは無視(?)で、下記箇所をコメント。%の後のスペースは必要。
%define upvar ""
#% ifarch i686
#% define paevar PAE
#% endif

$ rpmbuild -bb --target=i686 nvidia-96xx-kmod.spec
$ cd ../RPMS/i686
$ su -c 'rpm -ivh --force kmod-nvidia-96xx-96.43.01-1.2.6.23.1_42.fc8_DAZUKO.i686.rpm'

再起動して確認。
この方法だと、nvidiaドライバ自体のアップデートの時にはspecファイルをかなり書き換えないといけないので、次回はlivna現行の方法にに沿ってリビルドしたいところ。

 

dazukoのインストール 

http://www.dazuko.org/よりソースファイルをダウンロードします。現時点の最新版は2.3.4

$ wget http://www.dazuko.org/files/dazuko-2.3.4.tar.gz
$ tar -xzvf  dazuko-2.3.4.tar.gz
$ cd dazuko-2.3.4/
$ ./configure --kernelsrcdir=/usr/src/kernels/2.6.23.1-42.fc8_DAZUKO-i686
$ su -c 'make' ※1
$ su -c 'make install'
再起動

※1)  作業ファイルを/lib/modules/<kernerl-version>/build/include/linux/version.h.tmpとして作ろうとしているのか、rootでmakeしないとPermission deniedtって怒られちゃう。

カーネルモジュールdazuko.koは後にantivirの起動スクリプトで読み込ませるので、現時点で起動した時にdazuko.koを有効にする手段は省略する。

 

下準備はこれで終了。

 

参考:

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/933rtscanfc5.html
http://fedoraproject.org/wiki/Docs/CustomKernel
http://fedoraproject.org/wiki/Obsolete/KernelModules


Tags:  etc fedora Antivirをインストールする1 - fedora8
最終更新日 ( 2007/11/12 月曜日 17:57:54 JST )