diff options
Diffstat (limited to 'documentation/manual-pages/ja/man8/jail.8')
-rw-r--r-- | documentation/manual-pages/ja/man8/jail.8 | 568 |
1 files changed, 568 insertions, 0 deletions
diff --git a/documentation/manual-pages/ja/man8/jail.8 b/documentation/manual-pages/ja/man8/jail.8 new file mode 100644 index 0000000000..05230470aa --- /dev/null +++ b/documentation/manual-pages/ja/man8/jail.8 @@ -0,0 +1,568 @@ +.\" +.\" Copyright (c) 2000, 2003 Robert N. M. Watson +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" +.\" ---------------------------------------------------------------------------- +.\" "THE BEER-WARE LICENSE" (Revision 42): +.\" <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you +.\" can do whatever you want with this stuff. If we meet some day, and you think +.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp +.\" ---------------------------------------------------------------------------- +.\" +.\" %FreeBSD: src/usr.sbin/jail/jail.8,v 1.58.2.2 2005/02/27 15:40:16 brueffer Exp % +.\" +.\" $FreeBSD$ +.Dd April 8, 2003 +.Dt JAIL 8 +.Os +.Sh 名称 +.Nm jail +.Nd プロセスとその子孫を閉じ込める +.Sh 書式 +.Nm +.Op Fl i +.Op Fl l u Ar username | Fl U Ar username +.Ar path hostname ip-number command ... +.Sh 解説 +.Nm +ユーティリティはプロセスとその将来の子孫を閉じ込めます。 +.Pp +オプションは次の通りです: +.Bl -tag -width ".Fl u Ar username" +.It Fl i +新規に作成された jail (牢屋) に対し、jail の識別子を出力します。 +.It Fl l +きれいな環境でプログラムを実行します。 +.Ev HOME , SHELL , TERM , USER +以外の環境は捨てられます。 +.Ev HOME +と +.Ev SHELL +はターゲットログインのデフォルトの値に設定されます。 +.Ev USER +はターゲットログインに設定されます。 +.Ev TERM +は現在の環境からインポートされます。 +ターゲットログインのログインクラスケーパビリティデータベースからも +環境変数が設定されます。 +.It Fl u Ar username +ホスト環境から +.Ar command +を実行するユーザ名。 +.It Fl U Ar username +jail された環境から +.Ar command +を実行するユーザ名。 +.It Ar path +jail の根となるディレクトリ。 +.It Ar hostname +jail のホスト名。 +.It Ar ip-number +jail に割り当てられた IP 番号。 +.It Ar command +実行されるべきプログラムのパス名。 +.El +.Pp +典型的には、jail は、2 つの哲学のうちの 1 つを使用して設定されます。 +それぞれ、特定の単一アプリケーションを束縛すること、 +様々なデーモンやサービスが動作する +.Dq 仮想システムイメージ +を作成することです。 +どちらの場合であっても、 +必要なコマンドラインツール、デーモン、ライブラリ、 +アプリケーション設定ファイル等が利用可能となるために、 +十分完全にインストールされた +.Fx +のファイルシステムが必要です。 +しかしながら、仮想サーバ設定では、 +.Dq ブート +処理の設定のために、もっと多くの作業が必要です。 +このマニュアルページは +両者をサポートするための設定ステップを記述していますが、 +個別の要件に応じて設定ステップを最適化できるかもしれません。 +.Pp +詳細は +.Xr jail 2 +のマニュアルページを参照してください。 +.Sh 使用例 +.Ss jail 用ディレクトリツリー設定 +この例は、 +.Fx +配布物全体を含む jail 用ディレクトリツリーをどのように構築するかを示しています: +.Bd -literal +D=/here/is/the/jail +cd /usr/src +mkdir -p $D +make world DESTDIR=$D +cd etc +make distribution DESTDIR=$D +mount_devfs devfs $D/dev +cd $D +ln -sf dev/null kernel +.Ed +.Pp +注: jail に対し、devfs 中の適切なデバイスのみが見えるようになっている +ことが重要です。 +jail 中でのディスクデバイスへのアクセスを許すと、 +jail 中のプロセスが jail 外のファイルを修正することで、 +jail の砂箱を通り抜けてしまうかもしれません。 +devfs ルールを使用することで、 +jail 毎の devfs 中のエントリへのアクセスを制限する方法については、 +.Xr devfs 8 +を参照してください。 +.Pp +多くの場合、この例の方法では、 +必要をはるかに越えた数のものを jail に入れてしまうでしょう。 +もう一方の極端な例では、jail はただ 1 個のファイルのみを保持します: +すなわち jail の中で実行する実行形式 1 個だけです。 +.Pp +.Dq 太い +jail から開始して動かなくなるまで徐々にものを削除していく方が、 +.Dq 細い +jail から開始して動くようになるまで徐々にものを追加していくよりも +かなり簡単ですので、試すにはお勧めですが、また用心することもお勧めします。 +.Ss jail の設定 +jail 用ディレクトリツリーの構築のためには、 +.Sx jail 用ディレクトリツリー設定 +に記述されている手順を実行してください。 +この例では、jail された IP アドレス用に +.Pa /data/jail/192.168.11.100 +に構築するものと仮定します。 +以降、 +あなたが必要とするディレクトリ、IP アドレス、ホスト名で置き換えてください。 +.Ss ホスト環境の設定 +まず、実システムの環境を +.Dq jail に適した環境 +にします。 +一貫性のために、親となる実マシンを +.Dq ホスト環境 +と呼び、jail される仮想マシンを +.Dq jail 環境 +と呼びます。 +jail は IP エイリアスを使用して実装されていますので、 +最初にすべきことのひとつは、 +ホストシステムの IP サービスで、 +全ローカル IP アドレスに対してサービスを listen しているものを、 +無効化することです。 +特定の IP アドレスではなくすべての利用可能な IP アドレスに bind する +ネットワークサービスがホスト環境上に存在する場合、 +そのサービスは jail IP アドレスに送られた要求にサービス可能です。 +これは、 +.Xr inetd 8 +を修正して、適切な IP アドレスのみ listen させるといった +ことを意味します。 +次の設定を、ホスト環境の +.Pa /etc/rc.conf +に追加します: +.Bd -literal -offset indent +sendmail_enable="NO" +inetd_flags="-wW -a 192.168.11.23" +rpcbind_enable="NO" +.Ed +.Pp +この例では、 +.Li 192.168.11.23 +はホストシステムの元々の IP アドレスです。 +.Xr inetd 8 +から実行されるデーモンは、指定されたホスト IP アドレスを使用するよう、 +簡単に設定可能です。 +他のデーモンは手動での設定が必要です \(em いくつかに対しては、 +.Xr rc.conf 5 +フラグエントリにて可能ですが、他のものに対してはアプリケーション毎の +設定ファイルをいじるか、再コンパイルが必要です。 +次のよく使われるサービスは、個別の設定ファイルを修正して、 +アプリケーションが特定の IP アドレスだけを listen するようにすべきです: +.Pp +.Xr sshd 8 +の設定には +.Pa /etc/ssh/sshd_config +の修正が必要です。 +.Pp +.Xr sendmail 8 +の設定には +.Pa /etc/mail/sendmail.cf +の修正が必要です。 +.Pp +.Xr named 8 +の設定には +.Pa /etc/namedb/named.conf +の修正が必要です。 +.Pp +さらに、多くのサービスは、ホスト環境で動作させるために、 +再コンパイルが必要です。 +これには、 +.Xr rpcbind 8 , +.Xr nfsd 8 , +.Xr mountd 8 +といった、 +.Xr rpc 3 +を使用してサービスを提供するほとんどのアプリケーションが含まれます。 +一般に、bind する IP アドレスを指定不可能なアプリケーションは、 +jail IP アドレスに対して送られた要求にもそれらがサービスするのでない限り、 +ホスト環境で実行すべきではありません。 +ホスト環境からの NFS にサービスしようとすると、 +混乱が生じるかもしれませんし、 +特定の IP だけを使用するようには簡単には再設定できません。 +これは、NFS のサービスには、直接カーネルが実行するものがあるからです。 +ホスト環境内で動作している +すべてのサードパーティネットワークソフトウェアもまた確認および設定して、 +すべての IP アドレスに bind しないようにすべきです。 +結果として、これらのサービスもまた、 +jail 環境から提供されているように見えるでしょう。 +.Pp +ひとたびこれらのデーモンが無効化またはホスト環境内に固定化されたなら、 +後の混乱 +(jail へメールを送るときに、jail の sendmail がダウンしていて、 +メールがホストへ配送されてしまうなど) +の可能性を減らすために、 +リブートして全デーモンが既知の状態となるようにするのが最良です。 +.Ss jail の設定 +最初に jail を起動するときには、 +ネットワークインタフェースを設定しないでください。 +これは、ネットワークインタフェースを少し整理したり、 +アカウントを設定するためです。 +どんなマシンでも (仮想であってもそうでなくても)、 +root のパスワードやタイムゾーンといった情報を設定する必要があるでしょう。 +これらのステップのいくつかは、 +完全な仮想サーバを jail 内に作成したい場合にのみあてはまります。 +残りは、単一アプリケーションの束縛にも、 +仮想サーバの構築にも、あてはまります。 +.Pp +jail 内でシェルを起動します: +.Pp +.Dl "jail /data/jail/192.168.11.100 testhostname 192.168.11.100 /bin/sh" +.Pp +エラーがなければ、jail 内のシェルプロンプトで終わるでしょう。 +ここで、 +.Pa /usr/sbin/sysinstall +を実行し、インストール後の設定で様々な設定オプションを設定できます。 +また、同様のことを実現するために、 +.Pa /etc/rc.conf +等を手動で編集できます。 +.Pp +.Bl -bullet -offset indent -compact +.It +空の +.Pa /etc/fstab +を作成し、fstab が存在しないという起動警告を解消します (仮想サーバのみ)。 +.It +ポートマッパを無効化します +.Pa ( /etc/rc.conf : +.Li rpcbind_enable="NO" ) +(仮想サーバのみ)。 +.It +.Xr newaliases 1 +を実行し、 +.Xr sendmail 8 +の警告を解消します。 +.It +インタフェース設定を無効化し、 +.Xr ifconfig 8 +関連の起動警告を解消します +.Pq Li network_interfaces="" +(仮想サーバのみ)。 +.It +.Pa /etc/resolv.conf +を設定し、jail 内の名前解決が正しく動作するようにします。 +.It +root のパスワードを設定します。 +実ホストシステムとは異なっても良いです。 +.It +タイムゾーンを設定します。 +.It +jail 環境内のユーザにユーザアカウントを追加します。 +.It +jail 環境に必要なパッケージを追加します。 +.El +.Pp +パッケージ固有の設定 (ウェブサーバや SSH サーバ等) や、 +好みのログを取るための +.Pa /etc/syslog.conf +の修正等を行ってください。 +仮想サーバを使っていない場合、ホスト環境の +.Xr syslogd 8 +が jail 環境の syslog ソケットを listen するように変更したいかもしれません。 +この例では、syslog ソケットは +.Pa /data/jail/192.168.11.100/var/run/log +に格納されます。 +.Pp +シェルから抜ければ、jail はシャットダウンします。 +.Ss jail の開始 +jail を再開し、 +全デーモンと他のプログラムと共に環境を立ち上げる準備ができました。 +jail 内で単一アプリケーションを実行する場合、 +下記の例の +.Pa /etc/rc +を、アプリケーション起動のコマンドで置き換えてください。 +仮想サーバ環境の立ち上げるために、 +.Pa /etc/rc +が実行され、様々なデーモンやサービスを起動します。 +これを実行するには、まず仮想ホストのインタフェースを立ち上げ、 +それから jail の +.Pa /etc/rc +スクリプトを jail 内から実行します。 +.Pp +注: 信頼できないユーザに jail 内で root アクセスを許す予定なら、 +.Va security.jail.set_hostname_allowed +sysctl 変数を 0 に設定することを検討すると良いでしょう。 +管理に関する後述の議論を参照して、何故これが良い考えなのかを理解してください。 +この変数を設定することにしたならば、 +すべての jail の起動前にこれを設定することが必要であり、 +またブートの度に 1 度必要です。 +.Bd -literal -offset indent +ifconfig ed0 inet alias 192.168.11.100/32 +mount -t procfs proc /data/jail/192.168.11.100/proc +jail /data/jail/192.168.11.100 testhostname 192.168.11.100 \\ + /bin/sh /etc/rc +.Ed +.Pp +ほとんどの +.Xr sysctl 8 +設定変数は jail 内から設定不可であるため、若干の警告が表示されます。 +なぜなら、 +これらの設定変数は、すべての jail 環境とホスト環境に渡って大域的だからです。 +しかしながら、すべて正しく動作することでしょう。 +.Xr inetd 8 , +.Xr syslogd 8 +および他のプロセスが jail 内で動作していることは、 +.Xr ps 1 +を使用することにより、jail されたプロセスの横に +.Ql J +フラグが付いていることにより確認可能です。 +jail のアクティブリストを見るには +.Xr jls 8 +ユーティリティを使用します。 +jail された環境へは、ホスト名または IP アドレスで +.Xr telnet 1 +可能であり、 +前述の手順で作成したアカウントを使用してログイン可能です。 +.Ss jail の管理 +通常のマシンのシャットダウンコマンド、例えば +.Xr halt 8 , +.Xr reboot 8 , +.Xr shutdown 8 +は jail 内ではうまく使えません。 +jail 内の全プロセスを殺すためには、jail に root でログインし、 +やりたいことに依存して次のいずれかのコマンドを使用します: +.Pp +.Bd -literal -offset indent +kill -TERM -1 +kill -KILL -1 +.Ed +.Pp +これにより、 +.Dv SIGTERM +または +.Dv SIGKILL +のシグナルを、jail 内から jail 内の全プロセスに通知します。 +jail の用途に依存して、jail 内で +.Pa /etc/rc.shutdown +を実行したいかもしれません。 +jail 外からプロセスを殺すには、 +.Xr jexec 8 +ユーティリティを上述の +.Xr kill 1 +コマンドと組み合わせて使用するか、 +.Xr killall 1 +ユーティリティを +.Fl j +オプション付きで使用します。 +.Pp +.Pa /proc/ Ns Ar pid Ns Pa /status +ファイルの最後のフィールドには、 +プロセスが動作している jail のホスト名か、 +このプロセスが jail 内で動作していないことを示すために +.Dq Li - +を含みます。 +.Xr ps 1 +コマンドもまた、jail 内のプロセスに対して +.Ql J +フラグを示します。 +しかし、jail 用のホスト名はデフォルトでは jail 内から書き換え可能であるため、 +デフォルトでは +.Pa /proc +の status エントリは信頼できません。 +jail 内からのホスト名設定を禁ずるには、ホスト環境の sysctl 変数 +.Va security.jail.set_hostname_allowed +を 0 に設定します。 +これはすべての jail に影響します。 +.Xr sysctl.conf 5 +を使うことにより、ブートのたびにこの sysctl 設定を行えます。 +次の行を +.Pa /etc/sysctl.conf +に追加するだけです: +.Pp +.Dl security.jail.set_hostname_allowed=0 +.Ss sysctl MIB エントリ +jail 封鎖環境の特定の側面は、ホスト環境から、 +.Xr sysctl 8 +MIB 変数を使用して変更可能です。 +現在のところ、これらの変数はシステム上のすべての jail 環境に影響しますが、 +将来的にこの機能はより細粒度となる予定です。 +.Bl -tag -width XXX +.It Va security.jail.allow_raw_sockets +本 MIB エントリは、jail の root が raw ソケットを作成可能か否かを指定します。 +この MIB を 1 に設定すると、 +.Xr ping 8 +や +.Xr traceroute 8 +のようなユーティリティを jail 内で実行できるようになります。 +この MIB が設定されていれば、 +.Dv IP_HDRINCL +フラグがソケットに設定されているか否かに関わらず、 +ソース IP アドレスは jail に bind された IP アドレスに +強制的に従うようになります。 +raw ソケットは様々なネットワークサブシステムの設定や相互作用に使われるので、 +jail への特権的なアクセス権を信頼できない相手に与える場合には、 +さらに注意が必要です。 +そのため、デフォルトではこのオプションは無効になっています。 +.It Va security.jail.getfsstatroot_only +本 MIB エントリは、jail 内のプロセスが全マウントポイントのデータを +見られるか否かを指定します。 +1 (デフォルト) に設定された場合は、 +.Xr getfsstat 2 +システムコールは (jail 内のプロセスから呼ばれた場合) jail のルートの +vnode があるファイルシステムのデータだけを返します。 +注: これは +.Pa /dev , +.Pa /tmp , +.Pa /proc +のような jail 内のその他のマウントポイントを隠す効果もありますが、 +情報を必要以上に隠してしまいます。 +.It Va security.jail.set_hostname_allowed +本 MIB エントリは、jail 内のプロセスが +.Xr hostname 1 +または +.Xr sethostname 3 +を使用して、ホスト名を変更可能か否かを指定します。 +現在の jail 実装では、 +jail 内からホスト名を設定できてしまうと、 +.Pa /proc +内の jail 情報が正確であることに依存している管理ツールへ影響します。 +このため、 +信頼できない団体に jail への特権アクセスを許している環境においては、 +本機能は無効化するべきです。 +.It Va security.jail.socket_unixiproute_only +jail 機能は、単一の IPv4 アドレスを各 jail へ bind し、 +IPv4 空間における他のネットワークアドレスへのアクセスを制限します。 +これらは、ホスト環境ではアクセス可能であるかもしれません。 +しかしながら jail は現在のところ、 +jail 機能を持たない他のネットワークプロトコルスタックへの +アクセスを制限できません。 +このためデフォルトでは、jail 内のプロセスは +.Dv PF_LOCAL , PF_INET , PF_ROUTE +ドメインのプロトコルにのみアクセス可能ですので、 +.Ux +ドメインソケット、IPv4 アドレス、ルーティングソケットにアクセス可能です。 +他のドメインへアクセスを有効にするには、 +本 MIB エントリを 0 に設定します。 +.It Va security.jail.sysvipc_allowed +本 MIB エントリは、jail 内のプロセスが System V IPC プリミティブへの +アクセスを持つか否かを指定します。 +現在の jail 実装では、System V プリミティブは、 +ホスト環境と jail 環境に跨がる単一の名前空間を共有します。 +これは、jail 内のプロセスが jail 外のプロセスや他の jail 内のプロセスと +通信可能である (また潜在的に妨害も可能である) ことを意味します。 +このため、この機能はデフォルトで無効ですが、 +本 MIB エントリを 1 に設定することで有効にできます。 +.It Va security.jail.chflags_allowed +本 MIB エントリは jail 内の特権ユーザが +.Xr chflags 2 +によってどのように扱われるのかを決めます。 +0 であれば、そのようなユーザは非特権ユーザとして扱われ、システムファイルフラグを +セットしたりクリアしたりすることはできません。 +0 でなければ、特権ユーザとして扱われ、 +.Va kern.securelevel +による通常の束縛に従ってシステムファイルフラグを操作できます。 +.El +.Pp +現在、jail 毎の設定を保持する 2 個の MIB 関係変数があります。 +jail 内のプロセスによるこれらの変数の変更は、ホスト環境には影響せず、 +jail 環境に対してのみ影響します。 +変数名は +.Va kern.securelevel +と +.Va kern.hostname +です。 +.Sh 関連項目 +.Xr killall 1 , +.Xr newaliases 1 , +.Xr ps 1 , +.Xr chroot 2 , +.Xr jail 2 , +.Xr jail_attach 2 , +.Xr procfs 5 , +.Xr rc.conf 5 , +.Xr sysctl.conf 5 , +.Xr devfs 8 , +.Xr halt 8 , +.Xr inetd 8 , +.Xr jexec 8 , +.Xr jls 8 , +.Xr mount_devfs 8 , +.Xr named 8 , +.Xr reboot 8 , +.Xr rpcbind 8 , +.Xr sendmail 8 , +.Xr shutdown 8 , +.Xr sysctl 8 , +.Xr syslogd 8 +.Sh 歴史 +.Nm +ユーティリティは +.Fx 4.0 +ではじめて登場しました。 +.Sh 作者 +.An -nosplit +jail の機能は +.An Poul-Henning Kamp +によって +R&D Associates +.Pa http://www.rndassociates.com/ +のために書かれ、 +.Fx +に寄贈されました。 +.Pp +.An Robert Watson +が追加の文書を書き、少々バグを見つけ、 +新規機能を少々追加し、ユーザランドの jail 環境を綺麗にしました。 +.Sh バグ +jail は現在のところ、 +.Xr procfs 5 +に対して特定の jail 情報を +.Xr ps 1 +経由でアクセスできるようにするという能力がありません。 +また、アドレスエイリアスフラグを追加して、 +全 IP +.Pq Dv INADDR_ANY +上で listen するようなデーモンが +このフラグを持つアドレスには bind しないようにすると良いかもしれません。 +これにより、jail 内から提供されるサービスに対して +ホストデーモンが負担をかけない、安全なホスト環境を構築可能とします。 +現在のところ、 +最も単純な答えはホスト上で提供するサービスを最小化することであり、 +おそらく簡単に設定可能な +.Xr inetd 8 +から提供されるものに限定することでしょう。 |