next up previous contents
Next: 12.5.2 ユーザのCGIの実行 Up: 12.5 CGIとセキュリティ Previous: 12.5 CGIとセキュリティ

12.5.1 User/Group指定子

特に、rootなどの強い権限でhttpdを走らせるときには、怪しいCGIの侵入を 許せば、重大なセキュリティ・ホールが生まれてしまいます。 rootの権限でhttpdを走らせるのは考えものです。
Apache httpdでは、こうした問題に対処するために、rootで、httpdを立ちあげても、 デフォールトでは、nobodyの権限に切り替わって走るようになっています。
また、次のように、コンフィグ・ファイルの中で、User/Group指定子を使うと、 任意のユーザに、httpdの走る権限を変更できる仕組みがあります。 ただし、この設定が有効になるためには、httpdは、rootの権限で立ち上げられて いる必要がありますので、一般ユーザの権限でhttpdを 動かしている場合には、残念ながら、動きません。

User       www-admin
Group      www-admin

この設定では、新しいユーザwww-adminと、新しいグループwww-adminの権限で、 サーバが走る事になります。

User/Group指定子を使うに当たって、幾つか注意すべき事を、 挙げておきたいと思います。

1.
せっかく、Securityの為にこうした機構があるのに、こうした機構を使って、 rootの権限でhttpdを走らせる人がいます。root権限で走るとsecurity が高いような 錯覚があるのかもしれませんが、全く逆です。CGIと組み合わさると危険があることを、 知ってください。
2.
デフォールトでは、nobody権限で走るのですが、ここにも、場合によっては 盲点があります。nobodyは、本来、「誰でもない」はずなのですが、さまざまな アプリケーションが、nobodyを、例えば例外処理の時などに、使う事があります。 nobody所有のファイルがもしも、沢山存在していたら、nobody権限でサーバを 走らせる事は危険です。
3.
UserIdで設定する新しいユーザを登録する時には、セキュリティに十分注意 して下さい。基本的には、デーモン・プロセスの所有者としてだけ存在すればよい ので、ログイン出来ないような設定をして下さい。例えば、ログイン・シェルを 設定しない、パスワードもNP(パスワードを持たないというよりは、持てなくする) にしたほうがいいでしょう。
4.
こうして登録された架空ユーザですが、決してファイルの所有者として はいけません。特に、サーバからアクセス可能なドキュメント類の所有者にする のは、自殺行為です。プロセスの所有者と、ドキュメントの所有者は、全く 無関係です。otherに対するreadビットさえ立っていれば、ドキュメントの サービスは可能です。



Noriyo Kanayama