Using OpenPTS with Fedora15
Fedora15ではOpenPTSがパッケージでインストールできます。PTSとはPlatform Trust Serviceの略で、TPMを使ったリモートアテステーションをサポートするコンポーネントです。OpenPTSのいまのVersionは0.2.4で、TPM搭載PC上でリモートアテステーションの簡単なデモ(スタンドアローンモード)が出来ます。ただ、設定が少し面倒なので、下記にスタンドアローンモードの設定方法を紹介しておきます。PTSは検証対象のPCで動くコレクターと、検証側のPCで動くベリファイヤーの2つがあります。この例では、同じマシンで動かしてみます。
SELinuxをPermissiveモードにしておく
まだ、MACポリシー問題がいくつかあるので、SELinuxをPermissiveモードにしておきます。/etc/selinux/config を修正して、再起動しておきます。
SELINUX=permissive
OpenPTSをパッケージで導入する
# yum install openpts
TSSの設定変更
OpenPTSはTSS経由でTPMやイベントログにアクセスします。そのためTSS(trousers)の設定が必要です。ひとまずBIOSのイベントログにアクセスしてPCRの0から7をOpenPTSでリモートアテステーション(遠隔検証)するために /etc/tcsd.conf に下記の2行を追加します。
firmware_log_file = /sys/kernel/security/tpm0/binary_bios_measurements firmware_pcrs = 0,1,2,3,4,5,6,7
設定を有効にするためにTSSデーモンを再起動します。
# service tcsd restart
イベントログにアクセスできるか確認します。OpenPTS付属の iml2txt をつかいます。
$ iml2text Idx PCR Type Digest EventData ----------------------------------------------------------------------- 0 0 0x00000008 298df125b260ef64201bdf0815c003873eedd50e [BIOS:EV_S_CRTM_VERSION] 1 0 0x80000008 dc55cd66314dbf857a690d0f83a060217b437253 [BIOS:EV_EFI_PLATFORM_FIRMWARE_BLOB,base=0xffc80000,len=0x180000] 2 0 0x80000008 70f1d130521acdc1cfbd473c29dc057b9181c41c [BIOS:EV_EFI_PLATFORM_FIRMWARE_BLOB,base=0xffe00000,len=0x100000] 3 0 0x00000004 9069ca78e7450a285173431b3e52c5c25299e473 [BIOS:EV_SEPARATOR, 00000000]
上記のように、BIOSのイベントログ(起動時からのBIOSの記録)がみえれば、TSSの設定はうまくいっています。
TPMのオーナーシップを取得
TPMにはオーナーをSRKと呼ばれるRSA鍵にパスワードが設定できますが、ここではーy -z オプションを使い標準値(ゼロを20バイト)を設定しておきます。
$ tpm_takeownership -y -z
PTSコレクターを初期化
Rootで、PTSコレクターを初期化します。
# ptsc -i Sign key location : SYSTEM Generate uuid : 96af7a74-aef8-11e0-bf76-e41f13c04e38 Generate UUID (for RM) : 96d4c536-aef8-11e0-bf76-e41f13c04e38 level 0 Reference Manifest : /var/lib/openpts//96d4c536-aef8-11e0-bf76-e41f13c04e38/rm0.xml ptsc is successfully initialized!
このPCのBIOSを検証するためのマニフェストが生成されます。次に、正しく検証できるか、セルフテストしてみます。
# ptsc -t selftest - OK
これで、PTSコレクターが正しく構成されました。
PTSベリファイヤーを初期化
スタンドアローンモードを使うためには、
PTSコレクターの動くマシン上にでグループptscに所属するアカウントが必要です。
usermod -G ptsc yourname
PTSコレクターとPTSベリファイヤーはSSHを使いデータのやりとりを行います。そのため、SSHの公開鍵認証を設定しておきます。
$ ssh-keygen -t rsa $ ssh-copy-id yourname@localhost
次に、PTSのエンロールメントを行います。はじめてopenptsコマンドを使う場合、HOME/.openpts の作成を尋ねるので"Y"で作成を選んでください。
$ openpts -i localhost Target : localhost Collector UUID : 96af7a74-aef8-11e0-bf76-e41f13c04e38 Manifest UUID : 96d4c536-aef8-11e0-bf76-e41f13c04e38 manifest[0] : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38//96d4c536-aef8-11e0-bf76-e41f13c04e38/rm0.xml configuration : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/target.conf validation policy : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/policy.conf
PTSコレクターが作成したマニフェストがベリファイヤーにコピーされ、検証でつかうPOLICYも生成されます。
PTSベリファイヤーを使ってリモートアテステーション
$ openpts localhost Target : localhost Collector UUID : 96af7a74-aef8-11e0-bf76-e41f13c04e38 (date: 2011-07-15-15:39:12) Manifest UUID : 96d4c536-aef8-11e0-bf76-e41f13c04e38 (date: 2011-07-15-15:39:12) username(ssh) : default port(ssh) : default policy file : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/policy.conf property file : /home/yourname/.openpts/96af7a74-aef8-11e0-bf76-e41f13c04e38/vr.properties integrity : valid
これで無事正しいBIOSが起動していることが確認できました。openptsコマンドは複数のコレクターを管理できるので、例えば、クラウドにある大量の仮想マシンの状況を管理が可能です。
問題解決
この例で最後まですんなり設定できた人は、実はかなりラッキーな方です。うまくいかない場合は、openpts-jpusers@lists.sourceforge.jp までご連絡ください。
その他、OpenPTSはBIOSの検証モデルを使ってマニフェストを生成します。
IBM、Lenovo、Panasonic 等のPCはモデルを検証済みですが、それ以外のPCや新しいマシンでは検証モデルが対応していない場合があります。
IBMのSystemXの方は /etc/ptsc.conf の設定でTPMのDA Lockのリセットを有効にしてください
tpm.resetdalock=on
これはTPMの問題なので、Winbond(いはま社名が変わりNuvoton)のTPMの場合はこの設定が必要かもしれません。TPMのベンダー及びバーションは下記のようにして確認できます。
$ tpm_version TPM 1.2 Version Info: Chip Version: 1.2.2.60 Spec Level: 2 Errata Revision: 1 TPM Vendor ID: WEC TPM Version: 01010000 Manufacturer Info: 57454300
BIOSがUEFIベースで新しくなったため、コレクターの初期が失敗します。 そろそろリリースのOpenPTS v0.2.5で対応予定です。