[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[connect24h:2921] Re: 【質問】ホームディレクトリより出られたくない時



 こんにちは。前田@nanetです。

 chrootによるshell環境構築の話ですが、私は運用上、chrootな
shellをユーザに与える運用をしたことがありませんのでそれを
ご承知下さい。事情は後述します。

 すでにご説明頂いていますが、chroot(2)というシステムコールと
それを使うための、chroot(8)というコマンドがあります。

 もし、「chrootコマンドを使うだけで全ての環境ができあがる」
ことを期待しておられたのでしたら、残念ながら期待はずれです。

 チュートリアルとして、以下の様な環境を作ってみて下さい。

 ~user/
    tmproot/
      bin/
        sh ← /bin/sh をコピー

 rootで、chroot ~user/tmproot /bin/sh

 を実行すると、/tmprootがあたかも/であったかの様にshellが
立ち上がります。これがchrootの提供する機能です。
 これで、(OSにセキュリティホールがなければ)/tmprootの外に
出る方法がなくなります。
 これを利用して、/tmprootの中にユーザが必要な環境を全て
構築して、さらに(a)/tmprootの中にchrootしてからshellを起動する
ようなshellを与えるか、あるいは(b)/tmprootの中でユーザの
接続を待ち受けるかすれば、/tmprootの外に出られないshell環境
を構築することができます。
 (a),(b)には各々長所と短所がありますので、自分が構築したい
環境に合わせて、選択してください。

 chrootの機能をさらに高度にしたものに、jailがあります。
 もともと、chrootは封じ込めの為に作られたものではないので、
chrootでは、chroot下でroot権限を持たれたら事実上何でもできて
しまうので、封じ込める環境としては十分ではありません。
 このために、FreeBSDにはjailという機能があり、こちらは
その名前が示す通りに、封じ込めを目的として作られています。

 このコマンドのマニュアルページには、jail環境の構築についても
触れられており、chroot環境の作り方のヒントにもなると思います。

 実際のところ、chroot環境やjail環境を構築して、ユーザーに提供
するのは非常に大変です。
 jail環境ならば、まだ苦労に見合った効果が得られる様ですが、
 chroot環境ではroot権限を得られれば、封じ込めの効果はなくなり
ますので、多くの場合ユーザにも管理者にも満足のいく環境を構築
するのには相当の苦労をします。

 chrootを使えば、信頼できない(技術的or倫理的)なユーザにshell
を与えることができるわけではありません。
 逆に、ユーザにとって満足の行く環境を提供することも難しい気が
します。

 それだけの苦労をしても、chrootでshellを与える必要があるか
どうかはもう一度検討されることをお勧めします。

-- 
Nagasaki Network Service (http://www.nanet.co.jp/)
 kei@xxxxxxxxxxx <Katsuyuki Maeda> (http://www.nanet.co.jp/~kei/)
 keikuma@xxxxxxxxxxx (for PostPet)
募| アルバイト募集中(長崎・諫早近郊)VB,VC,CGI,FreeBSD,ページ作成等
集| 興味のある方はお気軽にメール下さい。
「終わらないプロジェクトはない。終わっちゃうプロジェクトはあるけど。」

--[PR]------------------------------------------------------------------
色々なジャンルの新商品・新発売情報が盛り沢山!【新発売navi】
 http://ad.freeml.com/cgi-bin/ad.cgi?id=aJ6m2
------------------------------------------------------------------[PR]--
<GMO GROUP> Global Media Online  www.gmo.jp