SELinuxで組み込み機器のセキュリティを高める(後編) ―― 組み込み機器にSELinuxを適用する
5 ポリシを設定する
いよいよポリシを設定していきます.どのような方針で作ればいいのでしょうか? 一番理想的なポリシは,「すべてのアプリケーションが必要最小限の権限で動作する」ことです.これを実現するためには,すべてのアプリケーションに対してドメインを定義し,権限を設定する必要があります.セキュリティが高く,非常に手間がかかる上,ポリシのサイズも大きくなりがちです.これに対し,今回は,「ネットワークにつながるアプリケーションだけに必要最小限の権限を割り当てる」方針を採用します.攻撃者にとっての攻撃の入り口となるのは,ネットワークにつながるアプリケーションです.これを必要最小限の権限で動作させるだけでも,攻撃者にとって攻略困難になります.この方針を採用すれば,ポリシの設定の手間も,ポリシのサイズも小さくなります.以下,この方針に基づき,SELinux Policy Editorを使ってポリシを作成していきます.
今回は,CAT760に搭載されたWebサーバである「lighttpd」にドメインを付与し,最小限の権限で動作させる例を元に設定例を見ていきます.
● 設定書式「SPDL」
SEEditの設定書式「SPDL」を駆使して設定を行うので,SPDLの理解が必要です.SPDLで書いた設定の構造をリスト1に示します.これはhttpd_tドメインに関する設定例です.ファイル名は,simplified_policy/httpd_t.spとなっています.2,3行目がドメイン付与設定です.「/usr/sbin/lighttpdが実行されるとhttpd_tドメインが付与される」と設定しています.4,5行目は,設定のインポートです.共通して使う設定が,simplified_policy/include以下に格納されており,それをインポートしています.今回は,通常のアプリケーションに必要な設定(common_relaxed.sp),デーモン・プログラムに必要な設定(daemon.sp)をインポートしています.6,7行目は,アクセス許可設定です.httpd_tドメインに,ファイル/etc/lighttpdへのアクセスとTCP80番ポートへのアクセスを許可していきます.最も設定行が多くなるのがアクセス許可設定なので,もう少し詳しく見てみます.
● アクセス許可設定
アクセス許可設定で最低限覚えておくべきものとして,「ファイル・アクセス許可」,「ネットワーク・アクセス許可」のほかに「特権許可」があります.「特権」とは,ファイルやネットワーク・アクセス以外の重要な権限を指しています.それぞれの書式を,図1~図3に示します.このほかにも,さまざまな細かい設定が行えます.詳しくは,SPDLのリファレンス・マニュアル(http://seedit.sourceforge.net/doc/2.1/spdl_spec_jp/)を参考にしてください.ただし,設定書式をすべて覚える必要はなく,後述するaudit2spdlで生成できます.