Jak udělat jump server pro bezpečné připojení k domácí síti?

Kontext: Z profesních důvodů jsem se musel přestěhovat do nového města, a teď sdílím byt s lidmi, které neznám (a jeden je informatik s certifikací CISCO :worried:), a tito lidé mají heslo a přístup k routeru bytu.

Co chci: Ve své “mateřské domovině” mám bezpečnou síť rozdělenou routerem a chci se k ní připojit, když potřebuju prohlížet citlivá data (např. vstoupit na svůj bankovní účet nebo nakoupit na Ebay přes Paypal).

Jaké je nejjednodušší a nejlevnější řešení? A prosím, vysvětlete mi to, jako bych to dělal já úplný začátečník…

Poznámky:

  • Jsem vývojář, málo vím o síťovém počítačovém inženýrství.
  • Vlastně pracuji s Ubuntu, ale nikdy jsem neudělal server.
  • Mám další počítač doma, který může sloužit jako jump server, přemýšlel jsem o Windows s Ubuntu serverem ve VirtualBoxu uvnitř, ke kterému by měl přístup jen můj počítač přes SSH.
  • Přístup ke serveru by měl být přes SSH, aby spojení bylo šifrované.
  • Doma mám router Huawei LTE CPE E5172.
  • IP adresa je dynamická (slyšel jsem, že DDNS to řeší).
  • Moji rodiče žijící v mém domově mají přístup k routeru, ale pouze můj počítač by měl mít přístup k jump serveru.

Díky za rady!

Jaké je nejjednodušší a nejlevnější řešení?

Používejte prostě https. Není na tom nic složitějšího nebo levnějšího.

Stačí se připojit přes https a nepřidávat žádné další certifikáty do důvěryhodných certifikátů vašeho systému. Celý smysl https je zabezpečit spojení přes nedůvěryhodné sítě – a všechno za vaším routerem je také nedůvěryhodné. Vaše žádost na banku prochází různými sítěmi („internet“); žádnou z nich nedůvěřujete ani vy.

Existují i jiné důvody pro použití jump hostu, ale pokud je to jen “k ochraně bankovnictví a eBay”, potom https bude stačit.

Certifikace CISCO nejsou tak důležité. Mám jich více i já a neměl by vás to jakkoliv omezovat. Nejsou to žádní zlí géniové.

Ubuntu minimal s openssh-server/OpenVPN nainstalovaným. Přesměrujte port(y) na svém routeru.

Takže máte další místo se zabezpečenou sítí a chcete přes něj směrovat svůj síťový provoz?

Existuje způsob, jak přes SSH nastavit socks proxy, takže vaše prohlížení se bude směrovat přes SSH. Myslím, že to funguje takto, z vaší nezabezpečené sítě:

ssh -D 8000 securehost

Pak možná použijte Firefox a nastavte SOCKS5 na localhost port 8000 nebo jakýkoliv jiný. Otestujte to například na http://whatismyip.com a ujistěte se, že to prochází přes váš zabezpečený network, a pak byste měli být hotovi.

Tento způsob vyžaduje, aby na vaší zabezpečené síti běžel SSH server přístupný z venku.

Používejte pouze soukromý klíč pro autentizaci a zakazujte přihlášení jako root a přihlašování heslem. Existuje plno návodů na zabezpečení SSH. Není špatné změnit port z výchozího 22 na jiný, například 2222.

Raspberry Pi by mohl být lepší než VM.

Můžete použít něco jako ZeroTier (zdarma) k vytvoření sítě mezi vaším počítačem a jump serverem (možná i samotná domácí síť). Odtud se můžete připojit přes SSH na jump server nebo použít sshuttle k přeposílání veškerého síťového provozu přes SSH. Nemusíte nic platit nebo složitě nastavovat router.

Poznámka: ZeroTier nezpřístupňuje váš server veřejnosti, pouze uzly na vaší ZeroTier síti k němu mají přístup mimo vaši domácí síť.

