
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.125 / 読者数:1208名こんばんは、うすだです。
前回の最後に、月2回発行を宣言してから、初めての発行になります。
…なんて思っていましたら、前週末に、また風邪を引いてしまいました。
それはさておき、やはり、ネタを考えるのも、構成などを考えて動作確認を行うのも、
時間に余裕のある方が、なにかとうまくいくようです。
そのかいがあったのでしょうか、今回、自分では面白いと思えるネタを、
思いつくことができました。
まあ、こんな調子で、月2回発行を続けていきたいと思います。 …特にオチはありませんので、今週も、はりきってまいりましょう! 今週のお題 - chroot してデーモンを動かす近年の仮想化技術の発展にともない、1台のマシン上で複数の OS を立ち上げ、 それぞれの仮想マシン上で別のサービスを動作させる、なんていうことが、 ごく普通にできるようになりました。
これにより、セキュリティの強化と管理のしやすさが両立できるように…
なったかと言いますと、論理的には PC の数が増えていることになりますので、
一概にそうとは言えないように思います。 もう少し、管理の手間を省きつつ、セキュリティを強化したいなあということで、 今週は、chroot を使って、 隔離された環境下でデーモンを動作させてみたいと思います。
その前にまず、chroot とはなんぞや? というところから始めたいと思います。 chroot とは、カレントプロセスのルートディレクトリを、 / 以外に設定してくれる機能です。
指定したディレクトリがルートディレクトリになりますので、
それより上のディレクトリを参照できなくなります。 先ほど、さらっと「機能です」とか言いましたが、実際には、 chroot を実行する同名のコマンドと、やはり同名のシステムコールがあります。 コマンドの方が例を示しやすいので、以降では、chroot コマンドを使用して、 いろいろ試してみたいと思います。 まずは、chroot を体験してみましょう。
ここでは、/bin/sh を chroot で動かしてみたいと思います。 # cd /tmp # mkdir chroot-sh
なにはともあれ必要なのは、/bin/sh そのものです。 # mkdir chroot-sh/bin # cp -p /bin/sh chroot-sh/bin/ また、/bin/sh はたいていダイナミックリンクされていますので、 必要なライブラリを、ldd コマンドで確認します。
# ldd /bin/sh
linux-gate.so.1 => (0xffffe000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0xb7f6d000)
libdl.so.2 => /lib/libdl.so.2 (0xb7f68000)
libc.so.6 => /lib/i686/libc.so.6 (0xb7e46000)
/lib/ld-linux.so.2 (0xb7f82000)
libtermcap.so.2, libdl.so.2, libc.so.6 および ld-linux.so.2 が必要ですので、 これらをコピーします。 # mkdir chroot-sh/lib # cp -p /lib/libtermcap.so.2 /lib/libdl.so.2 /lib/i686/libc.so.6 \ /lib/ld-linux.so.2 chroot-sh/lib
最低限のものが用意できましたので、実行してみましょう。 # chroot /tmp/chroot-sh /bin/sh sh-2.05#
上記のように、シェルのプロンプトが出力されれば、成功です。 sh-2.05# ls sh: /bin/ls: No such file or directory
なにかコマンドを実行しようとしても、ないよと言われてしまいます。 sh-2.05# echo * bin lib sh-2.05# echo lib/* lib/ld-linux.so.2 lib/libc.so.6 lib/libdl.so.2 lib/libtermcap.so.2 もういいと思われたら、exit してください。もとのシェルに戻ります。 sh-2.05# exit exit # ちなみに、必要なライブラリがないと、以下のように文句を言われ、 実行できません。 # mv chroot-sh/lib/libc.so.6 chroot-sh/lib/libc.so.6- # chroot /tmp/chroot-sh /bin/sh /bin/sh: error while loading shared libraries: libc.so.6: cannot \ open shared object file: No such file or directory
chroot してなにかを動かす方法が、それとなくわかりました。 とはいえ、たとえば Apache なんかですと、 必要なライブラリやファイルなどが大量にありますので、 簡単にご紹介することができません。
いろいろ探した結果、dhcpd が簡単に実現できますので、
異論のある貴兄もいらっしゃるとは思いますが、
dhcpd を動かしてみたいと思います。
まずは、先ほどと同様、dhcpd を動作させるのに必要な、
実行ファイルとライブラリを一通りそろえます。
# cd /tmp
# mkdir -p chroot-dhcpd/sbin chroot-dhcpd/lib
# cp -p `which dhcpd` chroot-dhcpd/sbin
# ldd `which dhcpd`
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/i686/libc.so.6 (0xb7e62000)
/lib/ld-linux.so.2 (0xb7f95000)
# cp -p /lib/i686/libc.so.6 /lib/ld-linux.so.2 chroot-dhcpd/lib
これだけでいいかと言いますと、実は、dhcpd を動かすには、 上記の他に以下のファイルを必要とします。 /etc/dhcpd.conf /var/lib/dhcp/dhcpd.leases ですので、これらをコピーします。 # tar cf - -C / etc/dhcpd.conf var/lib/dhcp/dhcpd.leases | \ tar xvfp - -C chroot-dhcpd これで、準備が整いました。では、実行してみましょう。 # chroot /tmp/chroot-dhcpd /sbin/dhcpd
特に文句を言われていなければ、動作しているはずです。 以上、chroot を用いて、 限られた環境下でデーモンを動作させる方法をご紹介しました。
デーモンを動作させるには、必要なファイルを洗い出す必要があります。
また、動作させたいものが /proc や /sys 等を使用する場合、
そのままではうまくいきません。 それから、/etc 以下などのファイルを見せなくすることはできますが、 たとえばネットワークには制限がかかりませんので、 踏台として使われるリスクは変わりません。 chroot によって守られる箇所とそうでない箇所を把握した上で、お使いください。
さて、最後に、ここまで引っ張っておいてたいへん申し訳ありませんが、
chroot にはアナがありまして、もう一度 chroot することで、
指定したルートディレクトリより上に行けてしまうようです。 宿題の答え先週の宿題は、 dump/restore の代わりに、tar を使って、フルバックアップと復元を 試みてください。 でした。 というわけで、実際にやってみました。
前回の手順のうち、dump コマンドと restore コマンドを実行するところを、
tar コマンドに差し替えて試しました。
まず、バックアップですが、前回では、以下のように、
dump コマンドを実行していました。 # dump -0u -f /mnt/ubuntu.dump / この部分を、tar コマンドの実行に置き換えます。 # tar cfz /mnt/ubuntu.tgz bin boot cdrom dev etc home initrd* \ lib media opt root sbin srv usr var vmlinuz
/mnt, /proc および /sys を対象から外すため、
それ以外のディレクトリをすべて指定しています。 そして、バックアップを復元する際に、前回では、 以下のように restore コマンドを実行していました。 # restore -r -f /media/nfs/ubuntu.dump
これを、tar コマンドの実行に置き換えます。 # tar xfz /media/nfs/ubuntu.tgz # mkdir mnt proc sys その後、同様に GRUB の設定を行うことで、無事 Ubuntu が立ち上がるのかと言いますと… …問題なく、普通に立ち上がりました。 厳密には、/var/lock, /var/run や /dev 以下など、 実際には tmpfs として使用されるところもバックアップ・復元しているため、 冗長になっていますが、tar でもそれなりになんとかなりました。 前回の手順につきましては、以下をご参照ください。
Vol.124 - 正統派なバックアップを行う / 王の帰還 ちなみに、 telinit 1 でシングルユーザモードに移行してバックアップを行っていますが、 recovery mode で立ち上げるという方法もアリだと思います。 今週の宿題今週の宿題は、 inetd/xinetd 経由で起動されるサービスも chroot できるかどうか、 試してみましょう。 です。 原理的にはできるはずですが、既存のサービスでこれっていうものがありませんので、 簡単なサービスを作成して、それを chroot で起動できないか、 試行錯誤してみたいと思います。 あとがき以前にも書きましたが、わたしは成功マニアです。(あるいは、でした。) 数年前までは、世間でそれなりに話題になっている成功本があると、つい購入して、 読んで、高揚して、よーしやるぞと決意して、数日で断念するかやらない、 という失敗スパイラルを繰り返しました。 ですから、まあ、さすがに、もう、ここのところは、話題の成功本を見ても、 心ときめくことなく、購入することもなく、スルーしておりました。 しかし、以下の本が話題になったとき、またしても、 わたしの中の何かが反応してしまい、ブックオフで見つけた瞬間に購入していました。
夢をかなえるゾウ
評判の内容はさまざまですが、主に、
「笑える」「今までの成功本を網羅している」「理想の成功本」
という声が多いように思われます。 実際読んでみますと、まず「笑える」という時点で、 今までの成功本とは違うと言っても過言ではないと思います。面白いです。
しかし、注目すべき点は、各章にある「今日の課題」だと思います。
というわけで、一気に読んでしまうのがもったいないので、
1日に1章ずつ読んでいます。 ロウソクの火がまだ小さくなっていない方は、是非読んでみてください。
あ、著者のサイトも面白いです。
ウケる日記
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」−ここにきて、いろんなことが進み始めています。ふふふ。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本 [X]
「センネン画報」 今日 マチ子「粟津潔 デザインする言葉」 粟津潔 「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸 「Make: Volume01」 オライリー・ジャパン 「セーラが町にやってきた」 清野 由実 「手紙屋」 喜多川 泰 「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久 「人蕩し術」 無能 唱元 「子育てハッピーアドバイス2」 明橋 大二, 太田 知子 「ラッセル幸福論」 B. Russell 「それでも人生にイエスと言う」 Viktor Emil Frankl 「子育てハッピーアドバイス」 明橋 大二, 太田 知子 「考具」 加藤 昌治 「北欧デザイン<3>」 渡部 千春 「北斎の謎を解く」 諏訪 春雄 「体感美術館」 平野 暁臣 「チベット永遠の書」 Theodore Illion 「リナックスの革命」 Pekka Himanen 「人月の神話」 Frederick Phillips,Jr. Brooks 「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner 「小布施ッション<2001-2002>」 セーラ・マリ カミングス 「アンパンマン伝説」 やなせ たかし 「夢をかなえるゾウ」 水野 敬也 「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann 「北欧デザイン<2>」 渡部 千春 「北欧デザイン<1>」 渡部 千春 「ヒューマン2.0」 渡辺 千賀 「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯 「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦 「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき 「デザインのデザイン」 原 研哉 「マキアヴェッリ語録」 塩野 七生 「ハンバーガーを待つ3分間の値段」 斎藤 由多加 「星の旅人-スペイン「奥の細道」-」 黛 まどか 「食品の裏側」 安部 司 「On Lisp」 Paul Graham 「ぼくが医者をやめた理由 つづき」 永井 明 「あなたならどうする?」 Jack Nikolaschka 「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」 Mark G. Graff, Kenneth R. van Wyk 「「左利き」は天才?−利き手をめぐる脳と進化の謎」 David Wolman 「自分の中に毒を持て」 岡本 太郎 「アトピーの薬を減らす本」 田中 貴子 「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留 「X51.ORG THE ODYSSEY」 佐藤 健寿 「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子 「沖縄文化論」 岡本 太郎 「「伝説の社員」になれ!」 土井 英司 「コンピュータの構成と設計(上)」 Patterson & Hennessy 「カラスのジョンソン」 明川 哲也 「ドリルを売るには穴を売れ」 佐藤 義典 「頭がよくなる照明術」 結城 未来 「クロフォードのインタラクティブデザイン論」 Chris Crawford 「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso 「非常識のすすめ―逆発想の仏教論」 ひろさちや 「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」 デージーネット 「イノベーションの達人!」 Tom Kelly, Jonathan Littman 「クリエーター50人が語る創造の原点」 小原 啓渡 「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick 「楽しい気象観察図鑑」 武田 康男 「入門 Ajax」 高橋 登史朗 「リリカルな自画像」 岡本 太郎 「やぎの目ゴールデンベスト」 林 雄司 「初めてのPython 第2版」 Mark Lutz,David Ascher 「鼻兎」 小林 賢太郎 「なぜ、これがアートなの?」 Amelia Arenas 「芸術起業論」 村上 隆 「まほう色の瞳」 Enrique Barrios 「ラーメンズつくるひとデコ」 ラーメンズ 「R25 つきぬけた男たち」 R25編集部 「美の呪力」 岡本 太郎 「しろのあお」 上大岡 トメ 「ザ・ゴール」 Eliyahu M. Goldratt 「ハッカーと画家」 Paul Graham 「岡本太郎に乾杯」 岡本 敏子 「Fedore Core Expert」 Software Design 「誰も知らない男」 ブルース・バートン 「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト 「国家の罠」 佐藤 優 「夜回り先生」 水谷 修 「やぎの目絵日記」 林 雄司 「7つの習慣」 スティーブン・R. コヴィー 「まろ、ん?−大掴源氏物語」 小泉 吉宏 「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル 「ポストモダン・マーケティング」 スティーブン ブラウン 「機動戦士ガンダムさん」 大和田 秀樹 「小エロのひみつ - Webやぎの目研究発表」 林 雄司 「これ、誰がデザインしたの?」 渡部千春 「60分間・企業ダントツ化プロジェクト」 神田 昌典 「ガルシアへの手紙」 エルバート ハバード 「人生は素晴らしいものだ」 オグ・マンディーノ 「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン 「ワインバーグのシステム思考法」 G.M.ワインバーグ 「渋谷ではたらく社長の告白」 藤田 晋 「渋井真帆の日経新聞読みこなし隊」 渋井 真帆 「コラム息切れ」 小野 法師丸 「早朝起業」 松山 真之介 「変な人が書いた驚くほどツイてる話」 斎藤 一人 「35歳から仕事で大切にしたいこと」 村井 勉 「金融広告を読め」 吉本 佳生 「発想する会社!」 トム・ケリー,ジョナサン・リットマン 「エハイク」 吉田 戦車 「人生の旋律」 神田 昌典 「仕事の思想」 田坂 広志 「CPUの創りかた」 渡波 郁 「非常識な成功法則」 神田 昌典 …これ以前は記録してません…
▼ 気に入ってる本
| ||||||||||||||||||||||||||||||||||||||||