RHELのyum updateと互換ディストリビューションのyum updateには実は大きな差がある。それがなにかっつーと、RHELは原則としてHTTPSで保護されていることだ。
2012-09-01 21:42:47現状のRPMの扱いはセキュリティ的には実はちょっとだけ微妙な問題がある。RPMそのものにGPGサインが含まれることだ。この実装だと、GPGキーの検証ルーチンに脆弱性があったときに凄く困ったことになる。
2012-09-01 21:44:13で、実はGPG検証ルーチンはしばしば穴が見つかる。これは「互換ディストリのミラーサーバーにMiTMしてRPMに何かを仕込む」攻撃が結構な現実性を持つことになることを意味する。なにしろyumによるサイン検証はGPGを使ったものなので。
2012-09-01 21:46:03この問題はRHELをsubscription下で使ってる限り食らわない。前述の通りHTTPSで保護されてるから。じゃあ互換ディストリビューション側でもHTTPミラーするか、って話なわけですが、これも上手く行かない。
2012-09-01 21:47:29なんでかってーと、「ミラーサーバーの管理者が仕込めばいつでもOK」だから。本気でRPMの脆弱性をつついて何かしようと思うやつなら、あらかじめふつーの新規ミラーだと思わせておいて、ユーザーが増えてきたところでコンテンツに仕込みを入れる。
2012-09-01 21:48:25で、Red HatがRPMの設計を見なおさないのはある意味で当然なんだけど(だってRHELは影響ないし)、互換ディストリビューション側でyumにapt-getがやってるようなインデックス検証を取り込んだりしないのかなー、と実は前からちょっと思ってる。
2012-09-01 21:49:31なので、もしあなたが互換ディストリビューションの入ったマシンを管理していて、それが比較的重要なマシンであれば、yum download-onlyして、降ってきたRPMを事前に検証するべき。yumにまかせてはいけない。
2012-09-01 21:50:50HTTPSまわりの話はおいておいて、RPMには「あるある」罠とゆーのがある。yum updateしてシステム再起動したら、chkconfig的にオフにしたハズのサービスが起動してる! というのは良くある光景だ。
2012-09-01 21:53:40これはRPMに含まれるscriptで勝手にchkconfig <service> onしてるせい。現状の値は無視して、とにかくonにされてしまう。なのでchkconfig --listで一覧を確保しておいて、更新前後で比較するのはお約束だ。
2012-09-01 21:54:52あと、RPMのスクリプトは結構な割合で「ないわー」という処理をかましていることがある。こういうのを避けるためにはやっぱりyum downloadonlyでパッケージを落としてきて、rpm -q --scriptsしてレビューするべき。
2012-09-01 21:55:44同様の挙動として、RPMは更新時、「config file以外は問答無用で上書きする」という特性を持っていたりする。.rpmnewとか.rpmsaveができるのはこいつのせい。
2012-09-01 21:58:51RPMのconfig fileは.specの%configで指定してるファイルと同義。これはrpm -qcでリストできる「設定ファイル」と同等でもある。で、逆に言うと、/etc以下にあってもconfig fileでなければ上書きの危険がある。
2012-09-01 21:59:26いろいろ考えると、yum updateの前にファイルシステムスナップショットを取るか、アップデート対象になるRPMファイルの全ファイルをどこかにバックアップしないと危ない。
2012-09-01 22:00:14@henrich そーそー。そういう意味ではrpm -iは署名チェックするから安全なんすよね。もっともyumのコンテキストだと「この署名受け入れていい?」とかって聴きやがるけど。
2012-09-01 22:02:48@_hito_ というように、細かいところでは色々とディストリビューションの使い勝手は改良の余地があるわけで、みんな思いついたら簡単な実装とか、pros/consの列挙とかをしてみて提案するのがよいですな。
2012-09-01 22:04:04rpmは実は--prefixと--relocateとゆー極悪な黒魔術が搭載されている。その名の通りインストール時点でprefixを指定する(のと同じ効果のある)効果と、インストール後に同様の挙動をかますもの。たとえば/etc=/usr/local/etcなんてことが可能。
2012-09-01 22:08:35これを使うと、/が超少ない環境であっても/optの以下に全部追い出す、とかいう小技で生きていける。ただし、rpm -qiでパッケージ情報を得たとき、ここで「not relocateable」なやつには効かない。
2012-09-01 22:09:10これとrpmdbを複数持つことで複数のLLを管理ー、とかいう変態な真似ができる。問題はpkgsrc使った方がよさそうだけど。問題はそんな黒魔術誰に管理できんだよってことだけど。
2012-09-01 22:10:15@_hito_ まぁねぇ。とりあえずローカルのをdpkgでやるという統一感の無さをaptでも出きるようにするとかのほうが、なんとなーくいいかなぁ
2012-09-01 22:13:17