Product SiteDocumentation Site

14.6. セキュリティ関連で他に考慮すべき点

セキュリティとは単なる技術的問題ではありません。そしてセキュリティに関してもっとも重要なことは、良く練習すること、危険を理解すること、です。この節では、いくつかのより一般的な危険および最良の実践例を見直します。ここで挙げた事例を実践することで、セキュリティを向上させたり、攻撃が成功してもその影響を小さなものにすることが可能です。

14.6.1. ウェブアプリケーションの持つ潜在的危険性

ウェブアプリケーションは、その普遍的特徴のおかげで、数多く開発されました。いくつかのアプリケーションは同時に実行されます。たとえばウェブメール、wiki、グループウェアシステム、フォーラム、写真ギャラリー、ブログ、などは同時に実行されます。これらのアプリケーションは「LAMP」(Linux、Apache、MySQL、PHP) スタックに頼っています。残念なことに、多くのアプリケーションがセキュリティ問題を深く考えずに書かれています。外部から提供されるデータは、その妥当性を少しだけ検査するか、全く検査せずに使わることが多いです。特別に細工した値をアプリケーションに渡すことで、あるコマンドの代わりに他のコマンドを実行させることが可能です。多くの最も自明な問題は時間がたてば修正されますが、定期的に新しいセキュリティ問題が生じます。
このため、定期的なウェブアプリケーションの更新は不可欠です。これは、クラッカー (プロフェッショナルな攻撃者であるかスクリプトキディであるかに関わらず) からの既知の脆弱性を利用した攻撃を防ぐ意味合いがあります。実際のリスクは場合によりますが、データの破壊、任意のコード実行、ウェブサイトの書き換えなどの範囲におよびます。

14.6.2. 予測される結果を知る

ウェブアプリケーションの持つ脆弱性はクラッキング行為の足掛かりとして使われることが多いです。以下は、そこから考えられる結果の短い概観を示します。
不正侵入に成功した後にどのようなことが行われるかは攻撃者のやる気に依存します。スクリプトキディはウェブサイトで探し出したレシピを適用するだけです。そしてほとんどの場合、スクリプトキディはウェブページを書き換えて、データを削除します。さらに悪賢いスクリプトキディはウェブページに不可視の内容を追加して、サーチエンジンからみた自分のサイトの推薦順位を向上させます。
さらに上級の攻撃者はこれ以上のことを行います。最悪の筋書きは以下の手順で進みます。すなわち、攻撃者は www-data ユーザ権限でコマンドを実行する能力を取得しますが、コマンドを実行するには数多くの操作が必要です。実行を簡単にするために、攻撃者はリモートからさまざまなコマンドを実行する専用に設計された他のウェブアプリケーションをインストールします。このアプリケーションを使うことで、ファイルシステムを閲覧したり、パーミッションを検査したり、ファイルをアップロードおよびダウンロードしたり、ネットワークシェルを提供したりすることが可能になります。しばしば、脆弱性を使って、wget コマンドを使ってマルウェアを /tmp/ にダウンロードし、マルウェアを実行することが可能になります。このマルウェアは既に不正侵入されている別のウェブサイトからダウンロードされます。こうすることで、攻撃者の痕跡がなくなり、実際の攻撃元に関するヒントを調査することが難しくなります。
この時点で、攻撃者は IRC ボット (IRC サーバに接続してチャンネルから操作されるロボット) をインストールできる程度の権限を取得しています。このボットは非合法ファイル (映画やソフトウェアなどの無断コピー) を共有するために使われます。意欲的な攻撃者はさらに先へ行きます。www-data アカウントはマシンに対する完全なアクセスを許しませんので、攻撃者は管理者権限を取得しようとするでしょう。今現在、これは不可能であるべきです。しかし、ウェブアプリケーションが最新の状態でなければ、おそらくカーネルやその他のプログラムも古いことでしょう。そしてこれはしばしばローカルユーザがいないため脆弱性に関して知っているにも関わらずシステムのアップグレードを無視している管理者の判断です。攻撃者はこの 2 番目の脆弱性に乗じて root アクセスを取得します。
これで、攻撃者はマシンを自らの支配下に置くことができました。そして攻撃者は通常この特権アクセスを可能な限り長く維持しようとします。そのために攻撃者は rootkit をインストールします。rootkit とは、後から攻撃者が管理者権限を取得することを可能にするために、いくつかのシステムの要素を置き替えるプログラムです。そして rootkit は自分の存在および侵入の形跡を隠そうとします。改竄された ps プログラムはいくつかのプロセスを無視するでしょうし、netstat はいくつかの活動中の接続を表示しないでしょう。root 権限を使って、攻撃者はシステム全体を観察することが可能です。しかし、重要なデータを見つけ出しません。さらに、同じネットワーク内の他のマシンにアクセスしようとします。管理者アカウントと履歴ファイルを解析することで、攻撃者は日常的にアクセスしているマシンを見つけ出します。sudossh を改竄されたプログラムで置き換えることにより、攻撃者は管理者パスワードを横取りすることが可能です。攻撃者はここで横取りした管理者パスワード検出されたサーバで使い… さらに侵入を進めます。
最悪の筋書きはいくつかの取り組みによって避けることが可能です。以降の節では、その取り組みについて説明します。

