Mosquitto Authentication은 MQTT 브로커를 설치한 직후 적용해야 할 기본 보안 설정입니다.
공개된 MQTT 브로커에 누구나 접속할 수 있도록 두면 비인가 접근, 데이터 탈취, 디바이스 오작동 같은 문제가 발생할 수 있습니다.
이를 방지하려면 passwoed_file 설정을 이용한 사용자 인증 구성이 필요합니다.
1. Mosquitto Authentication (사용자 인증) 항목을 설정 파일에 추가
먼저 MQTT 브로커가 실행되는 Mosquitto의 설정 파일을 수정한다.
/mosquitto/config/mosquitto.conf 설정파일을 열고, 아래 두 줄을 추가하거나 수정한다.
# 익명 접속 차단
allow_anonymous false
# 사용자 인증 파일 경로 지정
password_file /mosquitto/config/passwd.txt
2. Mosquitto Authentication (사용자 인증) 파일 생성하기
터미널에서 vi 편집기를 이용하거나 텍스트 편집기를 이용하여 다음과 같은 형식으로 작성하여 passwd.txt 파일을 생성한다.
(Mosquitto의 사용자 인증 파일은 텍스트 기반입니다. 단, 평문 상태로 두지 않고 반드시 해시 암호화 처리를 해야 합니다)
username:password
second_user:password
third_user:password
터미널에서 다음 명령어를 실행하여 비밀번호를 해시 암호화 처리한다.
mosquitto_passwd -U passwd.txt
해시화된 파일은 브로커가 사용할 수 있는 인증 형태로 변경됩니다.
유튜브 영상 참고 [Docker의 Eclipse MQTT 2.x + Synology의 사용자 자격 증명]
유튜브에서 Mosquitto와 Synology 환경 설정 과정을 참고할 수 있는 유익한 영상이다.
추가사항: 사용자 관련 명령어
동일한 파일에 사용자를 추가하고자 하는 경우 다음 명령으로 수행
mosquitto_passwd -b [file_name] [user_id] [password]
사용자를 삭제하고자 하는 경우
mosquitto_passwd -D [file_name] [user_id]
명령어로 파일 생성 및 사용자를 추가하는 방법으로 기존 파일을 새로 생성 (주의: 기존 사용자 모두 삭제됨)
mosquitto_passwd -c [file_name] [user_id]
3. Docker에서 Mosquitto 터미널 열기
[Container Manager – 컨테이너 – 컨테이너 이름 클릭] 후 작업 메뉴에서 터미널 열기

생성 버튼을 바로 클릭하면 오류가 발생되므로, 명령으로 실행을 클릭한다. “ash” 를 입력하고 확인 버튼을 클릭한다.



이제 Mosquitto 브로커는 익명 접속이 차단되고, 등록된 사용자만 접속할 수 있다.