web-dev-qa-db-ja.com

MQTTのセキュリティ-トピックにサブスクライブする乱用者を防ぐ方法は?

MQTTの設定と作業がすべて完了しました。 IBM wmqtt.jarとMosquittoブローカーを使用しています。

My Javaサーブレットは、ブローカーへのMQTTConnectionを作成し、トピック「AndroidDeviceID/myAppName」の下で公開します。

Androidクライアントは同じトピックにサブスクライブします...

私のように、誰かが私のユーザーのデバイス名を知っていれば、簡単なAndroidアプリを作成し、私のMQTTブローカーでそのトピックにサブスクライブできます。その後、すべての通知を受け取ります(このユーザーからのケースインスタントメッセージングメッセージ).

これはどのように適切に回避されますか?

26

Mosquittoは、ユーザー名とパスワードの認証、およびアクセス制御リストを使用したトピックへのアクセス制限により、セキュリティを提供します。 mosquitto.confのmanページに詳細があります: http://mosquitto.org/man/mosquitto-conf-5.html

16
ralight

ACLは、トピックへのサブスクライブするクライアントを制限するものです。私はそれを行うためにauth-pluginを使用しています。これがリンク mosquitto auth plugin です。

6
achuth

一般に、MQTTは元々クローズドセンサーネットワークで使用するように設計されていたため、MQTTはセキュリティを非常に「軽量」に保ちます。たとえば、ブローカーの実装によります。 SSLを使用して、ユーザー名/パスワードのバックエンドの処理方法を決定します。

メッセージデータの暗号化は、プロトコル自体によって提供されることはほとんどありません。これが重要な場合は、通常、アプリケーション層で行われます。

3
Andy Piper

トピックのアクセス制御と許可を処理するよりカスタムな方法が必要な場合は、HiveMQ MQTTブローカーを使用してみてください。ドキュメントで説明されているように、プラグインを使用して独自の動作を実装できます。このアプローチにより、クライアント、パブリッシュ、サブスクライブの認証と承認の処理方法を完全に決定できます[1]。興味がある場合は、独自のプラグインで開始する最善の方法をここで説明します[2]。

ちなみに、HiveMQ [3]のTLSを構成するのも非常に簡単です。

クリスチャン(HiveMQチーム)

[1] http://www.hivemq.com/docs/plugins/1.5.0/#auth-permission-chapter

[2] http://www.hivemq.com/documentations/getting-started-plugins/

[3] http://www.hivemq.com/docs/hivemq/1.5.0/#hivemqdocs_ssl_tls

2
Christian Götz