web-dev-qa-db-ja.com

ルート侵害後の再インストール?

サーバーの妥協に関するこの質問 を読んだ後、私は人々がなぜ検出/クリーンアップツールを使用して、または単に使用された穴を修正することによって、侵害されたシステムを回復できると信じ続けているように思われるのか疑問に思い始めましたシステムを危険にさらす。

すべてのさまざまなルートキットテクノロジーやその他のことを考えると、ハッカーがほとんどの専門家にできることは オペレーティングシステムを再インストールする であると示唆しています。

私は、なぜより多くの人々が単に離陸しないのか、そして軌道からのシステム nuke のより良いアイデアを得ることを望んでいます。

ここで、対処してもらいたい点をいくつか示します。

  • フォーマット/再インストールでシステムがクリーンアップされない状況はありますか?
  • どのような状況でシステムをクリーニングできると思いますか。また、完全な再インストールはいつ行う必要がありますか。
  • 完全な再インストールを行うことに反対する理由は何ですか?
  • 再インストールしないことを選択した場合は、クリーニングが完了し、それ以上の損傷が再び発生するのを防いだと合理的に確信するためにどの方法を使用しますか。
58
Zoredache

セキュリティの決定は、最終的にはどの製品を市場に出すかについての決定と同様に、リスクについてのビジネス上の決定です。そのコンテキストでフレームを作成する場合、平準化せずに再インストールするという決定は理にかなっています。厳密に技術的な観点から考えると、そうではありません。

通常、そのビジネス上の決定には次のようなものがあります。

  • ダウンタイムによって測定可能な費用がどれくらいかかりますか?
  • 私たちがダウンした理由について顧客に少し明らかにする必要がある場合、それは潜在的にどれくらいの費用がかかるでしょうか?
  • 再インストールを行うには、他にどのような活動から離れなければなりませんか?コストは何ですか?
  • エラーなくシステムを起動する方法を知っている適切な人がいますか?そうでない場合、彼らはバグのトラブルシューティングを行うのにいくらかかりますか?

したがって、このようなコストを合計すると、「潜在的に」まだ妥協されたシステムを続行する方がシステムを再インストールするよりも優れていると見なされる場合があります。

31
K. Brian Kelley

私は投稿に基づいていますI 何年も前に書いた 私がまだブログに悩まされていたときに戻ってきました。

この質問は、ハッカーがWebサーバーに侵入する被害者から繰り返し尋ねられます。答えが変わることはめったにありませんが、人々は質問を続けます。理由はわかりません。おそらく、人々はヘルプを検索したときに見た答えが気に入らない、または彼らがアドバイスを与えるために信頼できる誰かを見つけることができないだけかもしれません。あるいは、この質問への回答を読んで、ケースが特別で、オンラインで見つけることができる回答とは異なる5%の理由に集中しすぎて、ケースが十分に近い場合、質問と回答の95%を逃す彼らがオンラインで読むものとして。

これにより、最初の重要な情報が表示されます。あなたが特別でユニークなスノーフレークであることを本当に感謝しています。あなたのウェブサイトもあなたとあなたのビジネスを反映しているものであり、少なくとも雇用主に代わってあなたの努力が反映されていることを感謝しています。しかし、問題を調べてあなたを助けようとしているコンピューターのセキュリティ担当者であれ、攻撃者自身であれ、外を見ている人にとっては、問題は他のすべてのケースと少なくとも95%同一である可能性が非常に高いです。今まで見た。

個人的に攻撃を行わないでください。また、ここに続く推奨事項や他の人から個人的に得た推奨事項を取り入れないでください。あなたがウェブサイトのハックの犠牲者になった後でこれを読んでいるなら、私は本当に申し訳ありません、そしてあなたがここで何か役立つものを見つけられることを本当に望みますが、あなたのエゴがあなたが必要とするものの邪魔をする時ではありません行う。

サーバーがハッキングされたことがわかりました。さて何ですか?

パニックにならない。絶対に急いで行動しないでください。絶対に、起こったことのないふりをしたり、行動したりしないでください。

