Chapter 3: どうすれば TOMOYO Linux をインストールできますか?
3.1. カーネルのインストール
3.1.1. 既に TOMOYO Linux 対応カーネルであるかどうか判断する
TOMOYO Linux 2.5 はメインラインカーネルのソースに既に含まれていますが、特定のカーネルコンフィグオプションを有効にしないと利用できません。以下の手順により利用中のカーネルで TOMOYO Linux を利用できるかどうかを判断することができます。
$ grep tomoyo_write_inet_network /proc/kallsyms
ffffffff8115e460 T tomoyo_write_inet_network
/proc/kallsyms の中に tomoyo_write_inet_network を含む行が存在していた場合、既に TOMOYO Linux 対応カーネルですので、 3.2. 管理ツールのインストールへと進んでください。
存在しない場合、 TOMOYO Linux 対応カーネルを作成する必要がありますので、以下の手順に従ってインストールしてください。
ただし、カーネルのコンパイルをせずに TOMOYO Linux の機能の主要部分を使いたい場合には、 AKARI というカーネルモジュールを利用することができます。このモジュールは TOMOYO 2.x よりも豊富な機能を提供していますが、 TOMOYO 1.x の機能の一部は使えません。「カーネルがどのようなコンパイルオプションでコンパイルされたか」と「CPUアーキテクチャ」に依存するという制限がありますが、カーネル 2.6.0 以降の全てのバージョンに対応しており、簡単に利用できます。 機能比較表で AKARI と TOMOYO 1.x と TOMOYO 2.x の違いについて詳細に説明されています。もし、 AKARI を使うのであれば、 AKARI のウェブサイトへと移動してください。
3.1.2. 依存するパッケージのインストール
カーネルと管理ツールをコンパイルするために以下のパッケージが必要になります:
- wget :ソースコードをダウンロードするのに必要です。
- patch :カーネルにパッチを当てるのに必要です。
- gcc :カーネルおよび管理ツールをコンパイルするのに必要です。
- make :カーネルおよび管理ツールをコンパイルするのに必要です。
- ncurses-devel または libncurses-dev :管理ツールをコンパイルするのに必要です。
これらのパッケージは以下のコマンドを実行することでインストールできます:
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.1.3. カーネルソースの入手
カーネルのソースを "linux-3" または "linux-4" または "linux git tree" からダウンロードして展開してください。
カーネル 2.6.33 以降に対応しています。
カーネルのソースを展開して、そのディレクトリに移動してください。
カーネル 2.6.33 ~ 3.4 で TOMOYO 2.5 を利用したい場合、カーネルのバージョンに合ったバックポートパッチを https://tomoyo.sourceforge.net/2.5/patches/ からダウンロードし、以下のコマンドを実行してください(例えばカーネル 2.6.33 を使う場合、 $KERNELVERSION を 2.6.33 に置き換えてください):
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.5.tar.bz2 $ tar -jxf linux-3.5.tar.bz2 --strip 1 linux-3.5/security/tomoyo/ $ wget https://tomoyo.sourceforge.net/2.5/patches/tomoyo-2.5-backport-for-$KERNELVERSION.patch $ patch -p1 < tomoyo-2.5-backport-for-$KERNELVERSION.patch
3.1.4. カーネルコンパイルオプションの設定
$ make -s menuconfig
Security options の画面に移動して、以下のオプションを選択してください。( Default security module として TOMOYO を指定するかどうかは任意です。)
[*] Enable different security models -*- Enable the securityfs filesystem -*- Security hooks for pathname based access control [*] TOMOYO Linux Support (2048) Default maximal count for learning mode (1024) Default maximal count for audit log [ ] Activate without calling userspace policy loader. (/sbin/tomoyo-init) Location of userspace policy loader (/sbin/init) Trigger for calling userspace policy loader Default security module (TOMOYO)
TOMOYO のポリシーは2種類存在します。前者はカーネル内に埋め込まれ、後者はファイルシステム上( /etc/tomoyo/ ディレクトリ内)のファイルとして保存されます。前者のポリシーを変更する場合にはカーネルの再コンパイルが必要になりますが、ポリシーローダ(例: /sbin/tomoyo-init )を使用せずにポリシーをロードできるようになります。後者は TOMOYO のアクセス制御が有効になる(例: /sbin/init が実行される)直前にポリシーローダを実行することで読み込まれます。 Activate without calling userspace policy loader. オプションを選択した場合、前者のポリシーだけをロードした時点で TOMOYO のアクセス制御が有効になります。このオプションは、(組込みシステムなど)ポリシーローダを実行することが困難な場合に便利です。
Location of userspace policy loader オプションは、 Activate without calling userspace policy loader. オプションを選択しない場合のみ指定できます。このオプションにはポリシーローダとして使用するパス名のデフォルトを指定します。この設定は、カーネルのコマンドラインで TOMOYO_loader= オプションで上書きできます。
Trigger for calling userspace policy loader オプションは、 Activate without calling userspace policy loader. オプションを選択しない場合のみ指定できます。このオプションにはアクセス制御を開始するトリガとして利用するパス名のデフォルトを指定します。この設定は、カーネルのコマンドラインで TOMOYO_trigger= オプションで上書きできます。例えば、 init=/usr/lib/systemd/systemd というオプションを指定する場合、 TOMOYO_trigger=/usr/lib/systemd/systemd というオプションも指定することになるでしょう。
3.1.5. カーネルのコンパイルおよびインストール
カーネルコンパイルオプションの変更が終わったら、以下のコマンドを実行してカーネルをコンパイルしてください:
$ make -s $ su # make -s modules_install install
必要であれば initrd/initramfs を作成してください。
3.2. 管理ツールのインストール
3.2.1. バイナリパッケージが提供されているかどうか判断する
tomoyo-tools あるいは tomoyotools というパッケージが提供されており、そのバージョンが 2.5 である場合、それを利用することができます。インストールして 3.3. 設定の初期化へと進んでください。
3.2.2. ツールをソースからコンパイルする
前述した依存するパッケージがインストールされていることを確認してください。以下のコマンドを実行することによりコンパイルおよびインストールできます。
$ wget https://sourceforge.net/projects/tomoyo/files/tomoyo-tools/2.5/tomoyo-tools-2.5.0-20170102.tar.gz $ wget https://sourceforge.net/projects/tomoyo/files/tomoyo-tools/2.5/tomoyo-tools-2.5.0-20170102.tar.gz.asc $ wget https://tomoyo.sourceforge.net/kumaneko-key $ gpg --import kumaneko-key $ gpg tomoyo-tools-2.5.0-20170102.tar.gz.asc $ tar -zxf tomoyo-tools-2.5.0-20170102.tar.gz $ cd tomoyo-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.3. 設定の初期化
管理ツールを実行するときに便利なように、管理ツールのインストールされているディレクトリ( /usr/sbin )を環境変数 PATH に追加したいと思うかもしれません。 bash を使用している場合、以下の行を ~/.bashrc に追加してください:
export PATH=$PATH:/usr/sbin
TOMOYO Linux を使うためには、初期設定の手順を行う必要があります。この手順により、ポリシーを保存するディレクトリが作成されます。全てのポリシーファイルは /etc/tomoyo/ ディレクトリに保存されます。
/usr/lib/tomoyo/init_policy
を実行することで、以下のような出力が表示される筈です:
# /usr/lib/tomoyo/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 configuration file for tomoyo-editpolicy ... OK Creating configuration file for tomoyo-auditd ... OK Creating configuration file for tomoyo-patternize ... OK Creating configuration file for tomoyo-notifyd ... OK
なお、 TOMOYO 2.3 用のポリシーと TOMOYO 2.5 用のポリシーとの間には互換性がありません。既に TOMOYO 2.3 用のポリシーを策定済みであっても、 /etc/tomoyo/ ディレクトリを削除(またはリネーム)してから上記のコマンドを実行する必要があります。さもないと、起動時にカーネルパニックに遭遇します。
3.4. ブートローダの設定
前述の手順でインストールされたカーネルをブートローダ(例えば GRUB など)から選択できるように、ブートローダの設定を行ってください。もし、カーネルコンフィグで CONFIG_DEFAULT_SECURITY_TOMOYO=y という指定が行われていない場合、 security=tomoyo という指定をカーネル起動時のコマンドラインオプションに含めることを忘れないでください。ディストリビューションにより、ブートローダの設定ファイルの場所が異なります。 GRUB バージョン1を利用している場合には /boot/grub/grub.conf または /boot/grub/menu.lst のどちらか、 GRUB バージョン2を利用している場合には /boot/grub/grub.cfg または /boot/grub2/grub.cfg のどちらかであると思います。詳しくはお使いのディストリビューションのドキュメントを参照してください。
TOMOYO Linux では、 TOMOYO_trigger というカーネルのコマンドラインオプションをサポートしています。このオプションは、最初に実行されるプログラムとして /sbin/init
以外を利用しているシステムにおいて便利です。例えば、 RHEL 7 では systemd を利用しているので、 /usr/lib/systemd/systemd
が最初に実行されます。 3.1.4. カーネルコンパイルオプションの設定で /usr/lib/systemd/systemd を指定しなかった場合、 TOMOYO_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 security=tomoyo TOMOYO_trigger=/usr/lib/systemd/systemd"
3.5. システムの再起動
ここまでで準備は完了です。(お疲れさまでした。)それでは、新しくインストールされたカーネルを使用してみましょう。システムを再起動し、 GRUB の画面(あるいは使用している他のブートローダの画面)で TOMOYO Linux カーネルを選択してください:
正常にインストールが完了し、ブートローダの設定が適切に行われていれば、正常にカーネルがロードされ、 TOMOYO Linux が有効になる筈です:
3.6. どのようにすれば TOMOYO Linux を無効化またはアンインストールできますか?
もし、このガイドに従って操作している間またはそれ以降にシステムが起動しなくなってしまった場合、ポリシーの設定が不適切である場合を含めて TOMOYO Linux に原因があるかもしれません。その場合、 security=none というパラメータをカーネルに対するコマンドラインオプションに指定することにより、 TOMOYO Linux が無効な状態でカーネルがロードされます。