Идем в описание контроллера, раздел безопасность, там ссылка с “установите пароль на веб-интерфейс и заблокируйте доступ к MQTT-брокеру” Установка пароля на веб-интерфейс контроллера Wiren Board (Debian Bullseye) — Wiren Board
Читаем: “…Если ранее не устанавливался пароль на MQTT брокер и нет необходимости доступа к брокеру извне, то…” - ага, раз нам нужен доступ извне и по паролю, значит идем в статью по ссылке - MQTT в контроллерах Wiren Board — Wiren Board и настраиваем там по инструкции пароль, а там “Устанавливать следует только для listener 1883, это важно”. Установили, wb-gpio сломался, потому что идет на 1883 без пароля.
Как правильно всё на контроллере закрыть паролями, сохранив доступ извне и не сломав ничего внутри?
В целом конечно очень странно выглядит небезопасная конфигурация по-умолчанию, где для перехода на закрытый режим надо сделать очень много ручных действий с полным пониманием логики происходящего.
Должен быть какой-то готовый скрипт, который закрывает всё лишнее снаружи, иначе у тех, кто не обладает сисдаинскими знаниями, обязательно останется что-либо открыто и их будут продолжать взламывать снаружи.
Менять (любые) настройки следует только с полным осознанием их влияния.
Контроллер - это не “готовый продукт”. Это оборудование с ПО которое настраивается под задачу. Относиться с точки зрения безопасности нужно как к обычному серверу, методика настройки совершенно та же.
Веб-интерфейс никак не взаимодействуетс с брокером по MQTT, для него есть отдельный ws 18883 порт.
Во 2 пункте предлагается поставить пароль на 1883, что ломает внутреннее взаимодействие. Логичнее рекомендовать сделать его listener 1883 127.0.0.1 и добавить еще один listener 1884 с allow_anonymous false, к которому уже обращаться извне.
а дальше идет “для корректной работы через веб-интерфейс нужно будет использовать установленное имя пользователя и пароль в разделе Настройки → Веб-интерфейс → Подключение к MQTT брокеру, который по умолчанию использует анонимное подключение.” - а оказывается что тут ничего не надо прописывать, ведь оно через 18883 работает?
У обычного сервера (например, базовой установки Ubuntu или Debian) по-умолчанию наружу не высунуты внутренние сервисы без авторизации. Сейчас (в том числе из-за последних директив Евросоюза) всё больше ПО перестает высовывать интерфейсы управления с дефолтными паролями или без них на внешние сетевые интерфейсы.
Понимаю, что контроллер по-умолчанию предполагает настройку в локальной сети, но видятся логичным готовые пресеты первоначальной настройки - либо где всё открыто (контроллер используется в доверенной локальной сети), либо где всё закрыто (нет доверия сети).
Для дополнительныых listner можно настраивать авторизацию, можно не настраивать - смысл в том чтобы для localhost оставить как есть, без авторизации.
Если непонятно там описано - подскажите, как оописать лучше?
Тут - да, исправил, указав что нужно только для старых релизов, когда интерфейс мог работать и напрямую.
Да, у нас тоже идет работа по введению “безопсности из коробки”. Не так быстро как хотелось бы, но “роли” на подходе.
Это разработка-тестирование-поддержка. Да, неплохо, конечно.
Далее в файле /etc/mosquitto/conf.d/10listeners.conf установите параметр allow_anonymous false (по умолчанию true). Устанавливать следует только для listener 1883, это важно.
Логичнее будет выглядеть например:
В файле /etc/mosquitto/conf.d/10listeners.conf требуется
Сделать listener 1883 доступным только локально: listener 1883 127.0.0.1 - его используют внутренние сервисы контроллера
Добавить новый listener с любым портом и allow_anonymous false, к которому будут обращаться внешние клиенты, например:
Благодарю, переделал. Вот в чем плюс свежего взгляда - у нас довольно замылен и контекст сразу подтягивается нужный.
Рад что помогаете улучшить документацию!