next up previous contents
Next: 9 ポリシーを追加する Up: SELinux Policy Editor(seedit)管理ガイド(マニュアル) 2.1 Previous: 7 アプリケーションに対するSELinux保護を無効に   Contents

Subsections


8 Simplified Policyの基礎知識

Simplified Policyを扱う前に、基本的な知識をおさえておきましょう。

8.1 どこに?

Simplified Policyは、/etc/seedit/policyディレクトリに配置されています。 このディレクトリの下には、 ドメイン名.spというファイルが配置されて います。

8.2 書式概要

Simplified Policyは、Simplified Policy Description Language(SPDL)という 書式で書かれています。詳細は、別のドキュメント(Specification of SPDL)に 書かれていますが、全てを理解する必要はありません。書式を知らなくとも、 Simplified Policyを生成するツールがあるからです。
が、SPDLの概要を知っておくことは、どんな設定がされているのか知る上で重要 です。ここでは、SPDLの概要を具体例と共に見ていきます。 具体例としては、 図6のApache用ポリシを使います。

Figure 6: Simplified Policyの例:Apache Webサーバのためのポリシ
\begin{figure}\begin{verbatim}1 {
2 domain httpd_t;
3 program /usr/sbin/htt...
...tcp -port 80,443 server;
11 allowpriv netlink;
12 }\end{verbatim}
\end{figure}

8.2.1 アプリケーションにドメインを付与する

2行目と3行目は、アプリケーションにドメインを付与する設定です。 2行目は、ドメインの命名です。「httpd_t」というドメインを命名しています。 以下、{}内に記述される設定は、httpd_tドメインに対するものになります。 デフォルトでは、ドメインは何もアクセス権限を与えられません。明示的にドメ インに権限を与える設定を記述していくことで、設定を行っていきます。
3行目は、実際にアプリケーションにドメインを付与する設定です。アプリケー ションの実行ファイル(/usr/sbin/httpd)を指定し、ドメインを付与します。 これにより、/usr/sbin/httpdが実行されると同時にドメインhttpd_tが割り当 てられるようになります。

8.2.2 典型的な設定を使いまわす:include文

4,5,6行目で、一般的なアプリケーションで共通して使う設定を挿入して います。include書式を使うと、他のファイルに記述された設定を挿入すること ができます。実際に、どんな設定が挿入されるかは、/etc/seedit/policy/includeディ レクトリ以下を見れば分かります。 例えば、 include include/nameservice.sp; では、/etc/seedit/policy/include/nameservice.spに記述された設定が挿入さ れます。/etc/hostsへの読み込み権限などが許可されます。

8.2.3 ファイルへのアクセスを許可する:allow文

7から10行目では、ファイルへのアクセスを許可しています。 allowという書式を使って、ファイル名とパーミッションが記述されています。 ファイル名については、次のような一括指定記法が使えます。
ディレクトリ名/* :ディレクトリ以下のファイル全て。サブディレクトリは含まない。
ディレクトリ名/**:  ディレクトリ以下のファイルをサブディレクトリも含め全て。
例えば、/etc/*とした場合は、/etc直下のファイルが指定され、
/etc/sysconfig/networkなど、サブディレクトリのファイルは含まれません。
/etc/**とすると、サブディレクトリにあるファイルも含まれます。
~  から始まるファイル名は、ホームディレクトリ(/root以外) を表します。
~/public_html/**
は、各ユーザのホームディレクトリの下にあるpublic_htmlディレクトリ以下の ファイル全てを表します。

パーミッションとしては、以下のパーミッションを使うことができます。

さて、これで、7-9行目の設定の意味が理解できます。

8.2.4 ネットワークアクセス制御を設定:allownet

ネットワークに関連するアクセス制御も可能です。 ポート番号を使ってサーバーとして振る舞う権限、クライアントとしてポートに 接続する権限を設定可能です2。 10行目では、httpd_tドメインがTCP80,443ポートを使ってサーバーとして振る 舞う権限をあたえられています。 もし、MySQLサーバー(TCP 3306)に接続したいなら、以下のように設定します。 allownet -protocol tcp -port 3306 client;
ポート番号の指定としては、 -1023, 1024-, * という表記が可能です。 -1023は全てのWellknownポート(他ドメインで使っているポートは除く)です。 1024-は、1024以上のポート番号(他ドメインで使っているポートは除く)、*は全 てのポート番号を意味します。

8.2.5 他の特権を設定する:allowpriv

ファイルやネットワークに関連しない操作も、SELinuxによって制限されていま す。 allowpriv 特権名;.という書式で、設定できます。 例えば、11行目では、netlinkソケット(カーネルと通信するために使われる)の 利用許可を与えてます。

8.2.6 Unconfinedドメインにする

allowpriv all;と設定することで、そのドメインがunconfinedドメインになりま す。
{
domain httpd_t;
program /usr/sbin/httpd;
allowpriv all;
}
このようにすると、httpd_tは、unconfinedドメインとして扱われます。
/etc/selinux/seedit/policy/unconfined_domains にも、httpd_tが追加されて ます。


8.3 GUIエディタ

コントロールパネルから ポリシーを編集 を選択すると、エディタが開き ます。 開く を選択し、ドメインを選択します。 例えば、httpd_t ドメインを選択すると、図7のような画面にな ります。テキストエディタのように、ポリシーを編集できます。
保存 ボタンを押すと、編集内容を保存し、設定を反映します。
Reload ボタンを押すと、再度ファイルからの設定内容を読み出します。 これは、他のツール(ポリシ生成ツール等)で、設定内容が変更された場合に便 利です。
追加 ボタンを押すと、ポリシーを挿入するためのウィンドウが開きます (図8, 9)。 ファイル タブから、ファイルアクセス制御設定を挿入できます。図 8の例では、 追加ボタンを押すと、
allow /var/www/** r,s;
という設定が末尾に追加されます。
ネットワークタブからは、ネットワークに関する設定を挿入できます。図 9では、 追加ボタンを押すと
allownet -protocol tcp -port 80 server;
が挿入されます。
Figure 7: Simplified Policy用エディタ
Image edit

Figure 8: ファイルアクセス制御設定を追加
Image edit-file

Figure 9: ネットワークアクセス制御を追加
Image edit-network


next up previous contents
Next: 9 ポリシーを追加する Up: SELinux Policy Editor(seedit)管理ガイド(マニュアル) 2.1 Previous: 7 アプリケーションに対するSELinux保護を無効に   Contents
Yuichi Nakamura 2007-02-13