Статьи

MQTT Security: защита сервера Mosquitto

Этот пост описывает, как реализовать безопасность MQTT . Более подробно мы опишем, как обеспечить безопасность сервера Mosquitto MQTT. Как вы, возможно, уже знаете, MQTT является одним из наиболее важных протоколов, широко используемых в Интернете вещей и в Промышленном Интернете вещей. MQTT — это легкий протокол, ориентированный на обмен сообщениями, в котором клиент MQTT обменивается сообщениями через сервер MQTT, называемый брокером MQTT. Мы рассмотрели все аспекты MQTT в предыдущем посте под названием « Учебник по протоколу MQTT ».

В этом посте мы хотим рассмотреть аспекты безопасности MQTT, уделяя особое внимание аспектам безопасности MQTT Mosquitto .

Вообще говоря, Интернет вещей — это грядущие технологические революции, когда объекты, называемые интеллектуальными объектами, подключаются к Интернету для обмена данными и информацией. Одной из главных забот об Интернете вещей является аспект безопасности. Учитывая, что IoT повлияет на нашу повседневную жизнь, и эти интеллектуальные объекты могут собирать и собирать различную информацию, безопасность является важным аспектом. Часть этой информации является конфиденциальной (мы можем думать о данных о здоровье), и важно быть уверенным, что никто другой не сможет использовать ее, кроме разрешенных лиц и систем.

В этом контексте важно знать, как защитить протокол MQTT и как защитить информацию. В следующих параграфах мы проанализируем шаги, которые мы должны выполнить для защиты MQTT с использованием Raspberry Pi в качестве брокера MQTT.

ЧТО ОЗНАЧАЕТ БЕЗОПАСНОСТЬ MQTT?

По своей природе MQTT представляет собой простой протокол, в котором вся передаваемая информация представлена ​​в текстовом формате. Другими словами, каждый может получить доступ к этому сообщению и прочитать полезные данные. Это не может быть проблемой, если MQTT-клиент и MQTT-брокер обмениваются недостоверной информацией В любом случае, это несколько случаев использования, когда мы хотим сохранить конфиденциальность информации и гарантировать, что она не может быть прочитана или изменена в процессе передачи. В этом случае есть несколько подходов, которые мы можем использовать для решения проблемы безопасности MQTT:

  1. Создать VPN между клиентами и сервером
  2. Используйте MQTT поверх SSL / TSL, который шифрует и защищает информацию между клиентами MQTT и брокером MQTT

Мы сосредоточим наше внимание на том, как создать MQTT поверх SSL . Чтобы сделать MQTT безопасным протоколом, мы должны выполнить следующие шаги:

  • Создать личный ключ (CA Key)
  • Создайте сертификат, используя закрытый ключ (CA cert)
  • Создайте сертификат для сервера Mosquitto MQTT с ключом

Последний шаг — настройка Mosquitto MQTT, чтобы он использовал эти сертификаты.

ЗАЩИТА MOSQUITTO MQTT SERVER

Первым шагом в этом процессе является создание закрытого ключа. Подключитесь к Raspberry Pi, используя ssh или удаленный рабочий стол, по вашему желанию и откройте командный терминал Перед началом важно проверить, установлен ли OpenSSL на вашем Raspberry Pi, в противном случае вам придется скачать отсюда .

Перед созданием закрытого ключа вы должны создать каталог, в котором хранятся все сертификаты, которые вы создадите. В терминале напишите:

1
openssl genrsa -out mosq-ca.key 2048

Используя эту команду, мы создаем 2048 бит с именем mosq-ca.key . Результат показан на картинке ниже:

На следующем этапе создается сертификат X509, в котором используется закрытый ключ, созданный на предыдущем этапе. Снова откройте терминал и в том же каталоге, который вы использовали для хранения закрытого ключа, напишите:

1
openssl req -new -x509 -days365 -key mosq-ca.key -out mosq-ca.crt

На этом этапе вы должны предоставить другую информацию перед созданием сертификата, как показано на рисунке ниже:

