Reddit で人気のある最近の Home Assistant の投稿の一部では、マイアミ ガーデンズに住む誰かのスマート ホームがインターネットに公開されていたことが明らかになりました。他の人は照明を消したり、デバイスの名前を変更したりする可能性があります。これはすべて、MQTT ブローカーが公開されており、セキュリティで保護されていなかったことが原因でした。
同じセキュリティ問題の被害に遭わないようにする方法を次に示します。
スマート ホームにはゲスト モードが必要です。セットアップ方法は次のとおりです。
専用ゲスト モードは、あなたにとってもゲストにとっても優れています。
スマートホームが MQTT を使用する理由
スマートデバイスの効率的な通信
MQTT は、Message Queuing Telemetry Transport の略です。名前は複雑に聞こえるかもしれませんが、コンセプトは非常にシンプルです。これは、パブリッシュ/サブスクライブ モデルを使用する軽量のメッセージング プロトコルです。 1 つのデバイスがメッセージを「パブリッシュ」し、別のデバイスがそれらのメッセージを「サブスクライブ」できます。
たとえば、温度センサーは現在の温度を 10 分ごとに発行する場合があります。スマート ホーム ソフトウェアは、これらのメッセージをサブスクライブして、現在の温度測定値を確認できます。
このプロセスの鍵となるのは MQTT ブローカーです。ブローカーは、パブリッシャーから情報を受け取り、それを関連するサブスクライバーに渡す責任を負います。パブリッシャーとサブスクライバーは、相手の存在を知る必要はありません。 MQTT ブローカーは、メッセージが必要な場所に確実に到達することを担当します。
MQTT は高速かつ低帯域幅で、スマート ホーム センサーやマイクロコントローラーなどの単純なデバイス上で実行できるため、スマート ホームに最適です。たとえば、Home Assistant では、MQTT を使用して、Zigbee デバイスが Zigbee2MQTT を使用して Home Assistant サーバーに情報を渡すことができるようになります。
ブローカーがどのようにしてインターネット上に公開されてしまうのか
パブリック MQTT ブローカーの使用を避ける
スマート ホームとデバイスが MQTT を使用して通信するには、メッセージのルーティング ジョブを処理できる MQTT ブローカーを実行する必要があります。これは、センサーとスマート ホーム間のすべての通信がローカル ネットワーク上で行われるように、自宅内でローカルに実行する必要があります。
マイアミ ガーデンズの人の場合は、独自の MQTT ブローカーをセットアップするのではなく、パブリックの MQTT ブローカーを使用していたようです。このブローカーはインターネットにアクセスできる誰でもアクセスできるため、他の人は MQTT ブローカーからマイアミ ガーデンズ スマート ホームにメッセージを送信できました。適切なコマンドを使用すれば、照明のオン/オフなど、接続されたスマート ホーム デバイスを誰でも制御できます。
ほとんどの場合、スマート ホームにパブリック MQTT ブローカーを使用する必要がある本当の理由はありません。一部のガイドでは、テスト目的でこれを行うと述べている場合がありますが、これはマイアミ ガーデンズにいる人が行ったことである可能性があります。 AI チャットボットが間違った情報を吐き出し、ユーザーにパブリック MQTT ブローカーを使用するようアドバイスした可能性があります。
わかりやすくするために、これは行わないでください。 MQTT ブローカーは常に自分のデバイス上でローカルに実行する必要があります。信じられないほど軽量です。必要に応じて Raspberry Pi Zero 上で MQTT ブローカーを実行できるため、独自のブローカーをホストしない理由はありません。
- ブランド
-
ラズベリーパイ
- CPU
-
クアッドコア 64 ビット ARM Cortex-A53
Raspberry Pi Zero 2 W は超小型で非常に手頃な価格ですが、さまざまな DIY プロジェクトに十分なコンピューティング能力を備えています。これを使用して、Klipper/Mainsail 用のハンドヘルド レトロ ゲーム コンソール、超コンパクトなホーム サーバーやメディア サーバーなどを作成できます。
MQTT ブローカーがパブリックにアクセス可能かどうかを確認する方法
ローカルで公開されていないことを確認してください
MQTT ブローカーが公開されているかどうかを確認する簡単な方法は、ホーム ネットワークの外部から MQTT ブローカーにアクセスしてみることです。携帯電話の Wi-Fi をオフにして、パブリック IP アドレスとポート 1883 を渡す MQTT Explorer などのアプリを使用できます。携帯電話ネットワーク経由で MQTT ブローカーに接続できる場合、MQTT ブローカーは公開されます。
ホーム アシスタントで、MQTT ブローカーがパブリック Web アドレスではなくローカル IP アドレスを使用して設定されていることを確認します。に行く 設定 > デバイスとサービスを開きます。 MQTT 統合を選択し、 三点 アイコン。選択 再構成。それを確認してください ブローカ 外部 URL ではなく、ローカル IP アドレスまたは内部ホスト名に設定されます。また、強力なパスワードが設定されていることを確認する必要があります。
独自の MQTT ブローカーを実行する場合 (絶対に実行する必要があります)、それが家の外に公開される可能性が最も高いのは、ポート転送を設定しているためです。ポート 1883 をホーム サーバーに転送すると、インターネット上の誰でもそれにアクセスできます。これは、ユニバーサル プラグ アンド プレイ (UPnP) などの機能を使用している場合にも誤って発生する可能性があります。
Shodan などのオンライン サービスを使用し、パブリック IP アドレスを提供することで、MQTT ブローカーが外部に公開されているかどうかを確認できます。これにより、パブリック IP 上で公開されたサービスを確認できるようになります。コマンドラインから nmap を使用しても同様の効果が得られます。
MQTT ブローカーをロックダウンする
セキュリティが鍵です
誤って MQTT ブローカーを公開し、それがセキュリティで保護されていない場合、地球の反対側にいる見知らぬ人が電気を消し始めたり、さらに悪いことに起こる可能性があります。このため、匿名接続を許可しないことが重要です。良いニュースは、Home Assistant の MQTT 統合が匿名接続をサポートしていないことです。
ポート転送も避けるようにしてください。転送ポート 1883 を使用すると、照明をリモートで制御できますが、他の人も制御できる可能性があります。ホーム アシスタントにリモートでアクセスするための、より安全なオプションは他にもたくさんあります。 TLS 暗号化を有効にし、ポート 8883 を使用することで、MQTT ブローカーのセキュリティを向上させることができます。
他の人にライトを消させないでください
これは珍しい例ですが、スマート ホームを正しく設定しない場合に何が起こるかを示しています。 Reddit ユーザーは、いくつかの照明を点けたり消したりすること以上に悪意のあることをしていませんでしたが、悪意のある者はさらに悪いことをする可能性があります。