Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram

maniak26
Идет загрузка
Загрузка
26.09.2016
16725
54
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

44
Статья относится к принтерам:
RepRap
Контроля много не бывает. Возможности Octoprint достаточно хорошо описаны на этом сайте, но тема безопасного управления раскрыта не полностью.

Как защититься от злобного хакера, который обязательно найдет открытый веб-интерфейс, подберет пароль, остановит 100500-часовую печать и припаркует печатающую головку прямо в модель? Есть решение. Даже два.

Дано: Orange Pi PC + D-bot CoreXY.

Для начала, в свете относительно недавних событий (обнаружение backdoor в ядре Linux для процессоров Allwinner) не стоит выбирать стандартные образы Linux для Orange PI PC и даже сборки на их основе.

Для комфортной работы рекомендую Armbian - стабильно работает и регулярно обновляется.
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Ставится просто - качаем образ, программу для записи образов, выбираем файл образа, выбираем диск, немного ждем и все готово.
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Базовую настройка отлично описана тут. Могу добавить к ней следующее:

Чтобы настроить wi-fi и не хранить пароль от сети в открытом виде на диске нужно подправить пару конфигов:

1. Выполнить команду

wpa_passphrase ssid password

где ssid - имя точки доступа, password - он и в Африке пароль пароль к ней.

получим:

network={

ssid='ssid'

#psk='password'

psk=44116ea881531996d8a23af58b376d70f196057429c258f529577a26e727ec1b

}

2. Узнать bssid точки доступа (не обязательно, но если на роутере стоит wpa2 шифрование, без этого не обойтись):

выполняем команду:

sudo iwlist wlan0 scan | egrep 'Address|ESSID|Channel'

Получаем список точек. Ищем нашу, копируем набор букв после слова 'Address'

пример вывода команды:

Cell 01 - Address: AA:AA:AA:AA:AA:AA

Channel:7

Frequency:2.442 GHz (Channel 7)

ESSID:'ssid'

3. Подправить файл конфигурации точек wifi

sudo nano -w /etc/wpa_supplicant/wpa_supplicant.conf

добавляем в него строки:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel

network={

bssid=AA:AA:AA:AA:AA:AA

ssid='ssid'

scan_ssid=1

key_mgmt=WPA-PSK

psk=44116ea881531996d8a23af58b376d70f196057429c258f529577a26e727ec1b

}

сохранить файл и выйти из редактора - Crtl+O + Enter + CrtlX

4. Изменить файл настроек сетевых интерфейсов:

sudo nano -w /etc/network/interfaces

добавляем:

allow-hotplug wlan0

iface wlan0 inet dhcp

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

5. Перезагрузить плату

sudo reboot

После перезагрузки wifi подключится автоматом.

Решение первое. Telegram.

Настройка octoprint без проблем проходит по этой инструкции, следует лишь доставить один пакет для telegram-клиента:

sudo apt-get install libjpeg-dev

Запускаем telegram.

Получаем токен для бота. Со своего telegram-аккаунта пишем в личку @BotFather
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
чтобы получить все команды бота, отправьте /help
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
регистрируем бота командой /newbot - @BotFather спросит отбражаемое имя для нового бота:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
следующим вопросом спросит username для бота. После регистрации бот будет доступен по нику @username_bot.

Требования - в конце username обязательно должно быть написано bot. (и как выяснилось, тире в имени бота тоже нельзя использовать).
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
В ответ на свободное имя пользователя, @BotFather пришлет токен для бота:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Открываем Octoprint, заходим в настройки (Settings) -> Менеджер плагинов (Plugin manager) -> находим telegram, устанавливаем
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
после установки octoprint следует перезагрузить командной из командной строки

sudo service octoprint restart

снова открываем Octoprint, заходим в настройки (Settings) -> появился пункт Telegtam, выбираем его

в поле telegtam bot token вводим набор цифр/букв полученный от @BotFather, жмем Test this token. Зеленая надпись говорит о том что мы на правильном пути.
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Снова открываем telegtam, пишем сообщение на @имя_бота_которое_указали_BotFather

для начала пишем /start
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Каждому встречному принтер не даст собой управлять.

В настройках telegram бота появится чат с нами:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
В разделе Command ставим список тех команд, которые может выполнять этот пользователь:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
в разделе Notify ставим нужные уведомления:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Сохраняем настройки. Теперь можно рулить принтером через telegram.

К примеру, смотрим список доступных файлов:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Печатаем нужный, узнаем статус во время печати, получаем уведомление об окончании печати:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Так же можно добавить системные команды в octoprint:

из консоли выполняем

sudo -s

echo 'pi ALL=NOPASSWD: /sbin/shutdown' > /etc/sudoers.d/octoprint-shutdown

exit

где pi - имя пользователя, под которым работает octoprint. Нужно заменить на свое

Далее ставим плагин Sytem Command Editor
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
после перезапуска octoptint в настройках появляется возможность создавать системные команды:
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
После перезапуска сервиса данные команды будут доступны и через telegram
Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
- потенциал этой функции просто огромный. К примеру, если завести управление БП принтера через GPIO платы Orange PI PC, то можно будет через telegram включать и выключать принтер по питанию. Данная функция уже есть в планах на будущее при построении наших D-bot.

Сам по себе telegram достаточно безопасная штука (регулярно проводятся конкурсы на взлом с солидными призами), но чтобы еще больше обезопасить свой telegram-аккаунт, рекомендую добавить двухфакторную авторизацию. С ней чтобы получить доступ к аккаунту, необходимо не только перехватить смс от telegram, но и выпытать пароль.

В следующем выпуске расскажу о том как сделать безопасный доступ к octoprint без применения сторонних сервисов - будем строить бункер защищенное соединение напрямую к веб-интерфейсу octoprint.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

44
Комментарии к статье