まず、災害がすでに発生していることを理解してください。これは拒否の時ではありません。何が起こったかを受け入れ、それについて現実的になり、影響の結果を管理するための対策を講じるときです。

これらの手順の一部は害を及ぼす可能性があり、(ウェブサイトに私の詳細のコピーが保存されていない限り)これらの手順のすべてまたは一部を無視してもかまいませんが、最終的には改善されます。薬はひどい味がするかもしれませんが、本当に治療法を機能させたい場合は、それを見落とさなければならないことがあります。

問題が以前より悪化するのを防ぎます:

  1. 最初にすべきことは、影響を受けるシステムをインターネットから切断することです。他にどんな問題があったとしても、システムをWebに接続したままにしておくと、攻撃を続けることしかできません。これは文字通りかなり意味があります。それが必要な場合は、誰かがサーバーに物理的にアクセスしてネットワークケーブルを取り外しますが、他のことをする前に被害者を強盗から切り離してください。
  2. 侵入先のシステムと同じネットワーク上にあるすべてのコンピューターのすべてのアカウントのすべてのパスワードを変更します。いえいえ。すべてのアカウント。すべてのコンピューター。はい、そうです、これはやり過ぎかもしれません。一方、そうでない場合もあります。どちらかわからないよね?
  3. 他のシステムを確認してください。他のインターネット向けサービス、および財務データやその他の商業的に機密データを保持するサービスには特に注意してください。
  4. システムが誰かの個人データを保持している場合は、一度に影響を受ける可能性のあるすべての人に完全かつ率直な開示を行います。これはタフだと思う。私はこれが傷つくことを知っています。多くの企業がカーペットの下でこの種の問題を一掃したいと思っていることは知っていますが、恐らくあなたはそれに対処しなければならないでしょう。

まだこの最後のステップを踏むのをためらっていますか?わかりました。しかし、次のように見てください。

一部の場所では、当局や被害者にこの種のプライバシー侵害を通知するための法的要件がある場合があります。ただし、問題について顧客に説明してもらうように顧客を苛立たせる可能性はありますが、顧客に知らせないと、顧客ははるかに苛立ちます。クレジットカードの詳細を使用して8,000ドル相当の商品を請求した場合にのみ、顧客は気づきます。あなたのサイトから盗みました。

以前に言ったことを覚えていますか? 悪いことがすでに起こっています。唯一の問題は、あなたがどれだけうまくそれに対処するかです。

問題を完全に理解する:

  1. 影響を受けるシステムをこの段階が完了するまでオンラインに戻さないでください。ただし、実際にこの記事の執筆を決定する際の転機となった投稿者になりたい場合を除きます。私は投稿にリンクしていないので、人々は安っぽく笑うことができます。この最初の手順に従わなかった場合の結果について警告するリンクを張っています。
  2. 「攻撃された」システムを調べて、どのようにして攻撃がセキュリティの侵害に成功したかを理解します。攻撃が「どこから来たのか」を見つけるためにあらゆる努力を払ってください。そうすることで、将来どのようにシステムを安全にするためにどのような問題があり、対処する必要があるかを理解できるようになります。
  3. 今度は「攻撃された」システムを調べて、攻撃がどこに行ったかを理解し、どのシステムが攻撃で侵害されたかを理解します。侵害されたシステムがシステムをさらに攻撃するための踏み台になる可能性があることを示唆するすべての指針を確実にフォローアップしてください。
  4. すべての攻撃で使用されている「ゲートウェイ」が完全に理解されていることを確認してください。これにより、攻撃を適切に閉じ始めることができます。 (たとえば、システムがSQLインジェクション攻撃によって侵害された場合、システムが侵入した特定の欠陥のあるコード行を閉じる必要があるだけでなく、すべてのコードを監査して、同じタイプのミスがないかどうかを確認する必要があります。別の場所で作られました)。
  5. 複数の欠陥が原因で攻撃が成功する可能性があることを理解してください。多くの場合、攻撃は、システム内の1つの主要なバグを見つけることではなく、いくつかの問題(時にはそれ自体が軽微で些細なこと)を組み合わせてシステムを危険にさらすことで成功します。たとえば、SQLインジェクション攻撃を使用してデータベースサーバーにコマンドを送信し、攻撃しているWebサイト/アプリケーションが管理ユーザーのコンテキストで実行されていることを発見し、そのアカウントの権限を踏み台として他の部分を危険にさらしています。システム。または、ハッカーがそれを呼びたいのは、「オフィスでのある日、人々が犯す一般的な間違いを利用する」というものです。

