侵害されたサーバーに対処するにはどうすればよいですか?


601

これは、標準的な質問 Serverのセキュリティについて-イベントを侵害への対応(ハッキング)
参照します:

Canonicalバージョン
1つ以上のサーバーがハッカー、ウイルス、またはその他のメカニズムによって侵害されていると思われます。

  • 私の最初のステップは何ですか?サイトに到着したら、サーバーを切断し、「証拠」を保存する必要がありますか、他の最初の考慮事項はありますか?
  • サービスをオンラインに戻すにはどうすればよいですか?
  • 同じことをすぐに再発しないようにするにはどうすればよいですか?
  • このインシデントから学習するためのベストプラクティスまたは方法論はありますか?
  • インシデントレスポンスプランをまとめたい場合、どこから始めますか?これは災害復旧または事業継続計画の一部ですか?

元のバージョン

2011.01.02-私たちのサーバーが何らかの形で侵害され、プロバイダーに対するDOS攻撃が発生したため、私は日曜日の午後9時30分に仕事に取り掛かり ます。インターネットへのサーバーアクセスがシャットダウンされたため、5〜600を超えるクライアントサイトが現在ダウンしています。現在、これはFTPハック、またはコードのどこかの弱点である可能性があります。そこに着くまでわからない。

これをすばやく追跡するにはどうすればよいですか?サーバーをできるだけ早くバックアップしないと、私たちは多くの訴訟に巻き込まれます。どんな助けも大歓迎です。Open SU​​SE 11.0を実行しています。


2011.01.03-ご協力ありがとうございました。幸いなことに、このサーバーの責任者は私だけではなく、最も近い人でした。この問題を解決することはできましたが、他の多くの状況には当てはまらない場合があります。私たちがやったことを詳しく説明します。

サーバーをネットから取り外しました。インドネシアの別のサーバーでサービス拒否攻撃を実行(実行しようとしています)し、有罪者もそこに拠点を置いていました。

サーバー上に500を超えるサイトがあることを考慮して、最初にサーバー上のどこから来たかを特定しようとしました。ただし、SSHアクセスを引き続き使用して、攻撃が開始されたときに編集または作成されたすべてのファイルを検索するコマンドを実行しました。幸いなことに、問題のあるファイルは冬の休暇中に作成されたため、その時点ではサーバー上に他の多くのファイルは作成されていませんでした。

その後、ZenCart Webサイト内のアップロードされた画像フォルダー内にある問題のあるファイルを特定することができました。

短いタバコの休憩の後、ファイルの場所のため、不十分に保護されたファイルアップロード機能を介してアップロードされたに違いないと結論付けました。いくつかのグーグル検索の後、レコード会社の写真のために、ZenCart管理パネル内でファイルをアップロードできるセキュリティ脆弱性があることがわかりました。(実際に使用したこともないセクション)、このフォームを投稿するとファイルがアップロードされただけで、ファイルの拡張子はチェックされず、ユーザーがログインしているかどうかもチェックされませんでした。

これは、攻撃用のPHPファイルを含む、任意のファイルをアップロードできることを意味しました。感染したサイトでZenCartを使用して脆弱性を保護し、問題のあるファイルを削除しました。

仕事は終わり、私は午前2時に家にいました


道徳 -常にZenCartまたはその他のCMSシステムのセキュリティパッチを適用してください。セキュリティ更新プログラムがリリースされると、世界中の人々がこの脆弱性を認識します。-常にバックアップを行い、バックアップをバックアップします。-これらのような時間にそこにいる誰かを雇用または手配します。Server Faultのパニック投稿に依存することを防ぐため。


7
私はあなたの気持ちを知っています-私たちはこのサイトの「役に立つ」ハッカーにとても幸運で、彼らが何をしたかを教えてくれました!将来「あまり役に立たない」ゲストを迎える場合に備えて、この質問に対する素晴らしい回答を楽しみにしています。
ジャロッドディクソン

186
専門家に電話して助けてください!
マーコグ

103
私は賢くて無慈悲でも共感的でもありません(私もそうではありません)、そしてもちろんあなたの状況の詳細については無知ですが、あなたが500-600サイトのセットアップを担当する唯一の人なら、このサーバーの実行方法に根本的な欠陥がある。一部の企業では、1日中何もせずにサーバーを維持する専用のシステム管理者を採用しています。これは、そのように思えても、自動的にプログラマの範囲内にないタスクです。たぶんそれは危機が終わったときに検討する価値があるものです。とにかく、今のところ、手元の状況を解決するのに幸運を祈ります。
ペッカ

