メインライン化したTOMOYO Linux
TOMOYO Linuxの紹介とおさらい
TOMOYO Linux(以下、TOMOYO)はNTTデータが開発、公開している、パス名ベースのセキュアOSのことです。本連載では、2009年6月にメインライン化を果たしたTOMOYOの各機能を紹介しながら、Ubuntuなど各ディストリビューションのTOMOYO開発者、また組み込み開発の技術者から、利用者視点でのTOMOYO活用法について解説していきます。
UbuntuやRed Hat Enterprise Linuxのようなディストリビューションとよく勘違いされますが、TOMOYOはディストリビューションではなく、Linuxのセキュリティを強化するためものです。詳しくは、2007年の連載「初体験 TOMOYO Linux!」の「第1回:国産セキュアOSの歩み(http://www.thinkit.co.jp/free/article/0706/17/1/)」をご覧ください。
SELinuxとTOMOYOの関係
セキュアOSというと米国NSAが中心になって開発したSELinux(Security-Enhanced Linux)が有名です。TOMOYOもSELinuxと同様にセキュアOSに分類されますが、基本となる考え方が異なるので、それについて説明します。
Linuxでは、アプリケーションやデータなどの情報は、ファイルという形で保存されています。SELinuxはこの情報とユーザーに対して「ラベル」という属性を付与して、そのラベルごとにアクセス権限を設定します。これにより、権限のないユーザーやアプリケーションから情報を的確に分離して保護することができます。
一方、TOMOYOはラベルを使わず、アプリケーションの動作をもとにして、アクセス権を設定します。ラベルの代わりに使われるのが、アプリケーションやデータファイルの「パス名」です。またアプリケーションのコマンドライン引数や環境変数を組み合わせて制御することが可能です。要するにパス名を使ってアプリケーションの動きを制御しているということです。
そのためTOMOYOはカーネルに実装されたアプリケーションファイアウォールのように機能します。アクセス権の設定もSELinuxに比べて直感的に行うことが可能です。
TOMOYOの機能をイラストにまとめたものが図1です。ここでは車がアプリケーション、ペンギンがTOMOYOを示します。通常のLinuxでは車(アプリケーション)は自由に移動することができますが、ペンギン(TOMOYO)が車の動きを常に記録しているため、ここでの記録結果をもとに、道路に柵をして車(アプリケーション)の動きを制限しています。
TOMOYOの機能を簡単にご紹介しましたが、それでも「セキュアOSの設定は難しいんでしょう?」と感じる人もいるかもしれません。実際にアプリケーションに対する設定を一から行うのは非常に大変です。SELinuxにおけるアクセス権の設定は、セキュリティの有識者(SELinuxの開発者)やアプリケーションの開発者たちが提供したものを使うことが推奨されています。
TOMOYOの場合はその反対で、「管理者が自分で設定できるようにする」ことを目的としています。そして、それを容易にするために「学習機能」というものがあり、アプリケーションを実行するとその動作を記録します。さらに記録した結果からアクセス権の設定を生成してくれます。学習機能を使うことで実際にシステムの振る舞いを理解しながら、必要なものに絞ってアクセス権の設定をすることが可能なのです。
TOMOYOの特徴を以下にまとめておきます。
・ファイル名によるアクセス権限設定が可能
・アクセス学習とアクセス権限の自動生成
・アプリケーション単位での動作制御
SELinuxとTOMOYOはどちらもセキュアOSだから同じことができると思われることがありますが、実はそれぞれ実現していることが異なります。そのため、SELinuxとTOMOYOを組み合わせることで、お互いに足らない部分を補い合うことが可能であり、TOMOYOプロジェクトではそれを目指しています。そのためにはまずTOMOYOやパス名に基づくアプローチを理解してもらうことが必要です。