14.6.3. 賢い方法でソフトウェアを選ぶ

潜在的なセキュリティ問題が知られると、管理者はサービスを配備するプロセスの各段階、特にインストールするソフトウェアを選ぶ際、に気を配らなければいけません。SecurityFocus.com などの多くのウェブサイトが最近発見された脆弱性をリストしています。このおかげで、あるソフトウェアを配備する前にそのソフトウェアのセキュリティ実績の情報を得ることが可能です。もちろん、この情報はそのソフトウェアの人気に比例しています。すなわち、広く使われているプログラムほど標的にされ、結果として注意深く検査されます。逆に、セキュリティ監査に対する関心が欠如していたために、特定分野のプログラムはまだ公表されていない数多くのセキュリティホールを隠しているかもしれません。
通常フリーソフトウェア世界には多くの選択肢があります。そして、ソフトウェアは現場で適用する基準と同じ選択基準に従い決定するべきです。多くの機能を備えるということは、コードに隠された脆弱性の危険性を増加させることを意味します。そして実際、あるタスクに関する最も先進的なプログラムを選ぶことは逆効果かもしれません。要求を満足する最も単純なプログラムを選ぶほうがより良いと言えるでしょう。

14.6.4. マシン全体の管理

多くの Linux ディストリビューションはデフォルトで多数の Unix サービスと多くのツールをインストールします。多くの場合、デフォルトでインストールされるサービスとツールは管理者がマシンをセットアップする本来の目的に必要なものではありません。セキュリティに関する一般的な指針として、不要はソフトウェアをアンインストールすることが最良の方針です。実際、もし FTP サーバ以外の未使用のサービスに含まれる脆弱性を使ってマシン全体の管理者権限が取得される可能性があるのなら、FTP サーバを守ることに意味はありません。
同様の理由で、通常ファイアウォールは公開アクセスできるようになる予定のサービスへのアクセスだけを許可するように設定されます。
現在のコンピュータは複数のサービスを 1 台の物理マシン上でホストできる程度に十分強力です。財政的な観点からすると、この可能性は興味深いものです。なぜなら、管理するコンピュータの台数を 1 台で済ませたり、エネルギー消費量を減らすことができるからです。しかしながら、セキュリティの観点からすると、この可能性は問題です。1 つのサービスが不正侵入を受けるだけでマシン全体にアクセスできるようになり、さらに同じコンピュータ上でホストされている他のサービスも不正侵入を受けます。サービスを隔離することでこのリスクを緩和することが可能です。サービスの隔離は仮想化 (各サービスを専用の仮想マシンやコンテナでホストさせる) や AppArmor/SELinux (それぞれのサービスデーモンに適切に設計された一連のパーミッションを設定する) を使って達成されます。