カーネルルートキットが完全に使用されており、ルートパスワードが侵害されていると必ずしも想定しないでください。その可能性だけで卑劣なbashの/ perlスクリプト、聖歌隊がここでのハープ何にもかかわらず、整形せずにそれをきれいにすることが可能である... serverfault.com/questions/639699/...
ヘイデンThring

回答:


1015

あなたがここに投稿したものから具体的なアドバイスをするのは難しいですが、私がブログに悩まされる可能性があるときに昔に書いた記事に基づいたいくつかの一般的なアドバイスがあります。

パニックにならないでください

まず最初に、侵入の前に取得したバックアップからシステムを復元する以外に「簡単な修正」はなく、これには少なくとも2つの問題があります。

  1. 侵入がいつ発生したかを特定するのは困難です。
  2. 前回の侵入を許可した「穴」を塞ぐことも、「データ盗難」の結果に対処することもできません。

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

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

個人的に攻撃を受けないでください。また、ここで説明する推奨事項や、他の人から個人的に得た推奨事項を受け入れないでください。あなたがウェブサイトのハッキングの被害者になった後にこれを読んでいるなら、本当に申し訳ありません。ここで何か役立つものを見つけられることを本当に願っていますが、あなたのエゴがあなたが必要とするものを邪魔する時ではありません行う。

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

パニックになるな。絶対に急いで行動しないでください。絶対に行動しないで絶対に行動しないでください。

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

これらのステップのいくつかは傷つきます。(あなたのウェブサイトが私の詳細のコピーを保持していない限り)これらのステップの全部または一部を無視してもかまわないのはあなた次第です。しかし、それらを適切に守ることは、最終的に物事を改善します。薬はひどい味がするかもしれませんが、治療法を本当に有効にしたい場合、それを見落とさなければならないことがあります。

問題がそれ以上に悪化するのを防ぎます。

  1. 最初にすべきことは、影響を受けるシステムをインターネットから切断することです。他の問題が何であれ、システムをWebに接続したままにしておくと、攻撃の継続のみが可能になります。これは文字通り非常に意味があります。誰かに物理的にサーバーを訪問してもらい、それが必要な場合はネットワークケーブルを外しますが、他のことを試みる前に被害者を強盗から切り離します。
  2. 侵入先のシステムと同じネットワーク上にあるすべてのコンピューター上のすべてのアカウントのすべてのパスワードを変更します。いやいや。すべてのアカウント。すべてのコンピューター。はい、そうです、これはやり過ぎかもしれません。一方、そうではないかもしれません。あなたはどちらの方法も知らないのですか?
  3. 他のシステムを確認してください。インターネットに面する他のサービスや、金融データやその他の商業上重要なデータを保持するサービスには特に注意してください。
  4. システムが誰かの個人データを保持している場合は、すぐにデータ保護の責任者に通知し(それがあなたでない場合)、完全な開示を促します。これは難しいことを知っています。私はこれが傷つくことを知っています。多くの企業がこの種の問題をカーペットの下で解決したいと思っていることを知っていますが、ビジネスはそれに対処する必要があります-そして、すべての関連するプライバシー法に目を向ける必要があります。

しかし、あなたの顧客が問題についてあなたに話してもらうのが面倒な場合、あなたが彼らに話さない場合、彼らははるかにイライラし、彼らはクレジットカードの詳細を使用して誰かが8,000ドル相当の商品を請求した後に自分自身を見つけるサイトから盗みました。

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

問題を完全に理解します。

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

検出したエクスプロイトまたはルートキットを単に「修復」して、システムをオンラインに戻さないのはなぜですか。

このような状況では、問題はそのシステムを制御できなくなることです。もうコンピューターではありません。

システムを確実に制御できるようにする唯一の方法は、システムを再構築することです。システムに侵入するために使用されるエクスプロイトを見つけて修正することには多くの価値がありますが、侵入者が制御を取得すると、システムに対して他に何が行われたかを確認できませんシステムをボットネットに組み込み、自分たちが使用したエクスプロイトにパッチを当て、「彼らの」新しいコンピューターを他のハッカーから保護し、ルートキットをインストールします)。

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

