debianのインストールされているpackageのmd5sumをチェックする。玄箱をdebian化するのに簡単なキットを使わせてもらっているがそのキットが信用できるのか?バックドアやトロイの木馬や単純なミスで正しくないファイルが含まれていないだろうか。 そのためのパッケージの内容とインストールされているファイルを検証した。結果GOODであった。 手順まず配布物に含まれているファイルをdebianの公式パッケージと比較するのは簡単といえば簡単である。それぞれを展開してcmpすればよい。ただし 配布物は多くのパッケージから構成されておりいちいちパッケージをダウンロードして展開、比較という作業は面倒である。 debianでは現在動作中のシステムのファイルをチェックするdebsumsがある。これを用いて動作中の玄箱上でチェックした。手順はDebian パッケージに含まれるファイルのチェックを参考させていただいた。以下はこの文章を読んだことを前提にいくつかの手順についてあげたものである。 次のパッケージを取得して中身をとりだしてmd5sumを計算する。私は ftp.kddilabs.jp からもらってきた。 pool/main/b/bash/bash_2.05a-11_powerpc.deb pool/main/b/base-files/base-files_3.0.2_powerpc.deb pool/main/b/base-passwd/base-passwd_3.4.1_powerpc.deb pool/main/m/mawk/mawk_1.3.3-8_powerpc.deb pool/main/d/debsums/debsums_2.0.2_all.deb pool/main/libd/libdigest-md5-perl/libdigest-md5-perl_2.13-2_powerpc.deb pool/main/p/perl-transition/perl-5.6-base_6.3_all.deb pool/main/p/perl/perl-base_5.6.1-8.3_powerpc.deb pool/main/g/glibc/libc6_2.2.5-11.5_powerpc.deb $ mkdir tmp $ for i in ../*powerpc.deb; ar x $i; tar zxf data.tar.gz; done $ find . -type f | xargs md5sum のような感じで。 参考に(1)でつくったファイル。 チェックする。 $ md5sum -c deb-ppc-base.md5 md5sum: MD5 check failed for '/usr/share/doc/perl/changelog.Debian.gz' md5sum: MD5 check failed for '/usr/share/man/man1/perl.1.gz' md5sum: MD5 check failed for '/usr/lib/perl/5.6.1/Config.pm' md5sum: MD5 check failed for '/usr/lib/perl/5.6.1/Errno.pm' md5sum: MD5 check failed for '/usr/lib/perl/5.6.1/auto/DynaLoader/DynaLoader.a' このエラーはdeb-ppc-base.md5を作るときに古いパッケージ(pool/main/p/perl/perl-base_5.6.1-8.3_powerpc.deb)で計算してしまったから。今は5.6.1-8.7だ。 ftp.kddilabs.jp:/Linux/packages/debian/dists/woody/main/binary-powerpc/Packages.gz が古いせいなのか。とりあえず進む。(あとで.debの最新版と比較して一致することを確認した。) そのあと(2)(3)は手抜きで今あるファイル&ミラー使用。(5)で--generate=missingオプションを追加してチェック。md5を持たない.debも計算してくれる。 # debsums -p /var/cache/apt/archives/ --generate=missing でチェックした。 mirror 関係のファイルが FAIL するけどこれ postinstでパッチ当ててるのでしょうがない。 課題ファイルのメタ情報(mode, owner, group 等の情報)はチェックされない。 配布時は mail, news 等のグループIDが間違っている。このため メールサーバー(exim),mailコマンドの動作に不都合が生じる。たとえば/var/mailのグループが11というgidになっていた。 存在しないowner,groupに属するファイルは以下のコマンドでチェックできる。 # find / -nouser -or -nogroup しかしこれでは正しいpermissionが設定されているかを確かめられる訳ではない。 ファイルのメタ情報の妥当性について検証する方法については今後の課題である。 配布物http://kuro.kaguya.biz/ からもらってきたものを以下に置く。 と思ったら容量オーバーにつき削除しました。 |