WebUI Password Bullseye: различия между версиями

Материал из Wiren Board
 
(не показано 13 промежуточных версий 4 участников)
Строка 1: Строка 1:
{{Draft}}
{{DISPLAYTITLE: Установка пароля на веб-интерфейс контроллера Wiren Board (Debian Bullseye)}}
{{DISPLAYTITLE: Защита веб-интерфейса контроллера паролем на Bullseye}}
== Описание ==
В новых релизах прошивки начиная с wb-2210 используется mosquitto версии 2.0.11. В этой версии порядок установки пароля немного изменен.
Эта инструкция для пользователей контроллеров Wiren Board 6...7, работающих под Debian Bullseye — {{Wbincludes: WebUI Debian Bullseye Releases}}. [[Wiren_Board_Software#releases|Подробнее про релизы]].


==Как установить защиту веб-интерфейса?==
Перед выполнением настроек убедитесь что правильно понимаете их смысл. Инструкция показывает типовые действия, служит памяткой.
#В файле /etc/mosquitto/conf.d/10listeners.conf установите параметр allow_anonymous false (по умолчанию true).
 
{{Wbincludes: WebUI Password Intro}}
 
==Установка пароля==
[[Image: WebUI-2.0 — IP and Port.png|300px|thumb|right| Указаны адрес и порт для локального доступа к websocket и mqtt. Справа вверху зеленая надпись ''Connected'' сообщает об успешном соединении.]]
[[Image: HTTP-auth.png|300px|thumb|right| Форма http-авторизации. Введены логин и пароль.]]
 
Чтобы установить пароль, настройте mosquitto и nginx:
#Откройте файл /etc/mosquitto/conf.d/10listeners.conf и приведите его к виду:
#:
#:<syntaxhighlight lang="bash">
 
# This file should be used to define external mosquitto listeners
# (which are not used by internal services).
 
 
# Default MQTT port listener.
#
# It allows anonymous listeners by default to be compatible with
# old Wiren Board mosquitto configuration.
#
# It is recommended to add password authentication and TLS for security.
listener 1883 127.0.0.1
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf
 
 
# Default Websockets listener.
#
# It is used by Wiren Board Web interface.
#
# It allows anonymous listeners by default to be compatible with
# old Wiren Board mosquitto configuration.
#
# It is recommended to add password authentication for security.
listener 18883 127.0.0.1
protocol websockets
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf
 
</syntaxhighlight>
#:Изменить файл можно открыв его в текстовом редакторе, например, nano:
#:Изменить файл можно открыв его в текстовом редакторе, например, nano:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
Строка 13: Строка 55:
systemctl restart mosquitto
systemctl restart mosquitto
</syntaxhighlight>
</syntaxhighlight>
#Далее войдите в веб-интерфейс контроллера в раздел '''Настройки — Веб-интерфейс'''. В разделе Подключение к MQTT брокеру измените '''Порт''' на 80.
#Далее войдите в веб-интерфейс контроллера в раздел '''Настройки — Веб-интерфейс'''. В разделе '''Подключение к MQTT брокеру''' измените '''Порт''' на <code>80</code>.
#Нажмите '''Применить''' и проверьте, что в правом верхнем углу появился статус <code>Подключено</code> в зеленой рамке.
#Нажмите '''Применить''' и проверьте, что в правом верхнем углу появился статус <code>Подключено</code> в зеленой рамке.


Далее нужно установить пароль на nginx.
Далее нужно установить пароль на nginx.
# Включите глобальную аутентификацию:
# Включите глобальную аутентификацию командой:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
ln -s /etc/nginx/sites-available/global_auth /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/global_auth /etc/nginx/sites-enabled
</syntaxhighlight>
#:Перезапустите nginx:
#:<syntaxhighlight lang="bash">
systemctl restart nginx
systemctl restart nginx
</syntaxhighlight>
</syntaxhighlight>
Строка 33: Строка 78:
'''Совет:''' Чтобы не вводить логин и пароль каждый раз при подключении к контроллеру, добавьте закладку с адресом контроллера в формате: <pre>http://login:password@host/</pre>
'''Совет:''' Чтобы не вводить логин и пароль каждый раз при подключении к контроллеру, добавьте закладку с адресом контроллера в формате: <pre>http://login:password@host/</pre>


==Как отключить защиту веб-интерфейса?==
==Снятие пароля==
Чтобы снять защиту веб-интерфейса, выполните следующие действия.
Чтобы снять пароль с веб-интерфейса, верните конфигурацию mosquitto и nginx к состоянию по умолчанию:
#Отключите глобальную аутентификацию командой
#Отключите глобальную аутентификацию командой
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
Строка 43: Строка 88:
systemctl restart nginx
systemctl restart nginx
</syntaxhighlight>
</syntaxhighlight>
#Отредактируйте файл /etc/mosquitto/conf.d/10listeners.conf, установив параметр allow_anonymous true.
#Приведите файл /etc/mosquitto/conf.d/10listeners.conf к виду:
#:<syntaxhighlight lang="bash">
 
# This file should be used to define external mosquitto listeners
# (which are not used by internal services).
 
 
# Default MQTT port listener.
#
# It allows anonymous listeners by default to be compatible with
# old Wiren Board mosquitto configuration.
#
# It is recommended to add password authentication and TLS for security.
listener 1883
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf
 
 
# Default Websockets listener.
#
# It is used by Wiren Board Web interface.
#
# It allows anonymous listeners by default to be compatible with
# old Wiren Board mosquitto configuration.
#
# It is recommended to add password authentication for security.
listener 18883
protocol websockets
allow_anonymous true
acl_file /etc/mosquitto/acl/default.conf
password_file /etc/mosquitto/passwd/default.conf
 
</syntaxhighlight>
#Перезапустите mosquitto командой
#Перезапустите mosquitto командой
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
systemctl restart mosquitto
systemctl restart mosquitto
</syntaxhighlight>
</syntaxhighlight>
#Войдите в веб-интерфейс контроллера в раздел '''Настройки—Веб-интерфейс'''. В разделе '''Подключение к MQTT брокеру''' измените '''Порт''' на <code>18883</code>. Снимите флажок '''Использовать пароль'''.
#Войдите в веб-интерфейс контроллера в раздел '''Настройки—Веб-интерфейс'''. В разделе '''Подключение к MQTT брокеру''' измените '''Порт''' на <code>18883</code>.  
#Нажмите '''Применить''' и проверьте, что в правом верхнем углу появился статус <code>Подключено</code> в зеленой рамке.
#Нажмите '''Применить''' и проверьте, что в правом верхнем углу появился статус <code>Подключено</code> в зеленой рамке.
#Нажмите <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> и убедитесь, что при входе в веб-интерфейс пароль не запрашивается.
#Нажмите <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> и убедитесь, что при входе в веб-интерфейс пароль не запрашивается.

Текущая версия на 12:44, 21 декабря 2023

Описание

Эта инструкция для пользователей контроллеров Wiren Board 6...7, работающих под Debian Bullseye — это текущий тестинг и все новые релизы ПО, начиная с февраля 2023 года. Подробнее про релизы.

Перед выполнением настроек убедитесь что правильно понимаете их смысл. Инструкция показывает типовые действия, служит памяткой.

Веб-интерфейс не поддерживает авторизацию пользователя, но вы можете настроить http-авторизацию сервера nginx. После окончания настройки при подключении будет появляться окно с запросом логина и пароля.

Установка пароля

Указаны адрес и порт для локального доступа к websocket и mqtt. Справа вверху зеленая надпись Connected сообщает об успешном соединении.
Форма http-авторизации. Введены логин и пароль.

Чтобы установить пароль, настройте mosquitto и nginx:

  1. Откройте файл /etc/mosquitto/conf.d/10listeners.conf и приведите его к виду:
    # This file should be used to define external mosquitto listeners
    # (which are not used by internal services).
    
    
    # Default MQTT port listener.
    #
    # It allows anonymous listeners by default to be compatible with
    # old Wiren Board mosquitto configuration.
    #
    # It is recommended to add password authentication and TLS for security.
    listener 1883 127.0.0.1
    allow_anonymous true
    acl_file /etc/mosquitto/acl/default.conf
    password_file /etc/mosquitto/passwd/default.conf
    
    
    # Default Websockets listener.
    #
    # It is used by Wiren Board Web interface.
    #
    # It allows anonymous listeners by default to be compatible with
    # old Wiren Board mosquitto configuration.
    #
    # It is recommended to add password authentication for security.
    listener 18883 127.0.0.1
    protocol websockets
    allow_anonymous true
    acl_file /etc/mosquitto/acl/default.conf
    password_file /etc/mosquitto/passwd/default.conf
    
    Изменить файл можно открыв его в текстовом редакторе, например, nano:
    nano /etc/mosquitto/conf.d/10listeners.conf
    
  2. Перезапустите mosquitto командой
    systemctl restart mosquitto
    
  3. Далее войдите в веб-интерфейс контроллера в раздел Настройки — Веб-интерфейс. В разделе Подключение к MQTT брокеру измените Порт на 80.
  4. Нажмите Применить и проверьте, что в правом верхнем углу появился статус Подключено в зеленой рамке.

Далее нужно установить пароль на nginx.

  1. Включите глобальную аутентификацию командой:
    ln -s /etc/nginx/sites-available/global_auth /etc/nginx/sites-enabled
    
    Перезапустите nginx:
    systemctl restart nginx
    
    После этого при подключении к веб-интерфейсу будет запрошен логин и пароль. По умолчанию: логин root, пароль wirenboard.
  2. Чтобы поменять пароль, выполните команду ниже:
    printf "root:`openssl passwd -apr1`\n" > /etc/nginx/passwd
    
    здесь вместо root можно придумать любое другое имя пользователя.
    После выполнения команды появится запрос на ввод пароля — введите новый пароль, нажмите Enter, повторите ввод нового пароля и снова нажмите Enter.
  3. Вернитесь в веб-интерфейс, обновите страницу клавишами Ctrl+Shift+R и при запросе логина и пароля введите их.

Совет: Чтобы не вводить логин и пароль каждый раз при подключении к контроллеру, добавьте закладку с адресом контроллера в формате:

http://login:password@host/

Снятие пароля

Чтобы снять пароль с веб-интерфейса, верните конфигурацию mosquitto и nginx к состоянию по умолчанию:

  1. Отключите глобальную аутентификацию командой
    rm /etc/nginx/sites-enabled/global_auth
    
  2. Перезагрузите nginx:
    systemctl restart nginx
    
  3. Приведите файл /etc/mosquitto/conf.d/10listeners.conf к виду:
    # This file should be used to define external mosquitto listeners
    # (which are not used by internal services).
    
    
    # Default MQTT port listener.
    #
    # It allows anonymous listeners by default to be compatible with
    # old Wiren Board mosquitto configuration.
    #
    # It is recommended to add password authentication and TLS for security.
    listener 1883
    allow_anonymous true
    acl_file /etc/mosquitto/acl/default.conf
    password_file /etc/mosquitto/passwd/default.conf
    
    
    # Default Websockets listener.
    #
    # It is used by Wiren Board Web interface.
    #
    # It allows anonymous listeners by default to be compatible with
    # old Wiren Board mosquitto configuration.
    #
    # It is recommended to add password authentication for security.
    listener 18883 
    protocol websockets
    allow_anonymous true
    acl_file /etc/mosquitto/acl/default.conf
    password_file /etc/mosquitto/passwd/default.conf
    
  4. Перезапустите mosquitto командой
    systemctl restart mosquitto
    
  5. Войдите в веб-интерфейс контроллера в раздел Настройки—Веб-интерфейс. В разделе Подключение к MQTT брокеру измените Порт на 18883.
  6. Нажмите Применить и проверьте, что в правом верхнем углу появился статус Подключено в зеленой рамке.
  7. Нажмите Ctrl+Shift+R и убедитесь, что при входе в веб-интерфейс пароль не запрашивается.