誰よりも長くオフラインになりたくない。それは当然です。このウェブサイトが収益を生むメカニズムである場合、すぐにオンラインに戻すというプレッシャーが激しくなります。危機にonlyしているのがあなた/あなたの会社の評判だけであるとしても、これは物事をすぐに元に戻すために多くのプレッシャーを生み出しています。

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

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

将来のリスクを減らす。

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

リスクを排除することはできません。あなたもそうしようとするべきではありません。ただし、どのセキュリティリスクが重要であるかを理解し、リスクの影響とリスクが発生する可能性の両方を管理および軽減する方法を理解する必要があります。

攻撃が成功する確率を下げるために、どのような手順を踏むことができますか?

例えば:

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

攻撃が成功した場合の結果を減らすために、どのような手順を踏むことができますか?

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

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

... そして最後に

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

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


8
方向性のある人々を手に入れるための優れた投稿のために+1 アマチュアサーバーの管理者が初めて「ハッキング」を起こしたときにこのパニックモードに陥るのがどれほど一般的かを知っています。その場所にいるのは大きな間違いですが、それは起こります。希望は、これが同じ人に二度起こらないことです。
アンドリューバーバー

33
+1 "...しかし、これはあなたのエゴがあなたがする必要があることの邪魔をする時間ではない。" これは、システム管理者が時々理解するために重要です。あなたがどんなに知識があっても、あなたよりも知識が豊富で賢い人(悪意のある人もいます)が常に存在します。
-Grahamux

11
素晴らしい答え。しかし、なぜ誰もが「法執行機関に電話する」ステップをオプションとして扱っているのかはわかりません。あなたが他の人のデータに責任がある場合(そして訴訟を心配している場合)、これはあなたがすべきことのリストの最初のものの一つであるべきです。
-wds

8
非常に良い書き方で、たった一つの落とし穴-「一度に影響を受ける可能性のある人に完全かつ率直な開示をする」。名誉あるが、常に正しいとは限らない。妥協に対応するために、ガバナンスのコーナーをカットする必要がある場合がありますが、通常、会社はスラックをカットします...開示するかどうか、具体的にはデータ保護の影響がある場合は、給与等級を超えて問題になる可能性があります法的意味合いがあります。データ保護の責任者(あなたでない場合)に直ちに通知し、完全な開示を促すことを提案する方がよい場合があります。
-TheoJones

5
@GilesRoberts仮想マシンホストには通常、ゲストの設定を操作したり、RDPまたはSSHを使用してゲストに実際にログインせずにそれらをリモート制御したりできるコントロールパネルがあります。ホストのコントロールを使用してゲストを分離し、そのリモート表示ツールを使用して自由にゲストを調査できる必要があります。
ロブモア14年

204

頭の上に少し入っているように聞こえます。それで大丈夫です。上司に電話して、緊急時のセキュリティ対応予算について交渉を開始します。開始するには10,000ドルが適している場合があります。次に、誰か(PFY、同僚、マネージャー)にセキュリティインシデント対応を専門とする会社に電話をかけさせる必要があります。多くの場合、24時間以内に対応できます。都市にオフィスがある場合は、さらに迅速に対応できます。

また、顧客のトリアージを行う誰かが必要です。疑いもなく、すでに誰かがいます。何が起こっているのか、状況を処理するために何が行われているのかを説明し、質問に答えるために、誰かが彼らと電話をする必要があります。

次に、する必要があります...

  1. 落ち着いて。インシデント対応を担当している場合、今やっていることは最大限のプロ意識とリーダーシップを示す必要があります。あなたがするすべてを文書化し、あなたのマネージャーと経営陣にあなたが取る主要な行動を知らせておいてください。これには、対応チームとの連携、サーバーの無効化、データのバックアップ、および物事のオンライン化が含まれます。面倒な詳細は必要ありませんが、30分ごとに連絡があります。

  2. 現実的になります。あなたはセキュリティの専門家ではなく、知らないこともあります。それで大丈夫です。サーバーにログインしてデータを見るとき、制限を理解する必要があります。そっと踏む。調査の過程で、重要な情報を踏みつけたり、後で必要になる可能性のある情報を変更したりしないようにしてください。あなたが不快に感じるか、あなたが推測していると思うなら、それは立ち止まって、経験を積んだ専門家を引き継ぐのに良い場所です。

  3. きれいなUSBスティックと予備のハードドライブを入手します。ここで証拠を収集します。関連すると思われるすべてのバックアップを作成します。警察との通信、ネットワークダンプなど。法執行機関が関与しなくても、訴訟の場合、この証拠により、会社が専門的かつ適切な方法でセキュリティインシデントを処理したことを証明する必要があります。

  4. 最も重要なのは、損失を止めることです。侵害されたサービス、データ、およびマシンへのアクセスを特定して遮断します。できれば、ネットワークケーブルを引っ張ってください。できない場合は、電源を入れます。

  5. 次に、攻撃者を削除し、穴を閉じる必要があります。おそらく、あなたがネットワークを引っ張ったため、攻撃者はもはやインタラクティブなアクセス権を持っていません。次に、(バックアップ、スクリーンショット、および個人的な観察メモを使用して、またはできれば影響を受けるサーバーからドライブを削除し、ディスクイメージのフルコピーを作成することによって)文書化してから、残したコードとプロセスを削除する必要があります。バックアップがない場合は、この次の部分は面倒です。攻撃者をシステムから手で解こうとすることはできますが、彼が残したものをすべて手に入れたことを確信することはできません。ルートキットは悪質であり、すべてが検出できるわけではありません。最善の対応は、侵入に使用した脆弱性を特定し、影響を受けるディスクのイメージコピーを作成し、影響を受けるシステムを消去して、既知の正常なバックアップからリロードすることです。ドン' t盲目的にバックアップを信頼します。確認してください!新しいホストが再びネットワークに接続する前に脆弱性を修復または閉じてから、オンラインにします。

  6. すべてのデータをレポートに整理します。この時点で脆弱性は閉じられ、息をする時間があります。このステップをスキップしたくはありません。残りのプロセスよりもさらに重要です。レポートでは、何が間違っていたのか、チームがどのように対応したのか、このインシデントが再び発生しないようにするための手順を特定する必要があります。できるだけ詳しく説明してください。これはあなただけのものではなく、あなたの管理者や潜在的な訴訟の弁護のためのものです。

それは何をすべきかの非常に高いレビューです。ほとんどの作業は、単に文書化とバックアップ処理です。パニックにならないでください、あなたはそれを行うことができます。プロのセキュリティヘルプを受けることを強くお勧めします。何が起こっているのかを処理できたとしても、彼らの助けは非常に貴重であり、通常はプロセスをより簡単かつ迅速にするための機器が付属しています。上司が犠牲になった場合、訴訟を処理する場合と比較すると非常に小さいことを思い出してください。

あなたの状況に対する慰めがあります。幸運を。


19
+1すばらしい回答。OPには事前に定義された「緊急時対応」がなく、あなたの投稿は、他の良いことの中でも、それらをセットアップする方向に向けるべきだと思われます。
ロブ・モイア

109

CERTには、UNIXまたはNTシステムの侵害から回復するための手順である文書があります。このドキュメントの具体的な技術的詳細はやや時代遅れですが、一般的なアドバイスの多くはまだ直接適用されます。

基本的な手順の簡単な要約はこれです。

  • セキュリティポリシーまたは管理を参照してください。
  • コントロールを取得(コンピューターをオフラインにします)
  • 侵入を分析し、ログを取得し、何が悪かったのかを把握する
  • 修理もの
    • オペレーティングシステムのクリーンバージョンをインストールしてください!!! システムが危険にさらされている場合、それを信頼することはできません。
  • これが二度と起こらないようにシステムを更新する
  • 操作を再開する
  • 将来に向けてポリシーを更新し、文書化する

セクションE.1を具体的に指摘したいと思います。

E.1。マシンが危険にさらされた場合、カーネル、バイナリ、データファイル、実行中のプロセス、メモリなど、そのシステム上のすべてが変更されている可能性があることに注意してください。一般に、マシンにバックドアや侵入者の変更がないことを信頼する唯一の方法は、オペレーティングシステムを再インストールすることです

tripwireのようなシステムがまだ設置されていない場合、システムをクリーンアップしたことを100%確実にする方法はありません。


26
それでも、tripwireはカーネルモジュールなどにだまされる可能性があります。再インストールします。
2009年

危機にどのように対応するかについての関連する質問もここで役立ちます。
ゾレダチェ

