tomoyotitle.png

Chapter 3: どうすれば TOMOYO Linux をインストールできますか?

3.1. 私の使っているディストリビューション用のバイナリパッケージはありますか?

TOMOYO Linux を使うには、ディストリビュータが配布しているカーネルパッケージとは別のカーネルをインストールする必要があります。インストールする方法は2通りあります。バイナリパッケージをインストールする方法と、ソースに対してパッチを当ててコンパイルする方法です。もし、利用しているディストリビューションが以下の何れかである場合、コンパイルをする必要無しに簡単にバイナリパッケージをインストールすることができます。

以下のディストリビューションに関してバイナリパッケージが提供されています:

もし、上記の何れかのディストリビューションを使用しているのであれば、3.2. バイナリパッケージからのインストールへと進んでください。そうではない場合には、カーネルをコンパイルする必要がありますので、3.3. ソースからのインストールへと進んでください。

3.2. バイナリパッケージからのインストール

RPM 形式のパッケージを使用しているディストリビューションの場合、以下のようにして GPG 鍵をインポートしてください:

# wget https://tomoyo.osdn.jp/kumaneko-key
# rpm --import kumaneko-key

DEB 形式のパッケージを使用しているディストリビューションの場合、以下のようにして GPG 鍵をインポートしてください:

# wget https://tomoyo.osdn.jp/kumaneko-key
# apt-key add kumaneko-key

プロジェクトで配布しているバイナリパッケージは SourceForge のページから手動でダウンロードすることも可能です。カーネルパッケージと管理ツールパッケージが必要です。レポジトリを使うと簡単にダウンロードできます。レポジトリを使う場合には以下のコマンドを実行してください:

CentOS 6 (686 flavour)

# wget -O /etc/yum.repos.d/ccs.repo http://tomoyo.osdn.jp/repos-1.8/CentOS6/ccs.repo
# yum install ccs-kernel ccs-tools

CentOS 5 (686 flavour)

# wget -O /etc/yum.repos.d/ccs.repo http://tomoyo.osdn.jp/repos-1.8/CentOS5/ccs.repo
# yum install ccs-kernel ccs-tools

CentOS 4 (686 flavour)

# wget -O /etc/yum.repos.d/ccs.repo http://tomoyo.osdn.jp/repos-1.8/CentOS4/ccs.repo
# yum install ccs-kernel-smp ccs-tools

CentOS 3 (686 flavour)

# wget -O - http://tomoyo.osdn.jp/repos-1.8/CentOS3/ccs.repo >> /etc/yum.conf
# yum install ccs-kernel-smp ccs-tools

Asianux 3 (686 flavour)

# wget -O /etc/yum.repos.d/ccs.repo http://tomoyo.osdn.jp/repos-1.8/Asianux3/ccs.repo
# yum install ccs-kernel ccs-tools

Vine Linux 6 (686-pae flavour)

# echo "repomd http://tomoyo.osdn.jp/repos-1.8/VineLinux6/ ./" >> /etc/apt/sources.list
# apt-get update
# apt-get install ccs-kernel-pae ccs-tools

Debian Squeeze (686 flavour)

# echo 'deb http://tomoyo.osdn.jp/repos-1.8/DebianSqueeze/ ./' >> /etc/apt/sources.list
# apt-get update
# apt-get install linux-image-2.6-686-ccs ccs-tools

Debian Wheezy (686-pae flavour)

# echo 'deb http://tomoyo.osdn.jp/repos-1.8/DebianWheezy/ ./' >> /etc/apt/sources.list
# apt-get update
# apt-get install linux-image-3.2.0-4-686-pae-ccs ccs-tools

Ubuntu 12.04 (generic-pae flavour)

# echo 'deb http://tomoyo.osdn.jp/repos-1.8/Ubuntu12.04/ ./' >> /etc/apt/sources.list
# apt-get update
# apt-get install linux-generic-pae-ccs ccs-tools

Ubuntu 10.04 (generic-pae flavour)

# echo 'deb http://tomoyo.osdn.jp/repos-1.8/Ubuntu10.04/ ./' >> /etc/apt/sources.list
# apt-get update
# apt-get install linux-generic-pae-ccs ccs-tools

3.4. 設定の初期化へと進んでください。

3.3. ソースからのインストール

