Inne metody na dostęp zdalny

Uwaga

Gdy dodajesz dostęp z Internetu do swojej bramki, to pamiętaj o bezpieczeństwie. Należy odpowiednio skonfigurować logowanie do Asystenta domowego w celu zabezpieczenia dostępu, patrz opis: Zabezpieczenie dostępu do aplikacji.

Przekierowanie portów na routerze

Jedną z metod na udostępnienie bramki z Internetu jest przekierowanie portów na routerze. W przypadku aplikacji sprowadza się to do przekierowania portu 8123 z bramki na wolny port na routerze. Router jest dostępny z Internetu, więc wywołując jego adres na udostępnionym porcie można uzyskać dostęp do aplikacji Asystent domowy. To, jak wykonać takie przekierowanie, zależy do modelu routera. Szczegółowy opis należy sprawdzić w instrukcji danego routera.

TOR

Możliwe jest zdefiniowanie dostępu do bramki przez Internet w sieci Tor Onion. Usługa Tor Onion pozwala na zdalny dostęp do aplikacji Asystent domowy działającej na bramce w twojej sieci lokalnej za pośrednictwem standardowych portów.

Dostęp do urządzenia za pośrednictwem Tora jest najbezpieczniejszą metodą ponieważ oferuje silne szyfrowanie, dodatkowo Twoja bramka nie jest widoczna w zwykłym Internecie. Niestety nie jest to zbyt efektywna moteda, ponieważ sieć TOR jest zwykle dość wolna.

Instalacja potrzebnych pakietów

Zainstaluj TOR wykonując w konsoli komendę:

$ apt install tor

Ustawienia serwisu Onion

Należy zmodyfikować domyślny plik konfiguracyjny tor znajdujący się w lokalizacji $PREFIX/etc/tor/torrc Wykonaj tą komendę, by udostępnić na bramce serwis SSH oraz HTTP w Onion:

$ echo "SOCKSPort 127.0.0.1:9050
HiddenServiceDir /data/data/pl.sviete.dom/files/home/.tor/hidden_dom
HiddenServicePort 22 127.0.0.1:8022
HiddenServicePort 80 127.0.0.1:8180" > $PREFIX/etc/tor/torrc

Następnie trzeba utworzyć katalog, w którym będą przechowywane informacje o ukrytych usługach:

$ mkdir -p ~/.tor/hidden_dom

Uruchom usługę Tor wpisując w konsoli:

$ tor

poczekaj, aż serwis się uruchomi, pojawi się kilka logów aż na końcu będzie:

Bootstrapped 100%: Done

zamknij serwis kombinacją klawiszy: Ctrl+c

Nazwa hosta w Onion

Żeby sprawdzić unikalną nazwę hosta bramki w Onion wykonaj w konsoli:

$ cat ~/.tor/hidden_dom/hostname

wynik powinien być podobny do poniższego:

$ ytdv3tvdeh8u6koz.onion

Łączenie z serwisem

Pamiętaj, że usługa TOR powinna działać na obu stronach (klient / serwer), w przeciwnym razie pojawią się błędy połączenia.

  • SSH. Programem do połączenia z serwisem SSH może być torsocks

Zainstaluj torsocks wykonując w konsoli komendę:

$ apt install torsocks

Żeby połączyć się ze konsolą bramki przez sieć TOR, w konsoli swojego klienta wpisz polecenie:

$ torsocks ssh ytdv3tvdeh8u6koz.onion -i id_rsa_ais

Dodanie serwisu tor do menedżera procesów

Żeby TOR był uruchamiany automatycznie po każdym restarcie bramki, dodaj go do menedżera procesów PM2 wykonując następującą komendę w konsoli:

$ pm2 start tor --name tor && pm2 save

Serveo


Inny sposób na dostęp do bramki z Internetu, który nie wymaga konfiguracji routera oraz instalowania żadnych dodatkowych pakietów, to wykorzystanie usługi zdalnego przekazywania portów SSH. Ta metoda zostanie dokładnie opisana poniżej wraz z przykładami.

Dostęp do aplikacji z sieci Internet

żeby udostępnić aplikację w sieci Internet, w konsoli bramki wykonaj komendę:

$ ssh -R 80:localhost:8180 serveo.net