67
  1. 問題を特定します。ログを読みます。
  2. 含む。サーバーを切断したので、完了です。
  3. 根絶します。ほとんどの場合、影響を受けるシステムを再インストールします。ただし、ハッキングされたハードドライブのハードドライブを消去しないでください。新しいハードドライブを使用してください。より安全です。バックアップされなかったいハックを回復し、何が起こったのかを調べるためにフォレンジックを行うには、古いものが必要になる場合があります。
  4. 回復します。必要なものをすべてインストールし、バックアップをリカバリして、クライアントをオンラインにします。
  5. フォローアップ。問題が何であったかを把握し、それが再び起こるのを防ぎます。

52

ロバートの「苦い薬」の答えはスポットオンですが、完全に一般的です(まあ、あなたの質問もそうでした)。1台のサーバーと600台のクライアントがある場合、管理上の問題があり、フルタイムのシステム管理者が非常に必要であるように聞こえますが、それは今は役に立ちません。

私はこの状況で少し手をつないでいるホスティング会社を経営しているので、多くの侵害されたマシンに対処しますが、私たち自身のベストプラクティスにも対処します。侵害の性質が完全にわからない場合を除き、侵害されたクライアントに常に再構築するよう指示します。長期的には他に責任のあるルートはありません。

ただし、DoS攻撃、IRCバウンサー、または顧客のサイトやデータとはまったく関係のないものの発射台を望んでいたスクリプトキディの犠牲者はほぼ間違いありません。したがって、再構築中の一時的な対策として、ボックスに重いアウトバウンドファイアウォールを設置することを検討してください。サイトの機能に絶対に必要ではないすべてのアウトバウンドUDPおよびTCP接続をブロックできる場合、侵害されたボックスをあなたから借りている人には簡単に役に立たなくし、プロバイダーのネットワークへの影響をゼロに軽減できます。

このプロセスは、ファイアウォールを考慮したことがない場合は数時間かかる可能性がありますが、攻撃者に引き続きクライアントデータへのアクセスを許可するリスクを冒して、クライアントサービスを復元するのに役立つ場合があります。1台のマシンに何百ものクライアントがいると言っているので、クレジットカード番号でいっぱいの600のeコマースシステムではなく、中小企業向けの小さなパンフレットWebサイトをホストしていると思います。もしそうなら、これはあなたにとって受け入れられるリスクかもしれませんし、何かを持ち帰るにセキュリティバグの600サイトを監査するよりも速くあなたのシステムをオンラインに戻します。しかし、どのデータが存在し、その決定をどの程度快適に受けられるかはわかります。

これは絶対にベストプラクティスではありませんが、それがあなたの雇用主でこれまで起こっていなかった場合、指を振って、SWATチームに彼らが感じるかもしれない何かのために数万ポンドを要求します(ただし不当です! )は実用的なオプションのようには聞こえません。

ここでのISPの支援は非常に重要です-一部のISP は、ネットワークから切断された状態でサーバーを管理できるようにするコンソールサーバーとネットワークブート環境を提供します(プラグインですが、少なくともどのような機能を探すべきかを知っています)。これがオプションである場合は、それを要求して使用します。

しかし、長期的には、Robertの投稿および各サイトとそのセットアップの監査に基づいて、システムの再構築を計画する必要があります。チームにシステム管理者を追加できない場合は、システム管理ヘルプとこの種の24時間対応にISPに支払うマネージドホスティング契約を探してください。幸運を :)


41

再インストールする必要があります。本当に必要なものを保存します。ただし、すべての実行可能ファイルが感染し、改ざんされる可能性があることに注意してください。私はPythonで次のことを書きました:http : //frw.se/monty.pyこれは、指定されたディレクトリ内のすべてのファイルのMD5-sumbsを作成し、次にそれを実行するときに、何かが変更されたかどうかをチェックし、次に何を出力します変更されたファイルとファイルの変更点。

これは、奇妙なファイルが定期的に変更されるかどうかを確認するのに便利です。

しかし、あなたが今やるべき唯一のことは、インターネットからコンピュータを削除することです。


13
だから...あなたはtripwireを実装しました。
ウォンブル

13
はい、何か問題がありますか?
フィリップエクバーグ

1
プラグを抜いて+1し、分析し(誰かに実際のフォレンジックを行わせます)、ワイプします
Oskar Duveborn 2009年

4
匿名のPythonスクリプトと、文書化された(ある程度)サポートされた、よく理解されている標準ソリューションのどちらかを選択した場合、前者を選択することを望んでいますか?
トリプリー14

37

