HOME情報セキュリティ資料・報告書・出版物調査・研究報告書情報セキュリティ技術動向調査(2009 年上期)

本文を印刷する

情報セキュリティ

情報セキュリティ技術動向調査(2009 年上期)

2 Linuxカーネルにおけるセキュリティ強化機能

面 和毅

 Linuxカーネル2.6.30から、新たに2つのOSセキュリティ強化機能が加わった。TOMOYO LinuxとLinux-IMAである。

1 TOMOYO Linux

  TOMOYO LinuxはSELinuxと同じく、linuxに強制アクセス制御機能を加えるためのセキュリティ強化モジュールである。
  TOMOYO LinuxはNTTデータが開発し、OSSとして公開したもので、2年ほど前からLinuxカーネル本体に取り込まれるように取り組んできていたが、カーネル開発者の検査を通過し、2.6.30から取り込まれた。

 

1.1 TOMOYO Linuxの特徴

    TOMOYO Linuxの特徴は、
      (1) パス名ベースのアクセス制御
      (2) ポリシの自動学習
    にある。

 

(1) パス名ベースのアクセス制御
  通常、OSのセキュリティを考える上では、アクセス行為を行うもの(Subject)が、アクセス対象(Object)に対して、どのようなアクセスができるかを考慮して、アクセス制御のリスト(ポリシ)を作成していく。その際に、Subject・Objectを構成する要素を、ユニークなものとして識別する必要がある。
  伝統的な強制アクセス制御の概念や、それを実装したSELinuxやSMACKでは、この識別のために「ラベル」をすべての要素に対して付与し、その「ラベル」を比較することで、アクセス制御を行っている。そのため、「ラベルベースのアクセス制御」と呼ばれることもある。
  例えばSELinuxの場合では、/etc/shadowファイルには、shadow_tというラベルを添付し、shadow_tラベルに対してのアクセス制御を行う。そのため、「ラベルベースのアクセス制御」と呼ばれることもある。
  一方、パス名ベースのアクセス制御は、TOMOYO LinuxやAppArmorなどで採用されており、Objectのフルパス名を、要素を識別するために使用する。そのため、「パス名ベースのアクセス制御」と呼ばれている。
  例えば上記の例では、/etc/shadowファイルという要素を特定するための識別子は、フルパスの「/etc/shadow」である(実際の処理は、カーネル内部で行っているため、/や.は含まれないが)」。このため、アクセス制御ルールを記載する際には、ダイレクトに「/etc/shadowファイル」に対して、どのようなアクセスができるかを記載していく事ができる。これにより、アクセス制御ルールの可読性が高まっている。

 

(2) ポリシの自動学習機能
  TOMOYO Linuxのもうひとつの特徴として、ポリシの自動学習機能がある。通常、強制アクセス制御を実装したOS上では、アクセス制御ポリシを作成するには、すべてのSubject/Objectに対してすべての必要なアクセス行為を記載しなくてはならないため、膨大な手間と時間がかかる。この膨大な手間と時間が、強制アクセス制御を実装したSELinuxなどを実運用するための障害となっている。これに対して、TOMOYO Linuxではポリシの自動作成機能が用意されている。
  TOMOYO Linuxを「学習モード」に設定して起動すると、OSが起動してSubjectがObjectに対してどのようなアクセスを行ったのかをすべて記録し、自動的に、どのSubjectがどのObjectに対してどういったアクセス権が必要なのかを判断してポリシを作成してくれるというものである。これにより、アクセス制御ポリシを作成する際には、「学習モード」で一通りの通常作業(システムの起動・停止や、サービスの立ち上げ、アプリケーションの使用など)を行って、それにより自動生成されたポリシを適宜編集することで、必要なポリシが簡単に作成できるというものである。
  この機能により、TOMOYO Linuxの導入は、SELinuxなどに比べて敷居が下がることが予想される。

 

2 Linux Integrity Measurement Architecture (IMA)

  Linux Integrity Measurement Architectureは、TCG(Trusted Computing Group)が仕様を定義したトラステッドコンピューティング技術に基づき、TPM(Trusted Platform Module)とカーネル上に組み込まれたモジュールを利用して、実行ファイルを測定して記録し、実行ファイルが不正に改変されていないかをチェックするものである。つまり、前述のTOMOYO LinuxやSELinuxが「改変されないように」するためのセキュリティモジュールであるのに対し、Linux IMAは「改変されたていないか」を発見するためのモジュールである。

 

(1)TPM
  TPMは、最近のマシンでは標準で機器に組み込まれているICチップであり、データの暗号化に使用されたり、システムごとにユニークな電子証明書が保管されている。さらにTPMは、ソフトウェアのIntegrity(完全性)を記録するために、PCR(Platform Configuration Registers)と呼ばれる領域が16個もしくは24個用意されている。

 

(2)Trusted BootとTrust Chain
  TPMにソフトウェアの完全性情報を記録する方法はTrusted Bootと呼ばれる。最初に起動するコードはCore Root of Trust Measurement(CRTM)と呼ばれ、物理的に改変が不可能になっている。
  このCRTMは次に起動するBIOSと自分自身のコードをチェックし値をTPMに記録する。次にBIOSはその次に起動するBoot Loaderのコードと自分自身をチェックし、値をTPMに記録する。このように次々に、ハードウェアからくる信頼性を鎖のようにつなげていく(Trust Chain)ことができる。

 

図1

 

  この機能をLinuxに使用するためには、BIOSがTPMに対応している必要はあるが、さらにBoot LoaderとLinux Kernelを対応させる必要がある。
  Grubの場合には、適宜パッチを当てたGrub-IMA、Linuxの場合には2.6.30からパッチがカーネル本体に取り込まれた、Linux-IMAである。

 

(3)Linux-IMA
  Grub-IMAとLinux-IMAを使用すると、/sys/kernel/security以下で、それぞれ起動する際にアクセスしたファイルなどのDigestを確認することができる。

 

図2

 

図3

 

  このDigestを比較して、ファイルが改変されていないかどうかを見ることができる。
  Linux-IMAは、現在のところ未だセットアップが難しいが、今後この技術がこなれてくることにより、LinuxでもTPMを利用したシステム整合性のチェックが出きるようになる。

以上

 

目次へ 次へ