5.10. 一般的な chroot および suid のパラノイア
chroot
はデーモンやユーザやその他のサービスを制限するための 最も強力な可能性のひとつです。対象のまわりに檻があると考えてください。 対象はここから逃げることができません (ふつうはできませんが、このような 檻がら逃げだすことを可能にする条件はいくつもあります)。もしユーザを信用 しないのであれば、そのユーザのために chroot された環境を作ることができます。 檻の中にライブラリとともに必要な実行ファイルをすべてコピーしなければ ならないので、これはディスクスペースを大量に消費するかもしれません。 たとえそのユーザが何か悪事をはたらいても、被害の範囲はその檻に限定されます。
Many services running as daemons could benefit from this sort of arrangement. The daemons that you install with your Debian distribution will not come, however, chrooted
per default.
This includes: name servers (such as
bind
), web servers (such as
apache
), mail servers (such as
sendmail
) and ftp servers (such as
wu-ftpd
). It is probably fair to say that the complexity of BIND is the reason why it has been exposed to a lot of attacks in recent years (see
「BIND を安全にする」).
Anyway, if you run any service on your system, you should consider running them as secure as possible. This includes: revoking root privileges, running in a restricted environment (such as a chroot jail) or replacing them with a more secure equivalent.
しかし、chroot
はそこで動いているユーザがスーパーユーザなら 破られる可能性があることに注意してください。だから、サービスは非特権ユーザと して動かす必要があります。環境を制限することによってそのサービスが アクセスできる、世界中から読める (または実行できる) ファイルを制限して いることになります。こうしてあなたのシステムにあるローカルのセキュリティ上の 脆弱性を使った、権限の昇進の可能性を制限するわけです。この場合でも、 かしこい攻撃者がこの檻を破る方法が全くないとは言えません。安全だという 評判があるサーバプログラムだけを使うのは安全のための追加の手段としてよいです。 オープンファイルハンドルのような非常に小さなセキュリティホールでも 熟練した攻撃者によってシステムを破るのに使われる可能性があります。 結局、chroot
はセキュリティ関連の道具としてではなく試験用の 道具として設計されたのです。
5.10.1. Making chrooted environments automatically
There are several programs to chroot automatically servers and services. Debian currently (accepted in May 2002) provides Wietse Venema's chrootuid
in the chrootuid package, as well as compartment and makejail. These programs can be used to set up a restricted environment for executing any program (chrootuid
enables you to even run it as a restricted user).
Some of these tools can be used to set up the chroot environment easily. The
makejail
program for example, can create and update a chroot jail with short configuration files (it provides sample configuration files for
bind
,
apache
,
postgresql
and
mysql
). It attempts to guess and install into the jail all files required by the daemon using
strace
,
stat
and Debian's package dependencies. More information at
http://www.floc.net/makejail/.
Jailer
is a similar tool which can be retrieved from
http://www.balabit.hu/downloads/jailer/ and is also available as a Debian package.