СОЗДАНИЕ СЕРТИФИКАТА MQTT-СЕРВЕРА

Когда закрытый ключ и сертификат готовы, мы можем перейти к созданию сертификата сервера MQTT и личного ключа:

1
openssl genrsa -out mosq-serv.key 2048

Затем сертификат сервера. На этом этапе мы должны создать CSR (запрос на подпись сертификата). Этот сертификат должен быть отправлен в центр сертификации, который после проверки личности автора возвращает сертификат. В этом уроке мы будем использовать самоподписанный сертификат:

1
openssl req -new -key mosq-serv.key -out mosq-serv.csr

Как вы можете заметить, мы использовали закрытый ключ, сгенерированный на предыдущем шаге. Наконец, мы можем создать сертификат для использования на нашем сервере MQTT Mosquitto:

1
openssl x509 -req -in mosq-serv.csr -CA mosq-ca.crt -CAkey mosq-ca.key -CAcreateserial -out mosq-serv.crt -days 365 -sha256

Все сделано! Мы завершили шаги, необходимые для защиты нашего сервера MQTT. Вы можете подтвердить свой сертификат написания:

1
openssl x509 -in mosq-serv.crt -noout -text

Теперь вы должны увидеть сертификат.

КАК НАСТРОИТЬ MQTT MOSQUITTO SERVER, ЧТОБЫ ЗАЩИЩАТЬ MQTT

Когда сертификаты будут готовы, нам нужно настроить сервер MQTT Mosquitto, чтобы он мог использовать эти сертификаты. Сертификаты, которые мы должны использовать:

  • Mosq-ca.crt
  • Mosq-serv.crt
  • Mosq-serv.key

Найдите файл mosquitto.conf который содержит все параметры конфигурации, и добавьте следующие строки:

1
2
3
4
listener 8883
cafile /home/pi/ssl-cert-mosq/mosq-ca.crt
certfile /home/pi/ssl-cert-mosq/mosq-serv.crt
keyfile /home/pi/ssl-cert-mosq/mosq-serv.key

где путь / home / pi / ssl-cert-mosq — это путь, по которому вы сохранили свой сертификат. Кроме того, мы изменили порт Mosquitto MQTT по умолчанию на 8883.

Теперь вам нужно остановить и перезапустить Mosquitto MQTT, чтобы он мог прочитать новый файл конфигурации:

1
sudo service mosquitto stop/start

Это все. Теперь наш протокол MQTT безопасен и зашифрован. Последний шаг — тестирование конфигурации и сервера MQTT.

MQTT MESQUITTO OESTING SECURITY OVER SSL / TSL

На этом этапе мы проверим, правильно ли настроено соединение. Для этого мы используем MQTT. fx клиент MQTT на основе Java После того, как вы установили его, мы должны создать новый профиль, предоставляющий всю информацию, как показано на рисунке ниже:

Обратите внимание, что мы включили конфигурацию SSL / TSL, обеспечивающую создание mosq-ca.crt на предыдущих этапах.

Наконец, мы можем подключиться к серверу MQTT Mosquitto:

нажимая на подключение. Вы заметите, что клиент MQTT установит соединение с брокером MQTT, как вы можете проверить на вкладке журнала.

Теперь пришло время проверить, получает ли наш клиент сообщение. Выберите меню подписки и подпишите клиент MQTT на тему (выбирая название темы).

Со стороны Raspberry Pi мы можем отправить сообщение на тот же канал:

1
mosquitto_pub -p 8883 -t "test" -cafile mosq-ca.crt -m "Hello MQTT" -d -h 192.168.1.8

Результат показан на картинке ниже:

На стороне подписчика имеем:

Как вы можете заметить, мы получили сообщение, отправленное издателем.

ВЫВОД

В конце этой статьи вы узнали о том, как обрабатывать настройки безопасности MQTT Mosquitto MQTT через SSL / TSL.

Ссылка: Безопасность MQTT: Защита Mosquitto Server от нашего партнера JCG Франческо Аццолы в блоге Surviving с Android .