カテゴリー
Linux

新・懸案のLoox(DazukoFS+ClamAV+HAVP on LuPu)。

Win2Kのサポートが切れたので,後継としてPuppyLinuxをワークステーションに使おうと思って,いろいろ試してきた。Puppy独自のFRUGALモードで使うのなら,フォーラムの投稿通り,あまりウィルス対策をする必要がないかもしれないが,FULLモードで使うし昨今の情勢だしということで,やはり,ウィルス対策いるよねということである。
では,以下をお読みください。

結局,LooxS5/53Wはオフラインワープロ専用として使うことにしたので,もう一台のLooxT93B(これには,今までWin2Kが入っていて,ちょっと重いけれどもモバイル機として利用してきたもの。オンアクセススキャンに執着してきたのも,この機を今まで通り使いたいからだ。)にLuPu5.1.0をFullインストールすることにした。

  • LuPu5.1.0をLooxにインストールする。
    1. S5/53W と違って,CDが使えるので,CD からシステム用に12GBに切った/dev/sda1にLuPu5.1.0 をインストール。再起動。
    2. 再起動後,Welcome to Lucid Puppy で,「eth0,wlan0」の状態を確認。どちらもちゃんと機能しているが,wlan0のほうは使える環境がないので,どうしようもないね。
      「言語と場所」の設定,下のほうに推奨で,ATI Radeon Mobility M16 LYのためにXorg_High.petを導入しろと書いてあったので,お言葉通りにしたのち,再起動。
    3. 「Menu」→「Network」からFirewallの設定。
      Pet_Maker-1.7-3.petをインストールし,これを使って,lang_support_ja-1.4.sfsをpetとしてインストール。
      SCIM入力メソッドの設定。x再起動。 <—- 日本語化なんだけど,メニューは英語のまま。
    4. x上のキーボードの言語設定。
  • DazukoFSをLooxにインストールする。
    1. 開発の環境準備。
      • lupu_devx_510.sfsをpetとしてインストール。
      • kernel_src-2.6.33.2-patched.sfsをpetとしてインストール。
        # /usr/src/linuxに移動して,make oldconfigを実行。
        # make menuconfigを実行。
        # makeを実行。
        半日掛っちゃったよぉ,カーネルの再構築に! モジュールを作るのに再構築しない方法もあるらしい。でも,/boot/System.map とかを使うようで,LuPuの場合はかなり勉強しないと使えるようにならないかも。ニャンともいいがたいね。
        この半日掛ったlinux-2.6.33.2をlinux-2.6.33.2-T93B.tar.gzとして,保存。    <—–   やり直しに備えて,「転ばぬ先の杖」ね。なんせ半日だから。
        (注意) ⇒ linux-2.6.33.2だけしか保存していないから,使うときはさきにkernel_src-2.6.33.2-patched.sfsをインストールして,出来たlinux-2.6.33.2とtar.bzを展開して出来たものとを置き換えること。
      • linux/fsにfs_stack.hを作る。中は,externvoid fsstack_copy_attr_all(struct inode *dest, const struct inode *src);の1行。
    2. dazukofs-3.1.3-rc2.tar.gz を usr/src 内に,tar zxvf dazukofs-3.1.3-rc2.tar.gzで展開。解凍フォルダにあるREADMEの説明に従う。
      # cd dazukofs-3.1.3-rc2,移動後,makeを実行。
      # make dazukofs_installを実行。
    3. # dazukofsのモジュールを手動でロード。
      ロードはされたが,LuPu501では出なかった Warning が……Deprecated config file /etc/modprobe.conf, all files belong into /etc/modprobe.d/. 。
    4. DazukoFSをテストする。
      • # mkdir /tmp/dazukofs_test     DazukoFSがテストのために使うディレクトリを作る。
      • # mount -t dazukofs /tmp/dazukofs_test /tmp/dazukofs_test    作ったディレクトリをDazukoFSでマウントする。
      • # cp /bin/* /tmp/dazukofs_test   テストのためのファイルを作ったディレクトリにコピーする。
      • /usr/src/dazukofs-3.1.3-rc2/testに移動してテストプログラムを作るために,makeを実行。
      • # env LD_LIBRARY_PATH=lib ./showfiles   テストプログラムを実行。
      • そのままで,別の端末を開いて,
        $ find /tmp/dazukofs_test -type f | xargs file
        元の端末内に,アクセス中のファイル名が,表示されれば,テストは完了。CTRL-Cでテストプログラムを終了する。
      • # umount /tmp/dazukofs_test    テストディレクトリをアンマウントする。
      • # mount | grep dazukofs    DazukoFSがマウントしているディレクトリがあるかの確認。この時点では何もなくて正常。
    5. 前々から先送りにしていた,boot 時の dazukofsモジュールの自動ロードとマウントを達成しなくてはいけない。 Warning に現れた modprobe.conf などをいろいろいじってみたのだがうまくいかなかった。
      ところがである。Puppyにはちゃんと GUI で新モジュールをロードするメニューがあるではないスか!!
      メニューは英語のままなのだが,デスクトップから「setup」→「Configure startup of Puppy」→「Click here to add a new module」→「Module add-list manager」と行く。dazukofsを探して追加してやったら,あっさりロードされた。(ハハハ)
    6. で,DazukoFSによるマウントのほうだけど,READMEにはね,/etc/fstab に
      /usr   /usr   dazukofs   defaults   0   0
      /opt   /opt   dazukofs   defaults   0   0
      と追記すればよいと書いてあるのだが,これはだめだった。boot時のメッセージを見てわかったが,モジュールがロードされる前にFileSystemの有効化が来るせいのようだ。
      困って,分からないなりに設定ファイルなどをあれこれ開けて見ていたのだが,うまいことに,/etc/rc.d/rc.sysinit にPERSONAL BOOT SCRIPT という項目があって,/etc/rc.d/rc.local をいじれと書いてあった。
      mount -t dazukofs /root /root
      mount -t dazukofs /usr /usr
      mount -t dazukofs /opt /opt
      を書いて再起動したらうまくいった。ただ,どこをマウントするのが適切かわからない。ダウンロードファイルなどは,/root に落とすからここだけでもいいのかなぁ。
      いずれにしても,ClamAvの作業に移る前に再起動。
      (BugFix) /root をマウントすると,電源が落ちなくなった。電源が切れなくなった件について,/etc/rc.d/rc.shutdown を見ていたら,そのものずばりの [#091117 weird shutdown bug. would not shutdown when a partition mounted, x restarted.] という項があった。
      で,rc.shutdown 内を検索して 091117 について書いてある 927行目あたりを眺めていたら,922 行目に [STRAYPARTL=”`echo “$MNTDPARTS” |grep -v “/dev/pts” |grep -v “/proc” |grep -v “/sys” |grep -v “tmpfs” |grep -v “rootfs” |grep -v ‘on / ‘ | grep -v “/dev/root” | grep -v “usbfs” | grep -v “unionfs” | grep -v “/initrd” | grep -v “dazukofs”`”] というのがあって,fsについての指定をしているようなので,ここに赤字を追記。無事解決。
  • ClamAvをLooxにインストールする。
    1. パッケージマネージャで libbz2-dev をインストール。
    2. /root にcheck-0.9.8.tar.gz を解凍して,インストール。解凍フォルダ内にあるINSTALLの説明に従う。
      # ./configure
      # make
      # make install
    3. /root にclamav-0.96.1.tar.gz を解凍して,インストール。解凍フォルダ内にあるDocsの説明に従う。
      まず,グループとユーザを作成。
      # addgroup clamav
      # adduser -G clamav -s /bin/false clamav
      clamavのパスワードを設定。
      $ ./configure –sysconfdir=/etc –enable-check
      $ make
      # make install
    4. unit tests 。
      # make check
    5. checkの結果
      PASS: check_clamav
      PASS: check_freshclam.sh
      PASS: check_sigtool.sh
      SKIP: check_unit_vg.sh
      PASS: check1_clamscan.sh
      PASS: check2_clamd.sh
      PASS: check3_clamd.sh
      PASS: check4_clamd.sh
      SKIP: check5_clamd_vg.sh
      SKIP: check6_clamd_vg.sh
      SKIP: check7_clamd_hg.sh
      SKIP: check8_clamd_hg.sh

      ======================
      All 7 tests passed
      (5 tests were not run)
      ======================
    6. 全然かかわりないんだろうけど,# /sbin/sysctl -w kernel/shmmax=268435456 にて,shmmax を 268435456 (256MB) に書き換えた。
      というのが,LooxS5/53W でやっていたときに segmentation fault が出て,clamd がちょくちょく死んじゃってたんだが,これに関しては,ClamAvのBugzilla でもあまり回答がなかった。でも,ちょっと古いバージョンの話で「 freshclam をやったら直らない? 」なんていうのがあって,その辺のからみがあるなら― Avast の件が頭にあったもので―おまじないで shmmax を増やしておいたらならないかなと思ったんだよね。
      で,単なる気休めです。
    7. /etc にある clamd.conf の内容を編集。
      • Example の頭に # をつけてコメントアウト。
      • 以下の部分はアンコメント。
        LogFile /tmp/clamd.log     テストラン後はコメントアウトする。
        LogTime yes     テストラン後はコメントアウトする。
        LocalSocket /tmp/clamd.socket
        FixStaleSocket yes
        User root     これを明示的に宣言しないと,オンアクセススキャンが効かないようだ。
        DetectPUA yes
        ClamukoScanOnAccess yes
    8. /etc/rc.d/rc.local に env LD_LIBRARY_PATH=/usr/local/lib /usr/local/sbin/clamd -c /etc/clamd.conf を追加。
      PATHを恒久的に通すことも考えたが,起動時にいるだけだから, env で済ませることにした。再起動したら,無事,clamd が走っていた。
    9. /etc にある freshclam.conf の内容を編集。
      • Example の頭に # をつけてコメントアウト。
      • 以下の部分はアンコメント。
        UpdateLogFile /var/log/freshclam.log
        LogTime yes
        DatabaseMirror db.jp.clamav.net
        NotifyClamd /etc/clamd.conf
    10. freshclam.log用の空ファイルを作り,所有者を変更する。
      # touch /var/log/freshclam.log
      # chown clamav:clamav /var/log/freshclam.log
    11. /etc/rc.d/rc.local に env LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/freshclam -d を追加。
      起動時にfreshclamがデーモンとして起動する。再起動して,freshclam.log を見たら,ちゃんとウィルスデータベースが更新されていた。これがらみで,rc.networkのMAXWAITを48
    12. /root/clamav-0.96.1/test内のテスト用ウイルスを解凍(たとえば,unzip ~/clamav-0.96.1/test/clam.zip)しようとすると
      error: cannot open zipfile [ /root/clamav-0.96.1/test/clam.zip ]
      Operation not permitted
      unzip: cannot find or open /root/clamav-0.96.1/test/clam.zip, /root/clamav-0.96.1/test/clam.zip.zip or /root/clamav-0.96.1/test/clam.zip.ZIP.
      が出る。ただ,端末にしてもGUIで直接ファイルをクリックにしても,メッセージがわかりにくくて困る。
    13. テストラン→# env LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/clamscan –infected –remove –recursive / を打って,一応テストウィルスのお掃除。
      で,判明したこと。DazukoFsがマウントしているディレクトリで見つかったマルファイルについては
      WARNING: Can’t open file ファイル名: Operation not permitted
      が出る。削除してくれないので,手動削除が必要。それ以外のディレクトリについては,
      ファイル名: なんちゃらかんちゃら FOUND
      ファイル名: Removed.
      が出て,削除までしてくれる。
    14. clamscan については,シェルを作ってcron に入れておくという手もあるけど,Windowsマシンだって,そんなにたびたび,フルスキャンはしないし,ときどき思い出してやればいいのではないかと思うわけ。
  • HAVPをLooxにインストールする。
    HAVPについては,前にjuneさんがお書きでしたね。petはないようなので,ソースからやります。

    1. /root にhavp-0.92.tar.gz を解凍してインストール。解凍フォルダにあるINSTALLの説明に従う。
    2. # ./configure
      # make
      # make install
    3. /usr/local/etc/havp/havp.config を編集。
      • REMOVETHISLINE deleteme   を削除。
      • Listening port を8080にするので,
        PORT 8080   をアンコメント。
        BIND_ADDRESS 127.0.0.1   をアンコメント。
      • ClamAV Library Scanner を有効化するために,
        ENABLECLAMD true
      • ClamAV Socket Scanner を有効化するために,
        ENABLECLAMD true
        CLAMDSOCKET /tmp/clamd.socket
    4. # addgroup havp
      # adduser -G havp -s /bin/false havp
      # chown havp /var/tmp/havp /var/log/havp /var/run/havp
      # chmod 700 /var/tmp/havp /var/log/havp /var/run/havp
      LuPuもLinux の仲間なので,mandatory locking を有効にね,ということらしい。
      # mount -o remount,mand /
    5. ブラウザの設定をする。FireFoxを使うつもりなので,最新版の3.6.8をインストールし,日本語化(参照「懸案のLoox-#7。」)ののち,ネットワークの接続設定からプロキシを,127.0.0.1:8080にする。。
    6. テストがうまくいったら,rc.localに
      # mount -o remount,mand /
      # env LD_LIBRARY_PATH=/usr/local/lib /usr/local/sbin/havp -c /usr/local/etc/havp/havp.config
      を記入して,起動時に起きるようにする。
  • 後は,適当にLooxを自分用にカスタマイズする。
    追記:

  • HAVP経由の接続がうまく行ったり行かなかったり,今日(8/20),つくづくerror.logを眺めていたら,起動時にclamd.socketとの接続がうまく行っていないときがあるようだ。起動順をclamd,freshclam,HAVPとしていたのだが,ウィルスデータベースの更新が多いときにfreshclamが,HAVPとclamd.socketの接続の邪魔になっているように感じたので,起動順をclamd,HAVP,freshclamにやりかえた。これでしばらく様子を見てみよう。
  • ところで,T93Bからは,初の書き込みです。(喜)—-8/21 01:26a.m.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です