nDiki : ext2

ext2 -second extended file system

1999年1月26日 (火)

orion に Tripwire ASR 1.3 をインストール

Tripwire Security Systems, Inc. より Tripwire ASR 1.3 (tripwire-1.30-1.tar.gz) を入手し orion にインストール。 なお ASR は Academic Source Release の略。

tripwire はシステム中の実行可能ファイル、設定ファイルなど指定したファイルの変更があったかどうかを検証するツール。 システムがクラックされた場合、裏口を開ける機能をつけくわえた実行可能ファイルなどがインストールされたり、すでにあるものを置き換えたりされる可能性がある。 tripwire は事前に作成したファイルの情報のデータベースと、現在のファイルの情報を比較することによってこのような変更を検出することができる。

なおここでは、以下の環境、条件でインストール、設定を行った。

まずはパッケージ展開。適当な作業ディレクトリ上で。

 $tar zxvf tripwire-1.30-1.tar.gz
 $cd tripwire-1.30-1

次に Makefile の編集。 以下の2つの変数を値を書き換える。

 DESTDIR = /MO/tripwire/bin
 DATADIR = /MO/tripwire/var

次に OS 毎の設定ファイル。Ported をみると, conf-linux.h を使うようにかいてあるが、みあたらないので conf-sunos-4.1.h で代用する。

$emacs ./configs/conf-sunos-4.1.h

以下の通り変更する。

 #define DIRENT
 を
 #undef DIRENT
 に

最後に include/config.h を編集する。

 $emacs include/config.h

ここでは、 OS 別のインクルードファイルを読み込むようにするのと、各種ファイルへのパスを設定。

 #include "../configs/conf-svr4.h"
 を
 #include "../configs/conf-sunos-4.1.h"
 に。また以下の変数の値を変更。
 #define CONFIG_PATH "/MO/tripwire/etc"
 #define DATABASE_PATH "/MO/tripwire/var"

そして make。

 $make
 $make test

次に MO を準備する。 マウントする前にシングルユーザモードにし、インストール、ならびにデータベース作業中に他の誰かが悪行をできないようにしておく。

 $su
 #mkesfs /dev/sdb
 #mkdir /MO
 #init S
 #mount -t ext2 /dev/sdb /MO

そしてインストール。

 #make install
 #mkdir /MO/tripwire/etc
 #cp configs/tw.conf.linux /MO/tripwire/etc/tw.config
 #emacs /MO/tripwire/etc/tw.config

とりあえず tw.config には自分でコンパイルしたカーネルファイルの指定を追加しておく。

そしてここから実際に使用。 まずは、現在のファイルの情報に関するデータベースを作成する。 終了すると、tripwire を実行したディレクトリに databases/tw.db_orion が作成される(orion の部分はホスト名がはいる)。 これを /MO/tripwire/var に移動しておく。

 #cd /MO/tripwire/bin
 #tripwire -v -initialize
 #mv databases/tw.db_orion /MO/tripwire/var

以上が終了したら、一旦 MO ディスクを抜き、書き込み禁止にしておく。 そしてマルチユーザーモードに戻す。 リブートしてしまう。

 #cd /
 #umount /MO
 #sync; sync; shutdown -r now

とりあえず検証してみる。Read-only でマウントし /MO/tripwire/bin/tripwire を実行する。

 #mount -t ext2 -r /dev/sdb /MO
 #/MO/tripwire/bin/tripwire

一応何も変更は検出されないはず。 と思ったら、いくつか追加されたファイルと変更されたファイルが検出。 モジュールの依存関係ファイルやら何やら。 これらのファイルはおいおい設定でチェックしないようにしなければ。

今後は cron 等で定期的にチェックするようにする設定を行う必要がある。 今日はもう遅いのでやめ。

なお本来は、tripwire のインストール場所、ファイルの位置などはできるだけわかりにくいようにする必要がある。 公開などしてはいけない(ここであくまでも例で、具体的な位置は異なっている)。

  • UNIX Magazine 96/7 pp.93-101
  • LINUX JAPAN Vol.5
[ 1月26日全て ]

2006年2月23日 (木)

Debian Linux kernel 2.6.15 ビルド

ThinkPad X31 用に 2.6.15 の Debian kernel パッケージ構築を行う。 インストールしてある Debian 標準の 2.6.15 のパッケージの設定 /boot/config-2.6.15-1-686 をベースに設定を行いビルド

 #apt-get build-dep linux-image-2.6.15-1-686
 #exit
 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux
 $tar jxvf /usr/src/linux-source-2.6.15.tar.bz2
 $cd linux-source-2.6.15
 $cp /boot/config-2.6.15-1-686 .config
 $make menuconfig
 $make-kpkg clean
 $fakeroot make-kpkg --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.15_sebastian.1.0_i386.deb

ブート後 Kernel panic。

標準の設定では IDE 関係がモジュールになっているのを見落していた。もう一度設定を修正してビルドしなおして起動。 Linux を使い始めたころ ext2 をモジュールにして失敗したことがあり、ファイルシステム関連は忘れずチェックするようにしているのだが、IDE 関連はノーチェックだった。

MADWIFI

 module-assistant prepare
 module-assistant auto-install madwifi
[ 2月23日全て ]

2006年6月10日 (土)

WiKicker における PageName 最長文字数

WiKicker では PageName を エンコードした文字列を URI に埋め込んだり、サーバで保存する際のファイル名にしたりしている。 このため、PageName の最長文字数はそれらの最長文字数に依存しているはずである。

今まで確認を後回しにしていたのだが、新しい機能の追加の際に確認しておく必要があるので調査してみた。

WiKicker の実装

WiKicker の実装がらみとして最長を決める要素としては

