怠惰なリバース プロキシ設定により、暗号化ボットネットがホーム サーバーをハイジャックする仕組み

in tech

私はよくホームラバー向けのベスト プラクティスについて書きますが、常に自分自身のアドバイスに従うわけではありません。最近、私のホームラボが侵害され、暗号ボットがサーバーの CPU を 100% で実行し始めたとき、このことが私のお尻に刺さりました。これを修正するために私が行ったことは次のとおりです。

以前は、ほとんどすべてのセルフホステッド サービスをリバース プロキシを使用してインターネットに公開していました

これでリモートアクセスが簡単になりましたね。

数年前、私は自宅の研究室から離れて旅行に行きました。 Raspberry Pi 3b に VPN をセットアップしていましたが、いくつかのサービスが停止し、修正する必要がありました。私の VPN は遅くてラグがあり (Pi 3b の 10/100Mbps ポートのおかげで)、サービスを試したり修正したりするのに耐えられない状況になっていました。

そこで、サーバーに VPN 接続している時間を利用して、ネットワーク上のすべてを基本的にリバース プロキシすることにしました。そうすれば、自宅にいないときに管理する必要があったセルフホスト型サービスにリモートでアクセスするのが簡単になります。副次的な利点は、すべてのサービスが FQDN (完全修飾ドメイン名) を持っているため、自宅にいてもサービスに簡単にアクセスできることでした。

問題は、多くのホームラバーが同じ間違いを犯していることです。 Nginx Proxy Manager または Cloudflare Tunnels をセットアップしたら、数回クリックするだけで、すべてのサービスをネットワーク外で利用できるようにするのは簡単です。これらのサービスに外部からアクセスできるのは便利ですが、私が発見したように、それは間違いなく正しい選択ではありません。

最近、ほとんどのデバイスに Tailscale をインストールしており、2.5Gb/秒の LAN 接続と 1Gb/秒の WAN 接続を備えたサーバー上で動作しています。問題は、リバース プロキシの背後にまだ多くのサービスが残っていることです。なぜなら、壊れていないとしても、壊れていたからです。

再インストールした qBittorrent コンテナが私の失敗でした

コンテナを切り替えたのにパスワードをリセットするのを忘れてしまいました…おっと

qBittorrentのロゴ

最近、私はホームラボ全体をシャッフルし、サービスをあるノードから別のノードに移動し、サービスを再インストールしてサービスの堅牢性を高めました。qBittorrent もそのサービスの 1 つでした。

新しいコンテナに切り替えるときに、qBittorrent の構成情報のほとんどを移動しました。問題は、実際にパスワードを設定していないことです。最後に新しい qBittorrent コンテナをデプロイしてからかなり時間が経ったため、ログにパスワードが生成され、ユーザー名が admin に設定されていることを完全に忘れていました。正直に言うと、設定ファイルを移動すると、ユーザーとパスワードが古いサーバーから新しいサーバーに移動されると思っていましたが、それは間違いでした。

私が知らなかったのは、インターネットを積極的にスクレイピングして、公開されている qBittorrent 管理 Web UI をブルートフォースで突破するボットネットが存在するということです。ユーザー名として admin を使用しておらず、パスワードも 48 文字でランダムに生成されていたため、これまで彼らの餌食になったことはありませんでした。

ただし、新しいコンテナには 8 文字のパスワードがあり、ユーザー名として admin が使用されており、そこから問題が発生しました。ランダムに生成されたパスワードが含まれていたとしても、それはわずか 8 文字であり、ボットネットにとってブルート フォース攻撃が比較的容易でした。そのため、ユーザー名 admin と簡単に破られるパスワードを使用していた私の qBittorrent インスタンスが侵害され、ボットネットが侵入しました。

qBittorrent インスタンスに入ると、ボットネットはテスト トレントをダウンロードして、必要な適切なアクセス許可があることを確認しましたが、その後オフになりました。仮想通貨マイナーがすぐにサーバー上で作業を開始し、私の CPU コアを 100% に固定し始めました。そのとき、何が起こっているのかに気づき、それを修正するために取り組み始めました。

間違いやすいですが、結果は深刻になる可能性があります

ありがたいことに修正はそれほど難しくありませんでしたが、最初から修正する必要はありませんでした

前面にハッキングされたアイコンとその周囲にいくつかの破損したファイルがある Internet Archive の図。 クレジット: Lucas Gouveia / How-To Geek

私の qBittorrent クライアントは、Lenovo RD440 ラックマウント サーバー上で実行されていますが、決して静かではありません。通常はかなり寒いですが、私のオフィスは窓に取り付けられたエアコンで涼しく、ストレスもあまりないので、ファンが実際に回転することはありません。しかし、暗号マイナーは両方の Xeon CPU で 100% の CPU 使用率で実行され、通常は低騒音のサーバーをジェット エンジンに変えました。

これにより、何が起こっているのかを確認するためにすぐにシステムに飛び込むことができました。間違ったプロセスを見つけて強制終了することができ、qBittorrent クライアントにアクセスしてパスワードを変更しました。そこからは安全だと思ったのですが、ボットネットがアップロードした野良 torrent を見逃し、qBittorrent 設定に加えられた変更も見逃してしまいました。

最終的に、qBittorrent コンテナを最初から再インストールし、すべての ISO 状態を以前の状態に戻し、ハッキングは終了しました。何が起こっているのか、どう修正するのかを理解するのに 1 ~ 2 時間かかりましたが、最終的には制御下に戻りました。


私のホームラボの安全性は、私が作ったものと同じくらい安全です。そして、私はそれをかなり安全ではないものにしてしまいました

この小さな冒険からすべてを制御下に戻すために私はまだ取り組んでいますが、それは私にいくつかのことを示しました。ホームラボを運営して 5 年以上セキュリティ侵害がなかったからといって、今後もセキュリティ侵害が起こらないとは限りません。

ホームラボのベスト プラクティスには理由があってベスト プラクティスであり、すべてのサービスを外部からアクセスできるリバース プロキシの背後に置くことは、決してベスト プラクティスではありません。

今後数週間かけて、ホームラボのセキュリティを徹底的に強化し、サービスを外部ドメイン名から内部リバース プロキシ ドメイン名に移動し、再びアクセスするには VPN が必要になるようにする予定です。より高速なシステム上の Tailscale は、Pi 上の古い VPN よりも応答性がはるかに優れています。サービスを必要な方向に適切に移行する時期が来ました。

関連記事

前の投稿
私が RTX 5060 よりも Intel の 12GB Battlemage GPU を積極的に推奨する理由
次の投稿
このコードを使用すると、eufy Robot Vacuum S2 が 250 ドル節約されます

関連記事