あなたが利用しているディストリビューション向けのバイナリパッケージが提供されていない場合、自分でカーネルをコンパイルする必要があります。

ただし、カーネルのコンパイルをせずに TOMOYO Linux の機能の主要部分を使いたい場合には、 AKARI というカーネルモジュールを利用することができます。このモジュールは TOMOYO 2.x よりも豊富な機能を提供していますが、 TOMOYO 1.x の機能の一部は使えません。「カーネルがどのようなコンパイルオプションでコンパイルされたか」と「CPUアーキテクチャ」に依存するという制限がありますが、カーネル 2.6.0 以降の全てのバージョンに対応しており、簡単に利用できます。 機能比較表で AKARI と TOMOYO 1.x と TOMOYO 2.x の違いについて詳細に説明されています。もし、 AKARI を使うのであれば、 AKARI のウェブサイトへと移動してください。

3.3.1. 依存するパッケージのインストール

カーネルと管理ツールをコンパイルするために以下のパッケージが必要になります:

これらのパッケージは以下のコマンドを実行することでインストールできます:

RedHat 系の場合

# yum -y install wget patch gcc make ncurses-devel

Debian 系の場合

# apt-get -y install wget patch gcc make libncurses-dev

SUSE 系の場合

# yast -i wget patch gcc make ncurses-devel

3.3.2. カーネルのダウンロードとパッチの適用

カーネルのソースコードを linux-2.4 または linux-2.6 または linux-3 または linux-4 からダウンロードしてください。
linux-2.4 についてはカーネル 2.4.37 に対応しています。
linux-2.6 についてはカーネル 2.6.27 以降に対応しています。
linux-3 についてはカーネル 3.0 以降に対応しています。
linux-4 についてはカーネル 4.0 以降に対応しています。

カーネルのソースを展開して、そのディレクトリに移動してください。
以下の操作において、例えばカーネル 4.13.12 を使う場合、 $VERSION.$PATCHLEVEL.diff を 4.13.diff に置き換えてください:

$ wget -O ccs-patch-1.8.5-20171111.tar.gz 'http://osdn.jp/frs/redir.php?m=jaist&f=/tomoyo/49684/ccs-patch-1.8.5-20171111.tar.gz'
$ wget -O ccs-patch-1.8.5-20171111.tar.gz.asc 'http://osdn.jp/frs/redir.php?m=jaist&f=/tomoyo/49684/ccs-patch-1.8.5-20171111.tar.gz.asc'
$ gpg ccs-patch-1.8.5-20171111.tar.gz.asc
$ tar -zxf ccs-patch-1.8.5-20171111.tar.gz
$ patch -sp1 < patches/ccs-patch-$VERSION.$PATCHLEVEL.diff

3.3.3. カーネルコンパイルオプションの設定

$ make -s menuconfig

Security options 画面に表示される以下の項目を選択してください:

Compile as loadable kernel module オプションは(組込みシステムなど) vmlinux のファイルサイズに制限がある場合に便利です。

Disable by default オプションを選択した場合、カーネルのコマンドラインで ccsecurity=on という指定を行った場合だけ有効化されます。選択しなかった場合、カーネルのコマンドラインで ccsecurity=off という指定を行った場合だけ無効化されます。

Do not modify 'struct task_struct' in order to keep KABI オプションはカーネル 2.6 以降でのみ選択可能です。このオプションを選択した場合、 TOMOYO が利用する変数をタスク構造体の外部で管理することにより、タスク構造体に変更を加えることにより生じる Kernel Application Binary Interface (KABI) の変化を回避することができます。ディストリビュータのカーネルに対して適用する際に Kernel ABI の変化を避けたい場合に選択してください。ただし、カーネルモジュールに対して TOMOYO の機能を呼び出すために ccsecurity_operations 構造体へのアクセスを認める(エクスポートする)必要があるため、カーネルパッケージを作成するスクリプトが警告を出力することは避けられない点については了承ください。