がある。

仕様等による制約

  • HTTP では URI の長さには制限なし (RFC2616 3.2.1)
  • Web サーバは Request-URI が長いと 414 Request-URI Too Long を返す (RFC2616 10.4.15)。Apache は LimitRequestLine ディレクティブにより、URI を含むリクエスト行のサイズを制限することができる(配布時には 8190)。
  • Internet Explorer が扱える URL の長さは 2083文字。
  • ext2ファイル名は 255文字まで(増やすこともできる)。
  • 手元の Linux 2.6.15 で試したところ、パス名は 4095文字まで。

WiKicker で問題が出ない PageName 最長文字数

上記の中ではファイル名による制約が一番大きい。

WiKicker 内部でファイル名として base64 (の亜種) でエンコードしたものを使っているので、元の文字列はは最長 189バイトまでなければならない。base64 だと3バイトで4文字になるため、189バイトで 252文字となる。

WiKicker ではここでさらにファイル名に ',v'、'-lock' をつける事があるので、実際には元の文字列は最長 186 バイトまでとなる。

PageName が 186 バイトまでだとすると、URL エスケープしたとして558バイト。 WikiEngine のスクリプトの URL や他のパラメータとあわせても、これぐらいなら大丈夫のはずである。

ということで WiKicker では Linux 上だと通常 PageName は 186 バイトが最長と言ってよさそうだ。 日本語の文字はだいたい UTF-8 で3バイトになるので、62 文字までということになる。

そのうち、WiKicker に制約チェックを入れることにしよう。 そのうち。

[ 6月10日全て ]

2009年10月4日 (日)

ThinkPad X31sidLinux kernel 事情

ここ最近 ThinkPad X31Debian GNU/Linux sid が調子が悪い。 いろいろ調査・トライしてみている途中の状態をメモ。

状況

  • いつごろからか、サスペンドしても ThinkPad X31 の月ランプが光らなくなった。
  • 8月19日ぐらい(から、使用中に Caps Lock キーが点滅してフリーズするようになった。(記事)。
  • 9月11日ぐらいから digiKam写真データを認識しなくなった(記事)。digiKam 更新で対応。
  • 9月23日ぐらいからサスペンドさせると復帰時に Caps Lock キーが点滅して Kernel panic になるようになった(記事)。
  • 9月29日に X があがらなくなった(記事)。こちらは xserver-xorg-core ダウングレードで対応。
  • Linux kernel 起動時に udev が「今の kernel だとデバイスあたりの処理がおかしくなるかもよ」というような警告を出すようになった。

アプリケーションや X の不具合などと重なって unstable 全開だ。

Linux kernel については各種パッケージの更新に追いつけなくなっているようなので、アップデートをかける必要がありそう。

Linux kernel 再構築

Debian GNU/Linux の標準イメージを使ってみたが、ThinkPad X31 では例によって ACPI では蓋の開閉でサスペンドしない。 APM を使うようにした Debian kernel パッケージ構築が必要。 しかし今年の2月に 2.6.26 をビルドした時(記事)から、いろいろ変更があったようで一筋縄ではいかなかった。 以下は最終的な手順(たぶん)。

 #apt-get build-dep linux-image-2.6.30-2-686
 #apt-get install linux-source-2.6.30 aufs-source
 #exit

 $mkdir -p /usr/local/src/linux
 $cd /usr/local/src/linux

 $tar jxvf /usr/src/linux-source-2.6.30.tar.bz2
 $tar zxvf /usr/src/aufs.tar.bz
 $emacs modules modules/aufs/Makefile
 $cd linux-source-2.6.30
 $cp /boot/config-2.6.30-2-686 .config
 $make menuconfig
 $make-kpkg clean

 MODULE_LOC=/usr/local/src/linux/modules fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image modules_image
 $fakeroot make-kpkg --initrd --revision=sebastian.1.0 kernel_image
 $cd ..
 $su
 #dpkg -i linux-image-2.6.30_sebastian.1.0_i386.deb aufs-modules-2.6.30_0+20090302-3+sebastian.1.0_i386.deb
 #update-initramfs -c -k 2.6.30
 #update-grub
  • aufs inotify を有効にする(記事)必要があるのだが、modules/aufs/debian/conf.mk が無くなっていた。modules/aufs/Makefile 側で同様の設定追加をする必要あり。
  • MADWIFI はコンパイルが通らなくなっていた。
  • 自前で作った linux-image の Debian パッケージが、initrd まわりの処理をうまくしてくれない。自分で update-initramfs した。

MADWIFI はもはやコンパイルが通らなくなっていた。 試してみたところ ath5k で通信できるようになっているではないか。modprobe ath5k すると wlan0 が使えるようになった(MADWIFI の時は ath0)。

initrd 関係は結構はまった。 最初いつも通りビルドして dpkg した後再起動したのだが、"Unable to mount root fs on unknown-block(0, 0)" が出て先にすすまない。 IDE まわりや ext2ext3 まわりを M から y にしても駄目。 何度か試しているうちに、 linux-image を dpkg --install した際に実行される update-grub のメッセージで自分で作った Linux kernel だけ initrd 関係の処理がされないことに気が付いた。 自前で update-initramfs したらようやく 2.6.30 が起動するようになった。

2.6.30 にすることで起動時の udev の警告は解消された。 しかしながらサスペンドはまだ駄目。 復帰時にフリーズする。 やはりパワー関係の処理があやしい。今は AC アダプタを外しても KPowersave は気付かない。

もう少しおっかける必要がありそう。

対応できるまではサスペンドできず。毎回起動したりシャットダウンしたりするの面倒くさーい。

[ 10月4日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.04349s / load averages: 0.71, 0.71, 0.71