Opcja -R nakazuje klientowi SSH żądanie przekierowania portów z serwera i żądań proxy do określonego hosta i portu (Twojej bramki). Poddomena serwera serveo.net zostanie przypisana do przekazywania ruchu HTTP.

W odpowiedzi w konsoli pojawi się informacja typu:

Hi there
Forwarding HTTP traffic from https://alias.serveo.net
Press g to start a GUI session and ctrl-c to quit.

teraz w celu połączenia się ze swoją bramką z Internetu, wpisz w przeglądarce:

https://alias.serveo.net

W powyższym przypadku alias został wygenerowany/nadany automatycznie. Jest on unikalny dla każdej instancji i w Twoim przypadku będzie inny.

Możesz też podać własny alias który chciałbyś mieć w adresie i jeżeli będzie wolny to zostanie przypisany do Ciebie. W celu podania własnego aliasa np. bramka w konsoli wpisujemy następującą komendę:

$ ssh -R bramka:80:localhost:8180 serveo.net

Dostęp do konsoli bramki z sieci Internet

w podobny sposób jak aplikację, możesz też przekierować połączenie ssh, w tym celu w konsoli wpisz:

$ ssh -R bramka:22:localhost:8022 serveo.net

W odpowiedzi w konsoli pojawi się informacja typu:

Hi there
Forwarding SSH traffic from alias "bramka"
Press g to start a GUI session and ctrl-c to quit.

teraz w celu połączenia się ze swoją bramką po ssh będąc poza lokalną siecią wystarczy, że wpiszesz w konsoli:

$ ssh -o ProxyCommand="ssh -W bramka:22 serveo.net" bramka -i id_rsa_ais

Zapisanie zdalnego przekazywania portów SSH

  • autossh

    W celu zapewnienia, że zdalne przekierowanie portów będzie automatycznie odnawiane, zamiast ssh zastosujemy autossh, w tym celu w konsoli instalujemy pakiet:

    $ apt install autossh

W celu uruchamiania dostępu po każdym restarcie bramki, możemy posłużyć się menedżerem procesów PM2.

Należy zwrócić uwagę, że w poniższych przykładach bramka, to tylko przykładowy alias - definiując proces należy podać własny alias

  • zdefiniowanie procesu dostępu do aplikacji w PM2
$ pm2 start autossh --name ext-http \
-- -M 0 -o ServerAliveInterval=60 -R bramka:80:localhost:8180 serveo.net
  • zdefiniowanie procesu dostępu do konsoli w PM2
$ pm2 start autossh --name ext-ssh \
-- -M 0 -o ServerAliveInterval=60 -R bramka:22:localhost:8022 serveo.net
  • zapisanie zdefiniowanych procesów
$ pm2 save

Zabezpieczenie dostępu do aplikacji

Gdy bramka działa tylko w sieci lokalnej, umożliwiamy trzy sposoby autentykacji:

  • logowanie za pomocą nazwy użytkownika i hasła
  • łatwe logowanie w zaufanej sieci (wystarczy wybrać użytkownika z listy, żeby się zalogować bez podawania hasła)
  • logowanie za pomocą hasla API

konfiguracja autentykacji wygląda tak:

homeassistant:
auth_providers:
- type: trusted_networks
- type: homeassistant
- type: legacy_api_password

W aplikacji wygląda to tak:

Logowanie w sieci lokalnej

Wyłączenie łatwego logowania

Tak łatwe metody autentykacji nie są odpowiednie w przypadku dostępu z Internetu, dlatego gdy dostęp z Internetu jest włączony to automatycznie zmieniamy konfigurację autentykacji na następującą:

homeassistant:
auth_providers:
- type: homeassistant

Przy włączonym dostępie z Internetu wymagane jest logowanie do aplikacji:

Logowanie z Internetu

Włączenie modułu uwierzytelniania wieloskładnikowego

Moduł uwierzytelniania wieloskładnikowego po podaniu hasła (czyli coś, co już wiemy) wymaga podania kolejnego jednorazowego hasła, które ma określony czas ważności i jest przesyłane na telefon (czyli coś, co tylko my dostaniemy). W celu włączenia tego zabezpieczenia należy przejść do 'ustawienia użytkownika' a następnie postępować zgodnie z instrukcją zamieszczoną w regionie Moduły uwierzytelniania wieloskładnikowego

Hasło jednorazowe