日立ソフトウェアエンジニアリング 中村 雄一
ウイルスのまん延や企業情報の漏えいなど,サーバー・システムへの不正侵入はすでに社会問題になっている。
こうした不正侵入に対処する手段として,セキュアOSが注目を集めている。
特に,オープンソースで開発・提供されている「SELinux」は,主要ディストリビューションで標準採用
されつつあることなどから,今後の急速な普及が見込まれる。
本連載では,SELinuxの機能と,Fedora Core 2でSELinuxを使う方法を順次紹介していく。
インターネットにサーバー・システムを接続して公開すると,各種の攻撃にさらされることは避けられない。
最も危険なのが,不正侵入攻撃だ。他人のホストに勝手に侵入し,ファイルの改ざん・破壊・奪取などの被害を及ぼす攻撃のことである。
特にウイルスやワームによる不正侵入攻撃は,プログラムにより自動的に行われるため,無差別に攻撃対象が選ばれる。そのため,いかなるサーバー・システムも,インターネットにつながっている限り,攻撃対象になる可能性がある。
こうした不正侵入攻撃に根本的に対処できる技術として注目されているのがセキュアOSだ。特にオープンソースのセキュアOS「Security-Enhanced
Linux(通称,SELinux)」は, Red Hat Enterprise LinuxやFedora
Coreのような主要ディストリビューションでの標準対応が発表されたことなどから,今後の急速な普及が見込まれる。
実際に,2004年3月29日(米国時間)に公開されたFedora Core2
test2では,標準仕様のままでSELinuxが利用できるようになっている。こうしたことから,多くのLinuxユーザーにとってSELinuxに関する知識は不可欠なものになると思われる。
この連載では,SELinuxの機能概要と,Fedora Core
2でSELinuxを使う方法を順次紹介していく。第一回は,SELinuxを理解するための基礎となる「セキュアOSの必要性」を解説する。
不正侵入の手口
|
図1●不正侵入の手順 攻撃者は,図のような手口でシステムに侵入し,被害を及ぼす。ワームやウイルスの場合は無差別に攻撃を行うので,調査段階はスキップされることも多い
|
セキュアOSの必要性を理解するためには,不正侵入攻撃がどのようにして実行されるのかをきちんと把握しておく必要がある。不正侵入は
図1[
拡大表示]のように(1)調査,(2)侵入,「(3)不正行為,という手順で行われる。悪意を持った第三者(以下,攻撃者)が不正侵入攻撃を行う場合を例に,それぞれの段階を見ていこう。
(1)調査
攻撃者はまず,侵入対象となるホストの情報を収集する。収集手段として最も有名なのがポート・スキャンである。攻撃者は,ポート・スキャンを実行することにより,侵入対象のホストが提供しているサービスを把握できる。
(2)侵入
続いて攻撃者は,侵入対象となるホストのアクセス権限を取得する。
このための攻撃手段はさまざまだが,最も典型的な手口は,アプリケーションのセキュリティ・ホールを利用するものだ。攻撃者は,セキュリティ・ホールを利用してプロセスを乗っ取り,その権限を得る。例えば,root権限(管理者権限)で動作しているプロセスにセキュリティ・ホールが存在する場合には,攻撃者はroot権限を取得できてしまう。
このほかには,他人のユーザーIDとパスワードを盗んだり,推測したりすることにより,他人になりすましてログインする手口もよく使われる。
また,見逃せないのが,正当なユーザーが悪事を働くケースだ。この場合,悪意を持ったユーザーは,わざわざ侵入しなくとも,正当に与えられた権限の範囲内で攻撃を加えたり,データを改ざん・奪取したりできてしまう。
(3)不正行為
(2)の侵入が完了した時点で攻撃者は,何らかの権限でシステムにアクセスできている。この段階では,(2)で得た権限を利用して目的を果たす。つまり,ファイルの改ざん・破壊や機密情報の盗難などさまざまな悪事を働くわけだ。侵入したホストを踏み台にしてさらに他のホストに攻撃を仕掛けることもある。
Linux OSの弱点
不正侵入されたときに被害が大きくなるのは,LinuxをはじめとするUNIX系OSには以下のようなセキュリティ上の弱点が存在するためである(表1)。
表1●Linux OSのセキュリティ上の弱点 |
(1) root権限の存在 |
(2) 大雑把なパーミッション・チェック |
(3) SUIDプログラムによる権限昇格 |
(4)
DAC(任意アクセス制御) | |
(1)root権限の存在
Linuxでは,root権限(管理者権限)の取得者は,システムに対するあらゆる操作を行える。そのため,ひとたびroot権限を奪われてしまったら,攻撃者のやりたい放題になってしまう。
(2)大雑把なパーミッション・チェック
比較的新しいLinuxディストリビューションでは,root権限奪取の危険を減らすために,デーモン・プロセスの多くが一般ユーザー権限で動作するようになっている。そのため,こうしたデーモン・プロセスを乗っ取られた場合でも,一般ユーザー権限しか奪取されない。しかしながら,Linuxのパーミッション・チェックはかなり大雑把であり,一般ユーザー権限でもシステムに深刻な被害を与えることができてしまう。
Linuxでは,ファイルの「所有者」「所有グループ」「その他すべてのユーザー」に対して「読み・書き・実行」というパーミッションを設定できる。ここで特に問題になるのが「その他すべてのユーザー」である。
Linuxでは,「その他すべてのユーザー」に対して「読み・書き・実行」可能なファイルが存在する。攻撃者は,一般ユーザー権限を得ると,そのようなファイルに不正プログラムを仕込んだりできる。例えば,その他のホストに対して攻撃を仕掛ける不正プログラムを仕込まれてしまった場合には,侵入されたホストだけではなく,第三者や他組織のホストにまで被害が拡大してしまう。
(3)SUIDプログラムによる権限昇格
Linuxには,一時的にroot権限で動作するプログラム(「SUIDプログラム」と呼ばれる)がある。このSUIDプログラムのセキュリティ・ホールを利用すれば,攻撃者は一般ユーザー権限からroot権限に昇格できてしまう。
(4)DAC(任意アクセス制御)
「DAC(任意アクセス制御)」とは,ファイルやディレクトリといったリソースの所有者が,そのパーミッションを設定できるアクセス制御方式である。リソースのアクセス制御,言い換えればセキュリティは所有者任せとなるため,システム全体のセキュリティを統合して管理しにくい。
従来のセキュリティ対策の限界
これらのセキュリティ上の弱点を突かれないようにするために,現時点では「ファイアウオールの設置」「IDS(侵入検知システム)の設置」「パッチの適用」などの対策が施される場合が多い。ただし,これらの対策には,次のような限界がある。
・ファイアウオールの限界
ファイアウオールは,当然ながら,不要な通信だけしかブロックしない。サイトが提供しているサービスに必要な通信は素通しする。そのため,ファイアウオールを通過できる通信を利用した攻撃に対しては無力である。例えば,Webサーバー・システムにおいては,HTTPを使った攻撃はファイアウオールでは防げない。
・IDSの限界
IDSは,ネットワークの通信内容を監視し,攻撃と思われる通信を検知したら警告を発するソフトウエアやシステムである。最近導入事例が増えてきた。ただし,IDSでは基本的に,あらかじめ登録しておいた攻撃パターンに合致した通信内容だけしか検知できず,未知の攻撃は防げない。
・パッチ適用の限界
セキュリティ・ホールが見つかったアプリケーションに対しては,パッチを適用して対処できる。ただし,パッチが開発されていないセキュリティ・ホールや,未知のセキュリティ・ホールに対しては対処できない。
このように従来の対策には限界がある。そして,これらの限界とLinuxの弱点により,ひとたび不正侵入されてしまったときには,root権限を奪った攻撃者にあらゆる操作を許してしまう確率が少なくない。こうしたことから,OSそのものを強化することにより不正侵入などへの耐性を根本的に高められるセキュアOSに注目が集まっているのである。
アクセス制御を大幅に強化
セキュアOSとは,その言葉通り,「セキュリティに関する機能を強化したOS」を指す。
強化されたのは主にアクセス制御機能である。セキュアOSでは,Linuxのパーミッション・チェックの仕組みを大幅に強化するなどして,ユーザーやプロセスごとに必要最小限の権限のみを与えられるようになっている。この権限の細分化により,ある権限が乗っ取られた場合のリスクを大幅に低くできる。
同時に,そもそもroot権限が存在しない,SUIDプログラムによる権限昇格が行えない,任意アクセス制御が行えないというように,パーミッション・チェック以外の「Linux OSの弱点」も解消されている。
より具体的なセキュアOSの機能については次回(5月17日公開予定),SELinuxを例にして紹介する予定である。
■著者紹介
中村 雄一(なかむら ゆういち)氏
日立ソフトウェアエンジニアリング技術開発本部研究部所属。SELinux関連の研究・開発を行っている。SELinuxの普及活動も行う。講演・執筆に加えて,コミュニティにも積極的に参加。パッチ・プログラムやインストール・パッケージなども開発している。著書に「SELinux徹底ガイド」(日経BP社)がある。書籍や記事のサポート・ページも開設している。日本オープンソース推進機構(JOSAO)のSELinux専門委員会委員長を務める。