TOMOYO のポリシーは2種類存在します。前者はカーネル内に埋め込まれ、後者はファイルシステム上( /etc/ccs/ ディレクトリ内)のファイルとして保存されます。前者のポリシーを変更する場合にはカーネルの再コンパイルが必要になりますが、ポリシーローダ(例: /sbin/ccs-init )を使用せずにポリシーをロードできるようになります。後者は TOMOYO のアクセス制御が有効になる(例: /sbin/init が実行される)直前にポリシーローダを実行することで読み込まれます。 Activate without calling userspace policy loader. オプションを選択した場合、前者のポリシーだけをロードした時点で TOMOYO のアクセス制御が有効になります。このオプションは、(組込みシステムなど)ポリシーローダを実行することが困難な場合に便利です。

Location of userspace policy loader オプションは、 Activate without calling userspace policy loader. オプションを選択しない場合のみ指定できます。このオプションにはポリシーローダとして使用するパス名のデフォルトを指定します。この設定は、カーネルのコマンドラインで CCS_loader= オプションで上書きできます。

Trigger for calling userspace policy loader オプションは、 Activate without calling userspace policy loader. オプションを選択しない場合のみ指定できます。このオプションにはアクセス制御を開始するトリガとして利用するパス名のデフォルトを指定します。この設定は、カーネルのコマンドラインで CCS_trigger= オプションで上書きできます。例えば、 init=/usr/lib/systemd/systemd というオプションを指定する場合、 CCS_trigger=/usr/lib/systemd/systemd というオプションも指定することになるでしょう。

3.3.4. カーネルのコンパイルおよびインストール

カーネル内に埋め込まれるポリシーは security/ccsecurity/policy/ ディレクトリ内に domain_policy.conf exception_policy.conf manager.conf profile.conf stat.conf という名前で存在している必要があります。しかし、現時点では埋め込まれるべきポリシーを持っていないでしょうから、 security/ccsecurity/policy/ ディレクトリ内にファイルを作成せずに先に進んでください。(埋め込むべきポリシーを作成後にここに戻ってくることができます。)

カーネルコンパイルオプションの変更が終わったら、以下のコマンドを実行してカーネルをコンパイルしてください:

$ make -s dep
$ make -s
$ make -s modules
$ su
# make -s modules_install install

必要であれば initrd/initramfs を作成してください。

3.3.5. 管理ツールのインストール

前述した依存するパッケージがインストールされていることを確認してください。以下のコマンドを実行することによりコンパイルおよびインストールできます:

$ wget -O ccs-tools-1.8.5-20170102.tar.gz 'http://osdn.jp/frs/redir.php?m=jaist&f=/tomoyo/49693/ccs-tools-1.8.5-20170102.tar.gz'
$ wget -O ccs-tools-1.8.5-20170102.tar.gz.asc 'http://osdn.jp/frs/redir.php?m=jaist&f=/tomoyo/49693/ccs-tools-1.8.5-20170102.tar.gz.asc'
$ gpg ccs-tools-1.8.5-20170102.tar.gz.asc
$ tar -zxf ccs-tools-1.8.5-20170102.tar.gz
$ cd ccs-tools/
$ make -s USRLIBDIR=/usr/lib
$ su
# make -s USRLIBDIR=/usr/lib install

必要に応じて、 USRLIBDIR=/usr/lib を USRLIBDIR=/usr/lib64 (64ビット用の場合)または USRLIBDIR=/usr/lib32 (32ビット用の場合)に変更してください。


3.4. 設定の初期化へと進んでください。

3.4. 設定の初期化

管理ツールを実行するときに便利なように、管理ツールのインストールされているディレクトリ( /usr/sbin )を環境変数 PATH に追加したいと思うかもしれません。 bash を使用している場合、以下の行を ~/.bashrc に追加してください:

export PATH=$PATH:/usr/sbin

TOMOYO Linux を使うためには、初期設定の手順を行う必要があります。この手順により、ポリシーを保存するディレクトリが作成されます。全てのポリシーファイルは /etc/ccs/ ディレクトリに保存されます

初期設定を行うには2つのコマンドのどちらかを使用します。どの機能について解析および制限を行いたいかによりどちらのコマンドを使用するかが決まります。

ファイルの読み書きやプログラムの実行のようにファイルに関する機能だけを制限したいと思うユーザもいることでしょう。これは、ポリシーをシンプルにしたいユーザや TOMOYO Linux が提供する全部の機能を必要とはしないユーザに適しています。ファイルに関する機能だけを制限する場合、このガイドで説明されている例えばネットワークに関する機能などの無関係な部分を無視することができます。ファイルに関する機能だけを使う場合、以下のコマンドを実行してください:

# /usr/lib/ccs/init_policy --file-only-profile

TOMOYO Linux が提供する全部の機能を使ってファイルやネットワークやケイパビリティや環境変数やシグナルの送信といった操作を解析したり制限したいと思うユーザもいることでしょう。これは、可能な限りシステムのセキュリティを高めたいと考えているユーザに適しています。このガイドでは全部の機能を使うことを想定して作成されています。全部の機能を使う場合、以下のコマンドを実行してください:

# /usr/lib/ccs/init_policy

上記のコマンドを実行することで、以下のような出力が表示される筈です:

# /usr/lib/ccs/init_policy
Creating policy directory... OK
Creating configuration directory... OK
Creating exception policy... OK
Creating domain policy... OK
Creating manager policy... OK
Creating default profile... OK
Creating stat policy... OK
Creating module loader... OK
Creating configuration file for ccs-editpolicy ... OK
Creating configuration file for ccs-auditd ... OK
Creating configuration file for ccs-patternize ... OK
Creating configuration file for ccs-notifyd ... OK

3.5. ブートローダの設定

ブートローダ( GRUB 等)の設定ファイルを編集し、コンパイルされたカーネル用のエントリを追加してください。カーネルのコンパイル時に Disable by default オプションを指定した場合には、 ccsecurity=on というパラメータをカーネルに対するコマンドラインオプションに指定することを忘れないでください。 TOMOYO Linux カーネルで起動するための方法については、ディストリビューションやブートローダのドキュメントを参照してください。

TOMOYO Linux 1.8.2 以降では、 CCS_trigger というカーネルのコマンドラインオプションをサポートしています。このオプションは、最初に実行されるプログラムとして /sbin/init 以外を利用しているシステムにおいて便利です。例えば、 RHEL 7 では systemd を利用しているので、 /usr/lib/systemd/systemd が最初に実行されます。 3.3.3. カーネルコンパイルオプションの設定で /usr/lib/systemd/systemd を指定しなかった場合、 CCS_trigger=/usr/lib/systemd/systemd という指定をする必要があります。

/boot/grub2/grub.cfg を直接編集するだけでも構いません。しかし、将来カーネルパッケージをアップデートする場合のために、以下のように /etc/default/grub の GRUB_CMDLINE_LINUX 行も編集しておくことを推奨します:

GRUB_CMDLINE_LINUX="vconsole.keymap=jp106 crashkernel=auto  vconsole.font=latarcyrheb-sun16 rhgb quiet CCS_trigger=/usr/lib/systemd/systemd"

3.6. システムの再起動

ここまでで準備は完了です。(お疲れさまでした。)それでは、新しくインストールされたカーネルを使用してみましょう。システムを再起動し、 GRUB の画面(あるいは使用している他のブートローダの画面)で TOMOYO Linux カーネルを選択してください:

grub-screen.png

正常にインストールが完了し、ブートローダの設定が適切に行われていれば、正常にカーネルがロードされ、 TOMOYO Linux が有効になる筈です:

tomoyo-activated.png

問題が発生した場合、カーネルパニックで停止するかもしれません。以下の画面は Ubuntu 11.04 でカーネルのコンパイルおよびインストール後に initramfs の作成を忘れたまま再起動した場合の例です:

missing-initramfs.png

3.7. どのようにすれば TOMOYO Linux を無効化またはアンインストールできますか?

もし、このガイドに従って操作している間またはそれ以降にシステムが起動しなくなってしまった場合、ポリシーの設定が不適切である場合を含めて TOMOYO Linux に原因があるかもしれません。その場合、 ccsecurity=off というパラメータをカーネルに対するコマンドラインオプションに指定することにより、 TOMOYO Linux が無効な状態でカーネルがロードされます。

幸いなことに、 TOMOYO Linux はカーネル以外には既存のプログラムやライブラリなどに対する修正を必要としません。そのため、 TOMOYO Linux のアンインストールはとても簡単です。( rpmapt などの)パッケージマネージャを用いてインストールされたカーネルおよび管理ツールをアンインストールするだけです。ディストリビューションから配布されているカーネルで再起動して、ブートローダから TOMOYO Linux カーネル用のエントリを削除してください。