Pengantar

MQTT Protocol Security menjadi hal penting dalam sistem Internet of Things (IoT). MQTT banyak digunakan untuk komunikasi perangkat karena ringan dan cocok untuk jaringan dengan bandwidth terbatas.

Namun, MQTT tanpa konfigurasi keamanan yang tepat dapat menghadapi risiko seperti penyadapan, pencurian kredensial, manipulasi pesan, dan akses tidak sah. OASIS sendiri merekomendasikan implementasi MQTT menyediakan authentication, authorization, dan secure communication untuk melindungi komunikasi (dikutip dari: OASIS – MQTT Version 5.0).


Apa Itu MQTT?

Message Queuing Telemetry Transport (MQTT) adalah protokol komunikasi berbasis publish/subscribe yang dirancang untuk perangkat dengan sumber daya terbatas.

Dalam MQTT, terdapat beberapa komponen utama:

  • Publisher, yaitu perangkat yang mengirim pesan.
  • Subscriber, yaitu perangkat yang menerima pesan.
  • Broker, yaitu server yang mengatur distribusi pesan.
  • Topic, yaitu jalur yang digunakan untuk mengelompokkan pesan.

Arsitektur tersebut membuat MQTT populer pada sensor, perangkat industri, smart home, dan berbagai sistem IoT.

baca juga : DMARC, DKIM, dan SPF: Tiga Lapisan Penting untuk Melindungi Email dari Spoofing


Mengapa MQTT Membutuhkan Keamanan?

MQTT dapat digunakan pada lingkungan yang terhubung langsung ke jaringan. Karena itu, komunikasi yang tidak terlindungi dapat menjadi target attacker.

Beberapa risiko yang perlu diperhatikan antara lain:

  • Pencurian username dan password.
  • Penyadapan data.
  • Manipulasi pesan.
  • Perangkat tidak sah yang terhubung ke broker.
  • Publisher mengirim data ke topic yang tidak seharusnya.
  • Subscriber membaca data sensitif.
  • Penyalahgunaan broker untuk aktivitas berbahaya.

OASIS juga mencantumkan risiko seperti komunikasi yang dapat diintersep, diubah, dialihkan, atau dibocorkan, serta kemungkinan perangkat mengalami kompromi (dikutip dari: OASIS – MQTT Version 5.0).


Authentication pada MQTT

Authentication digunakan untuk memastikan identitas client sebelum mendapatkan akses ke broker.

Metode sederhana dapat menggunakan username dan password. Namun, sistem dengan kebutuhan keamanan tinggi dapat menggunakan mekanisme yang lebih kuat, seperti sertifikat TLS atau sistem autentikasi eksternal.

MQTT 5.0 juga menyediakan enhanced authentication yang mendukung mekanisme seperti challenge-response melalui paket AUTH (dikutip dari: OASIS – MQTT Version 5.0).

Untuk sistem IoT yang besar, setiap perangkat sebaiknya memiliki identitas atau kredensial sendiri. Cara ini memudahkan pencabutan akses ketika sebuah perangkat mengalami kompromi.


Authorization dan Access Control

Authentication saja belum cukup.

Setelah client berhasil login, broker tetap perlu menentukan resource apa yang boleh diakses.

Contohnya:

  • Sensor A hanya boleh publish ke sensor/suhu.
  • Dashboard hanya boleh subscribe ke sensor/#.
  • Perangkat tertentu tidak boleh mengakses topic administrator.

Pembatasan seperti ini menerapkan prinsip least privilege.

OASIS merekomendasikan agar broker memeriksa authorization setelah client terautentikasi serta membatasi kemampuan client untuk melakukan publish dan subscribe terhadap topic tertentu (dikutip dari: OASIS – MQTT Version 5.0).

baca juga : Control Flow Integrity (CFI): Benteng Keamanan untuk Mencegah Manipulasi Alur Program


Gunakan TLS untuk Melindungi Komunikasi

Salah satu langkah penting dalam MQTT security adalah menggunakan TLS.

Tanpa enkripsi transport, username, password, dan data MQTT berisiko dibaca oleh pihak yang dapat mengakses jalur komunikasi.

TLS membantu menyediakan:

  • Encryption untuk menjaga kerahasiaan.
  • Integrity untuk mendeteksi perubahan data.
  • Server authentication melalui sertifikat.
  • Client authentication jika menggunakan client certificate.

MQTT 5.0 menyebutkan bahwa TLS dapat digunakan untuk menyediakan authentication, integrity, dan privacy pada komunikasi MQTT. Untuk layanan MQTT berbasis TLS, spesifikasi tersebut merekomendasikan penggunaan port 8883.


