2007年10月20日

[selinux-users:02027] Re: Default Linux Capabilities とはどういうものですか?

海外です

tyatsumi@xxxxx wrote:
> カーネルの Security options に Default Linux Capabilities というものがありますが、
> これは何をするものなんでしょうか?
>
> SELinuxと一緒に他のLSMを使うときは、これ(Default Linux Capabilities)を
> 無効(またはローダブルモジュールにして、ロードしない)に

> しなければいけないのはわかったのですが、
> 外しても問題ないものなんでしょうか。

Linuxのroot特権というのは実は32分割されており、その種類ごとに、
ファイルのパーミッションを無視したアクセスが可能とか、
1024未満のポート番号を利用可能とかいった特権が割り当てられています。

で、rootユーザの場合それらのケーパビリティを全部持っています。
そのため "rootは万能であり危険" だと言われるのですが、、、

Default Linux Capabilities のモジュールは、その各ビットを操作し、
一部の特権だけを利用できるようにするものです。

例えば、/usr/bin/ping は SUID プログラムで、root権限で動作する
必要がありますが、本質的には CAP_NET_RAW 特権だけあれば大丈夫な
はずです。

もし、Default Linux Capabilities を無効化した場合、伝統的 UNIX の
慣例にしたがって、euid=0 は全ての特権を、そうでない人には全く
特権は無しという前提でシステムは動作します。
ただ、Capabilitiesの設定が可能であっても、それを利用して動いている
プログラムというのはほぼ皆無ですので、外しても問題ないかと言われれば、
『問題になるようなケースは想定しがたい』という感じでしょうか。

> 詳しい文書が見あたりません‥。
> Helpには「わからなかったらYにするように」と書いてあったので
> 今まで使っていたのですが。
> 外して使ってみたところ、問題ないような雰囲気ですが‥。

というわけで、特に意識して特権分割を行わない限り、
有っても無くても大して変わらないということになります。

> それから、LSMにはプライマリとセカンダリがあって、
> 両方埋まるともう他のLSMをロードできないようですが、
> 2個まではOKで3個以上は無理ということなんでしょうか?

いえ、これは LSM ではなく SELinux の機能です。
Capabilities の機能が LSM の上に乗っている都合上、SELinux を有効化すると
Capabilities が使えない…というのはまずいので、SELinux側で Default Linux
Capabilities のモジュールをロードして、capabilities 関連のフックが呼ばれた
時に、セカンダリを呼び出すという仕組みになっています。

# しかし Fedora rawihdie で試してみると、どうも動作が妙なことに気がついた…。
# あとで Andrew Morgan あたりにレポートかな。
--
KaiGai Kohei <kaigai@xxxxx>

投稿者 xml-rpc : 2007年10月20日 16:20
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/65451
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。