LKMLにTOMOYO Linuxの2度目の投稿を行いました
2007-08-27 11:32 (by haradats)

2007年8月24日、LKML(カーネルメーリングリスト)にTOMOYO Linuxの
RFCを投稿しました。投稿したメッセージの内容原文とそのスレッドに
ついて、下記から参照できます。

http://lkml.org/lkml/2007/08/24/116

<メッセージ日本語要約>

\"TOMOYO Linux\" is our work in the field of security enhanced Linux.
This is the second proposal of TOMOYO Linux.

TOMOYO Linuxは私たちのLinxuセキュリティ強化の成果です。
これはTOMOYO Linuxの二度目の投稿(提案)になります。

When we posted our first proposal to LKML, TOMOYO Linux\'s MAC was
limited to file access control. Now TOMOYO Linux has access control
functionality not only for files but also for networking, signal
transmission and namespace manipulation and we got the source code
cleaned-up.

最初の投稿を行った時点では、TOMOYO Linuxの強制アクセス制御対象は
ファイルに限定されていました。TOMOYO Linuxは、今は
ネットワーク、シグナル、ネームスペースの操作に対応し、
パッチについてもLinuxの規約に従うように見直しを行いました。

Patches consist of three types.
    * [TOMOYO 01/15]:    Mandatory modifications against standard kernel.
    * [TOMOYO 02-14/15]: LSM implementation of TOMOYO Linux.
    * [TOMOYO 15/15]:    Optional modifications against standard kernel.

01/15のパッチは、標準のカーネルに対する差分です。
02-14/15のパッチが、TOMOYO Linuxの実体です。
15/15のパッチは、オプショナルなパッチです。

<<What you can do with TOMOYO Linux.>>

TOMOYO Linuxで何ができるか?

The fundamental concept of TOMOYO Linux is \"tracking process
invocation history\".

TOMOYO Linuxの基盤となる考え方は、プロセス起動履歴の追跡です。

The \"struct task_struct\"->security member holds a pointer to the
\"process invocation history\". Thus, every process (the kernel,
/sbin/init process and any children/descendant of /sbin/init) knows
its \"process invocation history\" (or ancestors). Since every process
knows its ancestors, TOMOYO Linux can enforce access control over all
processes.

task_structのsecurityメンバーがプロセス起動履歴を保持します。
それにより、/sbin/initとその子孫の全てのプロセスは、
その起動履歴(あるいは祖先の名前)を知ることができるようになります。
全てのプロセスが、その祖先を知っているから全プロセスに
対して強制アクセス制御を執行できます。

TOMOYO Linux splits domains using \"process invocation history\" and the
process transits to a different domain whenever execution of a program
(i.e. do_execve()) is requested. By transiting to a different domain
whenever execution of a program is requested, each domain will have
the minimal permissions that are essential for processes in that
domain to do their roles.

TOMOYO Linuxはプロセス起動履歴に基づいてドメインを分割し、
execveの実行時にドメインが遷移します。遷移したそれぞれの
ドメインでは、そのドメインに必要最低限な許可を与えられます。

You don\'t need to define domains beforehand. TOMOYO Linux kernel will
automatically define new domains whenever execution of a program is
requested, and the process will automatically transit to the new
domain. (If the process\'s domain is in enforcing mode, TOMOYO Linux
kernel will not define new domains to avoid memory consumption attack.)

(SELinuxや他のDTEとは異なり)TOMOYO Linuxでは、ドメインを
事前に定義する必要はありません。TOMOYO Linuxカーネルが
自動的にドメインを定義(生成)し、自動的にドメインを遷移させます。
(強制モードでは、新規ドメインの生成は行われません。これは
メモリ消耗の攻撃を防ぐためです)

TOMOYO Linux can restrict the following requests on a per-a-domain basis:

TOMOYO Linuxは、ドメイン毎にMACを適用できます。

    * opening files(ファイルのオープン)
    * communicating via PF_INET sockets(PF_INETソケットの通信)
    * sending signals(シグナルの送信)

TOMOYO Linux can also restrict the following namespace manipulation requests.

TOMOYO Linuxは、以下のネームスペースに対する操作も制御できます。

    * mounting filesystems
    * unmounting filesystems
    * using pivot_root


<<Example>>

The tree below shows a part of domain transitions generated using
Debian Etch. The domain a process is in is determined based on the
process\'s \"process invocation history\". Each domain has permissions
(or ACL), and the behavior (or requests shown above) of a process is
restricted by the ACL of the domain that the process is in.

以下のドメイン遷移は、Debian Etchで計測されたものです。
ドメインは、プロセス起動履歴に基づいて決定されます。
書くドメインはそのドメインのアクセス制御定義(ACL)を持ち、
プロセスのふるまいはそのプロセスが属するドメインのACLに
基づいて許可されます。

    <kernel>
      + /sbin/init
          + /etc/init.d/rc
              + /etc/init.d/apache2
                  + /usr/bin/env
                      + /usr/sbin/apache2ctl
                          + /usr/sbin/apache2