Mám malý domácí server, na který se přihazuji přes SSH, ale nedávno ho používám jako socks proxy. To je velmi užitečné, když chci otestovat něco z práce, co selhává, nebo jen dělat cvičení kódu z mého pracovního notebooku. Zde jsou hlavní kroky, které jsem použil, můžete najít mnoho podobných návodů.

  1. Nainstalujte Linux na systém, který vám nevadí mít zapnutý, mám Dell T30 (extra levný server), ale můžete použít Raspberry Pi, pokud potřebujete jen jump host.
  2. Vytvořte si ssh klíče, nahrajte veřejný klíč na jump host a zakažte heslové přihlašování, to je doporučené.
  3. Otevřete port (standardně 22) ve vaší domácí routeru, můžete změnit na například 5000, pokud používáte klíče, není to tak důležité.
  4. Předejte port na routeru nebo přidejte jump host (statická IP) do DMZ nebo přesměrování portů jen pro toto IP.
  5. Otestujte, jestli port funguje z vaší venkovní IP (https://ifconfig.me/) nebo pomocí https://canyouseeme.org/.
  6. Použijte dynamický DNS, například Google Domains, což stojí asi 10 dolarů ročně, a nastavte jump host na dynamické jméno, které dále ovládá DDclient (https://support.google.com/domains/answer/6147083).
  7. Nyní jste připraveni. Zkuste připojit k jump host z jiné sítě nebo přes VPN nebo přes hotspot na telefonu.

Některé užitečné příkazy:

Vytvořte socks proxy: ssh -D 8080 -f -C -q -N <vaše hostitel>
Port forwarding: ssh -L <můj lokální port>:<vzdálený host>:<vzdálený port> <uživatel@můj vzdálený server> -p <číslo portu>

Kontaktujte mě, pokud budete mít otázky!

Pokud už znáte Linux, nejjednodušší je nastavit si počítač s vaším Linuxem, nainstalovat docker a využít DuckDNS na DDNS a openvpn-as pro VPN. Nejrychlejší a nejjednodušší způsob, jak přistupovat k vzdálené síti s dynamickou IP, podle mého názoru.

Co je nejjednodušší a nejlevnější způsob?

V závislosti na tom, co váš router umožňuje, možná můžete povolit VPN server přímo na něm.

Například, mám ASUS a je to otázka přihlášení, kliknutí na VPN, povolení a zadání uživatele, čímž získáte soubor, který načtete (nebo pro jinou možnost jen uživatelské jméno a heslo).

Použil bych ssh -D k nastavení proxy a nakonfiguroval prohlížeč tak, aby jej používal. Druhá možnost je nastavit VPN nebo server. SSH je méně práce, ale OpenVPN umožňuje složitější síťové konfigurace.

Pro info, ssh -D a tsocks mě dostaly přes školu s mizerným proxy.

Měl byste si nastavit pfsense jako firewall a zabezpečit ho. Pak všechno ostatní za tím. Můžete si například nechat statickou IP pomocí DDNS a úplně vystavit svůj pfsense na WAN nebo hlavní router, takže máte plnou kontrolu nad provozem.

Pokud nemůžete portovat, používejte VPN na okraji sítě se směrováním všech dat přes ní … a tím mám pod kontrolou celé spojení. Mám i zálohu na všech Windows VM a počítačích. Používám a platím za splashtop, protože vždy funguje a nikdy jsem neměl problém.

Ano, nemohu to dostatečně zdůraznit. Všichni doporučující složité nebo úplně zbytečné metody tvrdí, že HTTPS byl specificky navržen tak, aby nikdo mezi vaším počítačem a cílem nemohl číst vaše komunikace.

Nejjednodušší a nejlepší řešení je stále používat internet tak, jak jste zvyklí. Bez ohledu na školení spolubydlících, prolomení šifrovaného kanálu HTTPS je pro běžné lidi absolutně neproveditelné.

Opatrujte si, prosím, co dělá HTTPS a jak funguje (stačí krátké a základní vysvětlení) a budete mnohem klidnější. Není třeba nadměrně složitá řešení.

Takže i když můj spolubydlící zachytí požadavek https, uvidí jen zašifrovaná data, že?

A ještě jedna věc, používám bezplatnou VPN službu, o které předpokládám, že získává veškerý můj provoz (protože je zadarmo a víme, že bezplatné služby jsou placeny soukromím), takže i když požadavek půjde přes tu VPN, je to už všechno zašifrované, že?

Díky za pohled na věc!