Next: 9 ポリシーを追加する
Up: SELinux Policy Editor(seedit)管理ガイド(マニュアル) 2.1
Previous: 7 アプリケーションに対するSELinux保護を無効に
Contents
Subsections
8 Simplified Policyの基礎知識
Simplified Policyを扱う前に、基本的な知識をおさえておきましょう。
Simplified Policyは、/etc/seedit/policyディレクトリに配置されています。
このディレクトリの下には、 ドメイン名.spというファイルが配置されて
います。
Simplified Policyは、Simplified Policy Description Language(SPDL)という
書式で書かれています。詳細は、別のドキュメント(Specification of SPDL)に
書かれていますが、全てを理解する必要はありません。書式を知らなくとも、
Simplified Policyを生成するツールがあるからです。
が、SPDLの概要を知っておくことは、どんな設定がされているのか知る上で重要
です。ここでは、SPDLの概要を具体例と共に見ていきます。 具体例としては、
図6のApache用ポリシを使います。
Figure 6:
Simplified Policyの例:Apache Webサーバのためのポリシ
|
2行目と3行目は、アプリケーションにドメインを付与する設定です。
2行目は、ドメインの命名です。「httpd_t」というドメインを命名しています。
以下、{}内に記述される設定は、httpd_tドメインに対するものになります。
デフォルトでは、ドメインは何もアクセス権限を与えられません。明示的にドメ
インに権限を与える設定を記述していくことで、設定を行っていきます。
3行目は、実際にアプリケーションにドメインを付与する設定です。アプリケー
ションの実行ファイル(/usr/sbin/httpd)を指定し、ドメインを付与します。
これにより、/usr/sbin/httpdが実行されると同時にドメインhttpd_tが割り当
てられるようになります。
4,5,6行目で、一般的なアプリケーションで共通して使う設定を挿入して
います。include書式を使うと、他のファイルに記述された設定を挿入すること
ができます。実際に、どんな設定が挿入されるかは、/etc/seedit/policy/includeディ
レクトリ以下を見れば分かります。
例えば、 include include/nameservice.sp;
では、/etc/seedit/policy/include/nameservice.spに記述された設定が挿入さ
れます。/etc/hostsへの読み込み権限などが許可されます。
7から10行目では、ファイルへのアクセスを許可しています。
allowという書式を使って、ファイル名とパーミッションが記述されています。
ファイル名については、次のような一括指定記法が使えます。
ディレクトリ名/* :ディレクトリ以下のファイル全て。サブディレクトリは含まない。
ディレクトリ名/**: ディレクトリ以下のファイルをサブディレクトリも含め全て。
例えば、/etc/*とした場合は、/etc直下のファイルが指定され、
/etc/sysconfig/networkなど、サブディレクトリのファイルは含まれません。
/etc/**とすると、サブディレクトリにあるファイルも含まれます。
~ から始まるファイル名は、ホームディレクトリ(/root以外)
を表します。
~/public_html/**
は、各ユーザのホームディレクトリの下にあるpublic_htmlディレクトリ以下の
ファイル全てを表します。
パーミッションとしては、以下のパーミッションを使うことができます。
- 基本パーミッション
- s
Searchの略です。ファイルツリーをサーチする、という意図
で作られました。ディレクトリにあるファイル一覧を取得する権
限、および、カレントディレクトリに設定する権限が設定されま
す。ファイルに対してこのパーミッションを設定しても何も意味
はありません。
- r
Readの略です。ファイルを読み込む権限が設定されます。
- x
Executeの略です。ファイルを実行する権限が設定されます。
- w
Writeの略です。ファイルを上書き、追記する権限や、ファイル・
ディレクトリを生成消去する権限が設定されます。
- 詳細設定パーミッション
wパーミッションは、多くの権限が設定されます。本当に必要最小限の権
限を設定するために、wを分割した5つのパーミッションを利用できます。
- a
Appendの略です。ファイルを追記オープンする権限が設定されま
す。
- o
Overwriteの略です。ファイルを上書き保存する権限が設定され
ます。
- c
Createの略です。ファイルやディレクトリを新規作成する権限が
設定されます。
- e
Eraseの略です。ファイルやディレクトリを消去する権限が設定
されます。
- t
Setattrの略です。ファイルやディレクトリの属性を変更する権
限が設定されます。属性とは、ファイルの所有者,最終更新時刻など,ファイルに関
する情報のことです。ファイルのセキュリティ属性(SELinuxのラ
ベル)の変更は許可されません。
さて、これで、7-9行目の設定の意味が理解できます。
- 7行目: http_tドメインが、/var/www以下のファイル一覧取得可能、ファ
イル(サブ
ディレクトリにあるファイル含む)の読み込みを可能です
- 8行目:
http_tは、/var/log/httpd以下(サブディレクトリ含む)のファイル一覧取得可能、およびファイルを読み込み,追記可能です。
- 9行目
httpd_tは、/etcにあるファイル一覧のみを取得可能です。/etc以下の
ファイルに対しては何もできません。
/etc以下のファイルにアクセスさせたい場合は、例えば、/etc/*や
/etc/**などと記述する必要があります。
ネットワークに関連するアクセス制御も可能です。
ポート番号を使ってサーバーとして振る舞う権限、クライアントとしてポートに
接続する権限を設定可能です2。
10行目では、httpd_tドメインがTCP80,443ポートを使ってサーバーとして振る
舞う権限をあたえられています。
もし、MySQLサーバー(TCP 3306)に接続したいなら、以下のように設定します。
allownet -protocol tcp -port 3306 client;
ポート番号の指定としては、 -1023, 1024-, * という表記が可能です。
-1023は全てのWellknownポート(他ドメインで使っているポートは除く)です。
1024-は、1024以上のポート番号(他ドメインで使っているポートは除く)、*は全
てのポート番号を意味します。
ファイルやネットワークに関連しない操作も、SELinuxによって制限されていま
す。
allowpriv 特権名;.という書式で、設定できます。
例えば、11行目では、netlinkソケット(カーネルと通信するために使われる)の
利用許可を与えてます。
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用エディタ
|
Figure 8:
ファイルアクセス制御設定を追加
|
Figure 9:
ネットワークアクセス制御を追加
|
Next: 9 ポリシーを追加する
Up: SELinux Policy Editor(seedit)管理ガイド(マニュアル) 2.1
Previous: 7 アプリケーションに対するSELinux保護を無効に
Contents
Yuichi Nakamura
2007-02-13