Wystawiłeś panel drukarki na publiczny adres, żeby zerkać na wydruk z telefonu: czym to zastąpić
Panel druku wystawiony przez przekierowanie portu daje obcym kamerę, pliki klientów i grzałki. Pięć dróg zdalnego dostępu i kolejność reakcji po wpadce.
Router ma przekierowany port na Raspberry Pi z panelem drukarki, żeby po wyjściu z warsztatu dało się sprawdzić z telefonu, czy wydruk nadal stoi na stole. Konfiguracja zajmuje trzy minuty i nie kosztuje nic, dlatego tak właśnie mała farma druku najczęściej trafia do internetu. Kłopot w tym, że panel sterowania drukarką nie jest stroną do oglądania. To interfejs, z którego da się wgrać plik, ruszyć osiami, podnieść temperaturę stołu i głowicy, a przy części konfiguracji także wymienić firmware sterownika.
Co widzi ktoś, kto trafi na Twój panel z wyszukiwarki urządzeń
Wyszukiwarki urządzeń podłączonych do sieci indeksują wszystko, co odpowiada na publicznym adresie, i pozwalają filtrować wyniki po tytule strony czy nagłówku odpowiedzi. Panel drukarki ma charakterystyczny tytuł, więc znalezienie go nie wymaga ani wiedzy, ani celowanego ataku na Ciebie.
Skala tego zjawiska została policzona: analityk SANS Internet Storm Center znalazł w 2018 roku 3 759 instancji OctoPrinta, które nie wymagały żadnego uwierzytelnienia, z czego 1 585 w samych Stanach Zjednoczonych. Ta liczba ma osiem lat i nikt jej od tamtej pory nie odświeżył w porównywalny sposób, więc nie czytaj jej jako opisu stanu na dziś. Czytaj jako dowód, że ryzyko nie jest teoretyczne: opis tego skanu zawiera zrzuty z kamer, na których widać nie tylko drukarkę, ale i to, co za nią stoi.
Otwarty panel daje osobie z zewnątrz cztery rzeczy naraz:
- Obraz z kamery — a kadr obejmuje zwykle więcej niż stół roboczy: drzwi, biurko, ekran komputera, czasem osobę przy maszynie.
- Pliki na dysku — G-code to zwykły plik tekstowy bez szyfrowania, a razem z nim leżą zwykle wrzucone modele źródłowe.
- Możliwość wgrania własnego zadania i uruchomienia go w dowolnym momencie.
- Sterowanie grzałkami. Oficjalny poradnik OctoPrinta opisuje najgorszy scenariusz wprost: przez otwarty panel da się wgrać firmware z wyłączonymi zabezpieczeniami termicznymi, a wtedy rozmawiamy o pożarze, nie o zmarnowanej szpuli.
Najmniej efektowny punkt z tej listy jest w praktyce najdroższy. Jeśli drukujesz na zlecenie, na dysku leżą modele klientów — rzeczy, których nie wolno Ci udostępniać, bo tak stoi w mailu, którym przyjąłeś zlecenie. Spalona głowica kosztuje kilkaset złotych i jeden wieczór. Wyciek cudzego projektu kosztuje relację i bywa, że kończy współpracę.
Hasło w panelu to nie to samo co zamknięty port
Włączenie kontroli dostępu w panelu jest konieczne, ale nie zamyka sprawy. Formularz logowania wystawiony na publiczny adres można odpytywać bez końca, dlatego oficjalny poradnik OctoPrinta przy każdym wariancie z odwrotnym proxy każe dołożyć ograniczenie liczby prób logowania — bez tego zostaje Ci wyłącznie siła hasła.
Drugi element to klucz API. To pełnoprawne poświadczenie: kto go ma, nie potrzebuje hasła ani formularza, bo rozmawia z panelem bezpośrednio. Klucz trafia do aplikacji na telefonie, do wtyczek i do skryptów kolejkujących zadania, więc w farmie zwykle jest w kilku miejscach naraz i nikt nie pamięta, w ilu.
W zestawie Klipper plus Moonraker dochodzi trzecia rzecz — konfiguracja zaufania. Moonraker rozpoznaje klientów po adresie i pozwala wpuścić całe zakresy bez logowania, a osobno steruje nagłówkami CORS. Domyślny przykład z dokumentacji Moonrakera obejmuje wyłącznie adresy sieci lokalnych:
[authorization]
cors_domains:
*://my.mainsail.xyz
*://*.local
trusted_clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
FE80::/10
::1/128
Dokumentacja osobno zaznacza, że gwiazdka w cors_domains, wpuszczająca wszystkie domeny, jest przeznaczona dla osób rozwijających klienty i nie ma czego szukać w działającej instalacji. Poszerzanie trusted_clients działa tak samo: każdy adres na tej liście wchodzi do panelu bez logowania, więc wpisanie tam zakresu spoza własnej sieci znosi uwierzytelnienie, zamiast je konfigurować.
Twórcy Mainsaila formułują to bez zapasu: nie otwieraj portów Mainsaila ani Moonrakera na routerze na resztę świata. Zdalny dostęp ma iść inną drogą.
Pięć dróg do panelu z zewnątrz i czym się różnią
Wybór nie sprowadza się do „bezpieczne albo nie”. Różnica siedzi w tym, co zostaje wystawione na publiczny adres, co musisz utrzymywać przez następne dwa lata i kto poza Tobą ma wgląd w obraz z kamery.
| Droga | Co odpowiada na publicznym adresie | Co utrzymujesz sam | Kto jeszcze ma wgląd | Kiedy ma sens |
|---|---|---|---|---|
| Przekierowanie portu na routerze | Cały panel drukarki i podgląd z kamery | Aktualizacje panelu, hasła, limit prób logowania | Każdy, kto trafi na adres | Przy maszynie z grzałkami: nigdy |
| Własny VPN na routerze lub osobnym Pi (WireGuard, OpenVPN, PiVPN) | Wyłącznie port VPN | Serwer VPN, klucze urządzeń, aktualizacje | Nikt poza Twoimi urządzeniami | Masz dostęp do routera i obsługujesz farmę w jedną lub dwie osoby |
| Sieć nakładkowa (Tailscale i podobne) | Nic — połączenie wychodzi od urządzeń | Konta i uprawnienia w panelu usługi | Dostawca usługi pośredniczy w zestawieniu połączenia | Zmienny adres IP, brak dostępu do routera, kilka osób z dostępem |
| Tunel usługi dla druku (Obico, OctoEverywhere) | Nic | Konto i wtyczka po stronie panelu | Dostawca usługi, przez którego idzie też obraz z kamery | Chcesz przy okazji aplikację na telefon i powiadomienia o błędzie |
| Odwrotne proxy z logowaniem i limitem prób (nginx, Caddy, HAProxy) | Proxy z HTTPS, panel schowany za nim | Certyfikat, reguły, limit prób, aktualizacje proxy | Każdy, kto zna hasło lub je zgadnie | Musisz dać dostęp komuś, kogo nie wpuścisz do swojej sieci |
Dwie drogi środkowe są w praktyce najczęstszym wyborem małego warsztatu, bo nie wymagają stałego adresu IP ani grzebania w routerze, który w wielu lokalach należy do wynajmującego. Przy sieci nakładkowej sprawdź jednak, jak liczone są urządzenia. W Tailscale plan Personal jest bezpłatny i obejmuje do sześciu użytkowników, nielimitowaną liczbę urządzeń użytkownika i 50 zasobów oznaczonych tagami, a każdy kolejny tagowany zasób kosztuje dolara miesięcznie (stan na wrzesień 2026). Różnica jest istotna dla farmy: bezobsługowe Pi przy drukarce, dodane kluczem z tagiem zamiast logowania człowieka, liczy się do tej drugiej puli.
Odwrotne proxy zostawiam na końcu celowo. Jest najbardziej elastyczne i wymaga najwięcej dyscypliny — to Ty odpowiadasz za certyfikat, limit prób i za to, że nikt nie zostawi hasła w niezmienionej postaci. Poradnik OctoPrinta dorzuca do tego zalecenie, które łatwo przeoczyć: proxy powinno stać na innej maszynie niż ta podłączona kablem do drukarki. Jedno urządzenie robiące wszystko naraz oznacza, że przejęcie warstwy sieciowej to od razu dostęp do sterownika.
Przy jednej drukarce to wygoda, przy pięciu to procedura
Różnica między jedną maszyną a farmą nie polega na liczbie tuneli, tylko na tym, że dochodzą ludzie. Podwykonawca, który przez miesiąc pilnował nocnych wydruków, ma dostęp do panelu także po zakończeniu współpracy, jeśli nikt mu go nie odebrał. Dlatego przy więcej niż dwóch maszynach zdalny dostęp przestaje być ustawieniem, a zaczyna być listą: kto, do czego, od kiedy i do kiedy.
Warto rozdzielić dwie rzeczy, które zdalny podgląd myli. Podgląd pozwala zatrzymać wydruk, nie pozwala go naprawić. Ktoś i tak musi podejść do maszyny, zdjąć część i wyczyścić stół, więc oszczędność nie bierze się z mniejszej liczby interwencji, tylko z tego, że decyzja o przerwaniu zapada po dziesięciu minutach zamiast po pięciu godzinach. Jeśli o trzeciej w nocy i tak nikt nie podejdzie, to zdalny dostęp kupuje Ci spokojniejszy sen, a nie krótszy czas realizacji — i tak też należy go wyceniać. Pomiar, który pokazuje, gdzie naprawdę stoi przepustowość warsztatu, opisuje osobny tekst o tym, co zmierzyć, zanim dokupisz szóstą drukarkę.
Ta część jest już decyzją o prowadzeniu firmy, nie o konfiguracji: kto reaguje, w jakich godzinach, za jakie pieniądze i co obiecujesz klientowi w umowie. Jednoosobowy warsztat, który zaczyna sprzedawać czas maszyny, potrzebuje tych ustaleń na piśmie wcześniej, niż mu się wydaje — materiały i społeczność wokół prowadzenia takiej działalności zebrane są w Strefie GeekWork, zamkniętej grupie freelancerów z sekcjami o wycenie i klientach.
Osobno zapisz konfigurację dostępu w miejscu, które przetrwa wymianę karty SD. Lista przekierowań, nazwy urządzeń w sieci nakładkowej, miejsce przechowywania kluczy API — bez tego przejęcie farmy po kimś albo po własnej awarii zaczyna się od zgadywania. Ten sam problem w wersji dla projektów informatycznych opisuje tekst o tym, co trzeba odtworzyć, gdy projekt po wykonawcy nie startuje na czystej maszynie.
Panel stał na publicznym adresie przez pół roku: kolejność reakcji
Jeżeli przekierowanie działa od dawna, samo jego wyłączenie nie zamyka sprawy, bo klucze i hasła mogły już wyjechać. Kolejność ma znaczenie:
- Zdejmij przekierowanie na routerze, ale nie wyłączaj urządzenia — logi będą potrzebne za chwilę.
- Wygeneruj nowy klucz API i unieważnij stary. Po tym kroku przestaną działać aplikacja na telefonie, wtyczki i skrypty, i to jest pożądany efekt: dowiesz się, w ilu miejscach ten klucz naprawdę siedział. Kolejność działań po wycieku poświadczenia jest ta sama co w projektach webowych i została rozpisana w tekście o tym, co robić, gdy klucz API trafił do paczki oddanej klientowi.
- Zmień hasła kont i przejrzyj listę użytkowników panelu — sprawdź, czy nie przybyło konto, którego nie zakładałeś.
- Przejrzyj pliki na dysku i historię zadań. Szukasz plików, których nie wgrywałeś, i zadań uruchomionych poza Twoimi godzinami pracy.
- Sprawdź logi dostępu pod kątem adresów spoza własnej sieci. Nawet jeśli nic nie znajdziesz, będziesz wiedział, jak wygląda normalny ruch.
- Powiadom klientów, których pliki tam leżały. To nieprzyjemna rozmowa i jest częścią zobowiązania, które podjąłeś, przyjmując cudzy model.
- Dopiero teraz ustaw dostęp zdalny jedną z dróg z tabeli powyżej.
Lista kontrolna do powieszenia przy farmie
- Na routerze nie ma przekierowania na port panelu ani na port kamery.
- Panel wymaga logowania także wtedy, gdy wchodzisz na niego z sieci lokalnej.
trusted_clientsobejmuje wyłącznie zakresy Twojej sieci, acors_domainsnie zawiera gwiazdki.- Każda aplikacja i każdy skrypt ma własny klucz API, który da się unieważnić pojedynczo.
- Istnieje spisana lista osób i urządzeń z dostępem, z datą ostatniego przeglądu.
- Dostęp podwykonawcy ma ustaloną datę wygaśnięcia, a nie tylko obietnicę usunięcia.
- Kadr kamery nie obejmuje drzwi, biurka z dokumentami ani ekranu komputera.
- Wiadomo, kto fizycznie podchodzi do maszyny, gdy podgląd pokaże problem, i w jakich godzinach.
- Konfiguracja dostępu jest zapisana poza kartą SD w drukarce.
Jedna rzecz do zrobienia przed następnym nocnym wydrukiem
Wejdź na stronę routera i otwórz listę przekierowań portów. To zajmuje pięć minut i kończy spekulacje. Jeśli jest tam port panelu, kamery albo cokolwiek celujące w adres Raspberry Pi, masz jedną decyzję do podjęcia: własny VPN, jeśli router jest Twój i zamierzasz go utrzymywać, albo sieć nakładkowa, jeśli routera nie kontrolujesz lub dostęp ma mieć więcej niż jedna osoba. Obie drogi da się uruchomić w jeden wieczór, obie zdejmują panel z publicznego adresu.
Jeśli przekierowania nie ma, zostaje drugie pytanie, trudniejsze: czy wiesz, kto dziś ma dostęp do Twoich maszyn i przez co. Odpowiedź „chyba tylko ja” oznacza, że listę trzeba dopiero spisać — i to jest zadanie na ten sam wieczór.