もし誰かが気づいていたら、今日の午前 11 時まで、ブログはアクセスできませんでした。|| 私以外にも誰か気づきましたか...?||
私はキャッシュの問題だと思って放置しました。しばらくしてもアクセスできないことに気づきました。それでサーバーを再起動しましたが、エラーが表示されたままでした。
何か問題が起きたかもしれません。SSH でログインし、すべてのサービスをチェックしました。しかし、すべてが「正常に動作している」と表示されました。
そして、偶然にも Navicat を開いてしまい、MongoDB に接続しました。突然、すべてのブログデータが消去されていることに気づきました。さらに、READ__ME_TO_RECOVER_YOUR_DATA.README
というデータベースもありました。データベース内にはビットコインの取引アドレスがあり、お金を支払えば復元できるという意味のようです。
** お金を払うことは不可能です。** 以下では、私の回復プロセスについて説明します。
ハッカーがデータベースに接続する方法#
まず、ハッカーが私のデータベースにどのように接続したのかを理解する必要があります。そうしないと、回復したコンテンツが上書きされる可能性があります。
昨夜、データベースの修復のために Navicat でログインする必要があったことを思い出しました。しかし、私は普段 MariaDB を使用しているため、MongoDB のコマンドをほとんど忘れてしまいました。
したがって、ChatGPT に一連のコマンドを生成してもらうことにしました。これにより、特定のアカウントとパスワードを使用してログインできるようになりました。詳細は見ていませんが、貼り付けるだけでリモートログインできるようになりましたので、特に気にしませんでした。
このように考えると、おそらくそれらのコマンドに問題があるのかもしれません。コマンドの内容を確認しました。見ると驚きました。ChatGPT がリモートログイン権限を開き、ファイアウォールを閉じました。さらに、createUser()
の後、認証を開始しなかったのです!
これはつまり、誰でもソースサーバーの IP アドレスを手に入れれば、リモートでデータベースにログインできるということです。幸いなことに、現在のサイトは Cloudflare によって保護されているため、理論上はソース IP が隠されています(ただし、理論上です。特定の技術を使用すれば、ソース IP を特定することもできます。|| 探してみれば、無料の類似の IP 検索サービスもあります ||)。
したがって、ハッカーがソースサーバーの IP アドレスを手に入れるのはおそらく自動化プログラムによるブルートフォース攻撃です。
削除されたコンテンツの確認#
ハッカーが私のデータを手に入れたと主張しているため、まずは自動化プログラムがどのようなデータを手に入れ、脆弱性を残していないかを確認する必要があります。
すべてのソフトウェアは私自身がインストールおよび設定したものなので、データベースのログを簡単に取得できます。
{"t":{"$date":"2024-07-19T03:07:24.728+08:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"37.120.206.51:38104","uuid":{"uuid":{"$uuid":"20875d27-2321-452c-a717-1520dd7816f4"}},"connectionId":43,"connectionCount":27}}
{"t":{"$date":"2024-07-19T03:07:24.729+08:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn43","msg":"client metadata","attr":{"remote":"37.120.206.51:38104","client":"conn43","negotiatedCompressors":[],"doc":{"driver":{"name":"PyMongo","version":"4.6.1"},"os":{"type":"Linux","name":"Linux","architecture":"x86_64","version":"5.4.0-189-generic"},"platform":"CPython 3.8.10.final.0"}}}
すぐに、ルーマニアの IP が最初に私のデータベースにログインしたことがわかります。使用されたのはPythonで、ブルートフォース攻撃のソースサーバーの IP アドレスです。
その後、残りのログをチェックし、drop
されたデータベーステーブルを見つけ、READ__ME_TO_RECOVER_YOUR_DATA.README
を作成した後、すぐにログアウトしました。全体のプロセスはわずか 25 秒でした。
その後、他の IP のログインも見ることができましたが、同じプロトコルであり、ほぼ同じ内容でした。これが繰り返された後、午前 8 時に最後のREAD__ME_TO_RECOVER_YOUR_DATA.README
が作成されました。おそらくこれらのサーバーは同じハッカーによって計画されたものです。
しかし、私はログを一つ一つ確認しましたが、drop
操作の後、きちんとログアウトされていました。新しいコンテンツは挿入されていないことも証明されました。
これはファイルシステムと SSH が安全であることを示しており、したがって回復は非常に簡単です。
データの回復#
まず、opLog を思い出しましたが、レプリケーションセットを開始していなかったため、この解決策はスキップしました。
その時、返金の準備をしていた Alibaba Cloud のサーバーを思い出しました。昨夜は遅かったため、簡単にリモートログインしてデータベースの内容を取得できました。ただし、データベース内のコンテンツは古く、7 月 18 日の日記が欠落しています。しかし、日記はxLogに同期されていましたので、簡単に回復できます。
しかし、自分がとても怠惰なので、他の解決策はないか考えました。その時、mx-space には毎日午前 1 時に全サイトのバックアップが自動的に作成される自動バックアップシステムがあることを思い出しました。つまり、ハッカーがアクセスする前のデータを実際に持っているということです。SSH を使用して、バックアップファイルを簡単に見つけることができました(私は Docker などの技術を使用していないため、すべてのファイルの場所を知っています || ただし、Docker を使用している場合は別の話です ||)。
その後、バックアップファイルをアップロードして問題が解決しました!
再発防止策#
|| まずは ChatGPT を追跡します。このものはすぐに間違いを認めました。||ChatGPT に質問する場合は、何をしたのかを確認する必要があります。
私はファイアウォールを有効化し、MongoDB の外部ログインを無効化しました(データは既に移行されていましたので)。自分の見落としを防ぐために、Tencent Cloud のパネルで 80 番ポートと 22 番ポート以外のすべてのポートをブロックしました。
また、毎日の自動データバックアップを継続しました。
問題はこれで解決しました。
もしもあなたもサーバーを持っている場合...#
もしもあなたもサーバーを持っている場合は、データベースと SSH のセキュリティと認証が正しく設定されているかどうかを必ず確認してください!
また、データを回復するためにお金を支払わないでください!以下の理由があります:
- 非常に高価で、支払う余裕がありません。
- 類似の状況を検索すると、お金を支払った後、「ハッカー」はデータを回復せず、お金を搾り取るまで価格を引き上げ続けます!
- 多くのログイン記録が 1 晩に行われました。お金を支払っても、回復されるのは前の
READ__ME_TO_RECOVER_YOUR_DATA.README
だけです。 - ハッカーのところにはあなたのデータは存在しません。以下の証拠があります:
- ログを見ると、自動化プログラムは
drop
とcreate
のみを実行し、あなたのデータをコピーしていませんでした。 - 大量のデータがあり、Tencent Cloud のパネルによると、ハッカーは数百 KB のトラフィックしか生成していませんでした。
- データを
drop
するコマンドの前にコピーする必要がある場合、ハッカーはすべてのコピーを 1 秒以内に完了する必要があります。しかし、私のサーバーの帯域幅に基づいて、これは不可能です。
- ログを見ると、自動化プログラムは
定期的なバックアップを忘れないでください。毎日バックアップを取得している人だけが笑って、回復プロセスの記録を平静に書くことができます。
この記事はMix SpaceからxLogに同期されました。
元のリンクはhttps://oimaster.top/posts/soft-engi/recu-dataです。