注:これは推奨事項ではありません。私の特定のインシデントレスポンスプロトコルは、Grant unwinのケースには変更されないまま適用されないでしょう

学術施設には、計算のみを行う約300人の研究者がいます。Webサイトを持つクライアントが600あるため、プロトコルはおそらく異なるでしょう。

サーバーが侵害されたプロトコルを取得する際の最初のステップは次のとおりです。

  1. 攻撃者がルート(昇格した特権)を取得できたことを特定する
  2. 影響を受けるサーバーを取り外します。ネットワークまたは電源?別の議論をご覧ください。
  3. 他のすべてのシステムを確認する
  4. 影響を受けるサーバーをライブCDから起動します
  5. (オプション)すべてのシステムドライブのイメージを取得しますdd
  6. 死後の法医学を始めてください。ログを見て、攻撃の時刻を把握し、その時刻に変更されたファイルを見つけます。方法に答えてみてください質問。

    • 並行して、リカバリを計画および実行します。
    • サービスを再開する前に、すべてのルートパスワードとユーザーパスワードをリセットします

「すべてのバックドアとルートキットがクリーンアップされた」場合でも、そのシステムを信頼しないでください-最初から再インストールしてください。


23
-1サーバーの電源を切りますか?フォレンジックデータの半分が失われました!
ジョシュブロウワー

@ジョシュ、私の答えを調整しました-今では何を抜くのかという質問では中立です。
アレクサンドルレフチュク

5
RAMフォレンジック(例/ dev / shm)が役立つ場合があります。電源ケーブルのプラグを抜くのが好きです(ただし、rsync直前にログインして/ procを試してください)。RAMフォレンジックが可能になるように、頻繁にVMスナップショットを導入することもあります。電源ケーブルを使用する理由は次のとおりです。(1)ハッキングされたシステムでフォレンジックを行うと、「犯罪現場全体に足を踏み入れる」ことになります。(2)ルートキットは実行を継続します。悪意のある人がネットワークリンクダウンイベントで何かを実行するのはそれほど難しくありません(システムのワイプアウトなど)。カイル・ランキンは、彼の素敵な「法医学入門」トーク(goo.gl/g21Ok)で、電源ケーブルを引っ張ることを推奨しました。
アレクサンドルレフチュク

4
すべてのIRプロトコルに適合する単一のサイズはありません。一部の組織では、何らかの理由で侵害されたシステムをしばらくの間オンラインに保つ必要があります。(RAMと一時ログのフォレンジック、侵入者とのやり取りなど)私のポイントは、「侵入されたサーバーの電源プラグを引き抜く」
ジョシュブロウワー

31

私の限られた経験では、Linuxでのシステム侵害は、Windowsでの侵害よりも「包括的」である傾向があります。ルートキットには、システムバイナリをカスタマイズされたコードに置き換えてマルウェアを隠すことが含まれている可能性が高く、カーネルのホットパッチの障壁は少し低くなっています。さらに、多くのマルウェア作成者にとってはホームOSです。一般的なガイダンスは、常に影響を受けるサーバーをゼロから再構築することであり、これは理由のための一般的なガイダンスです。

その子犬をフォーマットします。

しかし、再構築できない場合(または、必要な強力な主張に反して再構築できない場合)、何を探しますか?

侵入が発見されてからしばらく経ち、システムの復元が行われたように聞こえるので、サービスを復元するために、それらの侵入の痕跡が踏み台に踏みつけられた可能性が非常に高いです。残念です。

異常なネットワークトラフィックは、ボックスで何も実行せず、サーバーが稼働している間は何でも実行できるため、おそらく最も簡単に見つけることができます。もちろん、ネットワーク機器がポートスパニングを許可していると仮定します。あなたが見つけたものは診断であ​​るかもしれないし、そうでないかもしれないが、少なくともそれは情報である。異常なトラフィックを取得することは、システムが依然として危険にさらされており、フラット化が必要であるという強力な証拠となります。再フォーマットにはダウンタイムの価値があるとTPTBに確信させるのに十分かもしれません。

それに失敗したら、システムパーティションのddコピーを取り、別のボックスにマウントします。侵害されたものと同じパッチレベルでサーバーとコンテンツの比較を開始します。異なる外観(md5sumの場合)を識別するのに役立ち、侵害されたサーバー上の見落とされた領域を指す場合があります。これは、ディレクトリとバイナリをふるいにかけることが多く、かなり手間がかかります。再フォーマット/再構築よりも労働集約的である場合があり、実際に必要な再フォーマットを実際に行うことについてTPTBを見つける別のことかもしれません。