復旧の計画を立て、ウェブサイトをオンラインに戻し、それに固執する:

誰もが必要以上にオフラインになることを望んでいません。それは当然です。このWebサイトが収益を生み出すメカニズムである場合、すぐにオンラインに戻すというプレッシャーが強くなります。唯一の問題があなた/あなたの会社の評判であるとしても、これはまだ物事を迅速に回復するために多くのプレッシャーを生むでしょう。

ただし、オンラインにすばやく戻ろうとする誘惑に負けないでください。代わりにできるだけ早く移動して問題の原因を理解し、オンラインに戻る前に問題を解決してください。そうしないと、ほぼ間違いなくもう一度侵入の犠牲になり、「一度ハッキングされることは不幸に分類される可能性があります。すぐに再びハッキングされるのは不注意のようです」(オスカーワイルドへの謝罪)。

  1. このセクションを始める前に、侵入の成功につながったすべての問題を最初に理解していると思います。私はケースを誇張したくありませんが、あなたがそれを最初にしていないなら、あなたは本当にする必要があります。ごめんなさい。
  2. 恐喝/保護金を支払うことはありません。これは簡単な印のしるしであり、あなたがその言葉を使って自分を説明することは望まないでしょう。
  3. 完全に再構築せずに同じサーバーをオンラインに戻すように誘惑されないでください。新しいボックスを構築するか、「軌道からサーバーを起動して、古いハードウェアにクリーンインストールを実行する」よりも、古いシステムの隅々まで監査して、システムが再びオンラインになる前にクリーンであることを確認してください。これに同意しない場合は、システムが完全にクリーンアップされていることを実際に確認することの意味がわからないか、Webサイトの展開手順が不自然に混乱していることになります。おそらく、ライブサイトを構築するために使用できるバックアップとテスト展開をサイトに持っていると思われます。そうしないと、ハッキングされることが最大の問題にはなりません。
  4. ハッキング時にシステムで「ライブ」であったデータを再利用する場合は、十分に注意してください。あなたは私を無視するだけなので「絶対にやらない」とは言いませんが、率直に言って、整合性を保証できないことがわかっている場合にデータを保持することの結果を考慮する必要があると思います。理想的には、侵入前に作成したバックアップからこれを復元する必要があります。それができない場合、または行わない場合は、データが汚染されているため、データには細心の注意を払う必要があります。このデータが直接ではなく顧客またはサイトの訪問者に属している場合は、他人への影響に特に注意する必要があります。
  5. システムを注意深く監視します。将来的には継続的なプロセスとしてこれを実行するように解決する必要があります(詳細は以下を参照)。ただし、サイトがオンラインに戻った直後の期間は、特に注意を払って警戒する必要があります。侵入者はほぼ確実に戻ってきます。侵入者が侵入しようとしていることに気付いた場合は、以前に使用したすべての穴に加えて、自分のために作った穴を本当に閉じているかどうかをすばやく確認できます。地元の法執行機関に渡すことができる情報。

将来のリスクを軽減します。

最初に理解する必要があるのは、セキュリティは、インターネットに面するシステムの設計、展開、保守のライフサイクル全体を通して適用する必要があるプロセスであり、後で安価なコードのようにいくつかのレイヤーを重ねることができるものではないということです。ペイント。適切に安全であるためには、サービスとアプリケーションを最初からこれをプロジェクトの主要な目標の1つとして念頭に置いて設計する必要があります。退屈だし、聞いたことがあるだろうし、ベータ版のWeb2.0(ベータ版)サービスをWebでベータ版のステータスにするという「プレッシャーマンに気づかない」と私は思うが、これは事実です。それが最初に言われたときに真実であり、それがまだ嘘になっていなかったので繰り返されます。

