# Two-Person Control Administration: Preventing Administration Faults through Duplication > [!abstract] 概要(abstract の日本語訳) > 現代のコンピューティングシステムは複雑で管理が難しく、システム管理障害を起こしやすい。障害は複雑なシステムを管理する過程での単純な間違いによっても発生し、システムを安全でない状態、あるいは利用不能な状態にしうる。障害はシステム管理者の悪意ある行為によっても発生しうる。既存のシステムは、バックドアを仕込んだり自分の行為を隠したりするシステム管理者に対してほとんど保護を提供しない。こうした種類のシステム管理障害を防ぐため、我々は二人制御モデルをシステム管理に適用するシステム ISE-T(I See Everything Twice)を構築した。ISE-T は各管理タスクを2名の別個のシステム管理者に実行させることを要求する。ISE-T はその後、2名の管理者の行為の結果を同値性について比較し、両者の結果が同値である場合に限り、その行為を実システムへ適用する。これにより、管理タスクがシステムに障害を持ち込まない形で完了したという、より高い保証水準が得られる。二人制御モデルはコストが高いが、より高い保証水準を要求する多くの金融・政府・軍事系システムには自然に適合する。我々は、仮想マシンとユニオンファイルシステムを用いて Linux 向けの ISE-T プロトタイプを実装した。このシステムを用いて、別々のシステム管理者が行った変更を捕捉し、それらの同値性を比較する能力を検証する実ユーザ実験を行った。結果は、ISE-T が管理者が異なるやり方でタスクを実行した場合でも、多くの一般的な管理タスクにおいて同値性を判定するのに有効であることを示す。 ## 論文情報 - タイトル: Two-Person Control Administration: Preventing Administration Faults through Duplication - 著者: Shaya Potter, Steven M. Bellovin, Jason Nieh(Department of Computer Science, Columbia University) - 媒体: Proceedings of the 23rd Large Installation System Administration Conference(LISA '09), USENIX Association, 2009-11-01 - URL: https://www.usenix.org/conference/lisa-09/two-person-control-administration-preventing-administation-faults-through - PDF: http://usenix.org/events/lisa09/tech/full_papers/potter.pdf - ソフトウェア: ISE-T(I See Everything Twice)。DejaView・UnionFS を基盤とした Linux プロトタイプ。 ## 概要 Columbia University の著者らが、金融・政府・軍事などの高信頼性システムで既に運用されている「二人制御(two-person control)」の考え方(核兵器発射に2人の承認が必要、金庫の鍵が2本必要等)をシステム管理という領域へ移植した論文である。悪意あるシステム管理者(内部脅威)や管理者の単純な過失によるシステム障害を防ぐため、2名の管理者に同じ管理タスクを隔離環境で実行させ、その結果生じたファイルシステム変更を比較して同値であるときのみ実システムへ反映する ISE-T を設計・実装し、9名の被験者による11タスクのユーザ実験でその有効性を検証している。 ## 問題設定 - **前提**: 複雑な現代システムは、システム管理者に強力な単独の権限を与える一方、その権限の悪用(バックドア設置、監査ログの改竄・回避)や単純な過失によるシステム障害を防ぐ仕組みをほとんど持たない。実例として、FBIの防諜システムの管理者であったスパイ Robert Hanssen が、自身への捜査状況を把握するために管理者権限を悪用した事例が挙げられている。 - **既存対策の限界**: 侵入検知やロールの分離は、その分離・検知機構自体を書き換えられる権限を持つ「不正なシステム管理者」に対しては無力である(Karger and Schell, 1977 が指摘する攻撃ベクトル)。 - **目標**: (1) 単独の管理者による悪意ある変更(バックドア等)を検知・阻止すること、(2) 単純な過失によるシステム破壊を防ぐこと、(3) これらを大きなソフトウェア変更なしに既存の Linux システムへ適用可能にすること。 ## 提案手法 ISE-T は「二人制御」の意味論を実現するために3つのアーキテクチャ要素を持つ。 1. **隔離コンテナ(Isolation Containers)**: 各管理者に、ハードウェア仮想マシン(VMware 等)または OS レベルコンテナ(Solaris Zones, Linux VServer 等)による独立した administration clone を割り当てる。OS コンテナは生成が高速だが、単一カーネルを共有するためカーネル変更のテストはできない。ハードウェア VM は独自カーネルを持てるが生成が遅い。ISE-T は用途に応じて両方を使い分ける。 2. **レイヤー化ファイルシステム(ISE-T's File System)**: UnionFS によるユニオン(合併)ファイルシステムを用いて、共有の read-only 層(管理対象システムのベースファイルシステム)の上に、管理者ごとの独立した copy-on-write(COW)層を重ねる。ファイルの変更・削除はすべて COW 層にのみ記録されるため(白抜き=white-out によるファイル削除の表現を含む)、各管理者の変更を他方や実システムから完全に隔離しつつ、COW 層だけを見れば変更内容を効率的に列挙できる。 ![[_attachments/potter/fig02-unioning-namespaces.png]] (Figure 2: Unioning Namespaces) ![[_attachments/potter/fig03-cow-functionality.png]] (Figure 3: COW functionality) ![[_attachments/potter/fig04-white-out-deletion.png]] (Figure 4: White-Out Support for Deletion) 3. **ISE-T System Service**: 管理者向け環境の生成・破棄のライフサイクル管理、2つの環境の同値性テスト、結果に応じた実システムへのコミットまたは差分通知を担う。管理者は新しい `ise-t` コマンド(`su` に類似)で administration clone に入り、`ise-t new`・`ise-t enter`・`ise-t done`・`ise-t diff` の4コマンドで作業する。 | Command | Description | |---|---| | `ise-t new` | Create an administration environment | | `ise-t enter` | Enter administration environment | | `ise-t done` | Ready for equivalence testing | | `ise-t diff` | Results of a failed equivalence test | (Table 1: ISE-T Commands) ISE-T の利用モデル全体は次の図の通りである。2つの administration clone が ISE-T Service を介してのみ base system へ変更を反映できる。 ![[_attachments/potter/fig01-ise-t-usage-model.png]] (Figure 1: ISE-T Usage Model) **同値性判定アルゴリズム**: ISE-T は各管理者の COW 層だけを比較する。(1) 両方の変更集合に存在しないディレクトリエントリは差異、(2) UID/GID/permission が一致しないエントリは差異、(3) ファイル種別(通常ファイル・シンボリックリンク・ディレクトリ・デバイスノード・named pipe)が一致しないエントリは差異、として扱う。同じ種別のエントリはさらに型別の比較(デバイスノードは型一致、シンボリックリンクはパス完全一致、通常ファイルはサイズと内容の完全一致)を行う。個人用ファイル(シェル履歴等)は比較対象から除外(prune)しつつ、監査目的でアーカイブされる。設定管理システム(lcfg 等)と統合した場合は、個々のマシンではなくポリシーサーバ側を ISE-T が管理し、設定言語のセマンティクスで比較できるためより緩やかな同値性判定が可能になる、とも論じている。 **auditable ISE-T(監査モード)**: 二人制御モデルは高コストで、単独の管理者しかいない緊急時には迅速な対応を妨げる。そこで著者らは、変更を実システムへ即座にコミットしつつ同じ仕組みで監査ログへも記録する低コストな監査版を提案する。これは同値性による事前ブロックの保証は提供しないが、事後監査(issue-tracking システムとの連携を想定)による検知の可能性を管理者に意識させることで抑止効果を狙う。二人制御と監査モードは併用も可能で、単独対応が必要な緊急時にのみ監査モードへフォールバックし、後で第2の管理者が事後レビューする運用を想定している。 ## 新規性 - 二人制御という古くから金融・軍事・航空で使われてきた仕組みを、システム管理という領域に初めて適用したと著者らは主張する(関連研究で挙げられる Compartmented Mode Workstation や Clark-Wilson モデルは「役割を分割して別々の作業をさせる」職務分掌であり、「同じ作業を2人に行わせて結果を比較する」古典的な二人制御とは異なる、と明確に区別している)。 - 単なる侵入検知・ロール分離ではなく、変更の「結果」をファイルシステムレベルで比較するというアプローチにより、分離・検知機構自体を書き換えられる不正な管理者への対抗策になる。 - 仮想化とユニオンファイルシステムの組み合わせにより、既存カーネル・既存アプリケーションへのソースコード変更なしにこの仕組みを実現している。 ## 実験設定 - 9名の、システム管理経験の程度が様々な経験豊富なコンピュータユーザを被験者として採用(全員が自分のマシンの管理経験を持つ)。 - 各被験者に Debian GNU/Linux 3.0 を動かす VMware 仮想マシンを割り当て、ISE-T の administration 環境を構成。 - 実験基盤: IBM HS20 eServer blade(デュアル 3.06GHz Intel Xeon CPU、2.5GB RAM)上で VMware Server 1.0 を実行。 - 被験者に表2の11種類の管理タスクを実行させ、各タスクは独立した ISE-T コンテナで(他タスクの結果に依存しないよう)個別に実施。 - ISE-T プロトタイプは UnionFS を用いてレイヤー化ファイルシステムを実現。`/root`(個人ファイル)・`/var`(ツール依存の一時生成物)・`/tmp`・UnionFS 由来の不要な white-out ファイルを比較対象からプルーニングした。 | Category | Description | Result | |---|---|---| | Software Installation | Upgrade entire system via package manager | Equivalent | | Software Installation | Install official Rdesktop package | Equivalent | | Software Installation | Compile and install Rdesktop from source | Equivalent | | System Services | Install SSH Daemon from package | Not Equivalent (Not Desired) | | System Services | Remove PPP package using package manager | Equivalent | | Configuration Changes | Edit machine's persistent hostname | Equivalent | | Configuration Changes | Edit the inetd.conf to enable a service | Not Equivalent (Not Desired) | | Configuration Changes | Add a daily run cron job | Equivalent | | Configuration Changes | Remove an hour run cron job | Equivalent | | Configuration Changes | Change the time of a cron job | Equivalent | | Exploit | Create a backdoor setuid root shell anywhere | Not Equivalent (Desired) | (Table 2: Administration Tasks) ## 実験結果 - **ソフトウェアインストール**: パッケージ経由(`apt-get`/`aptitude`/`dpkg` 等、手段は被験者に委ねた)でも、rdesktop をソースからビルドしてインストールしても、同じ一般的な手順を踏めば結果は同値と判定された。差異は `/root` 等プルーニング対象のディレクトリに限られた。ソースビルドでは、同一ソース・同一ツールチェーンであればコンパイル結果のバイナリも同一になることを確認しつつ、Linux カーネルのようにビルド時にソースへ日時等を埋め込むソフトウェアでは同値性判定がより困難になるだろうと考察している。 - **システムサービス**: SSH デーモンのインストールでは、ホスト鍵がカーネルのランダムエントロピープールに基づいて生成されるため各環境で必ず異なり、意図的に Not Equivalent と判定された(将来的には鍵生成をコミット後に遅延させる設計で解消可能と議論)。PPP パッケージの削除では、`remove` と `purge` という削除方法の違いが実際にファイルシステムレベルの差異として現れ、ISE-T はこれを正しく検出した。 - **設定変更**: ホスト名変更のような単純な編集は全被験者が同一の方法で行い同値と判定された一方、`/etc/inetd.conf` の編集のように自由度の高いファイルでは、TCPのみ有効化する者とTCP/UDP両方を有効化する者、コメントを追加する者としない者が現れ、単純な diff では区別できない「意味的には同値だが文字レベルでは異なる」変更と「意味的にも異なる」変更が混在する結果になった。cron ジョブの追加・削除・時刻変更ではほぼ全員が同一の標準的な方法(`/etc/cron.daily` 等)を採ったが、1名だけ `/etc/crontab` を直接編集する非標準の方法を選び、ISE-T はこの差異を検出した。 - **エクスプロイト(バックドア設置)**: 被験者にバックドアとなる setuid root シェルの作成方法・設置場所を指定せずに作成させたところ、全員が異なる場所・異なる方法で作成したため、ISE-T は全ての環境間で Not Equivalent と判定し、単独犯によるこの種の悪意ある変更が二人制御の下では成立しないことを示した。 ## 考察 - ISE-T の同値性判定は現状ファイルシステムのバイト/メタデータレベルの比較にとどまり、設定ファイルの意味論(空白の違いなど、内容としては同値な変更)までは解釈できない。設定管理システムの言語を ISE-T に理解させることで、より緩やかで意味論的な同値性判定が可能になると議論されているが、プロトタイプ自体はこれを実装していない。 - 暗号鍵やデータベースのように、同じ操作を行っても本質的に異なる出力が生じるファイルへの対処は未解決の弱点として明記されている。 - 監査モード(auditable ISE-T)は二人制御より保証水準は低いが、単独対応が必要な場面での実用的な折衷案として提示されており、二人制御と監査を組み合わせた段階的な運用を想定している。 - ISE-T はジュニア管理者の教育(シニア管理者と並行作業させて差分から学ばせる、あるいは承認制にする)への応用可能性にも触れているが、実験による検証は行われていない。 ## 強み / 弱点・課題 - **Strengths**: 核兵器・金融分野で確立された二人制御の考え方を、ソースコード変更なしに既存 Linux システムへ実装可能な形でシステム管理へ移植した点。仮想化とユニオンファイルシステムの組み合わせにより、変更の隔離と比較を効率的に実現するアーキテクチャ設計。実ユーザによる11タスクの実験で、意図した通り「通常のタスクは同値、悪意ある変更や非決定的な変更は非同値」という結果を得ている点。 - **Weaknesses/Limitations**: 同値性判定は低レベルのバイト/メタデータ比較にとどまり、設定ファイルの意味論的な同値性を扱えない。暗号鍵やデータベースなど本質的に非決定的な成果物への対処が未解決。二人制御モデル自体が要求するコスト(常時2名の管理者の関与)は多くの商用サイトでは非現実的であり、著者ら自身もこれを認めている。実験の被験者数は9名と少なく、タスクも比較的定型的なものに限られる。 ## 関連 - 実体: [[Shaya Potter]] / [[Steven M. Bellovin]] / [[Jason Nieh]] / [[wiki/entities/Columbia University|Columbia University]] - 概念: [[二人制御]](本論文が提案する ISE-T の中核モデル) / [[内部者リスク]](悪意あるシステム管理者という内部脅威への対策として ISE-T を位置づけ)