2
「その子犬をフォーマットします。」-+1、賢明なアドバイス。参照:「軌道からそれを核にしなさい。それが唯一の確実な方法です。」
エイブリーペイン

31

@Robert Moir、@ Aleksandr Levchuk、@ blueben、および@Matthew Blochはすべて、彼らの回答でほとんどスポットオンです。

ただし、さまざまなポスターの回答は異なります。一部はより高度なもので、どの手順を(一般的に)実施すべきかについて説明しています。

これをいくつかの個別の部分に分けることをお勧めします1)トリアージ、別名顧客と法律上の意味に対処する方法、そこからどこに行くかを特定する(Robertと@bluebenによって非常によくリストされています2)影響の緩和3 )インシデント対応4)死後の法医学5)修復項目とアーキテクチャの変更

(ここにボイラープレートSANS GSC認定応答ステートメントを挿入)過去の経験に基づいて、私は次のように言います:

顧客の応答、通知、法的、および将来の計画をどのように処理しているかに関係なく、当面の主な問題に焦点を当てたいと思います。OPの元々の質問は、実際には#2と#3に直接関係しているだけです。基本的には、攻撃を阻止し、顧客を元の状態にできるだけ早くオンラインに戻す方法です。

残りの回答は素晴らしく、特定されたベストプラクティスの多くと、将来発生するのを防ぎ、より適切に対応する方法の両方を網羅しています。

それは、OPの予算と、OPが属する業界のセクター、希望するソリューションの種類などに大きく依存します。

たぶん彼らは専用のオンサイトSAを雇う必要があります。たぶん彼らは警備員を必要とします。または、FirehostやRackspace Managed、Softlayer、ServePathなどの完全に管理されたソリューションが必要な場合もあります。

それは本当に彼らのビジネスのために働くものに依存します。おそらく彼らのコアコンピテンシーはサーバー管理ではなく、彼らがそれを開発しようとすることは意味がありません。あるいは、彼らはすでにかなり技術的な組織であり、適切な採用決定を下し、専任のチームをフルタイムで雇うことができます。


1
ええ、それは依存します、私たちは知っています。それはあまり役に立たないという。
-DOK

27

仕事に取り掛かり、サーバーを調べた後、問題を解決することができました。幸いなことに、問題のファイルは日曜日にシステムにアップロードされました。この日曜日はオフィスが閉鎖されており、ログとキャッシュファイルを除き、ファイルを作成する必要はありません。その日に作成されたファイルを見つける簡単なシェルコマンドを使用して、それらを見つけました。

問題のあるファイルはすべて、古いzencartサイトの一部の/ images /フォルダー内にあったようです。管理セクションの画像アップロードセクションに非画像をアップロードすることを(curlを使用して)許可するセキュリティ脆弱性があったようです。問題のある.phpファイルを削除し、アップロードスクリプトを修正して、画像ではないファイルのアップロードを禁止しました。

振り返ってみると、それは非常に簡単で、仕事に行く途中でiPhoneでこの質問を提起しました。助けてくれてありがとう。

将来この投稿を訪れる人の参考のために。電源プラグを抜くことお勧めしません


グラント、あなたにとって非常にスムーズに機能したことをうれしく思います。それはマイナーなものでした-私たちの多くが想定したよりもはるかに深刻ではありませんでした。この議論は、コミュニケーションについての教訓を教えてくれました。多くの良いヒントと、下品な反応についての考えを与えてくれました。
アレクサンドルレフチュク

3
戻って来て、どうやって始めたのか教えてくれてありがとう-ご覧の通り、あなたの質問は非常に多くの議論を生み出しました。これでそれほどひどい打撃を受けていないようで、最終的にあなたの解決策は非常に簡単だったことをうれしく思います。
ロブ・モイア

5
これは、質問への回答ではなく、コメント(または質問にテキストとして含める)である必要があります。
-Techboy

5
@Techboy:SOアカウントとSFアカウントはまだ関連付けられていないようなので、質問を編集することはできません。@Grant:ユーザーページの[アカウント]パネルからアカウントを関連付けることができます。
カバ

1
ベースライン構成なしで、ルートキットを実行していないことをどのように知っていますか?
Unix Janitor

18

