Удаленное управление 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 без применения сторонних сервисов - будем строить
Еще больше интересных статей
Голова для mankati fullscale XT под E3DV6
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Превращение Anycubic Kobra S1 в S1 Carbon.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Прошло несколько месяцев с нашей предыд...
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Всё работает. Спасибо большое....
Спасибо! Хорошая статья. Добав...
Часто печатаю на своём К1 из P...
Помогите пожалуйста. есть прин...
Всем привет, вчера собрал 3д п...
Всем привет, вчера собрал 3д п...
принтер voxelab aquila первые...