リスクを排除することはできません。あなたもそれをしようとするべきではありません。ただし、すべきことは、どのセキュリティリスクが自分にとって重要であるかを理解し、リスクが発生する リスクの影響と確率 の両方を管理および削減する方法を理解することです。

攻撃が成功する可能性を減らすためにどのような手順を実行できますか?

例えば:

  1. 人々があなたのサイトに侵入することを可能にする欠陥は、パッチが利用可能なベンダーコードの既知のバグでしたか?もしそうなら、あなたはあなたのインターネットに面したサーバー上のアプリケーションにパッチを当てる方法へのアプローチを再考する必要がありますか?
  2. 人々があなたのサイトに侵入することを可能にする欠陥は、パッチが利用できないベンダーコードの未知のバグでしたか?私は、このような何かがあなたに噛み付くときはいつでもサプライヤーを変えることを推奨しません。なぜなら、それらすべてに問題があり、このアプローチを取ると、せいぜい1年でプラットフォームが足りなくなるからです。ただし、システムが常にダウンしている場合は、より堅牢なものに移行するか、少なくともシステムを再構築して、脆弱なコンポーネントが綿のウールで包まれたまま、敵の目からできるだけ離れているようにします。
  3. この欠陥は、あなた(またはあなたのために働いている請負業者)が開発したコードのバグですか?もしそうなら、あなたのライブサイトへの展開のためにコードを承認する方法へのアプローチを再考する必要がありますか?改善されたテストシステム、またはコーディングの「標準」の変更によってバグが検出された可能性があります(たとえば、テクノロジーが万能薬ではない場合でも、十分に文書化されたコーディングテクニックを使用することで、SQLインジェクション攻撃が成功する確率を減らすことができます。 )。
  4. この欠陥は、サーバーまたはアプリケーションソフトウェアの展開方法に問題があったためですか?その場合、可能な場合は自動化された手順を使用してサーバーを構築および展開していますか?これらは、すべてのサーバーで一貫した「ベースライン」状態を維持し、各サーバーで実行する必要のあるカスタム作業の量を最小限に抑え、したがって、間違いを犯す機会を最小限に抑えるのに非常に役立ちます。同じことがコードの展開にも当てはまります。Webアプリの最新バージョンを展開するために何か特別なことをする必要がある場合は、自動化に努め、常に一貫した方法で実行されるようにしてください。
  5. システムの監視を改善することで、侵入を早期に発見できましたか?もちろん、24時間体制の監視やスタッフの「オンコール」システムは費用対効果が高くない場合がありますが、Webに面したサービスを監視して問題が発生した場合に警告できる会社は世界中にあります。あなたはこれを買う余裕がないかそれを必要としないと決めるかもしれません、そしてそれは大丈夫です...ただそれを考慮に入れてください。
  6. 必要に応じてtripwireやnessusなどのツールを使用してください。ただし、私がそう言ったので、それらを盲目的に使用しないでください。時間をかけて、環境に適したいくつかの優れたセキュリティツールの使用方法を学び、これらのツールを最新の状態に保ち、定期的に使用してください。
  7. セキュリティの専門家を雇って、定期的にWebサイトのセキュリティを「監査」することを検討してください。繰り返しますが、これを買う余裕がない、または必要がないと判断するかもしれませんが、それで十分です...考慮に入れてください。

攻撃が成功した場合の影響を減らすために、どのような手順を実行できますか?