広範な技術的な回答に貢献することはほとんどありませんが、これらのいくつかにも注意してください。

非技術的なアクション:

  • インシデントを内部的に報告します。
    CYAテクニックのように思われるインシデント対応計画をまだ持っていない場合でも、侵害されたサーバーのビジネスへの影響を判断するのに最適な場所はIT部門だけではありません。
    ビジネス要件は、技術的な懸念よりも優先される場合があります。「そう言った」と言わないでください。ビジネス上の懸念の優先順位は、そもそもこの侵害されたサーバーを持っている理由です。(「アフターアクションレポートのために残します。」)

  • セキュリティインシデントを隠蔽することはオプションではありません。

  • 地方自治体への報告。
    ServerFaultは法的助言の場ではありませんが、これはインシデント対応計画に含めるべきものです。
    一部の地域および/または規制産業では、現地の法執行機関、規制機関のいずれかにセキュリティインシデントを報告するか、影響を受ける顧客/ユーザーに通知することが必須です。
    とにかく、報告するという決定も実際の報告も、IT部門のみで行われるわけではありません。経営陣、法務および企業のコミュニケーション(マーケティング)部門の関与を期待してください。
    インターネットは国境があまり意味のない大きな場所ですが、多くの警察署に存在するサイバー犯罪部はデジタル犯罪を解決し、正義に罪をもたらす可能性があります。


16

私はそれがすべてこれに要約すると思う:

仕事を大切にするなら、計画を立てて、定期的に修正する方がよいでしょう。

計画に失敗すると失敗することを計画しており、システムセキュリティ以外のどこにも当てはまりません。とき<編集済み>ファンを打つ、あなたはより良いそれに対処する準備ができてと思います。

ここに当てはまるもう1つの(やや決まり文句)があります:予防は治療よりも優れています

ここには、既存のシステムを監査する専門家を集めるための多くの推奨事項があります。これは間違ったタイミングで質問をしていると思います。この質問は、システムが導入されたときに尋ねられ、回答が文書化されていたはずです。また、質問は「どうすれば人々が侵入するのを止めることができますか?」であってはなりません。「なぜ人々はまったく侵入できるはずなのか?」ネットワーク内の多数のホールの監査は、新しいホールが発見され利用されるまで機能しません。一方、慎重に振り付けられたダンスの特定のシステムに特定の方法でのみ応答するようにゼロから設計されたネットワークは、監査の恩恵をまったく受けず、資金は無駄になります。

インターネットにシステムを設置する前に、自問してください-これは100%インターネットに向いている必要がありますか?そうでない場合は、しないでください。インターネットの表示内容を決定できるファイアウォールの内側に配置することを検討してください。さらに良いことに、前述のファイアウォールで(リバースプロキシまたは何らかのパススルーフィルターを介して)送信を傍受できる場合は、それを使用して正当なアクションのみを許可することを検討してください。

これは既に行われています。インターネットに面した負荷分散プロキシがサーバーのプールからベクトル攻撃を仕向けるために使用するインターネットバンキングのセットアップがあります(またはありました)。セキュリティエキスパートのMarcus Ranumは、リバースプロキシを使用して既知の有効なURLのみを許可し、他のすべてを404サーバーに送信することで、反対のアプローチを取るよう説得しました。驚くほどうまく時の試練に耐えました。

デフォルトの許可に基づいたシステムまたはネットワークは、予期しない攻撃が発生すると失敗する運命にあります。デフォルトの拒否では、何が入ってくるか、何が入らないかをはるかに制御できます。なぜなら、うまくいく必要がない限り、内側からは何も見えないからです

とはいえ、これはすべて満足する理由ではありません。違反後の最初の数時間は、引き続き計画を立てる必要があります。完璧なシステムはなく、人間は間違いを犯します。


15

最近、すてきなオンライン担当者が、攻撃者がシステムを侵害する方法を見つけるのを助けてくれました。一部のクラッカーは、ファイルの変更時間を偽造してトレースを隠そうとします。変更時刻を変更すると、変更時刻が更新されます(ctime)。statでctimeを確認できます。

この1つのライナーには、ctimeでソートされたすべてのファイルがリストされます。

find / -type f -print0 | xargs -0 stat --format '%Z :%z %n' | sort -nr > /root/all_files.txt

そのため、侵害の時期を大まかに知っている場合、どのファイルが変更または作成されたかを確認できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.