はじめに
セキュリティ障害のために完全な再インストールが必要になることはよくあります。そのため、セキュリティ障害に対しては災害と同等の備えをするべきです。セキュリティ障害が発生したサーバーの再構築と問題解決に取り組んでいる間、何日間もビジネスに支障をきたすおそれもありますが、物理的災難に対するのと同じ心構えで徹底的にリカバリ対策に取り組んでいれば、そのような事態は回避できます。
多くの組織は、突然コンピュータを再インストールしなければならない状況に備えて何らかの仕組みを用意していますが、いくら万全を期した組織でも、再インストールを迅速に行えないサーバーが2~3台はあるでしょう。しかし、より快適な障害復旧を実現するバックアップやシステム管理を行う方法はたくさんあります。こうした面倒なサーバーをすべて洗い出し、リカバリ計画に適切に組み込む作業は、時間を費やすだけの価値があります。主なポイントは次のとおりです。
- 構成管理ツールを使ってシステムを自動化する。手動による介入なしで、すべてのサーバーを簡単に再インストールし、正常稼動の状態に戻れるようにする。
- バックアップ計画では、システム全体のリカバリの必要性、たとえば、最重要サーバーのディスクイメージを作成する手順などを考慮する。
- 復旧の手順やインフラが適切であることを実証するために、予備のハードウェアを使用して最重要サーバーの復旧訓練をし、わずかなテスト期間でそれを本番環境に適用する。
サーバー管理上の注意
重要なのは、画一的なサーバーを用意することです。標準のOSロードと少しでも異なる点がある場合は、その手順を必ず文書化し、自動化しなければなりません。この素晴らしい構成管理の世界をまだ知らない人は、ぜひpuppetやcfengineについて調べてみてください。
サーバーの構成が文書化されていない場合、ディスク障害のようにシンプルな障害でさえも大惨事になるおそれがあります。もし、自分の所属組織がそのような状況であるならば、今すぐ改善が必要です。こうしたサーバーを何らかの自動構成システムに組み入れるのに役立つ文書があればいいのですが、たいていの場合、そのようなものはありません。実際のところ、サーバーをリブートしただけでサーバーの機能が停止することもあります(ブート時にサービスを起動するような設定になっていない場合)。もしこのような経験を過去にしたことがあるならば、率直に言って、あなたはなすべきことをしていません。
たいていの組織は、構成管理を中途半端に実現しています。構成管理インフラを半分しか実装できていない組織もあるでしょうし、完全に異なるマシンは2~3台だけという組織もあるでしょう。これらを標準のサーバーロードに一致させるには大変な手間がかかると思われます。とりあえずは多少バラつきがある状態でも構いませんが、特殊な構成のサーバーは完全には自動化されないため、特別な対応をする必要があります。
バックアップに関する注意
理想的な環境では、OSデータは自動的に復元可能であるため、SANなどの接続されているストレージだけをバックアップすることになります。この場合、ストレージ装置から直接データを吸い出して完全バックアップを行うことができ、OSのことを考える必要はありません(SANインフラストラクチャの場合)。標準構成から外れている部分の情報はすべて構成管理ソフトウェアに格納されているか、NFSでマウントされているため、重要なローカルストレージを持つサーバーはほとんどないはずです。
ここまで理想的な環境ではない場合、つまり構成管理データがホスト上に置かれている場合には、データをバックアップするための健全なメカニズムが必要です。バックアップそのものは簡単ですが、単にバックアップするだけでなく、合理的に行う必要があります。最も一般的なバックアップ方法では、少なくとも1週間分のデータが何本ものテープにまたがって格納されており、ファイルシステム全体を完全に復元するのは非常に面倒です。
仮想テープライブラリを利用すれば少しは作業が楽になりますが、さまざまな部分でカスタマイズが必要なサーバーを再構築する場合には、やはり長い時間がかかります。ディスクイメージが必要になるからです。
基幹サーバーにはミラーリングされた2つのディスクを用意する必要があり、これはほとんど必須になっています。ここで強調したいのは、全体のディスクイメージを作成し、それをバックアップするということです。数日分のデータをバックアップする必要があるときには、1週間分のデータを格納しておくと便利です。これはVMwareスナップショットに似ていますが、サーバー全体を対象とするという点が重要です。理想的には、そんなことはしたくないでしょう。しかし、小規模店舗や災害局面などでは、記憶と5~20本分のバックアップテープからサーバーを再構築するよりも絶対にましなはずです。
セキュリティについて
「How Do You Know When You've Been Owned?」で説明したように、ハッキングされたことをいつも100%確信できるわけではありません。サーバーの再インストールが必要になる状況、たとえばルートが攻撃された場合などは明らかですが、セキュリティインシデントの疑いがある場合に、手動による介入なしで単純にリロードできればもっといいのではないでしょうか?
この意見には賛否両論あります。確かに、どのような方法で自分の領域が侵入されたかを知りたいと思う人は多いでしょう(これにより、危険にさらされているかどうかを確実に判断できるからです)。しかし、ハッキングされたWebサイトは、脅威を完全に除去しても後々危険をもたらす可能性があります。どうするかは、あなたの判断次第です。
絶対的なベストソリューションとして1つ言えるのは、すべてのサーバー構成を適切に文書化し自動化する、ということです。システムディスクも、セキュリティ関連の障害やその他の障害の復旧に備えてアーカイブしておきます。最近のサーバーの多くは内部USB接続を備えていますが、これは最初にHPが導入したもので、LinuxブートイメージをUSBドライブにフラッシュすることを目的としています。これにより、必要な場合にはUSBディスクを切り離し、適切なOSイメージに対して"dd"を実行することができます。ネットワークの速度によって左右されますが、これが最も高速な障害リカバリ方法です。
要約すると、理想的には、組織内のすべてのサーバーを他のサーバーと同じ構成に揃える必要があります。異なる点がある場合は、再インストール後すぐに(手動での介入なしに)今までどおりの構成を再現できるように自動化します。
サーバー再構築の自動化に加え、最も重要なサーバーは二重、三重にバックアップします。また、どのような障害が発生しても迅速にリカバリできるよう、サーバーの構成(IPアドレス、ファイルなどすべて)を文書化および自動化し、バックアップテープのローテーションを適切に行い、OSディスクイメージを頻繁に作成します。これにより、自分の作業が楽になるだけでなく、会社としても望ましい環境になるので、いいことずくめです。