未知のバッファ・オーバーフロー攻撃には,ファイアウオールやソフトウエアのセキュリティ・アップデートでは対応できない。無償のSELinuxやサーバー向けLinuxにそのまま使えるMIRACLE HiZARDなど,ここにきて急増したLinux対応のセキュアOSについて最新状況を紹介する。

表1●Linuxで利用できる主なセキュアOS
写真1●Webサーバーが利用するデータ・ファイルをSELinux用のツールで設定しているところ
図1●日本ヒューレット・パッカードのComponent Guard for Linuxの強制アクセス・コントール設定
だ円で表されたコンポーネント内部は自由にアクセスでき,コンポーネント間のアクセスだけに条件を付ける。

 インターネットに接続したマシンには,さまざまな防御を施す必要がある。ファイアウオールをはじめ,ウイルス・チェック・ソフトウエア,侵入検知システム(IDS)*1,ファイル完全性検査*2などがよく利用されている。これらの防御策に加え,日々,ソフトウエア・モジュールのセキュリティ・アップデートを欠かさないことで,外部からの不正なプログラム実行をかなりの程度,予防できる。

 しかしながら,ぜい弱性が明らかになっていないソフトウエア・モジュールに対するバッファ・オーバーフロー攻撃など,未知の攻撃を防ぐには,これらの手段では力不足だ。このような攻撃を受けると,Linuxマシンの管理者権限を奪取される恐れがある。Linuxを含むUNIX系OSでは,root権限を奪取されると簡単にマシン全体を乗っ取られてしまう。

「セキュアOS」に必須の機能は強制アクセス制御

 ソフトウエアのぜい弱性を突く攻撃に対処する一つの対策が,「セキュアOS」と呼ばれるソフトウエアの導入である(表1[拡大表示] )。10数種類のソフトウエアが提供されており,そのうちLinuxで利用できるものに限ってもSecurity-Enhanced Linux(SELinux)など9種類の中から選択できる。

 表1[拡大表示]に取り上げたすべてのソフトウエアに共通する機能が,強制アクセス制御(MAC:Mandatory Access Control)である。強制アクセス制御は,ファイル・アクセス権限を分散するという方針に基づいている。Linuxでは,ユーザー,グループごとにファイルの読み出し,書き込み,実行権限を設定できる。しかし,rootには絶対的な権限が集中しており,root権限を奪われると対処しようがない。

 そこで,強制アクセス制御では,ユーザー(rootを含む)のファイル・アクセス権限,プロセス(root権限で動作するものを含む)のファイル・アクセス権限,プロセスのroot権限実行への昇格などに条件を付ける。

 このようにすれば,たとえroot権限を奪われても,あらかじめ許可を与えたファイル以外にはアクセスできなくなるからだ。

軍用技術を転用した

 セキュアOSの考え方は,1985年に米国防総省が定めたTCSEC(Trusted Computer System Evaluation Criteria)*3に始まる。TCSECは,コンピュータを軍事利用する際のセキュリティ基準が示されている。基本的な考え方は,権限のないユーザーにデータが漏れないにするため,ユーザーの権限ごとにアクセス可能なデータを制限することだ。

 TCSECでは,対応レベルをA,B3,B2,B1,…,Dと分類していた。TCSECに認定されたOSはTrusted OSと呼ばれる。UNIX向けの代表的なTrusted OSには,B1に認定された米Sun MicrosystemsのTrusted Solaris 8や米Hewlett Packard社のTrusted HP-UX,米Argus Systems Group社のPitBull.com Packなどがある。

 Trusted OSは,攻撃に対する強度は高いのだが,動作条件を固定する必要がある。つまり,アプリケーション・プログラムをOSとほぼ一体のものとして開発することになり,新しいアプリケーションの追加組み込みは難しい。

 さらに,情報の流れを極端に制限しており,設定も困難である。システム構築費用が億円単位になることも珍しくなく,政府機関や軍用以外には広がらなかった。

 そこで登場したのがセキュアOSである。米国防総省が定めた検証や監査ログ,ネットワーク処理などを省略した。TCSECではファイア・ウオールや侵入検知システム,ファイル完全性検査についても規定があるが,これも除外している。残ったのは強制アクセス制御だ。複雑な手続きや機能を切り離したため,セキュアOSは比較的安価で,導入もさほど難しくない。Linuxカーネルに対する単なるパッチの形で提供されているものもある*4

設定ツール,管理機能が異なる

 強制アクセス制御の機能を利用するには,ユーザーやプロセスごとに,ファイルのアクセス権限を指定する必要がある。しかも,どのようなユーザーがいるのか,どのようなプロセスを実行するのかなど利用環境に応じて,個別に設定しなければならない。そこで,セキュアOSでは,いかに設定を容易にするかが競われている。

 Linux向けでは,米国家安全保障局(NSA)が公開するSecurity-Enhanced Linux(SELinux)やHuagang Xie氏が開発したLIDSなどが無償で利用できる。例えば,SELinuxでは日立ソフトウェアエンジニアリングが,強制アクセス制御を設定するためのWebminベースのツール「SELinux Policy Editor」を公開しており,GUI画面を通じて設定が可能だ(写真1[拡大表示])。

 単体サーバーで少数のデーモンを動かしてサービスを提供する場合なら十分役立つ。

 規模が大きいシステムでは,例えば,日本ヒューレット・パッカードのComponent Guard for Linux(Component Guard)などが利用されることが多い。ユーザーやプロセスとファイルを一対一で設定するSELinuxよりも設定が抽象化されている。

 Component Guardでは,ユーザー,プロセスとファイルをいくつかのグループ(Component)に分け,グループ内でのアクセスは自由にし,グループ間のアクセス制御を設定することで設定を単純化した(図1[拡大表示])。

 さらに規模が大きなシステムやリアルタイムの管理が必要なシステム向けには,セキュアOSを導入したサーバーとは別に,管理専用のサーバーを用意したセキュアOSがある。Argus Systems Group社のPitBull LXやPitBull Protector Plus,米Computer Associates International社のeTrust Access Control,韓国SecuBrain社とミラクル・リナックスのMIRACLE HiZARDなどがそうだ。

 いずれも管理専用のサーバーを別に用意し,複数のサーバーを同時管理できるようにしている。MIRACLE HiZARDでは,バッファ・オーバフロー攻撃を防ぐだけでなく,リアルタイムに報告する機能も付けた。複数のサーバーを管理する製品は,Linux以外のOSにも対応している場合が多い。

 本来のセキュアOSの機能に他のセキュリティ製品を組み合わせた製品もある。eTrust Access Control,MIRACLE HiZARD,韓国Secuve社が開発し,NECソフトウェア東北が販売するSecuveTOSなどはいずれもネットワーク・アクセスの制限などの付加機能を追加している。

 サーバーの規模やセキュアOSの付加機能とは別の指針もある。Linuxサーバー上で市販のDBMSやミドルウエアを運用している場合,カーネルにパッチを当てる形のソフトウエアでは,DMBSなどの動作対象OSから外れてしまう可能性があることだ。表1にある利用方法が,カーネル・ローダブル・モジュールとなっているソフトウエアなら,そのような問題は起こりにくい。

 保護しなければならないサーバーの種類や,保護しなければならないデータの程度に応じて,適切な製品を選ぶことが重要である。

(畑 陽一郎=hata@nikkeibp.co.jp)