Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jak łączyć się zdalnie do Raspberry Pi

ghost666 22 May 2017 20:26 6351 10
  • Jak łączyć się zdalnie do Raspberry Pi
    Zdalny dostęp do Raspberry Pi nie jest sprawą trywialną. Z jednej strony chcemy móc monitorować pracę naszego systemu poprzez sieć, ale z drugiej strony nie chcemy, aby każdy miał taką możliwość, nie mówiąc już o zdobyciu dostępu do maszyny. Co zatem zrobić, aby dostęp dla nas był łatwy, a dla hackerów trudny? Istnieje wiele sposobów zabezpieczenia naszego 'Maliny', poniżej przyjdziemy się kilku z nich. Autor niniejszego artykułu, jak sam podkreśla, nie jest specjalistą od zabezpieczeń sieciowych, więc nie traktujmy tego tekstu jako kompletnego kompendium zabezpieczania systemu IT. Jednakże, to dobry start.

    Kwestie zasadnicze

    Zmień hasło! To zadziwiające, jak dużo ludzi wykorzystuje swoje Raspberry Pi z domyślnymi danymi do logowania (login i hasło). To podstawowy błąd, nie róbmy tak nigdy.

    Nie ma konieczności zmieniać hasła Roota, ponieważ zazwyczaj jest on wyłączony na Raspberry Pi. Musimy jednakże po zalogowaniu do systemu jako użytkownik Pi zmienić hasło użytkownika. Aby to zrobić wpisujemy komendę:

    Code: bash
    Log in, to see the code


    Komputer zapyta nas wtedy o obecne hasło i dwukrotnie o nowe. Po potwierdzeniu, nowe hasło zostanie zapisane w systemie.

    Następnie, aby zabezpieczyć system przed atakami z sieci zainstalować powinniśmy firewall. Pomoże nam on w odfiltrowaniu niechcianego ruchu w sieci, dzięki czemu możemy zabezpieczyć się przed atakami. Zainstalujmy zatem Uncomplicated Firewall. W konsoli wpisujemy:

    Code: bash
    Log in, to see the code


    A system zutomatycznie pobierze i zainstaluje oprogramowanie. Teraz możemy przystąpić do blokowania ruchu. Najprościej jest zablokować po prostu połączenia przychodzące, aby to zrobić musimy wpisać:

    Code: bash
    Log in, to see the code


    Oczywiście nie możemy całkowicie wyłączyć ruchu przychodzącego do naszej maliny, ponieważ chcemy łączyć się z nią po SSH z naszej sieci wewnętrznej. Chociażby po to, aby skonfigurować systemy do prezentacji danych w sieci web. W tym celu ustalamy wyjątek firewalla wpisując w terminalu:

    Code: bash
    Log in, to see the code


    Dzięki temu wszystkie adresy lokalne będą miały dostęp do portu 22. Dodatkowo wyjątek możemy dodać dla ruchu z internetu na porcie odpowiedzialnym za wyświetlanie stron sieci web:

    Code: bash
    Log in, to see the code


    Jak widać polecenie dodające wyjątki do firewalla jest bardzo proste. Jeśli chcemy możemy dodać jeszcze wyjątek dla połączeń SSL (port 443), połączeń z proxy (port 8080) i tak dalej.

    Finalnie - jedna porada, o której warto pamiętać: wyłączajmy komputer, gdy z niego nie korzystamy. To wydaje się być bardzo proste, jednakże często pomijane - gdy 'Malina' nic nie robi, niech nie będzie włączona i podłączona do sieci. W ten sposób unikniemy z pewnością wielu ataków. Da się to bardzo prosto rozwiązać, jak opisuje autor:

    * Raspberry Pi z Kodi podłączony jest do portu USB telewizora, z którego pobiera zasilanie.
    * Printserwer podpięty jest do tej samej listwy co drukarka

    Zdalny dostęp do danych

    Zanim zaczniemy zajmować się zagadnieniami związanymi z zdalnym dostępem do naszego komputera spójrzmy na zagadnienie związane z udostępnianiem danych po sieci. W poniższej części artykułu znajdziemy opis w jaki sposób uruchomić z wykorzystaniem Octopi zdalnego dostępu do naszych danych.

    Jeśli bezpieczeństwo systemu jest naszym priorytetem, to odcięcie systemu dla wszystkich połączeń przychodzących i jedynie wysyłanie danych z komputera jest najlepszym wyjściem. Na realizację takiego rozwiązania pozwala nam system telegramów - plugin Telegram Chat do Octoprint. Jakkolwiek Octoprinter to serwis druku, to posiada on wiele interesujących pluginów, umożliwiających realizację wielu ciekawych funkcji/

    Jak łączyć się zdalnie do Raspberry Pi


    Więcej o pluginie Telegram znaleźć możemy tutaj. Zainstalujmy go i odpowiednio skonfigurujmy w zakładce pluginów Octoprinta.

    Jak łączyć się zdalnie do Raspberry Pi


    Oczywiście, możemy mieć prostsze potrzeby, dla których powyższy plugin to zbyt dużo. Dla wielu potrzeb dostateczne jest skorzystanie z klasycznego Mailguna - skryptu do wysyłania e-maili. Prosty Pythonowy skrypt z wykorzystaniem Mailguna zaprezentowany jest poniżej:

    Code: python
    Log in, to see the code


    W przypadku jeśli chcemy wysyłać pliki, a nie tylko krótkie wiadomości, najlepiej posłużyć się Dropboxem. Z jednej strony jest on dostępny z poziomu telefonu czy tabletu, a z drugiej strony prosto oprogramować go od strony Raspberry Pi. Poniżej znajduje się skrypt napisany w Bashu, który służy do wykonania zdjęcia i załadowania plików do Dropboxa. Skrypt dropbox_uploader.sh pobrać możemy z GitHuba.

    Code: bash
    Log in, to see the code


    Idźmy dalej - istnieje wiele RESTowych API, które można wykorzystać, bez konieczności hostowania basy danych, aby wypychać dane z poziomu Raspberry Pi. Dzięki temu, że systemy te nie wymagają instalowania bazy danych są zupełnie zamknięte z punktu widzenia potencjalnych atakujących nasz system. Przykładem może być system z Sparkfun Wystarczy skorzystać z API poprzez adres HTTP:

    Code:
    http://data.sparkfun.com/input/[klucz publiczny]?private_key=[klucz prywatny]&datas=[wartość]


    Na przykład:

    [code]https://data.sparkfun.com/input/qwerty10987?private_key=abcdefgh12345&datas=NASZE_DANE

    Tak wygląda to w praktyce, od strony konfiguracji po stronie Sparkfuna:

    Jak łączyć się zdalnie do Raspberry Pi


    Możemy skorzystać także na przykład z Phanta pod Pythonem co umożliwi nam korzystanie z Sparkfuna z poziomu naszych skryptów napisanych w Pythonie. Tego rodzaju skrypt wygląda na przykład tak:

    Code: python
    Log in, to see the code


    Zdalny pulpit, tunelowanie i zdalny dostęp do Raspberry Pi z chmury

    Użytkownicy Raspberry Pi stworzyli wielkie zapotrzebowanie na serwisy oferujące zdalny, bezpieczny dostęp do swoich 'Malin'. Wygenerowało to powstanie wielu firm, dostarczających tego typu właśnie rozwiązania. Jednym z popularniejszych rozwiązań dających zdalny dostęp do systemu jest VNC. Dostępny jest on w wersji w szyfrowanej chmurze. Tego rodzaju zabezpieczenie pozwala na bezpieczne uwierzytelnianie. Wystarczy założyć darmowe konto VNC i pobrać oficjalne oprogramowanie dla naszego systemu operacyjnego. Oczywiście, są głosy, wskazujące, że nie jest to w pełni bezpieczny system, aczkolwiek wydaje się on być dostatecznie dobrze zabezpieczony do naszych zastosowań.

    VNC jest narzędziem do zdalnego udostępniania pulpitu. Istnieje wersja na system operacyjny RPi taki jak Raspbian Jesse Lite. Koniecznie musimy zainstalować oczywiście pulpit w naszym systemie, albo też przerzucić się na pełną wersję systemu z interfejsem graficznym. Aby zrobić to w Octopi wystarczy w terminalu wpisać

    Code: bash
    Log in, to see the code


    Musimy się oczywiście upewnić czy na karcie SD jest dostatecznie dużo miejsca, aby zainstalować potrzebne elementy systemu. VNC konfigurujemy na komputerze z pomocą Raspi-Config w zakładce 'Interfacing'.

    Dodatkowo warto zainstalować przeglądarkę internetową. Autor artykułu sugeruje wykorzystanie Epiphany; aby ją zainstalować wystarczy w terminalu wpisać:

    Code: bash
    Log in, to see the code


    I już możemy zobaczyć co VNC prezentuje w sieci web, gdy wejdziemy na stronę na localhoście.

    Jak łączyć się zdalnie do Raspberry Pi


    Zarządzanie Anet A8 Octoprint poprzez VNC

    Do zdalnego dostępu i kontroli Raspberry Pi poprzez sieć wykorzystamy PageKite.

    Jeśli chcemy umożliwić dostęp do naszej 'Maliny', ale jednocześnie nie chcemy otwierać naszej sieci, istnieje kilka opcji, takich jak serwery proxy czy dodatkowe, pośredniczące usługi. Zaprezentowany poniżej sposób rozwiązania tego zagadnienia nie różni się zbytnio od pierwszego przykładu z prezentacją danych - użytkownik, który chce skomunikować się z naszym komputerem komunikuje się de facto z pośredniczących serwerem, a nie samym Raspberry Pi.

    Realizację tej architektury znacznie ułatwia wykorzystanie PageKite. Dodatkowo serwis ten oferuje nam miesiąc darmowego korzystania z usług. Dzięki jego wykorzystaniu dostęp mamy do strony w domenie COŚ.pagekite.,me, przez który przechodzi cały ruch sieciowy do naszej maszyny.

    Pierwsze logowanie

    Po pobraniu odpowiedniego oprogramowania rozpocząć możemy wpisując:

    Code: bash
    Log in, to see the code


    A następnie, aby uruchomić webserwer na porcie 80:

    Code: bash
    Log in, to see the code


    Gotowe! Jeśli nasze Rasopberry Pi ma dostęp do sieci i skonfigurowane jest forwardowanie portów to system dostępny będzie z dowolnego miejsca na świeci poprzez ustawiony adres.

    Pamiętajmy, że jak zawsze, istnieje wiele opcji, które umożliwiają nam osiągnięcie założonych rezultatów. Mają one różne wady i zalety, różny poziom trudności i wydajność. Wybierzmy stosowne rozwiązanie dla siebie i cieszmy się jego funkcjami.

    Źródło: https://makerhacks.com/raspberry-pi-remote-access/

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11215 posts with rating 9468, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • #2
    damian5602
    Level 11  
    Quote:
    sudo ufw allow from 10.0.0.0/24 to any port 22 proto tcp

    Nie każdy ma ip 10.0.0.x może mieć 192.168.1.x
  • #3
    Jufo
    Level 14  
    Może trochę rozwalę system, ale jest TeamViewer na Rasbiana, jeżeli chcemy się dostać poza routerem a nie mamy stałego IP, chociażby nie wszyscy dostawcy LTE przepuszczają przez VPN'a DDNS:
    https://www.teamviewer.com/en/download/linux/#downloadAdditionalDownloads

    Dla bezpieczeństwa polecam xscreenseaver jeżeli chcemy zrobić autolocka z hasłem do gui
    https://www.jwz.org/xscreensaver/

    Można oczywiście uruchomić w trybie konsoli :)
  • #4
    ghost666
    Translator, editor
    Jufo wrote:
    Może trochę rozwalę system, ale jest TeamViewer na Rasbiana, jeżeli chcemy się dostać poza routerem a nie mamy stałego IP, chociażby nie wszyscy dostawcy LTE przepuszczają przez VPN'a DDNS:
    https://www.teamviewer.com/en/download/linux/#downloadAdditionalDownloads

    Dla bezpieczeństwa polecam xscreenseaver jeżeli chcemy zrobić autolocka z hasłem do gui
    https://www.jwz.org/xscreensaver/

    Można oczywiście uruchomić w trybie konsoli :)


    TeamViewer aby nie jest płatny?
  • #5
    Jufo
    Level 14  
    Dla uzytku prywatnego jest darmowy, sam z niego korzystam, dziala bardzo dobrze :)
  • #6
    szumigt
    Level 15  
    No i to jest uczek ktorego szukałem....
  • #7
    Szyszkownik Kilkujadek
    Level 37  
    Ja polecam VPN zamiast bawienia się w przekierowywanie portów. Na routerze wystarczy uruchomić VPN PPTP z szyfrowaniem MPPE 128 bit. Dostęp za pomocą kont użytkowników. Ogromnym plusem tego konkretnie rozwiązania jest to, że klient takiego VPN'a jest wbudowany w Windowsa i Androida.
  • #8
    IS
    Level 17  
    Tak na ruterze wystarczy uruchomić VPNa jak się ma zewnętrzne IP. W sieciach LTE masz adres prywatny (chyba, że zapłacisz ekstra). Wtedy pozostaje kombinowanie. Ja ze względów bezpieczeństwa polecałem już tutaj i polecał będę własnego VPSa jako serwer VPN, wtedy wszelkie Rpi czy monitoringi mamy u siebie jako klientów a nie w chmurze u chińczyka. Fakt trzeba zapłacić - ale ceny zaczynają się poniżej 100zł/rok.
  • #9
    szumigt
    Level 15  
    ... ale to jeśli uruchomie vpn to już zew ip nie trzeba ?
  • #11
    IS
    Level 17  
    Jeżeli serwer VPN jest na serwerze z zewnętrznym IP to klienci mogą być już za NATem. Czy serwer VPN będzie na routerze z Neostradą czy na VPSie w serwerowni to nie ma znaczenia byle miał IP zewnętrzny.