Mengamankan Eclipse-Mosquitto broker dengan mengaktifkan authentication

Mosquitto broker dapat kita konfigurasi agar client membutuhkan authentication menggunakan username dan password sebelum terhubung ke broker, sehingga akan lebih aman. Namun ini belum sepenuhnya aman karena meskipun menggunakan kombinasi username dan password jika ditransmit tanpa encryption (SSL), tetapi setidaknya ini memberikan keamanan dengan cara yang paling mudah.

Berikut catatan saya untuk bagaimana mengonfigurasi username password pada mosquitto broker yang running pada Docker.

Jika belum memiliki container mosquitto maka perlu dibuat terlebih dahulu. Dalam hal ini saya menggunakan OS linux untuk host dari Docker. Saya membuat direktori untuk Mosquitto Broker.

mkdir -p /var/local/mosquitto/{config,logs,data}

Kemudian kita perlu membuat file konfigurasi mosquitto.conf

sudo nano /var/local/mosquitto/config/mosquitto.conf

Pertama kita buat file konfigurasi mosquitto.conf, dikarenakan saat ini menggunakan OS basis linux, saya buat file configurasi dengan command dibawah.

sudo nano /var/local/mosquitto
Gambar 1. Mosquitto.conf tanpa password

Jika sudah buat seperti digambar atas tekan CTRL+O untuk menyimpan dan CTRL+X untuk exit dari text editor. Dan jalankan command dibawah untuk membuat mosquitto container.

sudo docker run -it --name mosquitto -p 1882:1883 -p 9002:9001 -v /var/local/mosquitto/data:/mosquitto.data -v /var/local/mosquitto/logs:/mosquitto/log -v /var/local/mosquitto/config/mosquitto.config:/mosquitto/config/mosquitto.conf eclipse-mosquitto

Untuk memastikan container sudah terbuat kita dapat pastikan menggunakan command

sudo docker ps

Untuk mengaktifkan username dan password, kita perlu masuk ke linux sh (bergantung pada OS dari docker atau host).

sudo docker exec -it mosquitto sh

kemudian jalankan command untuk menambahkan username sebagai berikut:

mosquitto_passwd -c /mosquitto/config/passwd jazali

Catatan:

  • mosquitto_passwd -> tool untuk memanage file password dari mosquitto. detail cek disini
  • “-c” -> ini opsi dari command mosquitto_passwd untuk membuat baru username. “-d” untuk delete user, dan tanpa opsi untuk menambakan username.
  • “/mosquitto/config/passwd” -> merupakan direktori untuk file password yang dikonfigurasi. Disini file password diletakkan didalam container bukan di host docker.
  • “jazali” -> username yang ditambahkan.

setelah jalankan command menambahkan username nanti kita akan diminta untuk memasukkan password untuk username yang ditambahkan tersebut.

Gambar 3. Menambahkan username dan password

untuk keluar dari command sh linux kita bisa tekan CTRL+D. Kemudian kita lanjut update mosquitto.conf untuk mengaktifkan username dan password sebagai berikut.

sudo nano /var/local/mosquitto/config/mosquitto.conf
Gambar 4. Update mosquitto.conf

Restart mosquitto container diperlukan untuk konfigurasi berefek. Ketika sudah running kembali kita dapat cek untuk client mencoba terhubung ke broker tanpa password, apa yang terjadi.

Gambar 5. Client tanpa menggunakan mengisikan username dan password

Dari gambar 5 diatas terlihat jika client tanpa menggunakan username dan password tidak bisa terhubung ditunjukan “connection error”. Dan bila dipantau dari mosquitto log, disana ada client yang tidak dapat terhubung karena authorize fail.

Gambar 6. Mosquitto log ketika client mencoba terhubung tanpa username dan password.

Sekarang kita mencoba untuk client menggunakan username dan password, berhasil terhubung seperti dibawah ini.

Gambar 7. Client tanpa menggunakan mengisikan username dan password

Leave a Reply

Your email address will not be published.