第1章 OpenSSH を導入するにあたって

Last Modified: Wed Mar 2 14:09:35 UTC 2011

1.1. OpenSSH とは

OpenSSH はネットワーク経由の通信を暗号化し、情報の漏出をふせぐ 「SSH」と呼ばれるツールの一種です。 多くのコンピュータがネットワークに接続された現在では、 ネットワークを経由して離れた場所にあるコンピュータを操作することも 特別なことではありません。しかし、 ネットワーク経由でコンピュータを操作するには危険がともないます。 そのコンピュータにログインするパスワードが悪意ある第三者に漏れてしまうと、 それによってコンピュータが乗っとられてしまう恐れがあるからです (図 control-computers-remotely)。

図 control-computers-remotely. ネットワークを使ってコンピュータを操作する危険性

OpenSSH はおもに UNIX サーバにネットワーク経由でログインするために使われます。 Linux や FreeBSD、Solaris などのいわゆる 「UNIX系 オペレーティングシステム」を日常的に使い、 これらのシステムに遠隔地からアクセスする必要のある方、 あるいはこれらのシステムを複数台使用している方にとって OpenSSH は欠かせないものになっています。

現在ポピュラーなネットワーク通信 (電子メールやウェブなど) は その多くが暗号化されていません。そのため、もしネットワークを盗聴できる人物が ユーザの通信しているデータを集める気になれば、たいていの場合、そのユーザが何をしているかはわかってしまいます。 ところが多くの場合、人々はこうした問題をそれほど気にしません。 なぜなら (クレジットカード番号の流出などを除けば) この問題によって個人が重大な被害を受ける可能性はほとんどないからです。 しかしネットワークを使って遠隔地にあるコンピュータを操作する場合、 パスワードの漏えいは大きな損害をもたらす危険性があるため、注意が必要です。

通信を暗号化する機能をもつソフトウェアは他にもいくつかあり、 商用の SSH ソフトウェアも存在していますが、 OpenSSH はその簡単さと安定性によって多くの人々に使用されています。

OpenSSH は以下のような特徴をもっています:

1.2. OpenSSH にはできないこと

知っておいていただきたいのは、OpenSSH はセキュリティの 問題のうちごく一部だけを解決するツールにすぎないということです。 ときに OpenSSH は「セキュリティツール」などと呼ばれることがありますが、 これは必ずしも正確な表現ではありません。コンピュータセキュリティは総合的な技術の集積であり、 茫漠として果てしない分野です。セキュリティの問題を解決するには OpenSSH を使うだけでは不十分で、それ以外にも多くの創意・工夫が必要です。

以下に「OpenSSH 単独ではできないこと」をいくつか挙げておきます。

ネットワーク上の通信は暗号化するが、それ以外の情報は暗号化しない

OpenSSH が暗号化するのは、ネットワーク上の通信のみです。 したがって OpenSSH はローカルなコンピュータ上に記憶されているデータに対しては何も行いません。 つまり、いくら OpenSSH を使っていても、そのコンピュータに対して物理的に近づかれた場合には (電源を切られたり、ハードディスクを抜き取られたりなど) 意味がないのです。 OpenSSH を使うためには少なくともそのコンピュータの置いてある 部屋やフロア、あるいは周囲の建物などは、安全である必要があります。 マシンそのものが破壊されたり盗難された場合には、OpenSSH はまったく役に立ちません。

逆に言えば、 このことはネットワークセキュリティの“上限”を考えるうえで重要です。 たとえば、筆者はネットワークセキュリティに詳しいある専門家が、 サーバ室の自分のコンピュータに root のパスワードを紙に書いて貼っているのを 見たことがあります。 このサーバ室は普段は施錠されているうえに、フロアの入り口にはカードキーによる施錠があり、 建物の入り口にもガードマンがいます。もし同じフロアの人間がまったく信頼できなければ、 そもそもそこで使っているコンピュータのセキュリティを守ることなど不可能でしょうし、 もし見知らぬ第三者がこのフロアへ物理的に侵入するようなことがあれば、 すでにそれはコンピュータに侵入されるよりもずっと深刻な被害と考えるべきです。 このような状態でネットワークセキュリティを考えることはもはや意味がありません。

UNIX 以外のオペレーティングシステムとの相互運用はそれほど考えられていない

OpenSSH はおもに UNIX ユーザを対象としたツールです。 Windows や Mac OS X ユーザでも、VNC や後述の SFTP (ファイル転送) といった しくみを利用することで OpenSSH の恩恵を受けることはできますが、 Windows のファイル共有における通信を暗号化したり、 Windows のユーザ管理に利用することはできません。

「まったく信頼できない環境」での使用は想定されていない

