Raspberry PI – dostęp do skrzynki za mechanizmem NAT lub firewall
Napisał: Patryk Krawaczyński
04/04/2016 w Administracja Brak komentarzy. (artykuł nr 513, ilość słów: 376)
A
ktualnie ceny mikrokomputerów pozwalają na masowe ich podłączanie do sieci domowych. Często pełnią rolę multimedialnych stacji lub serwerów o konkretnym zastosowaniu znajdując się za mechanizmami NAT lub ścian ogniowych lokalnych routerów. W jaki sposób możemy dostać się zdalnie do takiego urządzenia bez robienia dziur w swoich sieciowych zabezpieczeniach? Rozwiązaniem jest użycie odwrotnego tunelu SSH.
Koncepcja odwróconego tunelowania SSH jest prosta – wymaga jedynie innego serwera SSH, który pełni rolę tzw. przekaźnika umieszczonego poza naszą, restrykcyjną siecią, z którym możemy połączyć się z poziomu domowego serwera. Może to być dowolny serwer VPS/Cloud z publicznym adresem IP. Z domowego serwera budujemy tunel SSH do naszego przekaźnika. Następnie z poziomu przekaźnika jesteśmy w stanie łączyć się z powrotem do naszego serwera domowego (dlatego nazwa “odwrócony” tunel):
|-Raspberry PI-| ---- |-Firewall-| ---- |-Serwer VPS-| <-- | Klient z Internetu | |--------------| <--> |-TunelSSH-| <--> |------------|
Spójrzmy, jak możemy stworzyć tunel. Na początku z poziomu Raspberry PI
łączymy się do Sewera VPS
:
pi@raspberrypi ~ $ ssh -fN -R 10666:localhost:22 agresor@serwervps.pl
Port 10666 musi być wolnym (żadna aplikacja na nim nie nasłuchuje) na Serwerze VPS. Fraza “-R 10666:localhost:22” głównie definiuje odwrócony tunel. W ten sposób port 10666 na Serwerze VPS
przekazuje ruch do portu 22 serwera Raspberry PI
. Opcje “-fN” mówią SSH, aby proces przeszedł w tło, jak tylko poprawnie uwierzytelnimy się na Serwerze VPS
. Zalogujmy się teraz na Serwer VPS
z dowolnego Klienta w Internecie
i sprawdźmy, czy na porcie 10666 coś nasłuchuje:
agresor@serwervps:~$ sudo netstat -tapn |grep 10666 [sudo] password for agresor: tcp 0 0 127.0.0.1:10666 0.0.0.0:* LISTEN 25553/sshd: agresor
i czy możemy zalogować się na serwer Raspberry PI
:
agresor@serwervps:~$ ssh -p 10666 pi@localhost
Należy pamiętać, że login i hasło wpisujemy dla serwera Raspberry PI
, a nie Serwera VPS
. Po pomyślnym zalogowaniu, będziemy na serwerze w naszej domowej sieci. Możemy również skorzystać z opcji GatewayPorts (/etc/ssh/sshd_conf
), aby wystawić port 10666 na interfejsie publicznym Serwerza VPS
, co nie będzie nas zmuszać do logowania się do serwera przekazującego tylko wykorzystanie jego zewnętrznego portu do bezpośredniego zalogowania się do serwera domowego (ssh pi@serwervps.pl -p 10666). Do automatycznego monitoringu oraz wznawiania tunelu możemy użyć autossh.
Więcej informacji: TCP port forwarding, SSH Tunnelling for fun and profit