--- tags/htdocs/ja/1.6.x/new-policy-reference.html 2008/04/08 05:48:22 1093 +++ tags/htdocs/ja/1.6.x/new-policy-reference.html 2008/04/09 05:14:41 1094 @@ -3,37 +3,35 @@
-Last modified: $Date: 2008-03-03 16:32:30 +0900 (Mon, 3 Mar 2008) $
許可されていないプログラムの実行が要求された場合の代替処理指定
- - +6.5 許可されていないプログラムの実行が要求された場合の代替処理指定
ただし、例外として、 /proc/プロセスID/fd/ ディレクトリに表示されるパイプのパス名は pipe: で、ソケットのパス名は socket: で始まります。
+パス名にはテンポラリファイルのように、毎回異なる文字が使われる場合があります。そのため、ワイルドカードを用いたパターン化を行うことが必要になります。 TOMOYO Linux に於いては以下のワイルドカードをサポートしています。
@@ -235,11 +235,11 @@Linux に於いてはパス名の長さに関する上限は存在しませんが、パス名を用いたアクセス制御を行うために無限の長さをサポートすることはできません。そのため、 TOMOYO Linux に於いては、単語の長さは4000バイトまでに制限されています。
+Linux に於いてはパス名の長さに関する上限は存在しませんが、パス名を用いたアクセス制御を行うために無限の長さをサポートすることはできません。そのため、 TOMOYO Linux に於いては、単語の長さは終端の NUL 文字を含めて4000バイトまでに制限されています。
TOMOYO Linux に於いては、1行の長さは8192バイトまでに制限されています。
+TOMOYO Linux に於いては、1行の長さは終端の NUL 文字を含めて8192バイトまでに制限されています。
ポリシーファイルとは、アクセスの可否を定義したファイルです。システムの起動時に自動的にカーネルへと読み込まれます。
+ポリシファイルとは、アクセスの可否を定義したファイルです。システムの起動時に自動的にカーネルへと読み込まれます。
システムの起動時には、 /sbin/init というプログラムが実行されます。 /sbin/init の実行が要求されたときに、 /sbin/ccs-init というプログラムが存在していた場合、 /sbin/ccs-init が実行され、 /sbin/ccs-init の処理が終了してから /sbin/init の実行が開始されます。
-/sbin/ccs-init は /etc/ccs/ ディレクトリにあるポリシーファイルを /proc/ccs/ ディレクトリを通じてカーネルへと読み込みます。
+/sbin/ccs-init は /etc/ccs/ ディレクトリにあるポリシファイルを /proc/ccs/ ディレクトリを通じてカーネルへと読み込みます。
カーネルとのインタフェース | ポリシーファイル | 定義されている内容 |
カーネルとのインタフェース | ポリシファイル | 定義されている内容 |
/proc/ccs/profile | /etc/ccs/profile.conf | プロファイル(制御レベルを定義したもの) |
/proc/ccs/manager | /etc/ccs/manager.conf | マネージャ(ポリシーの変更ができるプログラムを定義したもの) |
/proc/ccs/manager | /etc/ccs/manager.conf | マネージャ(ポリシの変更ができるプログラムを定義したもの) |
/proc/ccs/system_policy | /etc/ccs/system_policy.conf | システムポリシ(システム全体で適用される設定) |
/proc/ccs/exception_policy | /etc/ccs/exception_policy.conf | 例外ポリシ(ドメインポリシの例外を定義したもの) |
/proc/ccs/domain_policy | /etc/ccs/domain_policy.conf | ドメインポリシ(ドメイン単位で適用される設定) |
そのほかの情報を取得するためのインタフェースもあります。対応するポリシーファイルはありません。
+そのほかの情報を取得するためのインタフェースもあります。対応するポリシファイルはありません。
カーネルとのインタフェース | 内容 |
/proc/ccs/query | 管理者の指示待ちとなっているアクセス要求 |
/proc/ccs/.domain_status | 定義されているドメイン名とプロファイル番号 |
/proc/ccs/meminfo | メモリ使用状況 |
/proc/ccs/grant_log | ポリシーに違反しなかったアクセス要求のログ |
/proc/ccs/reject_log | ポリシーに違反したアクセス要求のログ |
/proc/ccs/grant_log | ポリシに違反しなかったアクセス要求のログ |
/proc/ccs/reject_log | ポリシに違反したアクセス要求のログ |
/proc/ccs/self_domain | 自分が属しているドメインのドメイン名 |
/proc/ccs/.process_status | プロセスが属しているドメイン名とプロファイル番号 |
/proc/ccs/.updates_counter | ポリシーの変更カウンタ |
/proc/ccs/.updates_counter | ポリシの変更カウンタ |
/proc/ccs/version | TOMOYO Linux のバージョン |
カーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシーを変更することができるプログラム名を /proc/ccs/manager に登録します。プログラム名ではなくドメイン名で登録することもできます。
+カーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシを変更することができるプログラム名を /proc/ccs/manager に登録します。プログラム名ではなくドメイン名で登録することもできます。
だけがカーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシーを変更できます。以下に例を示します。
+だけがカーネルとのインタフェースである /proc/ccs/ ディレクトリを経由してポリシを変更できます。以下に例を示します。
@@ -317,11 +317,11 @@ |
上記の制約に加えて、デフォルトではユーザIDと実効ユーザIDの両方が0であるプロセスだけがポリシーを変更できますが、 非 root ユーザによるポリシーの変更を認めたい場合には /proc/ccs/manager に対して
+上記の制約に加えて、デフォルトではユーザIDと実効ユーザIDの両方が0であるプロセスだけがポリシを変更できますが、 非 root ユーザによるポリシの変更を認めたい場合には /proc/ccs/manager に対して
-# echo manage_by_non_root | loadpolicy -m +# echo manage_by_non_root | /usr/lib/ccs/loadpolicy -m |
-# echo delete manage_by_non_root | loadpolicy -m +# echo delete manage_by_non_root | /usr/lib/ccs/loadpolicy -m + |
のように delete manage_by_non_root というキーワードを書き込んでください。 /proc/ccs/ 以下のエントリの所有者は root なので、非 root ユーザによるアクセスを認めるためには必要に応じて chown/chmod を実行してください。
+起動時に自動的にこの処理が行われるようにするために、 /sbin/ccs-init は /etc/ccs/ccs-post-init というプログラムが存在する場合には /etc/ccs/ccs-post-init も実行するようになっています。よって、例えば demo ユーザが /proc/ccs/ インタフェースへの読み書きができるように設定したい場合は、
+#! /bin/sh +echo manage_by_non_root > /proc/ccs/manager +chown -R demo /proc/ccs/ |
のように delete manage_by_non_root というキーワードを書き込んでください。 /proc/ccs/ 以下のエントリの所有者は root なので、非 root ユーザによるアクセスを認めるためには必要に応じて chown/chmod を実行してください。
+という内容で /etc/ccs/ccs-post-init を作成し、
+ +
+# chmod 755 /etc/ccs/ccs-post-init +# chown -R demo /etc/ccs/ +# chmod 755 /usr/lib/ccs/ + |
を実行することで demo ユーザがポリシのあるディレクトリへのアクセスとポリシを編集するためのプログラムを実行できるようになります。
なお、学習モード用のプロファイルが割り当てられているプロセスは、アクセスを要求するだけで/proc/ccs/system_policyまたは/proc/ccs/domain_policyへと自動的にアクセス許可が追加されていきます。
@@ -341,62 +362,64 @@TOMOYO Linux においては、全てのプロセスがそれぞれ1つのドメインに属し、全てのプログラムがそれぞれ異なるドメインに属する。現在実行されている2つのプロセスが同一のプログラムであっても、それぞれのプロセスの直前のドメインが異なっていれば異なるドメインに属する。
+TOMOYO Linux においては、システム全体でアクセス許可を定義するものと、ドメイン単位でアクセス許可を定義するものの2種類があります。前者はシステムポリシと呼ばれ、/proc/ccs/system_policyを通じてアクセス許可を指定します。後者はドメインポリシと呼ばれ、/proc/ccs/domain_policy を通じてアクセス許可を定義します。
-全てのドメインはカーネルが属するドメイン「<kernel>」を基点として定義される。 /sbin/init はカーネルの属するドメインから起動されるので、 /sbin/init のドメインは「<kernel> /sbin/init」と定義される。 /etc/rc.d/rc はカーネルから起動された /sbin/init の属するドメインから起動されるので、 /etc/rc.d/rc のドメインは「<kernel> /sbin/init /etc/rc.d/rc」と定義される。
+TOMOYO Linux においては、全てのプロセスがそれぞれ1つのドメインに属し、全てのプログラムがそれぞれ異なるドメインに属します。現在実行されている2つのプロセスが同一のプログラムであっても、それぞれのプロセスの直前のドメインが異なっていれば異なるドメインに属します。
+ +全てのドメインはカーネルが属するドメイン「<kernel>」を基点として定義されます。 /sbin/init はカーネルの属するドメインから起動されるので、 /sbin/init のドメインは「<kernel> /sbin/init」と定義されます。 /etc/rc.d/rc はカーネルから起動された /sbin/init の属するドメインから起動されるので、 /etc/rc.d/rc のドメインは「<kernel> /sbin/init /etc/rc.d/rc」と定義されます。
実行時のプログラムの名前により異なる動作をするプログラムが存在する。例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクである。 TOMOYO Linux は正規化したパス名を使用するので、 /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義される。
+実行時のプログラムの名前により異なる動作をするプログラムが存在します。例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクです。 TOMOYO Linux は正規化したパス名を使用するので、 /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義されます。
-プロセスがプログラムを実行しようとすると、以下の処理が行われる。
+プロセスがプログラムを実行しようとすると、以下の処理が行われます。
Step | 内容 |
プログラム名の取得 |
- 実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補1」とする。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決したパス名を取得する。 -実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補2」とする。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決する前のパス名を取得する。 +実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補1」とします。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決したパス名を取得します。 +実行しようとするプログラムの「正規化されたファイル名」を取得して「パス名候補2」とします。ただし、実行しようとするプログラムがシンボリックリンクの場合は、シンボリックリンクを解決する前のパス名を取得します。 |
シンボリックリンクの識別 |
- 「パス名候補1」と「パス名候補2」が一致しない場合、例外ポリシーから +「パス名候補1」と「パス名候補2」が一致しない場合、例外ポリシから
というエントリを探す。見つかった場合は「パス名候補2」を「パス名候補1」とする。 +というエントリを探します。見つかった場合は「パス名候補2」を「パス名候補1」とします。 |
argv[0] のチェック |
- 「パス名候補1」の最後の / 以降の部分と argv[0] の最後の / 以降の部分が異なっている場合、ドメイン別ポリシーから +「パス名候補1」の最後の / 以降の部分と argv[0] の最後の / 以降の部分が異なっている場合、ドメインポリシから
というエントリを探す。見つからなければ拒否する。 +というエントリを探します。見つからなければプログラムの実行要求は拒否されます。 |
類似するプログラムの集約 |
- 例外ポリシーから +例外ポリシから
というエントリを探す。見つかった場合は、「集約されたパス名」を「パス名候補1」とする。 +というエントリを探します。見つかった場合は、「集約されたパス名」を「パス名候補1」とします。 |
権限のチェック |
- ドメイン別ポリシーから +ドメインポリシから
というエントリを探す。見つからなければ拒否する。 +というエントリを探します。見つからなければプログラムの実行要求は拒否されます。 |
遷移先の決定 |
- (1) 例外ポリシーから +(1) 例外ポリシから
というエントリを探す。見つかった場合は (3) へ進む。 +というエントリを探します。見つかった場合は (3) へ進みます。 -(2) 例外ポリシーから +(2) 例外ポリシから
というエントリを探す。見つかった場合は「カーネルが属しているドメインのドメイン名(<kernel>)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進む。 +というエントリを探します。見つかった場合は「カーネルが属しているドメインのドメイン名(<kernel>)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進みます。 -(3) 例外ポリシーから +(3) 例外ポリシから
というエントリを探す。見つかった場合は (5) へ進む。 +というエントリを探します。見つかった場合は (5) へ進みます。 -(4) 例外ポリシーから +(4) 例外ポリシから
というエントリを探す。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進む。 +というエントリを探します。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進みます。 -(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進む。 +(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進みます。 -(6) ドメイン別ポリシーから「遷移先ドメイン」を探す。見つからなければ拒否する。 +(6) ドメインポリシから「遷移先ドメイン」を探します。見つからなければプログラムの実行要求は拒否されます。 |
環境変数のチェック |
- (1)全ての環境変数名が「遷移先ドメイン」で許可されているかどうかを検査し、許可されていないものが見つかった場合は拒否する。 +(1)全ての環境変数名が「遷移先ドメイン」で許可されているかどうかを検査します。1つでも許可されていないものが見つかった場合は、プログラムの実行要求は拒否されます。 -(2)通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移する。 +(2)通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移します。 |
ただし、
+ただし、例外として
のどちらかに該当し、かつ、
-場合には、以下の手順を実行します。
+場合には、以下の手順を実行します。この例外の使い方については「プログラムの実行可否をカーネルの外部で判断」と「許可されていないプログラムの実行が要求された場合の代替処理指定」で説明します。
Step | 内容 |
プログラム名の取得 |
- denied_execute_handler または execute_handlerで指定されているプログラムのパス名を取得し、「パス名候補1」とする。 +denied_execute_handler または execute_handlerで指定されているプログラムのパス名を取得し、「パス名候補1」とします。 |
情報の追加 |
- 全ての環境変数を引数の末尾に追加し、全ての環境変数を削除する。 -「パス名候補1」「プログラムの実行を要求したプロセスの属しているドメインのドメイン名」「プログラムの実行を要求したプロセスのパス名」「プログラムの実行を要求したプロセスの状態」「実行が要求されたプログラムのパス名」「引数の数」「環境変数の数」を引数の先頭に挿入する。 +全ての環境変数を引数の末尾に追加し、全ての環境変数を削除します。 +「パス名候補1」「プログラムの実行を要求したプロセスの属しているドメインのドメイン名」「プログラムの実行を要求したプロセスのパス名」「プログラムの実行を要求したプロセスの状態」「実行が要求されたプログラムのパス名」「引数の数」「環境変数の数」を引数の先頭に挿入します。 |
遷移先の決定 |
- (1) 例外ポリシーから +(1) 例外ポリシから
というエントリを探す。見つかった場合は (3) へ進む。 +というエントリを探します。見つかった場合は (3) へ進みます。 -(2) 例外ポリシーから +(2) 例外ポリシから
というエントリを探す。見つかった場合は「カーネルが属しているドメインのドメイン名(<kernel>)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進む。 +というエントリを探します。見つかった場合は「カーネルが属しているドメインのドメイン名(<kernel>)」と「パス名候補1」とを連結して「遷移先ドメイン」として (6) へ進みます。 -(3) 例外ポリシーから +(3) 例外ポリシから
というエントリを探す。見つかった場合は (5) へ進む。 +というエントリを探します。見つかった場合は (5) へ進みます。 -(4) 例外ポリシーから +(4) 例外ポリシから
というエントリを探す。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進む。 +というエントリを探します。見つかった場合は「現在のプロセスが属しているドメインのドメイン名」を「遷移先ドメイン」とし、 (7) へ進みます。 -(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進む。 +(5) 「現在のプロセスが属しているドメインのドメイン名」と「パス名候補1」とを連結して「遷移先ドメイン」とし、(6)へ進みます。 -(6) ドメイン別ポリシーから「遷移先ドメイン」を探す。見つからなければ拒否する。 +(6) ドメインポリシから「遷移先ドメイン」を探します。見つからなければプログラムの実行要求は拒否されます。 |
プログラムの実行 |
- 通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移する。 +通常のプログラム実行処理を行い、正常に終了した場合は「遷移先ドメイン」に遷移します。 |
ドメインポリシによって許可されたアクセス要求のログと拒否されたアクセス要求のログを生成します。前者は許可ログと呼ばれ、 /proc/ccs/grant_log から取得することができます。後者は拒否ログと呼ばれ、 /proc/ccs/reject_log から取得することができます。これらのログを取得してファイルとして保存するためのツールとして /usr/lib/ccs/ccs-auditd というプログラムが付属しています。
+以下に例を示します。最初の例はプログラムを実行しようとしたときのログです。
-正規化されたパス名 | -"/" で始まり、シンボリックリンクや "/./" や "//" や "/../" を含まないパス名。(ただし、現在のプロセスに関する情報にアクセスするための "/proc/self/" ディレクトリに関してはそのまま "/proc/self/" とする。) -プロセスが chroot された環境下で動作する場合であっても、 chroot する前のパス名で指定される。 -正規化されたパス名は、全てアスキーコードの表示可能な範囲(0x21〜0x7E)で構成されている。 従って、\ 文字(0x5C)は \\ 、その他の表示不可能な文字(0x01〜0x20、0x7F〜0xFF)は \ooo 形式の8進数で表記する。 (例えば、空白文字(0x20)は \040 と表記する。) |
-
正規化されたディレクトリ名 | -正規化されたパス名の内、"/"で終わるもの。 | -
正規化されたファイル名 | -正規化されたパス名の内、"/"で終わらないもの。 -正規化されたファイル名は、ディレクトリ以外の全てのファイルタイプ(通常ファイル、キャラクタ型デバイスファイル、ブロック型デバイスファイル、FIFO、シンボリックリンク、ソケット)を含む。 |
-
プログラム | -正規化されたファイル名の内、実行可能なもの。 | -
ドメイン | -MAC(強制アクセス制御)を行うための属性 | -
遷移先ドメイン | -プログラムが正常に開始された場合にプロセスが遷移するドメイン | -
操作対象ドメイン | -操作対象となるプロセスの属しているドメイン | -
+#2008-04-09 12:50:15# profile=1 mode=learning pid=5054 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 argc=2 envc=16 argv[]={ "cat" "/etc/fstab" } envp[]={ "TERM=vt100" "SHELL=/bin/bash" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "MAIL=/var/mail/root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "PWD=/root" "LANG=C" "PS1=\\h:\\w\\$\040" "SHLVL=1" "HOME=/root" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" "_=/bin/cat" } +<kernel> /usr/sbin/sshd /bin/bash +allow_execute /bin/cat + |
ポリシーファイルは全て /etc/ccs/ ディレクトリに作成しておく。このディレクトリに存在するファイルが /sbin/init の開始時に /sbin/ccs-init によって読み込まれるようになっている。
-全てのプログラムがポリシーの変更を行えるのは危険であるため、このファイルには /proc/ccs/ インタフェースへの書き込みアクセスを許可するプログラムまたはドメインを定義しておく。
-このファイルに定義されていないプログラムやドメインからは /proc/ccs/ インタフェースへの書き込みアクセスができない。システム運用時にポリシーの変更を許可しない場合はこのファイルを削除しておく。
-(例)
-/usr/lib/ccs/loadpolicy
-/usr/lib/ccs/editpolicy
-/usr/lib/ccs/setlevel
-/usr/lib/ccs/setprofile
-/usr/lib/ccs/ld-watch
-/usr/lib/ccs/ccs-queryd
-<kernel> /sbin/mingetty /usr/lib/bin/bash
-
このログは、 <kernel> /usr/sbin/sshd /bin/bash というドメインに属しているプロセスが /bin/cat というプログラムを実行しようとし、そのときの引数の内容は "cat" "/etc/fstab" 、環境変数の内容は "TERM=vt100" "SHELL=/bin/bash" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "MAIL=/var/mail/root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "PWD=/root" "LANG=C" "PS1=\\h:\\w\\$\040" "SHLVL=1" "HOME=/root" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" "_=/bin/cat" であったということを示しています。また、プロセスIDやユーザIDなど、プロセスに関する情報も一緒に出力されます。
-次の例は、ファイルを読み込みモードでオープンしようとしたときのログです。
+ +
+#2008-04-09 12:50:15# profile=1 mode=learning pid=5054 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 +<kernel> /usr/sbin/sshd /bin/bash /bin/cat +allow_read /etc/fstab + |
このログは、 <kernel> /usr/sbin/sshd /bin/bash /bin/cat というドメインに属しているプロセスが /etc/fstab というファイルをオープンしようとしたことを示しています。
+ +次の例は、ドメインが新規作成されたときのログです。
+ +
+#2008-04-09 12:52:01# profile=1 mode=learning pid=5110 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 +<kernel> /usr/sbin/sshd /bin/bash /bin/bash /bin/audit-exec-param /bin/cat +use_profile 1 + |
このログは、 <kernel> /usr/sbin/sshd /bin/bash /bin/bash /bin/audit-exec-param /bin/cat というドメインが新規作成され、プロファイルとして 1 が割り当てられたことを示しています。 TOMOYO Linux では、ドメインが自動的に新規作成されていきます。自動的に新規作成された場合には、ドメインを新規作成することになったプロセスの属しているドメインに割り当てられていたプロファイル番号が引き継がれます。
+ +次の例は、プログラムの実行可否をカーネルの外部で判断するために要求されたのとは異なるプログラムが実行されたときのログです。
+
+#2008-04-09 12:52:01# profile=1 mode=learning pid=5110 uid=0 gid=0 euid=0 egid=0 suid=0 sgid=0 fsuid=0 fsgid=0 state[0]=0 state[1]=0 state[2]=0 argc=24 envc=0 argv[]={ "/bin/audit-exec-param" "<kernel>\040/usr/sbin/sshd\040/bin/bash\040/bin/bash" "/bin/bash" "pid=5110\040uid=0\040gid=0\040euid=0\040egid=0\040suid=0\040sgid=0\040fsuid=0\040fsgid=0\040state[0]=0\040state[1]=0\040state[2]=0" "/bin/cat" "2" "18" "cat" "/etc/fstab" "SHELL=/bin/bash" "TERM=vt100" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "MAIL=/var/mail/root" "_=/bin/cat" "PWD=/root" "LANG=C" "HOME=/root" "SHLVL=2" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" } envp[]={ } +<kernel> /usr/sbin/sshd /bin/bash /bin/bash +execute_handler /bin/audit-exec-param + |
このログは、 <kernel> /usr/sbin/sshd /bin/bash /bin/bash というドメインに属しているプロセスがプログラムを実行しようとしたが、 execute_handler が指定されていたので代わりに /bin/audit-exec-param というプログラムが実行されたこと、 /bin/audit-exec-param に渡された引数の内容は "/bin/audit-exec-param" "<kernel>\040/usr/sbin/sshd\040/bin/bash\040/bin/bash" "/bin/bash" "pid=5110\040uid=0\040gid=0\040euid=0\040egid=0\040suid=0\040sgid=0\040fsuid=0\040fsgid=0\040state[0]=0\040state[1]=0\040state[2]=0" "/bin/cat" "2" "18" "cat" "/etc/fstab" "SHELL=/bin/bash" "TERM=vt100" "SSH_CLIENT=::ffff:192.168.99.1\04048601\04022" "SSH_TTY=/dev/pts/0" "USER=root" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/lib/ccs" "MAIL=/var/mail/root" "_=/bin/cat" "PWD=/root" "LANG=C" "HOME=/root" "SHLVL=2" "LANGUAGE=en_JP:en_US:en_GB:en" "LOGNAME=root" "SSH_CONNECTION=::ffff:192.168.99.1\04048601\040::ffff:192.168.99.152\04022" であったということを示しています。 LD_PRELOAD などの環境変数によって /bin/audit-exec-param の動作が左右されるのを防ぐため、環境変数を引数に移動しています。
+ +このように、アクセスログは3行で1件( /usr/lib/ccs/ccs-auditd によってファイルに保存されるときに空行が入るので4行で1件)となっており、これらのログはそのままドメインポリシとして追加可能な形式になっています。アクセス拒否ログから許可したい部分を抽出して、例えば /var/log/tomoyo/diff.txt という名前で保存した後、
+ ++# /usr/lib/ccs/loadpolicy -d < /var/log/tomoyo/diff.txt + |
という操作を行うことで、ドメインポリシに追加することができます。そのため、「学習モード」を使わなくても、最初から「許容モード」を使って拒否ログを出力させ、拒否ログの内容を編集するというアプローチでもドメインポリシを定義していくことができます。「学習モード」でドメインポリシを作成する場合にはプロセスの状態(アクセスログの先頭行の内容)は加味されませんが、アクセス拒否ログからドメインポリシを生成すると、最初から条件付きアクセス許可の指定を行うことができます。例えば、「学習モード」を使わずにログを生成し、
+ +
+<kernel> /usr/sbin/sshd /bin/bash +allow_execute /bin/cat if exec.argc=2 exec.argv[0]="cat" exec.argv[1]="/etc/fstab" + |
としてドメインポリシを追加した場合、「学習モード」で追加される
+ +
+<kernel> /usr/sbin/sshd /bin/bash +allow_execute /bin/cat + |
よりも細かい指定を行うことができるようになります。
-TOMOYO Linuxでは、ファイル以外にもいくつかの項目について強制アクセス制御を行うことができるが、ポリシー管理の負担を減らすために、必要の無い機能を無効化できるようになっている。
+TOMOYO Linuxでは、ファイル以外にもいくつかの項目について強制アクセス制御を行うことができますが、ポリシ管理の負担を減らすために、必要の無い機能を無効化できるようになっています。
-有効にしたい機能とそのモードを「プロファイル番号-項目=値」という形式で定義する。プロファイル番号は 0 〜 255 が指定可能である。プロファイルの内容を変更するには setlevel コマンドまたは loadpolicy コマンドを使用する。
+有効にしたい機能とそのモードを「プロファイル番号-項目=値」という形式で定義します。プロファイル番号は 0 〜 255 が指定可能です。プロファイルの内容を変更するには setlevel コマンドまたは loadpolicy コマンドを使用します。
-各ドメインには1個のプロファイルが割り当てられる。ドメインにプロファイルを割り当てるには setprofile コマンドまたは editpolicy コマンドまたは loadpolicy コマンドを使用する。
+各ドメインには1個のプロファイルが割り当てられます。ドメインにプロファイルを割り当てるには setprofile コマンドまたは editpolicy コマンドまたは loadpolicy コマンドを使用します。
-現在ドメインに割り当てられているプロファイル番号は editpolicy コマンドで確認できる。
-現在動作中のプロセスに割り当てられているプロファイル番号は ccstree コマンドで確認できる。
-現在のポリシーを savepolicy コマンドで保存した場合、use_profileというキーワードに保持される。
現在ドメインに割り当てられているプロファイル番号は editpolicy コマンドで確認できます。
+現在動作中のプロセスに割り当てられているプロファイル番号は ccstree コマンドで確認できます。
+現在のポリシを savepolicy コマンドで保存した場合、use_profileというキーワードに保持されます。
ファイルに対する強制アクセス制御のレベルを指定する。
+ファイルに対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 +ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反したらエラーとします。 |
プログラム実行時の argv[0] に対する強制アクセス制御のレベルを指定する。
+プログラム実行時の argv[0] に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
プログラム実行時の環境変数名に対する強制アクセス制御のレベルを指定する。
+プログラム実行時の環境変数名に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
TCP ソケットの使用に対する強制アクセス制御のレベルを指定する。
+TCP ソケットの使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
TCP ソケットの listenに対する強制アクセス制御のレベルを指定する。
+TCP ソケットの listenに対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
TCP ソケットの connectに対する強制アクセス制御のレベルを指定する。
+TCP ソケットの connectに対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
UDP ソケットの使用に対する強制アクセス制御のレベルを指定する。
+UDP ソケットの使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
RAW ソケットの使用に対する強制アクセス制御のレベルを指定する。
+RAW ソケットの使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
ROUTE ソケットの使用に対する強制アクセス制御のレベルを指定する。
+ROUTE ソケットの使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
PACKET ソケットの使用に対する強制アクセス制御のレベルを指定する。
+PACKET ソケットの使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
create_module(2) init_module(2) delete_module(2) の使用に対する強制アクセス制御のレベルを指定する。
+create_module(2) init_module(2) delete_module(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
mknod(2) で FIFO の作成に対する強制アクセス制御のレベルを指定する。
+mknod(2) で FIFO の作成に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
mknod(2) でブロック型デバイスの作成に対する強制アクセス制御のレベルを指定する。
+mknod(2) でブロック型デバイスの作成に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
mknod(2) でキャラクタ型デバイスの作成に対する強制アクセス制御のレベルを指定する。
+mknod(2) でキャラクタ型デバイスの作成に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
mknod(2) で UNIX ドメインソケットの作成に対する強制アクセス制御のレベルを指定する。
+mknod(2) で UNIX ドメインソケットの作成に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
mount(2) の使用に対する強制アクセス制御のレベルを指定する。
+mount(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
umount(2) の使用に対する強制アクセス制御のレベルを指定する。
+umount(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
reboot(2) の使用に対する強制アクセス制御のレベルを指定する。
+reboot(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
chroot(2) の使用に対する強制アクセス制御のレベルを指定する。
+chroot(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
0 以外のシグナルで kill(2) tkill(2) tgkill(2)の使用に対する強制アクセス制御のレベルを指定する。
+0 以外のシグナルで kill(2) tkill(2) tgkill(2)の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
vhangup(2) の使用に対する強制アクセス制御のレベルを指定する。
+vhangup(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
stime(2) settimeofday(2) adjtimex(2) の使用に対する強制アクセス制御のレベルを指定する。
+stime(2) settimeofday(2) adjtimex(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
nice(2) setpriority(2) の使用に対する強制アクセス制御のレベルを指定する。
+nice(2) setpriority(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
sethostname(2) setdomainname(2) の使用に対する強制アクセス制御のレベルを指定する。
+sethostname(2) setdomainname(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
link(2) の使用に対する強制アクセス制御のレベルを指定する。
+link(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
symlink(2) の使用に対する強制アクセス制御のレベルを指定する。
+symlink(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
symlink(2) の使用に対する強制アクセス制御のレベルを指定する。
+symlink(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
symlink(2) の使用に対する強制アクセス制御のレベルを指定する。
+symlink(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
chmod(2) fchmod(2) の使用に対する強制アクセス制御のレベルを指定する。
+chmod(2) fchmod(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定する。
+chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定する。
+chown(2) fchown(2) lchown(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
kexec_load(2) の使用に対する強制アクセス制御のレベルを指定する。
+kexec_load(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
pivot_root(2) の使用に対する強制アクセス制御のレベルを指定する。
+pivot_root(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
ptrace(2) の使用に対する強制アクセス制御のレベルを指定する。
+
ptrace(2) の使用に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
ネットワークに対する強制アクセス制御のレベルを指定する。
+ネットワークに対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
シグナルの送信に対する強制アクセス制御のレベルを指定する。
+シグナルの送信に対する強制アクセス制御のレベルを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
既存のマウントを隠蔽するようなマウントを禁止する。
+既存のマウントを隠蔽するようなマウントを禁止します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
permissive | 許容モード。既存のマウントを隠蔽するようなマウント要求に対して警告メッセージを表示しますが、拒否はしません。 |
enforcing | 強制モード。既存のマウントを隠蔽するようなマウント要求に対してエラーメッセージを表示し、拒否します。 |
chroot で移動可能なディレクトリの制限を有効にする。
+chroot で移動可能なディレクトリの制限を有効にします。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
mount で指定可能なパラメータの制限を有効にする。
+mount で指定可能なパラメータの制限を有効にします。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
指定されたディレクトリのアンマウントを禁止する。
+指定されたディレクトリのアンマウントを禁止します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
permissive | 許容モード。指定されたディレクトリのアンマウント要求に対して警告メッセージを表示しますが、拒否はしません。 |
enforcing | 強制モード。指定されたディレクトリのアンマウント要求に対してエラーメッセージを表示し、拒否します。 |
pivot_root で交換可能なディレクトリの制限を有効にする。
+pivot_root で交換可能なディレクトリの制限を有効にします。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
learning | 学習モード。ポリシーに違反しても警告をエラーにせず、ポリシーへの自動追加を行う。 |
permissive | 許容モード。ポリシーに違反してもエラーにせず、ポリシーへの自動追加も行わない。 |
enforcing | 強制モード。ポリシーに違反したらエラーとする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
learning | 学習モード。ポリシに違反してもアクセス要求を拒否することはせず、再度同じアクセス要求が発生した場合にポリシ違反とならないようにするために、ポリシへの自動追加を行います。 |
permissive | 許容モード。ポリシに違反してもアクセス要求を拒否することはしませんが、ポリシへの自動追加も行いません。 |
enforcing | 強制モード。ポリシに違反するアクセス要求を拒否します。 |
ローカルのポート番号を自動選択させる際に特定のポート番号を選択させないようにするかどうかを指定する。
+ローカルのポート番号を自動選択させる際に特定のポート番号を選択させないようにするかどうかを指定します。
値 | 内容 |
disabled | 無効。通常のカーネルと同様に動作する。 |
enabled | 有効。ローカルのポート番号を自動選択させる際に、特定のポート番号を選択させないようにする。 |
disabled | 無効。通常のカーネルと同様に動作します。 |
enabled | 有効。ローカルのポート番号を自動選択させる際に、特定のポート番号を選択させないようにします。 |
学習モードに於いて自動的に追加されるアクセス許可の上限を指定する。デフォルトは 2048 件。
+学習モードに於いて自動的に追加されるアクセス許可の上限を指定します。デフォルトは 2048 件です。
カーネル内に保持する、ポリシーによって許可されたアクセス要求のログの件数を指定する。デフォルトは 1024 件。
+カーネル内に保持する、ポリシによって許可されたアクセス要求のログの件数を指定します。デフォルトは 1024 件です。
-カーネル内に保持する、ポリシーによって許可されなかったアクセス要求のログの件数を指定する。デフォルトは 1024 件。
+カーネル内に保持する、ポリシによって許可されなかったアクセス要求のログの件数を指定します。デフォルトは 1024 件です。
ドメイン別ポリシーに対する違反を syslog に表示するかどうかを指定する。
+ドメインポリシに対する違反を syslog に表示するかどうかを指定します。
値 | 内容 |
disabled | ドメイン別ポリシーに対する違反を表示しない。 |
enabled | ドメイン別ポリシーに対する違反を表示する。 |
disabled | ドメインポリシに対する違反を表示しない。 |
enabled | ドメインポリシに対する違反を表示します。 |
強制モードに於いてポリシーに違反したアクセス要求を対話的に許可できるようにするかどうかを指定する。
+強制モードに於いてポリシに違反したアクセス要求を対話的に許可できるようにするかどうかを指定します。
値 | 内容 |
disabled | 強制モードでポリシーに違反したら直ちに拒否する。 |
enabled | 強制モードでポリシーに違反しても、対話的な操作により許可することを可能にする。 |
disabled | 強制モードでポリシに違反したら直ちに拒否します。 |
enabled | 強制モードでポリシに違反しても、対話的な操作により許可することを可能にします。 |
強制モードに於いてポリシー違反が発生した場合にスリープさせるかどうかを指定する。
+強制モードに於いてポリシ違反が発生した場合にスリープさせるかどうかを指定します。
値 | 内容 |
0 〜 3000 | スリープさせる時間を0.1秒単位で指定する。デフォルトは0。 |
0 〜 3000 | スリープさせる時間を 0.1 秒単位で指定します。デフォルトは 0 秒です。 |
マウント許可を指定するには、 allow_mount というディレクティブに続けて、「デバイスファイル マウントポイント ファイルシステム オプション」を指定する。 デバイスファイルを必要とするファイルシステムを指定する場合は、デバイスファイルは正規化されたファイル名でなければいけない。マウントポイントは正規化されたディレクトリ名でなければいけない。オプションは数値で指定する。
+マウント許可を指定するには、 allow_mount というディレクティブに続けて、「デバイスファイル マウントポイント ファイルシステム オプション」を指定します。 デバイスファイルを必要とするファイルシステムを指定する場合は、デバイスファイルは正規化されたファイル名でなければいけません。マウントポイントは正規化されたディレクトリ名でなければいけません。オプションは 16 進数の数値で指定します。
-「any マウントポイント --remount オプション」と指定すると、「mount -o remount マウントポイント」が許可される。
+「any マウントポイント --remount オプション」と指定すると、「mount -o remount マウントポイント」が許可されます。
-「複製元 複製先 --bind オプション」と指定すると、「mount --bind 複製元 複製先」が許可される。
-「移動元 移動先 --move オプション」と指定すると、「mount --move 移動元 移動先」が許可される。
-複製元/複製先/移動元/移動先は正規化されたディレクトリ名でなければならない。
「複製元 複製先 --bind オプション」と指定すると、「mount --bind 複製元 複製先」が許可されます。
+「移動元 移動先 --move オプション」と指定すると、「mount --move 移動元 移動先」が許可されます。
+複製元/複製先/移動元/移動先は正規化されたディレクトリ名でなければなりません。
カーネル 2.6.15 以降では、 Shared Subtree という機能が利用できる。
-「any マウントポイント --make-unbindable オプション」と指定すると、「mount --make-unbindable マウントポイント」が許可される。
-「any マウントポイント --make-private オプション」と指定すると、「mount --make-private マウントポイント」が許可される。
-「any マウントポイント --make-slave オプション」と指定すると、「mount --make-slave マウントポイント」が許可される。
-「any マウントポイント --make-shared オプション」と指定すると、「mount --make-shared マウントポイント」が許可される。
+「any マウントポイント --make-unbindable オプション」と指定すると、「mount --make-unbindable マウントポイント」が許可されます。
+「any マウントポイント --make-private オプション」と指定すると、「mount --make-private マウントポイント」が許可されます。
+「any マウントポイント --make-slave オプション」と指定すると、「mount --make-slave マウントポイント」が許可されます。
+「any マウントポイント --make-shared オプション」と指定すると、「mount --make-shared マウントポイント」が許可されます。
(例)
@@ -1173,9 +1216,9 @@
allow_mount any / --remount 0x0
アンマウント禁止を指定するには、 deny_unmount というディレクティブに続けて、アンマウントを許可しない正規化されたディレクトリ名を指定する。
-通常、 /sbin/mingetty が使用する /dev/tty? を含む /dev/ ディレクトリと、リモートログインする場合に pty デバイスファイルが作成される /dev/pts/ ディレクトリを指定する。
/dev が読み込み専用になってしまったり、 /dev/pts がアンマウントされてしまうと、ログインができなくなる。そのため、 / が読み込み専用のシステムでは、 /dev/ や /dev/pts/ がアンマウントされないようにしなければならない。
+アンマウント禁止を指定するには、 deny_unmount というディレクティブに続けて、アンマウントを許可しない正規化されたディレクトリ名を指定します。
+通常、 /sbin/mingetty が使用する /dev/tty? を含む /dev/ ディレクトリと、リモートログインする場合に pty デバイスファイルが作成される /dev/pts/ ディレクトリを指定します。
/dev が読み込み専用になってしまったり、 /dev/pts がアンマウントされてしまうと、ログインができなくなる。そのため、 / が読み込み専用のシステムでは、 /dev/ や /dev/pts/ がアンマウントされないようにしなければなりません。
(例)
deny_unmount /dev/
@@ -1183,8 +1226,8 @@
deny_unmount /proc/
chroot 許可を指定するには、 allow_chroot というディレクティブに続けて、 chroot で移動することを許可したい正規化されたディレクトリ名を指定する。
-通常、 sshd が使用する /var/empty/sshd/ を指定する。 その他に chroot 環境で動かしたいアプリケーションや、 chroot を行うアプリケーション( vsftpd の場合 /usr/share/empty/ )が存在する場合は、それらも指定する。
chroot 許可を指定するには、 allow_chroot というディレクティブに続けて、 chroot で移動することを許可したい正規化されたディレクトリ名を指定します。
+通常、 sshd が使用する /var/empty/sshd/ を指定します。 その他に chroot 環境で動かしたいアプリケーションや、 chroot を行うアプリケーション( vsftpd の場合 /usr/share/empty/ )が存在する場合は、それらも指定します。
(例)
allow_chroot /var/empty/sshd/
@@ -1193,11 +1236,11 @@
allow_chroot /
pivot_root 許可を指定するには、 allow_pivot_root というディレクティブに続けて、新しいルートとなる正規化されたディレクトリ名と古いルートディレクトリとなる正規化されたディレクトリ名を指定する。
+
pivot_root 許可を指定するには、 allow_pivot_root というディレクティブに続けて、新しいルートとなる正規化されたディレクトリ名と古いルートディレクトリとなる正規化されたディレクトリ名を指定します。
通常、このディレクティブを使う必要は無い。
ローカルポートの自動選択で特定のポート番号が選択させるのを禁止するには、 deny_autobind というディレクティブに続けて、ローカルポート番号を指定する。 このディレクティブは、特定のポート番号が一時的な用途で割り当てられるのを防ぐのが狙いである。 例えば、一部のプロキシサーバはポート8080を使用するので、ポート8080が一時的な用途のために割り当てられるべきではない。
+ローカルポートの自動選択で特定のポート番号が選択させるのを禁止するには、 deny_autobind というディレクティブに続けて、ローカルポート番号を指定します。 このディレクティブは、特定のポート番号が一時的な用途で割り当てられるのを防ぐのが狙いである。 例えば、一部のプロキシサーバはポート8080を使用するので、ポート8080が一時的な用途のために割り当てられるべきではない。
(例)
deny_autobind 1-1023
@@ -1205,100 +1248,100 @@
このファイルでは、全てのドメインを定義し、各ドメインに対して与えるアクセス許可を定義する。
+このファイルでは、全てのドメインを定義し、各ドメインに対して与えるアクセス許可を定義します。
ドメインを定義している行(<kernel>で始まる行)の次行から次のドメインを定義している行の前行までが、そのドメインに対するアクセス許可である。
-それぞれのアクセス許可について、必要に応じて追加の条件を指定することができる。そのための構文は条件付きアクセス許可の指定で説明する。さらに、必要に応じてプロセスの状態を切り替え、プロセスの状態も条件として使うための方法をステートフルなアクセス許可の指定で説明する。
+それぞれのアクセス許可について、必要に応じて追加の条件を指定することができる。そのための構文は条件付きアクセス許可の指定で説明します。さらに、必要に応じてプロセスの状態を切り替え、プロセスの状態も条件として使うための方法をステートフルなアクセス許可の指定で説明します。
指定されたパス名を実行することを許可する。パス名にワイルドカードを使用することは認められない。ワイルドカードで指定しなければ対応できない場合には、プログラム名をグループ化してからアクセス許可を与える。
+指定されたパス名を実行することを許可します。パス名にワイルドカードを使用することは認められない。ワイルドカードで指定しなければ対応できない場合には、プログラム名をグループ化してからアクセス許可を与える。
(例)allow_execute /bin/ls
-関連項目:ドメイン遷移 path_group aggregator
+関連項目:ドメイン遷移 path_group aggregator
指定されたパス名を書き込みモードでオープンすることを許可する。
+指定されたパス名を書き込みモードでオープンすることを許可します。
(例) allow_write /dev/null
関連項目:path_group
指定されたパス名を読み込みモードでオープンすることを許可する。
+指定されたパス名を読み込みモードでオープンすることを許可します。
(例) allow_read /proc/meminfo
関連項目:path_group
指定されたパス名を読み書きモードでオープンすることを許可する。
+指定されたパス名を読み書きモードでオープンすることを許可します。
(例) allow_read/write /dev/null
関連項目:path_group
指定されたパス名のファイルを新規作成することを許可する。
+指定されたパス名のファイルを新規作成することを許可します。
(例) allow_create /var/lock/subsys/crond
関連項目:path_group
指定されたパス名を削除することを許可する。
+指定されたパス名を削除することを許可します。
(例) allow_unlink /var/lock/subsys/crond
関連項目:path_group
パス名で指定されたディレクトリを作成することを許可する。
+パス名で指定されたディレクトリを作成することを許可します。
(例) allow_mkdir /tmp/logwatch.\*/
関連項目:path_group
ディレクトリの削除を許可する。
+ディレクトリの削除を許可します。
(例) allow_rmdir /tmp/logwatch.\*/
関連項目:path_group
FIFO の作成を許可する。
+FIFO の作成を許可します。
(例) allow_mkfifo /dev/initctl
関連項目:path_group
UNIX ドメインソケットの作成を許可する。
+UNIX ドメインソケットの作成を許可します。
(例) allow_mksock /dev/log
関連項目:path_group
ブロック型デバイスファイルの作成を許可する。
+ブロック型デバイスファイルの作成を許可します。
(例) allow_mkblock /dev/\*
関連項目:path_group
キャラクタ型デバイスファイルの作成を許可する。
+キャラクタ型デバイスファイルの作成を許可します。
(例) allow_mkchar /dev/\*
関連項目:path_group
ファイルの切り詰めと伸長を許可する。
+ファイルの切り詰めと伸長を許可します。
(例) allow_truncate /etc/mtab
関連項目:path_group
シンボリックリンクの作成を許可する。
+シンボリックリンクの作成を許可します。
(例) allow_symlink /dev/cdrom
関連項目:path_group
ハードリンクの作成を許可する。
+ハードリンクの作成を許可します。
(例) allow_link /etc/mtab~\$ /etc/mtab~
関連項目:path_group
ファイル名の変更を許可する。
+ファイル名の変更を許可します。
(例) allow_rename /etc/mtab.tmp /etc/mtab
関連項目:path_group
deny_rewriteによりファイルの内容の上書きが禁止されているパス名が指すファイル内容の上書きを許可する。
+deny_rewriteによりファイルの内容の上書きが禁止されているパス名が指すファイル内容の上書きを許可します。
(例) allow_rewrite /var/log/messages
関連項目:path_group deny_rewrite
argv[0] の組み合わせを制限するには、 allow_argv0 というディレクティブに続けて、「正規化されたファイル名」と「argv[0] の最後の / より後ろの部分」を指定する。
+argv[0] の組み合わせを制限するには、 allow_argv0 というディレクティブに続けて、「正規化されたファイル名」と「argv[0] の最後の / より後ろの部分」を指定します。
プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。いくつかのプログラム(例えば busybox )は argv[0] の内容によって振る舞いを変化させる。 プログラムへのシンボリックリンクを経由してプログラムを実行する場合、 TOMOYO Linux のドメイン遷移は filename が指すパス名を正規化した内容に基づいて行われるのに対し、振る舞いは argv[0] (通常は filename が指すパス名と同じ内容)に基づいて行われてしまう。例えば、 /bin/ls と /bin/cat が busybox へのハードリンクとして提供されている環境において、 /tmp/cat という /bin/ls へのシンボリックリンクを作成して /tmp/cat を実行することにより、 /bin/ls のためのドメインで cat として振舞うことができてしまうという抜け穴になる。
@@ -1306,7 +1349,7 @@環境変数名を制限するには、 allow_env というディレクティブに続けて、「環境変数名」を指定する。
+環境変数名を制限するには、 allow_env というディレクティブに続けて、「環境変数名」を指定します。
プログラムを実行する関数である execve() には filename と argv[] と envp[] を渡すことができる。多くのプログラムは envp[] の内容によって振る舞いを変化させる。
このディレクティブの目的は、実行されるプログラムに渡される環境変数を制限することである。
@@ -1315,7 +1358,7 @@ケイパビリティのアクセス許可を指定するには、 allow_capability というディレクティブに続けて、ケイパビリティを指定する。以下のケイパビリティが指定できる。
+ケイパビリティのアクセス許可を指定するには、 allow_capability というディレクティブに続けて、ケイパビリティを指定します。以下のケイパビリティが指定できます。
allow_capability inet_tcp_create | TCP ソケットの使用を許可 |
allow_capability SYS_PTRACE | ptrace(2) の使用を許可 |
allow_capability ディレクティブの目的は、プログラムが呼び出すことができるシステムコールを制限することである。幾つかのシステムコールに対しては他のディレクティブやポリシーファイルを使用してより詳細な制限が可能になっている。
+allow_capability ディレクティブの目的は、プログラムが呼び出すことができるシステムコールを制限することである。幾つかのシステムコールに対しては他のディレクティブやポリシファイルを使用してより詳細な制限が可能になっている。
ネットワークのアクセス許可を指定するには、 allow_network というディレクティブに続けて、プロトコル(TCP UDP RAW の何れか)、 IP アドレス、ポート番号(TCP UDP の場合)またはプロトコル番号(RAW の場合)を指定する。 IPv4 プロトコルおよび IPv6 プロトコルで使用するローカルポート番号が対象である。
+ネットワークのアクセス許可を指定するには、 allow_network というディレクティブに続けて、プロトコル(TCP UDP RAW の何れか)、 IP アドレス、ポート番号(TCP UDP の場合)またはプロトコル番号(RAW の場合)を指定します。 IPv4 プロトコルおよび IPv6 プロトコルで使用するローカルポート番号が対象である。
ディレクティブ | 許可されるアクセス | 指定例 |
allow_network TCP bind | ローカルの TCP アドレス/ポートの割り当て | allow_network TCP bind 0.0.0.0 80 |
のように定義しておくことで、ドメイン別ポリシーのファイルに対するアクセス許可を指定する際に
+のように定義しておくことで、ドメインポリシのファイルに対するアクセス許可を指定する際に
@@ -1465,11 +1508,11 @@ |
のように指定できる。
+のように指定できます。
アドレスのグループを定義するには、 address_group というディレクティブに続けて、グループ名とIPアドレスのパターンを指定する。
+
アドレスのグループを定義するには、 address_group というディレクティブに続けて、グループ名とIPアドレスのパターンを指定します。
例えば、ローカルアドレスをまとめたい場合、
のように定義しておくことで、ドメイン別ポリシーのネットワークに対するアクセス許可を指定する際に
+のように定義しておくことで、ドメインポリシのネットワークに対するアクセス許可を指定する際に
@@ -1488,7 +1531,7 @@ |
のように指定できる。
+のように指定できます。
deny_rewrite というキーワードを使用して、既に記録されている部分の書き換えを禁止したいファイル(ログファイル等)のパス名を登録する。パターンが使用できる。 deny_rewrite というキーワードを使用して登録されたファイルは、ドメイン用ポリシーの中で明示的にallow_rewriteというキーワードを用いて許可が与えられない限り、追記ではない書き込みモードでのオープンとファイルの切り詰めが禁止される。
+deny_rewrite というキーワードを使用して、既に記録されている部分の書き換えを禁止したいファイル(ログファイル等)のパス名を登録します。パターンが使用できる。 deny_rewrite というキーワードを使用して登録されたファイルは、ドメイン用ポリシの中で明示的にallow_rewriteというキーワードを用いて許可が与えられない限り、追記ではない書き込みモードでのオープンとファイルの切り詰めが禁止されます。
関連項目:allow_rewrite
-シンボリックリンクを解決した名前ではなくシンボリックリンクの名前のまま実行させるプログラムを指定するには、 alias というディレクティブに続けてシンボリックリンクを解決したパス名とシンボリックリンクを解決する前のパス名を指定する。このディレクティブの目的は、実行時の名前によって異なる振る舞いをするプログラムが、ハードリンクではなくシンボリックリンクで参照される場合に、シンボリックリンクの名前でドメインを遷移できるようにすることである。
-例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクであるため、通常は /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義される。しかし、 alias /sbin/killall5 /sbin/pidof という指定をすることで、 /sbin/pidof を実行すると /sbin/pidof が実行されたものとしてドメインが定義されるようにできる。
+シンボリックリンクを解決した名前ではなくシンボリックリンクの名前のまま実行させるプログラムを指定するには、 alias というディレクティブに続けてシンボリックリンクを解決したパス名とシンボリックリンクを解決する前のパス名を指定します。このディレクティブの目的は、実行時の名前によって異なる振る舞いをするプログラムが、ハードリンクではなくシンボリックリンクで参照される場合に、シンボリックリンクの名前でドメインを遷移できるようにすることである。
+例えば /sbin/pidof は /sbin/killall5 へのシンボリックリンクであるため、通常は /sbin/pidof を実行すると /sbin/killall5 が実行されたものとしてドメインが定義されます。しかし、 alias /sbin/killall5 /sbin/pidof という指定をすることで、 /sbin/pidof を実行すると /sbin/pidof が実行されたものとしてドメインが定義されるようにできる。
関連項目:allow_execute
-複数のプログラムを単一のプログラム名で扱うには、 aggregator というディレクティブに続けて集約前のプログラム名と集約後のプログラム名を指定する。このディレクティブの目的は、同様のプログラムを集約することである。
+複数のプログラムを単一のプログラム名で扱うには、 aggregator というディレクティブに続けて集約前のプログラム名と集約後のプログラム名を指定します。このディレクティブの目的は、同様のプログラムを集約することである。
例えば、 /usr/bin/tac と /bin/cat は似ているので、 aggregator /usr/bin/tac /bin/cat という指定をすることで /usr/bin/tac を /bin/cat のドメインで実行することができるようになる。
例えば、Fedora Core 3 の /usr/sbin/logrotate は /tmp/logrotate.\?\?\?\?\?\? というパターンのプログラムを作成して実行するが、 TOMOYO Linux では安全上の理由からプログラムの実行許可を与える場合とドメインを定義する場合にパターンを使用することを認めていない。しかし、 aggregator /tmp/logrotate.\?\?\?\?\?\? /tmp/logrotate.tmp という指定をすることで /tmp/logrotate.\?\?\?\?\?\? を /tmp/logrotate.tmp のドメインで実行することができるようになる。
@@ -1525,7 +1568,7 @@特定のプログラムが実行された場合にドメイン遷移を初期化させるには、 initialize_domain というディレクティブを使用する。
+特定のプログラムが実行された場合にドメイン遷移を初期化させるには、 initialize_domain というディレクティブを使用します。
from 以降が指定されていない場合は任意のドメインから実行された場合に適用される。ドメイン名が <kernel> で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用される。
+from 以降が指定されていない場合は任意のドメインから実行された場合に適用されます。ドメイン名が <kernel> で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用されます。
このディレクティブの目的は、常駐型プログラムや必要に応じてカーネルから起動されるプログラムを、通常とは異なるドメインに遷移させることで、ドメイン遷移を集約することである。
-関連項目:ドメイン遷移 no_initialize_domain
+関連項目:ドメイン遷移 no_initialize_domain
initialize_domain の効力を打ち消すには、 no_initialize_domain というディレクティブを指定する。
+initialize_domain の効力を打ち消すには、 no_initialize_domain というディレクティブを指定します。
このディレクティブはドメイン遷移を初期化させたくない場合に使用する。
+このディレクティブはドメイン遷移を初期化させたくない場合に使用します。
-関連項目:ドメイン遷移 initialize_domain
+関連項目:ドメイン遷移 initialize_domain
特定のドメインからプログラムが実行されてもドメイン遷移を行わないようにするには、 keep_domain というディレクティブを使用する。
+特定のドメインからプログラムが実行されてもドメイン遷移を行わないようにするには、 keep_domain というディレクティブを使用します。
from 以前が指定されていない場合は任意のプログラムが実行された場合に適用される。ドメイン名が <kernel> で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用される。
+from 以前が指定されていない場合は任意のプログラムが実行された場合に適用されます。ドメイン名が <kernel> で始まらない場合は、ドメイン名の最後のプログラム名が一致する全てのドメインに適用されます。
このディレクティブの目的は、不要なドメイン遷移の発生を抑制することでドメイン数とメモリ消費を抑えることである。
-関連項目:ドメイン遷移 no_keep_domain
+関連項目:ドメイン遷移 no_keep_domain
keep_domain の効力を打ち消すには、 no_keep_domain というディレクティブを指定する。
+keep_domain の効力を打ち消すには、 no_keep_domain というディレクティブを指定します。
このディレクティブはドメイン遷移を行わせたい場合に使用する。
+このディレクティブはドメイン遷移を行わせたい場合に使用します。
-関連項目:ドメイン遷移 keep_domain
+関連項目:ドメイン遷移 keep_domain
現在の制御レベルを取得または変更する。変更するためのツールとして setlevel と loadpolicy が用意されている。
+現在の制御レベルを取得または変更します。変更するためのツールとして setlevel と loadpolicy が用意されている。
(例)
cat /proc/ccs/profile
savepolicy -p
@@ -1599,7 +1642,7 @@
現在のシステムポリシーを読み出しまたは追加または削除する。
+現在のシステムポリシを読み出しまたは追加または削除します。
(例)
cat /proc/ccs/system_policy
savepolicy -s
@@ -1610,21 +1653,21 @@
現在のドメインポリシーを読み出しまたは追加または削除する。
+現在のドメインポリシを読み出しまたは追加または削除します。
(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成される)
printf "<kernel> /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d
(例)ドメインを選択してアクセス許可を追加(ドメインが存在しない場合は作成されない)
-printf "select <kernel> /sbin/init\nallow_read /etc/passwd\n" | loadpolicy -d
(例)ドメインを選択してアクセス許可を削除
-printf "select <kernel> /sbin/init\ndelete allow_read /etc/passwd\ndelete allow_read /etc/shadow\n" | loadpolicy -d
(例)特定のドメインを削除
-printf "delete <kernel> /sbin/init\n" | loadpolicy -d
(例)ドメイン別ポリシーの読み出し
+printf "delete <kernel> /sbin/init\n" | loadpolicy -d
(例)ドメインポリシの読み出し
cat /proc/ccs/domain_policy
現在の例外ポリシーを読み出しまたは追加または削除する。
+現在の例外ポリシを読み出しまたは追加または削除します。
(例)
echo 'file_pattern /proc/\$/status' | loadpolicy -e
echo 'delete file_pattern /proc/\$/status' | loadpolicy -e
@@ -1632,71 +1675,57 @@
強制モードで動作中にポリシー違反が発生した場合に、そのアクセス要求を個別に許可するかどうかの指定を行うために使用する。 ALLOW_ENFORCE_GRACE=enabled に設定されているプロファイルが割り当てられているドメインに対して強制モードでポリシー違反が発生した場合、 ccs-queryd を用いて対話的に諾否を指定できる。
+強制モードで動作中にポリシ違反が発生した場合に、そのアクセス要求を個別に許可するかどうかの指定を行うために使用します。 ALLOW_ENFORCE_GRACE=enabled に設定されているプロファイルが割り当てられているドメインに対して強制モードでポリシ違反が発生した場合、 ccs-queryd を用いて対話的に諾否を指定できます。
ポリシーの読み書きを行えるプログラムまたはドメインの一覧を取得または追加する。
+ポリシの読み書きを行えるプログラムまたはドメインの一覧を取得または追加します。
setprofile コマンドが行単位での処理を行いやすくするために domain_policy の内容からプロファイル番号とドメイン名の部分だけを抽出したもの。DBMSのビューに相当する機能を提供する。
+setprofile コマンドが行単位での処理を行いやすくするために domain_policy の内容からプロファイル番号とドメイン名の部分だけを抽出したもの。DBMSのビューに相当する機能を提供します。
TOMOYO Linuxがポリシーを保持するために使用しているカーネルのメモリ情報を取得する。
+TOMOYO Linuxがポリシを保持するために使用しているカーネルのメモリ情報を取得します。
(例)
cat /proc/ccs/meminfo
ドメイン別ポリシーに対するアクセス許可ログを取得する。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_GRANT_LOG件までである。 それ以上は記録されないので、随時読み出すようにする必要がある。
+ドメインポリシに対するアクセス許可ログを取得します。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_GRANT_LOG件までです。 それ以上は記録されないので、随時読み出すようにする必要がある。
(例)
cat /proc/ccs/grant_log
ドメイン別ポリシーに対するアクセス拒否ログを取得する。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_REJECT_LOG件までである。 それ以上は記録されないので、随時読み出すようにする必要がある。
+ドメインポリシに対するアクセス拒否ログを取得します。 取得すべきログが無い場合はすぐに戻ってくるので、ログが発生するまで待機させるには select(2) を使うこと。 記憶できる件数はMAX_REJECT_LOG件までです。 それ以上は記録されないので、随時読み出すようにする必要がある。
(例)
cat /proc/ccs/reject_log
呼び出し元プロセスが属しているドメインの名前を取得する。
+呼び出し元プロセスが属しているドメインの名前を取得します。
(例)
cat /proc/ccs/self_domain
ccstree コマンド(「現在動作中のプロセス」と「そのプロセスが属しているドメイン」と「そのドメインに割り当てられているプロファイル番号」を pstree のように一覧表示する)のためのインタフェース。例外的にポリシーマネージャとして登録されていないプログラムでも書き込みを行える。
+ccstree コマンド(「現在動作中のプロセス」と「そのプロセスが属しているドメイン」と「そのドメインに割り当てられているプロファイル番号」を pstree のように一覧表示する)のためのインタフェース。例外的にポリシマネージャとして登録されていないプログラムでも書き込みを行える。
ポリシーの変更を検出するためのカウンタ。参照されるたびに 0 にリセットされる。ポリシーの更新を監視するプログラムのためのインタフェース。
+ポリシの変更を検出するためのカウンタです。参照されるたびに 0 にリセットされます。ポリシの更新を監視するプログラムのためのインタフェースです。
TOMOYO Linux のバージョン番号を取得するためのインタフェース。
+TOMOYO Linux のバージョン番号を取得するためのインタフェースです。
(例)
cat /proc/ccs/version
強制モードでポリシー違反が発生した場合に、ポリシー違反の原因となったプロセスを一定時間スリープ状態にさせることができます。
- -/proc/ccs/profile での指定例 | 意味 |
3-SLEEP_PERIOD=1 | プロファイル 3 が割り当てられているプロセスが強制モードに於いてポリシー違反を発生させた場合、0.1秒間スリープさせる。 |
4-SLEEP_PERIOD=10 | プロファイル 4 が割り当てられているプロセスが強制モードに於いてポリシー違反を発生させた場合、1秒間スリープさせる。 |
この機能は、無限ループの中でポリシー違反が発生した場合に、CPU使用率が100%になってしまうのを回避するための安全装置です。通常は0.1秒間スリープさせるだけで充分です。
+この機能は、許可されていないホストからの TCP 接続要求や UDP パケットを攻撃者が故意に送りつけることでポリシー違反を発生させることでサービスを長時間スリープ状態にさせることにより、許可されているホストからの TCP 接続要求や UDP パケットの処理を大幅に遅延させるという攻撃が成立してしまうのを回避するために、ネットワークの受信系の操作に対しては機能しないようになっています。
- -アクセス許可にユーザID等に基づいた条件を付加することができます。条件は個々のアクセス許可の末尾に " if " 句を追加する形で指定します。
@@ -1759,9 +1788,7 @@exec はプログラム実行時(つまりallow_execute)に限り指定できます。
-TOMOYO Linux はユーザランドアプリケーションの修正を行わないため、プログラムの実行を伴わずにアクセス可能な資源の範囲を変更することはできません。しかし、例えば接続元クライアントのIPアドレスによってアクセスの可否を切り替えたいという場合があります。そのような場合に対応するため、プロセス毎に状態変数を割り当てることができ、条件付きアクセス許可の指定で使えるようになっています。
@@ -1776,155 +1803,130 @@使用例 | 意味 |
allow_network TCP accept @TRUSTED_HOSTS 1024-65535 ; set task.state[0]=1 | クライアントが @TRUSTED_HOSTS である場合には、 state[0] に 1 を設定する。 |
allow_network TCP accept @UNTRUSTED_HOSTS 1024-65535 ; set task.state[0]=0 | クライアントが @UNTRUSTED_HOSTS である場合には、 state[0] に 0 を設定する。 |
allow_execute /bin/bash if task.state[0]=1 | state[0] が 1 の場合は、 /bin/bash の実行を許可する。 |
allow_execute /sbin/nologin if task.state[0]=0 | state[0] が 0 の場合は、 /sbin/nologin の実行を許可する。 |
allow_execute /etc/passwd if task.state[2]=0 ; set task.state[2]=1 | state[2] が 0 の場合は /etc/passwd の読み込みモードでのオープンを許可し、その後 state[2] に 1 を設定する。 |
allow_network TCP accept @TRUSTED_HOSTS 1024-65535 ; set task.state[0]=1 | クライアントが @TRUSTED_HOSTS である場合には、 state[0] に 1 を設定します。 |
allow_network TCP accept @UNTRUSTED_HOSTS 1024-65535 ; set task.state[0]=0 | クライアントが @UNTRUSTED_HOSTS である場合には、 state[0] に 0 を設定します。 |
allow_execute /bin/bash if task.state[0]=1 | state[0] が 1 の場合は、 /bin/bash の実行を許可します。 |
allow_execute /sbin/nologin if task.state[0]=0 | state[0] が 0 の場合は、 /sbin/nologin の実行を許可します。 |
allow_execute /etc/passwd if task.state[2]=0 ; set task.state[2]=1 | state[2] が 0 の場合は /etc/passwd の読み込みモードでのオープンを許可し、その後 state[2] に 1 を設定します。 |
状態変数を使用する際には、以下の点に注意してください。
TOMOYO Linux では、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、不要なプログラムの実行を拒否するという振る舞いだけでなく、それ以外の振る舞いを行うこともできます。
+強制モードでポリシ違反が発生した場合に、ポリシ違反の原因となったプロセスを一定時間スリープ状態にさせることができます。
-強制モードに於いて allow_execute 構文により許可されていないプログラムの実行が要求された場合、デフォルトではプログラムの実行を拒否します。しかし、あるプログラムからどのプログラムの実行を許可する必要があるかを把握済みであるという前提があれば、プロセスが正常な動作をしている限りに於いて許可されていないプログラムの実行が要求されることは無いので、許可されていないプログラムの実行が要求されたということはプロセスが正常な動作をしていない(つまり、プロセスにとっては制御を失った状態である)とみなすことができます。
+/proc/ccs/profile での指定例 | 意味 |
3-SLEEP_PERIOD=1 | プロファイル 3 が割り当てられているプロセスが強制モードに於いてポリシ違反を発生させた場合、0.1秒間スリープさせる。 |
4-SLEEP_PERIOD=10 | プロファイル 4 が割り当てられているプロセスが強制モードに於いてポリシ違反を発生させた場合、1秒間スリープさせる。 |
攻撃者はバッファオーバーフローなどのセキュリティホールを攻撃することでプロセスの制御を奪い、シェルなどのコマンドの実行を要求してきます。もし、そのプロセスからシェルの実行を許可する必要が無い(すなわち allow_execute /bin/bash のようなアクセス許可を与える必要が無い)のであれば、シェルの実行が要求された時点で既にプロセスにとっては制御を失っていると考えることができます。
+この機能は、無限ループの中でポリシ違反が発生した場合に、CPU使用率が100%になってしまうのを回避するための安全装置です。通常は0.1秒間スリープさせるだけで充分です。
-通常、許可されていないプログラムの実行が要求された場合は、その要求を拒否するだけです。しかし、制御を失っているプロセスから要求されたプログラムの実行要求を拒否したところで、そのプロセスの制御が取り戻される(つまり、正常な動作をするようになる)とは考えられません。しかし、プログラムを実行するということは、現在動作中のプロセスを新しいプログラムに置き換えることで、制御を新しいプログラムに譲渡することを意味します。つまり、あるプロセスがバッファオーバーフローなどにより制御を失っていたとしても、プログラムを実行することにより、そのプロセスの制御が取り戻されるわけです。
+この機能は、許可されていないホストからの TCP 接続要求や UDP パケットを攻撃者が故意に送りつけることでポリシ違反を発生させることでサービスを長時間スリープ状態にさせることにより、許可されているホストからの TCP 接続要求や UDP パケットの処理を大幅に遅延させるという攻撃が成立してしまうのを回避するために、ネットワークの受信系の操作に対しては機能しないようになっています。
-攻撃者の手によって制御を失ったプロセスからプログラムが実行された後の制御は、どのプログラムが実行されたかによって決まります。シェルが実行された場合には、シェルはユーザが要求したとおりに処理を実行してしまうため、プログラムの実行を要求したプロセスの所有者である攻撃者の手に委ねられてしまうわけです。しかし、何もせずに終了するようなプログラム(例えば /bin/true )が実行された場合には、プロセスの制御が攻撃者の手に委ねられてしまうことはありません。
+このように、攻撃者の手によって本来許可する必要の無いプログラムの実行が要求されるという出来事は、見方を変えると、攻撃者自身が制御を取り戻すためのチャンスを与えてくれていると考えることができます。そこで、 TOMOYO Linux では、許可されていないプログラムの実行が要求された場合、その要求を拒否する代わりに他のプログラムを実行するための機構を提供しています。この機構を用いて何をするかはシステム管理者の自由です。
+TOMOYO Linuxでは、原則としてポリシに従ってプログラムの実行可否を制御します。プログラム実行時のパラメータをチェックしたい場合には、条件付きアクセス許可の指定で説明したようにexec.argvやexec.envpを使ってチェックを行うことができます。しかし、条件付きアクセス許可の指定では、単純なパターンマッチしかサポートされておらず、また、どのようなプログラムの実行を許可するかを予め指定しておく必要があります。
-例えば、シェルの実行要求を /bin/true の実行要求に差し替えてしまうことで、そのプロセスを直ちに強制終了させることができます。
+そこで、TOMOYO Linux 1.6.0ではexecute_handlerという仕組みが導入されました。この仕組みは、プログラムの実行可否をカーネルが判断するのではなく、execute_handlerにより指定されたプログラムが判断し、プログラムの実行を許可すべきと判断した場合には実際にプログラムを実行するという動作をします。
-例えば、シェルの実行要求をハニーポットクライアントプログラムの実行要求に差し替えてしまうことで、攻撃者がどのようなリクエストを行うかを観察することができます。
+Linuxに於いては、プログラムを実行するという動作は、プログラムの実行を要求したプロセスを上書きするという動作であり、プログラムの実行に成功した場合にはプログラムの実行を要求したプロセスに制御が戻ることはありません。つまり、要求されたプログラムの実行に失敗した場合にしか、プログラムの実行を要求したプロセスに対して、要求されたプログラムが実行されなかったことが通知されません。
+例えば、プログラムAとして動作しているプロセスがプログラムBの実行を要求する場合を考えてみます。
+プログラムAとして動作しているプロセスがプログラムBの実行を要求すると、カーネルが「プログラムAとして動作しているプロセスからプログラムBを実行することは適切であるかどうか」をポリシを照合することで判断し、適切であると判断された場合には「プログラムAとして動作しているプロセスをプログラムBで上書き」し、適切では無いと判断された場合には「プログラムAとして動作しているプロセスにプログラムBの実行が認められていないことを通知」します。
例えば、そのログインセッションを強制終了させることができます。
+execute_handlerを指定した場合、
+execute_handlerとして指定されたプログラムCがこの動作に介在します。
+プログラムAとして動作しているプロセスがプログラムBの実行を要求すると、プログラムCに「プログラムAとして動作しているプロセスからプログラムBを実行することは適切であるかどうか」を判断してもらうために「プログラムAとして動作しているプロセスをプログラムCで上書き」します。プログラムCとして動作するようになったプロセスが「プログラムAとして動作していたプロセスからプログラムBを実行することは適切であるかどうか」を判断し、適切であると判断した場合には「プログラムCとして動作しているプロセスをプログラムBで上書き」し、適切では無いと判断された場合には「プログラムCとして動作しているプロセスをプログラムBで上書きせずに終了」します。
例えば、要求されたコマンドがどのパッケージに含まれているかを教えてくれる Ubuntu の command-not-found パッケージのように、「You are not permitted to execute this program.」のような警告を表示することができます。
+このように、プログラムBの実行を要求したプログラムAとして動作していたプロセスがに対して、プログラムBの実行に失敗したことを通知する手段を放棄することになるため、プログラムBの実行を要求したプログラムAとして動作していたプロセスが、プログラムBが実行されなかったという通知を受けることができなくなるという副作用が発生します。
+しかし、たとえexecute_handlerを指定していない場合であっても、「共有ライブラリの読み込みができなかった」「 KILL シグナルを受信した」「メモリ不足になり OOM killer によって強制終了させられた」など、様々な要因によって「実行には成功したが期待された動作を始める前に終了してしまった」という状況が起こりえます。つまり、「プログラムの実行が失敗しなかった」ということと「要求されたプログラムが期待した動作を始めた」ということの間には、不確定要素が存在します。
+そう考えると、「プログラムの実行に失敗したという通知が無い限りプログラムは期待された動作を始める」という保証は最初から存在しないわけなので、execute_handlerにより指定されたプログラムCが、プログラムBの実行に失敗したことをプログラムBの実行を要求したプログラムAとして動作していたプロセスに通知できなかったという結果になったとしても、容認できる範囲であると言えると思います。
例えば、攻撃者の接続元IPアドレスを割り出して、ファイアウォールの設定を変更することができます。
+ +TOMOYO Linux は、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、正常な動作をしている限り、ポリシで許可されていないプログラムの実行要求は起こらないはずだと仮定すると、全てのプログラムの実行要求をとりあえず受理して構わないと考えることができます。もしも受理すべきではないプログラムの実行要求が発生した場合、denied_execute_handlerの機能を使うことで要求を拒否する代わりにそのプロセスを強制終了させるなどの行動を起こすことができます。つまり、カーネルの内部でプログラムの実行可否の判断を行わなくても構わないということです。
+ +そこで、ドメインに対して execute_handlerキーワードを指定しておくことで、そのドメインから発生する全てのプログラムの実行可否の判断をカーネル外部のプログラムに委ねることができるようになります。
+カーネルの内部では利用可能なライブラリが少ない上に連続したメモリ領域の割り当てが失敗する可能性が高くなりますが、 +カーネルの外部であれば豊富なライブラリを使ってメモリ割り当ての限界を心配せずに詳細なチェックが可能になります。そこで、execute_handlerで指定したプログラムにプログラム実行時のパラメータをチェックしてもらい、適切であればプログラムを実行してもらうようにすることができます。
+ +この方式の副作用は、プログラムの実行を拒否すべきと判断した場合に、プログラムの実行を要求したプロセスに通知する方法が無い点です。しかし、自由にカスタマイズできるので、 ssh 等を用いて遠隔地のマシンに問い合わせをしながらしながら判断することも可能です。
この機能を使うには、以下のように指定します。
/proc/ccs/profile の例 | /proc/ccs/domain_policy の例 | 意味 |
3-MAC_FOR_FILE=enforcing | use_profile 3 denied_execute_handler /bin/true | プロファイル 3 が割り当てられているドメインに属しているプロセスが、許可されていないプログラムの実行を要求した場合、代わりに /bin/true を実行する。 |
/proc/ccs/domain_policy の例 | 意味 | |
execute_handler /usr/sbin/check-and-exec | このドメインに属しているプロセスがプログラムの実行を要求した場合、要求されたプログラムを実行する代わりに/usr/sbin/check-and-execを実行します。/usr/sbin/check-and-execはパラメータをチェックし、妥当と判断した場合には要求されたプログラムを実行します。 |
denied_execute_handlerで指定されたプログラムは、以下のパラメータを受け取ります。
+execute_handlerで指定されたプログラムは、以下のパラメータを受け取ります。アクセスログについてで説明した、 allow_execute のログと比較してみてください。
パラメータを表示するサンプルプログラムは以下のようになります。
- --#! /bin/sh -# Don't invoke this program from the command line. -# This program is invoked by the kernel, with all environment variables cleared. -# You might need to set environment variable PATH to run this program. -# -[ $# -ge 6 ] || exit 1 - -echo "----- Domain information -----" -echo $1 -shift - -echo "----- Program information -----" -echo $1 -shift - -echo "----- Process information -----" -echo $1 -shift - -echo "----- Rejected Program information -----" -echo $1 -shift - -ARGC=$1 -shift -echo "----- Number of commandline arguments -----" -echo $ARGC - -ENVC=$1 -shift -echo "----- Number of environment variables -----" -echo $ENVC - -echo "----- argv[] information -----" - -while [ $ARGC -gt 0 ] -do - echo $1 - shift - ARGC=`expr $ARGC - 1` -done - -echo "----- envp[] information -----" - -while [ $ENVC -gt 0 ] -do - echo $1 - shift - ENVC=`expr $ENVC - 1` -done - -exit 1 - |
この機能を使用する際には、以下の点に注意してください。
ccs-tools のソースパッケージには、 audit-exec-param.c というサンプルプログラムが入っています。ご自由に改造してお使いください。
この機能は、機構を提供しているだけです。この機構を活用できるかどうかはあなた次第です。
-許可されていないプログラムの実行が要求された場合の代替処理指定で述べたとおり、正常な動作をしている限り、ポリシーで許可されていないプログラムの実行要求は起こらないはずだと仮定すると、全てのプログラムの実行要求を受理して構わないと考えることができます。もしも受理すべきではないプログラムの実行要求が発生した場合、denied_execute_handlerの機能を使うことで要求を拒否する代わりにそのプロセスを強制終了させるなどの行動を起こすことができます。つまり、カーネルの内部でプログラムの実行可否の判断を行わなくても構わないということです。
+TOMOYO Linux では、どのプログラムからどのプログラムを実行する必要があるかを事前に把握して、必要最小限のプログラムの実行のみを認めるというアプローチを採用しています。そのため、不要なプログラムの実行を拒否するという振る舞いだけでなく、それ以外の振る舞いを行うこともできます。
-そこで、ドメインに対して execute_handlerキーワードを指定しておくことで、そのドメインから発生する全てのプログラムの実行可否の判断をカーネル外部のプログラムに委ねることができるようになります。
-カーネルの内部では利用可能なライブラリが少ない上に連続したメモリ領域の割り当てが失敗する可能性が高くなりますが、 -カーネルの外部であれば豊富なライブラリを使ってメモリ割り当ての限界を心配せずに詳細なチェックが可能になります。そこで、execute_handlerで指定したプログラムにプログラム実行時のパラメータをチェックしてもらい、適切であればプログラムを実行してもらうようにすることができます。
+強制モードに於いて allow_execute 構文により許可されていないプログラムの実行が要求された場合、デフォルトではプログラムの実行を拒否します。しかし、あるプログラムからどのプログラムの実行を許可する必要があるかを把握済みであるという前提があれば、プロセスが正常な動作をしている限りに於いて許可されていないプログラムの実行が要求されることは無いので、許可されていないプログラムの実行が要求されたということはプロセスが正常な動作をしていない(つまり、プロセスにとっては制御を失った状態である)とみなすことができます。
-この方式の副作用は、プログラムの実行を拒否すべきと判断した場合に、プログラムの実行を要求したプロセスに通知する方法が無い点です。しかし、自由にカスタマイズできるので、 ssh 等を用いて遠隔地のマシンに問い合わせをしながらしながら判断することも可能です。
+攻撃者はバッファオーバーフローなどのセキュリティホールを攻撃することでプロセスの制御を奪い、シェルなどのコマンドの実行を要求してきます。もし、そのプロセスからシェルの実行を許可する必要が無い(すなわち allow_execute /bin/bash のようなアクセス許可を与える必要が無い)のであれば、シェルの実行が要求された時点で既にプロセスにとっては制御を失っていると考えることができます。
+ +通常、許可されていないプログラムの実行が要求された場合は、その要求を拒否するだけです。しかし、制御を失っているプロセスから要求されたプログラムの実行要求を拒否したところで、そのプロセスの制御が取り戻される(つまり、正常な動作をするようになる)とは考えられません。しかし、プログラムを実行するということは、現在動作中のプロセスを新しいプログラムに置き換えることで、制御を新しいプログラムに譲渡することを意味します。つまり、あるプロセスがバッファオーバーフローなどにより制御を失っていたとしても、プログラムを実行することにより、そのプロセスの制御が取り戻されるわけです。
+ +攻撃者の手によって制御を失ったプロセスからプログラムが実行された後の制御は、どのプログラムが実行されたかによって決まります。シェルが実行された場合には、シェルはユーザが要求したとおりに処理を実行してしまうため、プログラムの実行を要求したプロセスの所有者である攻撃者の手に委ねられてしまうわけです。しかし、何もせずに終了するようなプログラム(例えば /bin/true )が実行された場合には、プロセスの制御が攻撃者の手に委ねられてしまうことはありません。
+ +このように、攻撃者の手によって本来許可する必要の無いプログラムの実行が要求されるという出来事は、見方を変えると、攻撃者自身が制御を取り戻すためのチャンスを与えてくれていると考えることができます。そこで、 TOMOYO Linux では、許可されていないプログラムの実行が要求された場合、その要求を拒否する代わりに他のプログラムを実行するための機構を提供しています。この機構を用いて何をするかはシステム管理者の自由です。
+ +例えば、シェルの実行要求を /bin/true の実行要求に差し替えてしまうことで、そのプロセスを直ちに強制終了させることができます。
+ +例えば、シェルの実行要求をハニーポットクライアントプログラムの実行要求に差し替えてしまうことで、攻撃者がどのようなリクエストを行うかを観察することができます。
+ +例えば、そのログインセッションを強制終了させることができます。
+ +例えば、要求されたコマンドがどのパッケージに含まれているかを教えてくれる Ubuntu の command-not-found パッケージのように、「You are not permitted to execute this program.」のような警告を表示することができます。
+ +例えば、攻撃者の接続元IPアドレスを割り出して、ファイアウォールの設定を変更することができます。
この機能を使うには、以下のように指定します。
/proc/ccs/domain_policy の例 | 意味 | |
execute_handler /usr/sbin/check-and-exec | このドメインに属しているプロセスがプログラムの実行を要求した場合、要求されたプログラムを実行する代わりに/usr/sbin/check-and-execを実行する。/usr/sbin/check-and-execはパラメータをチェックし、妥当と判断した場合には要求されたプログラムを実行する。 | |
/proc/ccs/profile の例 | /proc/ccs/domain_policy の例 | 意味 |
3-MAC_FOR_FILE=enforcing | use_profile 3 denied_execute_handler /bin/true | プロファイル 3 が割り当てられているドメインに属しているプロセスが、許可されていないプログラムの実行を要求した場合、代わりに /bin/true を実行します。 |
この機能を使用する際の注意事項は許可されていないプログラムの実行が要求された場合の代替処理指定と同じです。
+