Удаленное управление Octoprint или защити меня полностью. Часть 1 - правильная ОС и Telegram
Как защититься от злобного хакера, который обязательно найдет открытый веб-интерфейс, подберет пароль, остановит 100500-часовую печать и припаркует печатающую головку прямо в модель? Есть решение. Даже два.
Дано: Orange Pi PC + D-bot CoreXY.
Для начала, в свете относительно недавних событий (обнаружение backdoor в ядре Linux для процессоров Allwinner) не стоит выбирать стандартные образы Linux для Orange PI PC и даже сборки на их основе.
Для комфортной работы рекомендую Armbian - стабильно работает и регулярно обновляется.Ставится просто - качаем образ, программу для записи образов, выбираем файл образа, выбираем диск, немного ждем и все готово.Базовую настройка отлично описана тут. Могу добавить к ней следующее:
Чтобы настроить 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чтобы получить все команды бота, отправьте /helpрегистрируем бота командой /newbot - @BotFather спросит отбражаемое имя для нового бота:следующим вопросом спросит username для бота. После регистрации бот будет доступен по нику @username_bot.
Требования - в конце username обязательно должно быть написано bot. (и как выяснилось, тире в имени бота тоже нельзя использовать). В ответ на свободное имя пользователя, @BotFather пришлет токен для бота:Открываем Octoprint, заходим в настройки (Settings) -> Менеджер плагинов (Plugin manager) -> находим telegram, устанавливаемпосле установки octoprint следует перезагрузить командной из командной строки
sudo service octoprint restart
снова открываем Octoprint, заходим в настройки (Settings) -> появился пункт Telegtam, выбираем его
в поле telegtam bot token вводим набор цифр/букв полученный от @BotFather, жмем Test this token. Зеленая надпись говорит о том что мы на правильном пути.Снова открываем telegtam, пишем сообщение на @имя_бота_которое_указали_BotFather
для начала пишем /startКаждому встречному принтер не даст собой управлять.
В настройках telegram бота появится чат с нами:В разделе Command ставим список тех команд, которые может выполнять этот пользователь:в разделе Notify ставим нужные уведомления:Сохраняем настройки. Теперь можно рулить принтером через telegram.
К примеру, смотрим список доступных файлов:Печатаем нужный, узнаем статус во время печати, получаем уведомление об окончании печати:Так же можно добавить системные команды в octoprint:
из консоли выполняем
sudo -s
echo 'pi ALL=NOPASSWD: /sbin/shutdown' > /etc/sudoers.d/octoprint-shutdown
exit
где pi - имя пользователя, под которым работает octoprint. Нужно заменить на свое
Далее ставим плагин Sytem Command Editorпосле перезапуска octoptint в настройках появляется возможность создавать системные команды:После перезапуска сервиса данные команды будут доступны и через telegram- потенциал этой функции просто огромный. К примеру, если завести управление БП принтера через GPIO платы Orange PI PC, то можно будет через telegram включать и выключать принтер по питанию. Данная функция уже есть в планах на будущее при построении наших D-bot.
Сам по себе telegram достаточно безопасная штука (регулярно проводятся конкурсы на взлом с солидными призами), но чтобы еще больше обезопасить свой telegram-аккаунт, рекомендую добавить двухфакторную авторизацию. С ней чтобы получить доступ к аккаунту, необходимо не только перехватить смс от telegram, но и выпытать пароль.
В следующем выпуске расскажу о том как сделать безопасный доступ к octoprint без применения сторонних сервисов - будем строить
Еще больше интересных статей
Обновленный хотэнд QIDI Tech Q1 Pro
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Умерли термисторы и концевик по y, creality ender 3 s1
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
G-CODE по-русски для 3D печати (Мини-справочник)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
не совсем понятны два момента....
А вы ретракты регулировали? На...
"как мыть то это?" - мойка выс...
Неделю назад пришел с сопла 0....
Один из моих принтеров K...
Всем - добра, не смотря ни на...
Доброго дня!Нубский вопрос, но...