もし誰かが気づいていたら、今日の午前 11 時までブログにアクセスできませんでした。|| 私以外にも誰か気づきましたか...?||
私はキャッシュの問題だと思って放置しました。しばらくしてもアクセスできないことに気づきました。それでサーバーを再起動しましたが、エラーが表示され続けました。
何か問題が起きたようです。SSH でログインして、すべてのサービスをチェックしました。しかし、すべてが「正常に動作しています」と表示されました。
そして、偶然にも Navicat を開いて MongoDB に接続しました。すると、すべてのブログデータが消去されていることに気づきました。さらに、READ__ME_TO_RECOVER_YOUR_DATA.README
というデータベースもありました。そのデータベースにはビットコインの取引アドレスが含まれており、お金を支払えばデータが復元されるという意味のようです。
** お金を払うことはできません。** 以下では私の復旧プロセスについて説明します。
ハッカーがデータベースに接続した方法#
まず、ハッカーが私のデータベースにどのように接続したのかを理解する必要があります。そうしないと、復元された内容が上書きされる可能性があります。
昨夜、データベースにログインして移行のエラーを修正するために Navicat を使用する必要があったことを思い出しました。しかし、私は普段 MariaDB を使用しているため、MongoDB のコマンドをほとんど忘れてしまいました。
そのため、ChatGPT に一連のコマンドを生成してもらうように頼みました。これにより、特定のアカウントとパスワードでログインできるようになりました。詳細をよく見ていませんが、貼り付けるだけでリモートログインできるようになりましたので、特に気にしませんでした。
そう考えると、おそらくそれらのコマンドに問題があるのかもしれません。コマンドの内容をチェックしました。見ると驚いてしまいました。ChatGPT がリモートログインの権限を開き、ファイアウォールを閉じました。さらに、データベース内のcreateUser()
の後、認証が開始されませんでした!
これはつまり、誰でもソースサーバーの IP アドレスを手に入れれば、リモートでデータベースにログインできるということです。幸いにも、現在のサイトは Cloudflare によって保護されており、理論的にはソース 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です。