14.6.5. 内部ユーザから保護

セキュリティに関する議論と言えばすぐに、インターネットの無法地帯に隠れた匿名のクラッカーによる攻撃に対する保護を思い浮かべることでしょう。しかし、忘れられがちですが、内部にもリスクがあるという事実があります。具体的に言えば、退職を控えている雇用者は重要なプロジェクトの機密ファイルをダウンロードしてこれを競争相手に売ることが可能です。不注意なセールスマンは新しい顧客とのミーティング中にセッションをロックせずに離席します。不器用なユーザは誤って間違ったディレクトリを削除します。
これらのリスクは技術的に解決できます。つまり、最低限必要な権限よりも高位の権限をユーザに与えるべきではありませんし、定期的なバックアップは必ず必要です。しかし多くの場合、リスクを避けるためにユーザを教育することがより適切なやり方と言えるでしょう。

14.6.6. 物理セキュリティ

コンピュータ本体が保護されていなければ、サービスとネットワークの保護は無意味です。重要なデータは RAID アレイ内のホットスワップ対応のハードディスクに保存するだけの価値があります。なぜなら、ハードディスクは壊れるものですし、データの可用性は不可欠だからです。しかし、ピザ配達人が建物に入って、サーバ部屋に忍び込んで、いくつかの選ばれたハードディスクを盗んで逃げることが可能な場合、セキュリティの重要な部分が満足されていません。誰がサーバ部屋に入れるのでしょうか? 入室と退室は監視されていますか? これらの質問は、物理セキュリティを評価する際に、考慮 (そして回答に) に値します。
物理セキュリティには、たとえば火事などの災害のリスクを考慮することが含まれます。この特別なリスクがあるために、バックアップメディアを別の建物か少なくとも防火金庫に保存することが正当化されます。

14.6.7. 法的責任

管理者は、程度の差はあるものの暗黙のうちに、自分の管理するユーザと一般のネットワークユーザから信頼されています。そのためユーザは悪意ある人が不法利用することで生じる過失の影響から守られています。
あるマシンの制御を奪った攻撃者は、このマシンを前進基地 (「踏み台」として知られています) として使います。管理しているマシンから他の不正な活動を実行されることにより、あなたは法的な問題を被ることになります。なぜなら、攻撃された当事者にしてみれば、あなたのシステムが攻撃元に見えるため、あなたを攻撃者本人 (または共犯者) とみなすでしょう。多くの場合、攻撃者はスパムを送信するための中継サーバとしてあなたのサーバを使います。これは大きな影響をおよぼすものではありません (ブラックリストに登録されて、正規の電子メールを送信することに制限を受けるという潜在的な問題点を除きます)。とは言っても気持ちのよいものではありません。また別の場合、あなたのマシンはサービス拒否攻撃などのより重大な問題の要因になります。これはしばしば損失をもたらす場合があります。なぜなら、正規のサービスが利用できなくなり、データが破壊されるからです。さらに実質的な費用を失うという意味を持つ場合もあります。なぜなら、攻撃された当事者はあなたに対して法的手続きを開始するからです。すなわち、著作権で守られた著作物の認可されていない複製があなたのサーバから共有された場合、権利者は訴訟を起こすことが可能です。さらに、サービス水準合意を交わした他の企業があなたのマシンから攻撃を受けた場合に罰金を支払う契約になっている場合、彼らも訴訟を起こすことが可能です。
これらの状況に陥ると、無罪を主張するだけでは通常十分ではありません。そして少なくとも、ある IP アドレスを経由してあなたのシステム上で行われた疑わしい活動に関する説得力のある証拠を提出する必要があります。この章の推奨を無視し、攻撃者に特権アカウント (特に root) へのアクセスの取得を許し、攻撃者が痕跡を消すために特権アカウントを使うことを許していれば、これは不可能です。