家の洪水の下層階の「リスク」が高いと判断したが、移動が必要なほど高くない場合は、少なくともかけがえのない家族の家宝を2階に移動する必要があります。正しい?

  1. インターネットに直接公開されるサービスの量を減らすことはできますか?内部サービスとインターネット向けサービスの間に何らかのギャップを維持できますか?これにより、外部システムが危険にさらされている場合でも、これを踏み台として内部システムを攻撃する可能性が制限されます。
  2. 保存する必要のない情報を保存していますか?他の場所にアーカイブできる可能性がある場合、そのような情報を「オンライン」で保存していますか。この部分には2つのポイントがあります。明らかなのは、あなたが持っていない情報を他の人が盗むことができないことです。2番目のポイントは、保存が少ないほど、保守とコーディングの必要性が少なくなるため、バグが侵入する可能性が少なくなります。コードまたはシステム設計。
  3. Webアプリに「最小アクセス」の原則を使用していますか?ユーザーがデータベースから読み取るだけでよい場合は、Webアプリがこれをサービスするために使用するアカウントに読み取りアクセスのみが許可されていることを確認し、書き込みアクセスは許可せず、システムレベルのアクセスは許可しないでください。
  4. 経験が浅く、ビジネスの中心ではない場合は、アウトソーシングを検討してください。言い換えれば、デスクトップアプリケーションコードの記述について話している小さなWebサイトを運営していて、サイトから小さなデスクトップアプリケーションの販売を開始する場合は、クレジットカード注文システムをPaypalなどの誰かに「アウトソーシング」することを検討してください。
  5. 可能な場合は、障害が発生したシステムからの復旧の実践を災害復旧計画の一部にしてください。これはおそらく、遭遇する可能性のあるもう1つの「災害シナリオ」であり、通常の「サーバールームが発火した」/「ファービーを食べる巨大なサーバー」のようなものとは異なる独自の一連の問題と問題を抱えたものです。 (編集、XTZごと)

... そして最後に

私はおそらく他の人が重要だと考えるものの終わりを省いていませんが、ハッカーの犠牲になるほど運が悪い場合は、上記の手順で少なくとも問題の整理に役立つはずです。

何より:パニックに陥らないでください。行動する前に考えてください。決定したらしっかりと行動し、私のステップリストに追加するものがあれば、以下にコメントを残してください。

30
Rob Moir

常に軌道からそれを核攻撃します。これが確実にする唯一の方法です。

alt text
(ソース: flickr.com

ほとんどのシステムは、内的で暗黙的な信頼を持つ全体的なエンティティです。侵害されたシステムを信頼することは、システムの侵害を最初に行った人を信頼するという暗黙の声明です。言い換えると:

あなたはそれを信頼することはできません。掃除を気にしないでください。すぐにマシンを取り外し、隔離してください。続行する前に、違反の性質を理解してください。そうしないと、同じことを何度も招待します。可能であれば、違反の日付と時刻を取得して、参照のフレームを用意してください。バックアップから復元する場合は、バックアップ自体に侵害のコピーがないことを確認する必要があるため、これが必要です。復元する前にワイプします-ショートカットを実行しないでください。

19
Avery Payne

実際には、ほとんどの人は、時間がかかりすぎたり混乱を招く可能性があると考えているため、それをしません。私は無数のクライアントに問題が継続する可能性について助言しましたが、再インストールはそれらの理由の1つのために意思決定者によってしばしば打ちのめされました。

そうは言っても、エントリの方法と被害の全範囲を知っていると確信しているシステムでは(通常、IDS、おそらくSELinuxまたは侵入の範囲を制限する同様のものを使用した、マシン外のログ)。罪悪感を感じることなく、再インストールせずにクリーンアップを実行しました。

6
womble

ほとんどの場合、リビルドを実行する自信があるほど十分にテストされたディザスターリカバリールーチンがないか、どれくらいの時間がかかるか、またはどのような影響があるか、またはバックアップが信頼できないか、リスクアナリストが不明確です。侵害されたシステムの範囲を理解していない。いろいろな理由が考えられます。

それは基本的なルーティンとポリシーでおかしいものであり、それはあなたが率直に認めたいものではなく、代わりに防御的な立場を取ると私は言います。少なくとも私は、どの角度から見ても、侵害されたシステムをワイプしないことを確認または防御することはできません。

2
Oskar Duveborn

私は以前にシステムに核を与えていなかったので、彼らが入ったベクターのいくつかの分析とその後の使用の分析を行い、彼らがどこに行ったかを見ることができます。

あなたが根付いたら-あなたはライブハニーポットを持っていて、それは単なるハック以上のものを提供することができます。 -特に警察のために。

  • とはいえ、私はホットスタンバイでクリーンなシステムを取得できるようになり、ルート化されたボックスを分離するために高速の強化されたネットワークセキュリティを提供できるようになりました。
2
littlegeek