Hindari MQTT Tanpa Proteksi

Menjalankan MQTT tanpa autentikasi atau enkripsi dapat meningkatkan risiko serangan.

Contohnya, broker yang terbuka dapat memungkinkan pihak tidak dikenal melakukan koneksi. Jika authorization juga tidak diterapkan, client tersebut mungkin dapat membaca atau mengirim pesan ke topic tertentu.

Karena itu, konfigurasi default sebaiknya tidak langsung digunakan pada lingkungan production.

Broker harus dikonfigurasi agar hanya client yang sah yang dapat terhubung.


Lindungi MQTT Topic

Topic merupakan bagian penting dalam keamanan MQTT.

Wildcard seperti # dan + memang berguna untuk subscription, tetapi akses yang terlalu luas dapat meningkatkan risiko kebocoran data.

Administrator sebaiknya membuat aturan berdasarkan kebutuhan.

Contohnya:

sensor/+/temperature

dapat diberikan kepada dashboard monitoring, sedangkan topic administratif hanya diberikan kepada perangkat atau user tertentu.

Pembatasan topic membantu mencegah client mengakses data di luar kebutuhannya.


Amankan MQTT Broker

Broker merupakan pusat komunikasi MQTT. Jika broker berhasil dikompromikan, banyak perangkat yang terhubung dapat ikut terdampak.

Beberapa langkah yang dapat diterapkan:

  • Gunakan TLS.
  • Aktifkan authentication.
  • Terapkan authorization.
  • Batasi koneksi dari jaringan yang tidak diperlukan.
  • Gunakan firewall.
  • Perbarui broker secara berkala.
  • Monitor aktivitas client.
  • Pisahkan environment production dan testing.

Logging juga penting untuk mengetahui koneksi dan aktivitas yang tidak normal.


Ancaman yang Perlu Diwaspadai

Man-in-the-Middle

Attacker dapat mencoba menyadap atau memanipulasi komunikasi ketika koneksi tidak menggunakan perlindungan yang memadai.

TLS membantu mengurangi risiko tersebut dengan menyediakan enkripsi dan integritas komunikasi.

Credential Theft

Username dan password yang lemah dapat dicuri atau ditebak. Penggunaan kredensial unik serta TLS dapat membantu mengurangi risikonya.

Unauthorized Publish

Client yang tidak memiliki izin dapat mencoba mengirim data palsu ke topic tertentu.

Authorization yang tepat dapat membatasi siapa yang boleh melakukan publish.

Unauthorized Subscribe

Client juga dapat mencoba membaca topic yang berisi data sensitif.

Access control pada broker diperlukan untuk membatasi subscription.

Denial of Service

Broker dapat menjadi target koneksi atau pesan dalam jumlah besar. Karena itu, pembatasan koneksi dan monitoring dapat membantu mengurangi dampaknya.


Praktik Terbaik MQTT Security

Untuk membangun MQTT yang lebih aman, beberapa langkah berikut dapat diterapkan:

  1. Gunakan TLS untuk melindungi komunikasi.
  2. Aktifkan authentication pada broker.
  3. Terapkan authorization berdasarkan client dan topic.
  4. Gunakan kredensial unik untuk setiap perangkat.
  5. Batasi wildcard topic jika tidak diperlukan.
  6. Gunakan firewall untuk membatasi akses broker.
  7. Monitor aktivitas MQTT secara berkala.
  8. Perbarui broker dan client untuk menutup kerentanan.
  9. Pisahkan jaringan IoT dari jaringan penting lainnya.
  10. Cabut akses perangkat yang sudah tidak digunakan atau telah dikompromikan.

baca juga : Content Security Policy (CSP) Bypass: Memahami Celah dan Cara Memperkuat Perlindungan XSS


Kesimpulan

MQTT Protocol Security merupakan bagian penting dalam membangun infrastruktur IoT yang aman. Protokol MQTT memang ringan dan efisien, tetapi implementasinya tetap membutuhkan perlindungan tambahan.

Authentication memastikan identitas client. Authorization membatasi akses terhadap resource. Sementara itu, TLS melindungi komunikasi dari penyadapan dan manipulasi.

Keamanan MQTT juga tidak berhenti pada broker. Perangkat, kredensial, topic, jaringan, dan sistem monitoring perlu dilindungi secara menyeluruh.

Dengan menerapkan TLS, authentication, authorization, access control, firewall, dan monitoring, komunikasi MQTT dapat menjadi jauh lebih aman untuk lingkungan IoT.