You can assign different access control modes (or profiles) on a
per-a-domain basis. Thus, you can enforce access control partially or
entirely. Also, by assigning \"learning mode\" to a domain, ACL that are
requested by processes in that domain are automatically (i.e. in
real-time) accumulated. The following ACL are an excerpt from
/usr/sbin/apache2 domain generated using \"learning mode\".

TOMOYO Linuxでは、ドメイン毎に異なる制御モードを割り当てる
ことができます。従って、システム全体の制御だけでなく、
部分的な適用(制御)も可能です。また、ドメインを学習モードに
することにより、必要なACLを生成することもできます。これは、
(ログからの変換ではなく)リアルタイムに行われます。以下の例は、
/usr/sbin/apache2について学習モードで得られた結果の抜粋です。

    4 /etc/apache2/apache2.conf
    4 /var/www/apache2-default/index.html
    allow_create /var/run/apache2.pid
    allow_unlink /var/run/apache2.pid
    allow_network TCP bind 192.168.1.135 80
    allow_network TCP listen 192.168.1.135 80
    allow_network TCP accept 192.168.1.1 2389

The above ACL allows Apache to do the following behavior.

上のACLは以下を意味します。

    * Opening /etc/apache2/apache2.conf and
      /var/www/apache2-default/index.html for reading.
   /etc/apache2.confを開き、/var/www/apache2-default/index.htm
   を開く(参照する)
    * Creating and deleting /var/run/apache2.pid .
   /var/run/apache2.pidを生成、削除する
    * Binding to local address (IP = 192.168.1.135, port = 80).
   ローカルIPへのバインド
    * Listening at local address (IP = 192.168.1.135, port = 80).
   ローカルIPのリッスン
    * Accepting from remote address (IP = 192.168.1.1, port = 2389).
   リモートアドレスのアクセプト

You may use wildcards for pathnames, ranges for IP addresses and port
numbers, groups of pathnames and IP addresses for flexible definition.

パス名、IPアドレスの範囲、ポート番号、パス名およびIPアドレスの
グループにはワイルドカードを用いることができ、フレキシブルな
管理が可能です。

<<Features of TOMOYO Linux.>>

TOMOYO Linuxの特徴

TOMOYO Linux is an implementation of MAC, but you can use TOMOYO Linux
not only for MAC, but also to analyze a system\'s behavior, since
TOMOYO Linux can accumulate access requests raised by applications
sorted by each \"process invocation history\".

TOMOYO LinuxはMACの実装ですが、TOMOYO Linuxは、プロセス起動履歴を
蓄積しているのでシステムの振る舞いの解析にも活用できます。

TOMOYO Linux and AppArmor are alike from the point of view of pathname
based access control, but TOMOYO Linux has differences in the
following points:

TOMOYO LinuxとAppArmorはパス名ベースという観点では、
似ていますが、下記の点で異なります。

    * TOMOYO Linux can apply access control over the whole process
      (from the execution of /sbin/init at the startup procedure,
      till the power failure at the shutdown procedure).
   TOMOYO Linuxは、/sbin/initからシャットダウンに至るまで
   アクセスを制御できます。
    * TOMOYO Linux can apply access control not only over files but
      also over networking, signals, namespace manipulations.
   TOMOYO Linuxはファイルだけでなく、シグナルや
   ネームスペースの操作にも対応しています。
    * TOMOYO Linux can accumulate ACL in real-time using
      \"learning mode\".
   TOMOYO Linuxの学習モードはリアルタイムで動作します。

    * TOMOYO Linux allows the administrator to switch the access
      control mode on a per-domain and per-functionality basis.
   TOMOYO Linuxは、ドメイン毎にアクセス制御モードを変更
   できます。
    * TOMOYO Linux allows the administrator to judge (grant/reject)
      requests which that violated ACL manually while operating in
      \"enforcing mode\" without once rejecting these requests.
   TOMOYO Linuxを使えば、一度リジェクトされたアクセスに
   ついて対話的なアクセスの許可判断を行うことができます。
    * TOMOYO Linux supports conditional ACL (e.g. owner of
      process/files etc.).
   TOMOYO Linuxは、条件付きACLに対応しており、ファイルの
   オーナー等を条件に追加できます。

Documents about installing and experiencing TOMOYO Linux are available
at http://tomoyo.sourceforge.jp/en/2.1.x/ . Please try TOMOYO Linux.
Feedbacks are most welcome.

TOMOYO Linuxに関する情報は、http://tomoyo.sourceforge.jp/en/2.1.x/
にあります。どうかTOMOYO Linuxを試してみて下さい。
あなたからのフィードバックを歓迎します。


<<Related links>>

OLS BoF material: http://sourceforge.jp/projects/tomoyo/document/ols2007-tomoyo-20070629.pdf
Previous submission: http://lkml.org/lkml/2007/6/13/58 , http://lkml.org/lkml/2007/6/14/55

--
株式会社NTTデータ
原田季栄

TOMOYO project news list