0
0
Lập trình
NM

Hướng dẫn Triển khai Mosquitto Broker trên Ubuntu Server 22.04 với Cách Xác Thực Ủy Quyền (Phần 1)

Đăng vào 3 ngày trước

• 3 phút đọc

👋 Giới thiệu

Chào các bạn, mình là Quân. Nếu bạn đã từng làm các dự án IoT nhỏ với các vi điều khiển như ESP8266 hay ESP32 để đo nhiệt độ và độ ẩm, thì chắc hẳn bạn đã nghe đến giao thức MQTT. Trong bài viết này, mình sẽ giới thiệu về giao thức MQTT và hướng dẫn cách triển khai một MQTT Broker dựa trên Mosquitto.

📄 Giao thức MQTT là gì?

MQTT (Message Queuing Telemetry Transport) là một giao thức nhắn tin nhẹ, thiết kế để truyền tải thông điệp giữa các thiết bị, đặc biệt trong môi trường băng thông thấp và độ trễ thấp. MQTT thường được áp dụng trong các ứng dụng Internet of Things (IoT) và hệ thống nhúng.

MQTT Broker là gì?

MQTT Broker là thành phần trung tâm trong hệ thống sử dụng giao thức MQTT, giữ vai trò trung gian giữa các thiết bị hoặc ứng dụng (client) trong mô hình publish/subscribe. Một số điểm quan trọng về MQTT Broker bao gồm:

  • Quản lý chủ đề (Topic): Broker duy trì danh sách chủ đề và client đã đăng ký.
  • Chất lượng dịch vụ (QoS): Hỗ trợ nhiều mức QoS để đảm bảo độ tin cậy của thông điệp.
  • Lưu trữ thông điệp (Retain): Lưu trữ thông điệp cuối cùng gửi đến một chủ đề cho client mới đăng ký.
  • Bảo mật: Hỗ trợ các cơ chế bảo mật như SSL/TLS.

Mosquitto Broker là phần mềm mã nguồn mở, nhẹ, hiệu quả, hoạt động trên nhiều nền tảng và hỗ trợ đầy đủ các tính năng của giao thức MQTT, thường được dùng trong các dự án IoT.

💻️ Hướng dẫn Cài đặt Mosquitto Broker

Bước 1: Cài đặt các gói yêu cầu

Copy
$ sudo apt-get update
$ sudo apt-get install curl gnupg2 wget git apt-transport-https ca-certificates -y

Bước 2: Thêm Mosquitto PPA

Copy
$ sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa -y

Bước 3: Cài đặt Mosquitto Broker và Mosquitto Clients

Copy
$ sudo apt install mosquitto mosquitto-clients -y

Bước 4: Kiểm tra trạng thái và phiên bản Mosquitto

Copy
$ sudo systemctl status mosquitto
Copy
$ mosquitto -v
1722240285: mosquitto version 2.0.15 starting
...

🛠️ Cấu hình Mosquitto

Theo mặc định, Mosquitto cho phép kết nối anonymous. Để tăng cường bảo mật, thực hiện như sau:

I. Tạo file lưu mật khẩu quản trị MQTT

  1. Tạo file mật khẩu và thêm người dùng mới:
Copy
$ sudo mosquitto_passwd -c /etc/mosquitto/passwd <tên_người_dùng>
Mật khẩu: <mật_khẩu>
Nhập lại mật khẩu: <mật_khẩu>
  1. Thiết lập quyền sở hữu cho file mật khẩu:
Copy
$ sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
  1. Tạo file cấu hình bổ sung:
Copy
$ sudo nano /etc/mosquitto/conf.d/default.conf
  1. Thêm vào file các dòng sau:
Copy
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
  1. Liên kết file cấu hình vào Mosquitto: Thêm dòng này vào file /etc/mosquitto/mosquitto.conf:
Copy
include_dir /etc/mosquitto/conf.d
  1. Kiểm tra cấu hình Mosquitto:
    ⚠️ Nếu Mosquitto đang chạy, dừng dịch vụ:
Copy
$ sudo systemctl stop mosquitto.service
  1. Chạy Mosquitto broker bằng tay:
Copy
$ mosquitto -c /etc/mosquitto/mosquitto.conf -v
  1. Khởi động lại Mosquitto:
Copy
$ sudo systemctl restart mosquitto
$ journalctl -u mosquitto -f

II. Sử dụng tệp ACL (Access Control List)

  1. Tạo file ACL mới:
Copy
$ sudo nano /etc/mosquitto/acls

Cấu trúc tệp ACL:

Copy
user <tên_người_dùng>
topic [read|write|readwrite|deny] <topic>
  1. Thêm thông tin vào file ACL:
Copy
user admin
topic readwrite #
user user1
topic readwrite temperature
user user2
topic write actuators/#
  1. Liên kết file ACL vào Mosquitto: Thêm dòng sau vào cuối file /etc/mosquitto/conf.d/default.conf:
Copy
acl_file /etc/mosquitto/acls
  1. Khởi động lại Mosquitto:
Copy
$ sudo systemctl restart mosquitto.service
  1. Kiểm tra tính năng phân quyền:
    Thêm người dùng mới và kiểm tra quyến truy cập.

Client sẽ không biết về quyền hạn của các chủ đề cho đến khi thử nghiệm gửi/nhận tin nhắn.

👉️ Để tìm hiểu thêm về các phương thức xác thực và ủy quyền, bạn có thể tham khảo Mosquitto Go Auth, một plugin hữu ích cho Mosquitto MQTT Broker.

💡 Tổng kết

Cảm ơn bạn đã đọc bài viết. Phần tiếp theo sẽ đề cập đến cách tích hợp Mosquitto Go Auth với cơ sở dữ liệu MySQL và đưa máy chủ MQTT của bạn lên Internet. Hãy cùng chờ đón nhé! Nếu bạn có câu hỏi hoặc góp ý nào, hãy để lại bình luận, mình sẽ rất vui khi được giải đáp.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào