バイ Hema
モノのインターネット(IoT)のエコシステムが、世界中から数十億台のデバイスを接続 産業機械へのホーム オートメーション システム。 小規模なIoTネットワークと連携しているか 管理された環境または大規模、エンタープライズレベルのIoTエコシステム、セキュリティの実装 見逃せない。 アクセス制限のあるクローズドネットワークの実装でも、アクセスの危険性 内部攻撃、不正なデバイスアクセス、データ侵害はまだ存在します。 弱いセキュリティ デプロイメントのあらゆる規模での慣行は、機密データを公開し、デバイスの完全性を損なうことができます。 システム全体を消滅させます。 このガイドでは、IoT のセキュリティ プラクティスを探求し、方法に焦点を当てます。 実装するMQTTによるセキュリティ対策(Paho(client)とCrystalMQ(server)の一例を持つメッセージキューイングテレメトリートランスポート。
IoTエコシステムの確保の第一歩は、様々な理解が進んでいます。 脆弱性:
これらのリスクを軽減するには、クライアントとサーバー側のセキュリティプロトコルの両方を実装することが重要です。 データの暗号化と安全なホスティングを確保するだけでなく、
MQTTの特長効率的な通信のために設計された軽量プロトコル IoTデバイスとセントラルサーバー間で 禁忌のデバイスにとって理想的ですが、そのシンプルさはそのようなセキュリティ上の課題につながることができます として:
これらの問題を克服するために、MQTTは、このようなセキュリティの追加の層を必要とします暗号化のためのSSL/TLS, デバイス認証、アクセス制御リスト(ACLs)の認証
使い方Python MQTTクライアント例として、安全な接続を確立する方法を見てみましょう。 サーバ。 重要なセキュリティ設定は次のとおりです。
セキュリティの第一層は基本認証です。 Pahoは、これをセットアップするための簡単な方法を提供します 設定。
インポート paho.mqtt.client として mqtt
クライアント = mqtt.Client()
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 認証のユーザー名とパスワードを設定する
client.username_pw_set(username="client_user") は、 パスワード="client_password"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ブローカーに接続する
client.connect(「broker.example.com」、1883、60)
クライアント.loop_start()
転送中のデータを保護するには、TLS/SSL を有効にする必要があります。 Paho は、シンプルな SSL をサポート 構成:
インポート paho.mqtt.client として mqtt
クライアント = mqtt.Client()
# CA証明書へのパス
client.tls_set(ca_certs="/path/to/ca.crt")
# TLS/SSL を有効にする
client.username_pw_set("client_user"、"client_password")
client.connect(「broker.example.com」、8883、60)
クライアント.loop_start()
MITM攻撃を避けるためにブローカーの証明書を必ず確認してください。 ザ・オブ・ザ・ Paho クライアントは、データの完全性を確保するために、さまざまな証明書オプションをサポートしています。
Paho はデフォルトで証明書のバリデーションのオプションを提供し、デフォルトで設定できます。tls_set()そして、tls_insecure_set()お問い合わせ ここで例を示します。 クライアント ブローカーの証明書を証明書の認証機関(CA)に対して検証し、その認証を確実にします。 接続は安全です。
インポート paho.mqtt.client として mqtt
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 新しいMQTTクライアントインスタンスを作成する
クライアント = mqtt.Client()
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 基本的な認証のためのユーザー名とパスワードを設定する
client.username_pw_set(username="client_user") は、 パスワード="client_password"
# ブローカーの証明書を検証するためのCA証明書へのパス
ca_cert_path = "/path/to/ca.crt"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 顧客の自身の証明書および秘密鍵への道(任意、相互TLSのための)
client_cert_path = "/path/to/client.crt"
client_key_path は "/path/to/client.key" です。
# TLS/SSL 暗号化を有効にして証明書の検証
client.tls_set(ca_certs=ca_cert_path,
certfile=client_cert_path,
キーファイル=client_key_path,
tls_version=mqtt.sl.PROTOCOL_TLSv1_2)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 証明書が検証されていることを確認してください(検証を強制するためにFalseに設定)
client.tls_insecure_set(偽)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 安全な港のブローカーに接続します(通常、SSL上のMQTTのための8883)
ブローカー_url = "broker.example.com"
ブローカー_port = 8883
client.connect(broker_url、ブローカー_port)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # クライアントループを起動してネットワークイベントを処理します
クライアント.loop_start()
MQTTブローカーは、IoT通信の心臓部にあります。 ブローカーの確保は、ブローカーが保証する 認証されたデバイスは、接続して通信することができます。 私たちについてMQTTブローカー(CrystalMQ)は保護するために多数の保証層を提供します IoTインフラ
CrystalMQは通信を暗号化することを可能にするSSL/TLSを支えます ブローカーとIoTデバイス間で。
自己署名されたCA証明書が付属しています。 CrystalMQ/認証フォルダ。 デフォルトの自己署名証明書を使用して、または独自のカスタム証明書に置き換えることができます。
参照して下さい'TLS/SSL暗号化 お問い合わせ私たちのセクション 当社のブローカーでTLS/SSLを構成するドキュメントを支援します。
CrystalMQは、簡単に構成できるユーザ認証システムを提供します。
認証キーとトークン(ユーザー名とトークン)を作成できます。 パスワード)セキュリティタブの下にMQTTブローカーダッシュボードを介して。 これにより、ダッシュボードから直接クライアント認証を簡単に管理できます。
作成したキーは、Pahoクライアントで設定/設定されます。 username_pw_set() 関数。
セキュリティの設定に関する詳細は、当社にてご確認ください。ブローカーヘルプ文書お問い合わせ
正規化はクライアントが認証されると、クライアントが認証されると、 特定のトピックへの公開やサブスクライブなどの特定のアクションを実行できます。アクセス制御リスト(ACL)一般的な方法は、 これらの許可をMQTTシステムで管理します。
CrystalMQ では、管理者は ACL を個人のために構成できます ユーザー名または接続されたクライアントID。 これは、MQTTブローカーを介して行うことができます セキュリティメニューにナビゲートしてダッシュボードを操作します。
たとえば、クライアントは、拒否される間、特定のトピックへの公開だけに限定される 他人へのアクセス
特にIoTシステムにとってデータセキュリティは極めて重要です。 送信される間の保護を要求する敏感な情報を扱う() 転送)と保存時(休憩時)。 セキュアなIoTエコシステムにより、データが暗号化されるようにします。 安全に保管し、不正なアクセスを防ぎ、データのリスクを最小限に抑える 違反。
トランジットのデータとは、IoTデバイスからサーバー、またはサーバーから転送されるデータを指します。 クライアント。 このフェーズにおける最大のリスクは、攻撃者による傍受であり、 マン・イン・ザ・ミドル(MITM)攻撃 そのような攻撃を防ぐため、このような暗号化プロトコルTLS/SSLの特長必須です。
残りデータとは、サーバーやデータベースに保存されているデータを指します。 ストーリング 不正なアクセスを防ぐため、データの安全性が極めて重要です。 特にサーバーへのデータ侵害や物理的アクセスの場合。
ホスティング環境のセキュリティは、重要な役割を果たしています IoTエコシステム全体の保護 CrystalMQ をデプロイするかどうか オンプレミスまたは使用 クラウドベースのインフラ, ホスティング環境が安全であることは、完全性を維持し、 システムの可用性。
IoTインフラをオンプレミスに保つことを好む企業のために、 ホスティングセキュリティは、物理的およびネットワークを含みます ローカルデータセンターまたはサーバールームのセキュリティ。
クラウドベースの展開はスケーラビリティと柔軟性を提供しますが、クラウド 脅威に IoT システムを公開しないように、環境を安全に設定する必要があります。
オンプレミスとクラウド環境の両方がIoTセキュリティに準拠 のような標準:
堅牢で安全なIoTエコシステムを構築する方法です。 まずはMQTTのセキュリティプロトコル クライアントとサーバーの両側に、安全なデータ処理と組み合わせ、 ホスティング慣行は、IoT環境における一般的なセキュリティリスクの多くを緩和できます。
クリスタルMQを使って MQTT サーバーとしてのブローカーは、最先端のIoTセキュリティプラクティスを実装できます。 データとデバイスを保護するため、より安全なIoTインフラを確保します。