矛盾しているように聞こえるかもしれませんが、OpenSSH はネットワークを 信用しないと言いつつも「そこそこ信頼できる」コンピュータネットワークの 存在を仮定して設計されています。もしお使いのネットワークがほんとうに (産業スパイなどによって) 絶えず盗聴・改ざんにさらされ、 物理的な生活空間までもが盗聴の対象になっているとしたら、 OpenSSH を使う程度のことではとうていセキュリティは確保できないでしょう。 また、OpenSSH には通信内容の改ざんを検出する機能がありますが、 改ざんを「やめさせる」ことはできません。このような妨害が続く場合は OpenSSH 以外の部分での対策が必要です。

元クラッカーであり、現在はセキュリティコンサルタントとして知られる Kevin Mitnick 氏は 「本物のクラッカーはターゲットにした人物の生年月日や家族の名前、企業の構成、 人間関係、趣味から免許書番号まで調べあげる」と言っています。 おそらく本当に特定の組織を狙っているハッカーは、システムやネットワークよりも むしろこのような社会的な弱点を突いてきますから (このような行為はソーシャル・エンジニアリングと呼ばれます)、 このような状況では OpenSSH による暗号化もほとんど効果がありません。

OpenSSH にもバグはある

OpenSSH はインターネットからのアクセスを想定したツールのため、 不特定多数からの攻撃にさらされる可能性がもっとも高いプログラムのひとつです。 OpenSSH はソースが公開されており、OpenBSD チームによる検査を受けていますが、 それでもときにバグやセキュリティホールが発見されることがあります。 たとえば OpenSSH のウェブサイトには、これまで発見されたいくつもの セキュリティホールが掲載されています。 [脚注: http://www.openssh.com/security.html] これらのセキュリティホールには「ユーザがシステムの特定の位置にあるファイルを 見れるようになる」といったものから、特定の条件では遠隔地の攻撃者が root 権限を取得できるようになっているものまでありました。

OpenBSD プロジェクトのリーダーである Theo de Raadt氏は 「ほとんどのセキュリティ問題は、劣悪な品質のソフトウェアから生まれる」と述べています。 これらのバグやセキュリティホールによる被害を最小限におさえるには、 セキュリティホールが発見され、パッチが公開されたらすぐに適用することが必要です。 現在のオペレーティングシステムでは、システムに OpenSSH が含まれていますから、 たいていの場合 OpenSSH 用のセキュリティ・アップデートも提供されています。

他にも、OpenSSH以外のソフトウェアの弱点を悪用した攻撃や、 人為的な管理ミスによる不慮の事故は OpenSSH では防ぐことはできません。 ネットワーク上の攻撃を受けやすいソフトウェアには OpenSSH の他にも Web サーバの Apache や CVS サーバ、rsync サーバなどがあり、 これらのソフトウェアにもこれまで多くのセキュリティホールが発見され、 被害が発生してきた経緯があります。 このため、セキュリティを上げるためにはただ OpenSSH を使うだけではなく、 ふだんからシステムにパッチをあて、 人為的なミスが致命的な結果にならないような対策をとることが必要です。

1.3. OpenSSH ができること

それでは OpenSSH はいったい何を防ぐのでしょうか。 実のところ、ネットワーク化されたコンピュータ社会における「敵」は、 本当にはっきりとは認識できないのです。 ただし、ほとんどのネットワーク上における犯罪というものは、 不特定多数を狙った「小者の」クラッカーによる攻撃が非常に多いのが現状です。 OpenSSH の利点は、このような攻撃をやめさせることはできないまでも、 これらを「かわす」ための簡便な手段を提供しているところにあります。

セキュリティ対策というものは日々の注意の積み重ねです。 しかし、使う側の負担があまりに大きいセキュリティ対策は、 いずれ失敗する運命にあります。 セキュリティ対策とは、誰もが簡単に、ほとんど意識せずに 実行できるようになってこそ成功するのです。OpenSSH の目標は 単純で使いやすいインターフェイスを提供することによって、 誰もが (無意識のうちに) セキュリティを強化できるような環境を 構築することにあるといえるでしょう。

今日では、クラッカー達はたえず侵入できるコンピュータを求めてネットワーク上に 流れているパスワードを収集したり、ソフトウェアのセキュリティホールを悪用して ネットワーク上のマシンに侵入し、それらを「ボット」として収集しています。 以前はこういった行為はただのいたずらにすぎませんでしたが、最近の調査によれば これらの行為はいまや金銭的な動機づけのために組織的に行われており、 乗っとられたマシンを利用して企業を DoS アタックで脅迫するなどの 犯罪行為も行われているようです。OpenSSH を使うことによって、 ユーザは「普通にログイン」しているだけで、 煩雑な操作をすることなくこれらの盗聴から身を守ることができ、 ひいてはネットワーク全体のセキュリティ向上にも貢献していることになります。


Yusuke Shinyama