SSH Tunneling: Manuell för att skapa en SSH-tunnel

SSH Tunneling: Manuell för att skapa en SSH-tunnel

Vad är en SSH-tunnel och vad är den till för?

Den här SSH-tunneln som vi ska skapa krypterar endast kommunikation om vi konfigurerar en proxy i vår webbläsare, eller i programmet som vi har, i våra tester har vi använt Mozilla firefox Mozilla firefox, men alla webbläsare är kompatibla. Den här metoden krypterar inte tjänster som inte tillåter dig att konfigurera en proxy, till exempel Dropbox (installerad på vår dator) eller andra program som behöver en Internetanslutning, men som inte har en meny för att konfigurera proxyn. Alla program som har möjlighet att konfigurera en SOCKS-proxy kommer att kunna vidarebefordra all sin trafik genom SSH-tunneln, och gå ut till Internet vía den offentliga IP-adress som nämnda SSH-server har, på detta sätt, all trafik från vår dator till SSH-servern kommer att krypteras och autentiseras med de symmetriska krypteringsalgoritmer som SSH-servern använder, även om detta vanligtvis är AES-256-GCM, som är fallet med VPN-tjänster.

En mycket viktig detalj är att om du behöver kryptera absolut all trafik, måste du konfigurera en VPN-server, antingen av typen OpenVPN antingen WireGuard. OpenVPN-protokollet används flitigt i hemmiljöer, särskilt eftersom de viktigaste NAS-servrarna har det som estándar, och även vissa routrar som ASUS har även detta protokoll. WireGuard är ett väldigt nytt VPN-protokoll som ännu inte finns hos de största NAS-servertillverkarna, såsom QNAP, Synology eller ASUSTOR, men vi hittar det i en Linux-server som vi konfigurerar, och vi har det till och med tillgängligt i orienterade operativsystem till brandvägg eller enrutador som DD-WRT och pfSense bland andra. Tack vare det faktum att WireGuard är integrerad i Linux-kärnan kommer vi att få utmärkt prestanda när det gäller anslutningshastighet och latens.

Fördelar med SSH Tunneling

På grund av hur enkel SSH-kryptering är, gör det det till ett särskilt användbart protokoll, särskilt eftersom det inte var designat för att ta sig igenom brandväggar, bara för att utföra kommandon och överföra filer säkert. Å andra sidan, om du befinner dig på en plats som Kina, Ryssland eller Turkiet, kan SSH-tunnlar hjälpa dig att komma åt det mesta av det blockerade innehållet, eftersom SSH själv inte övervakas eftersom all trafik är krypterad och autentiserad. Dessa tunnlar kan också användas för att övervinna ISP-strypning när de färdas genom unika portar.

En annan av de mest utbredda actualizada användningarna av SSH är att säkert komma åt VPN-blockerande webbplatser. Om din virtuella privata nätverkstjänst är blockerad kan du helt enkelt byta till alternativet SSH-tunnling, tryck på omladdningsknappen och innehållet kommer att visas omedelbart. Logiskt sett behöver vi en server som har SSH Tunneling konfigurerad, annars kommer vi inte att kunna ansluta korrekt.

Nackdelar med SSH Tunneling

Även om det har hållit sig ganska konsekvent i decennier, är SSH ett gammaldags protokoll som byggdes när Internet var mycket mindre än det är idag. Att ladda ner gigabyte med filmer eller strömma HD- och 4K-videoinnehåll var helt enkelt inte en del av webben då. Och detta är en av anledningarna till att de flesta actualizada användare kommer att se SSH som en otroligt långsam krypteringsmetod, illa lämpad för allt utöver att titta på webbplatser eller skicka y también-articulo.

Med tanke på arten av SSH-tunneltrafik måste vi använda den med ett VPN som inbyggt stöder protokollet. För det mesta tillåter inte offentliga VPN-tjänster SSH, tyvärr, vilket betyder att du antingen måste skapa din egen VPN-värd eller hitta en offentlig produkt med bra SSH-stöd.

En annan nackdel med SSH-tunnelupplevelsen är att protokollet kan hänga sig. SSH-trafik är upptäckbar, liksom VPN-trafik. Det är lite svårare att upptäcka, men absolut inte omöjligt på något sätt. Ändå, eftersom SSH har många legitima användningsområden, är det sällsynt att se det blockeras av internetleverantörer eller statliga censurer. Att ta bort SSH helt skulle förstöra den legitima användningen av protokollet, så det lämnas vanligtvis ifred.

Omvänd SSH-tunnel

När vi vill hantera en server eller annan utrustning, upprätta säkerhetsåtgärder som inte bör modifieras, finns det några verktyg. Men i det här fallet har vi den omvända SSH-tunneln. Vilket är enkelt och effektivt. Det här är inget annat än en port-till-port-anslutning mellan olika datorer med SSH, men det har sin egenhet. Begäran som görs skickas av själva enheten som vi vill ha tillgång till. Och inte varifrån vi kommer att komma åt.

Detta kan hända när den andra datorn har en enrutador eller brandvägg etablerad som vi inte kan komma åt. Samtidigt gör vår samma enrutador och brandvägg samma sak med inkommande förfrågningar från vilken port som helst. Därför står vi inför en otillgänglighetssituation. Men om vi har lagt till ett annat team kan vi etablera åtkomst med SSH. Men den enda lösningen skulle vara att komma åt servern från utsidan, och det kommer att göras genom en omvänd SSH-tunnel.

Vad vi skulle behöva göra för att kunna komma åt servern skulle vara att upprätta en anslutning från en maskin till den tredje datorn som vi nämnde tidigare. Efter att ha anslutit till den datorn länkar vi indirekt till servern. Detta är bara ytterligare ett av exemplen, av de många som SSH erbjuder oss för att kunna upprätta förbindelser. Och därmed hantera datorer som inte är direkt anslutna till internet, eller i ett annat subnät efter några strikta säkerhetsåtgärder. Vi kommer att kunna komma åt utan att behöva ändra någon av brandväggsreglerna, eller aktivera någon annan port.

Om vi ​​vill testa detta innan vi omsätter det i praktiken är det bäst att använda virtuella maskiner. På detta sätt kommer vi inte att lämna någon säkerhetsparameter exponerad när som helst. Dessa är en bra testplats där man kan förfina processer och sedan omsätta dem i praktiken. Därmed kan vi vara säkrare på att vi kommer att konfigurera ett effektivt system som täcker alla behov som krävs av det.

SSH-tunnelprestanda

En SSH-tunnel kan införa viss latens i anslutningen på grund av datakryptering och dekryptering. Denna process kan kräva mer systemresurser än en okrypterad anslutning, vilket kan göra att anslutningen blir långsammare. Å andra sidan kan prestandapåverkan av en SSH-tunnel mildras genom att optimera konfigurationen och använda mer effektiva krypteringsalgoritmer. Att till exempel använda snabbare krypteringsalgoritmer som AES istället för Blowfish kan minska prestandapåverkan.

Dessutom är det också viktigt att ta hänsyn till tillgänglig bandbredd. Om den tillgängliga bandbredden är begränsad kan datakryptering och dekryptering konsumera en stor del av de tillgängliga resurserna, vilket kan orsaka en minskning av nätverkets prestanda. Å andra sidan kan en SSH-tunnel också förbättra nätverkets prestanda i vissa fall. Till exempel, om ett nätverk nås från en fjärrplats och en SSH-tunnel används för att kryptera anslutningen, kan det förbättra anslutningsprestandan jämfört med en okrypterad anslutning.

För att förbättra prestandan hos en SSH-tunnel finns det flera alternativ som kan övervägas:

  • Att använda mer effektiva krypteringsalgoritmer, som AES istället för Blowfish, kan minska prestandapåverkan. Som vi nämnde i början.
  • Justera SSH-serverns konfiguration för att öka storleken på paketbufferten. En större buffertstorlek kan förbättra anslutningsprestandan.
  • Använd SSH-komprimering för att minska storleken på data som överförs genom tunneln. Detta kan förbättra anslutningsprestandan på nätverk med begränsad bandbredd.
  • Att använda kraftfullare hårdvara på SSH-servern kan förbättra anslutningsprestandan.
  • Optimera operativsystemets inställningar i båda ändarna av SSH-anslutningen för att maximera nätverkets prestanda.

SSH-serverkonfiguration

För att korrekt utföra SSH Tunneling, eller även känd som en SSH-tunnel, är det första vi måste ta hänsyn till att vi måste ha en SSH-server tillgänglig från Internet, om vi inte har en SSH-server kommer vi inte att kunna ansluta till den för att kapsla in och kryptera all trafik. Denna SSH-server kan finnas på vår NAS-server, på vår enrutador eller direkt på en fjärrserver.

Först måste du konfigurera SSH-servern med direktivet “Tillåt TCP-vidarebefordran«, om du använder OpenSSH är direktivet som du måste ange:

AllowTcpForwarding

Du måste också tillåta omdirigering av trafik på din server, det vill säga du måste lägga:

sysctl net.ipv4.ip_forward=1

När vi har SSH-servern igång fortsätter vi att konfigurera klienten. Men vi kan också konfigurera denna SSH-server med bättre symmetrisk kryptering, med hjälp av följande direktiv:

Chiffer chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

Du kan också förbättra säkerheten genom att införliva MAC:er och säkra nyckelutbytesalgoritmer, du kan lägga till följande direktiv till OpenSSH för att öka säkerheten:

KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 MACs hmac-sha2-512-et,hopenssh.com,hopenssh.com -sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

Andra starkt rekommenderade säkerhetsåtgärder du kan vidta, både på SSH-servern och SSH-klienten, är att använda SSH-nycklar istället för att använda ett användarnamn och lösenord. Om vi ​​använder SSH-nycklar kommer vi att kunna ansluta direkt till SSH-servern utan att behöva ange något lösenord, dessutom är det mycket säkrare (och bekvämare) att ansluta vía SSH-nycklar än att inte använda den typiska användar- och lösenordsautentiseringen.

Det första vi måste göra är att skapa SSH-nycklarna från datorn där vi ska ansluta, vi måste skapa nycklarna och skicka dem till servern. För att skapa SSH-nycklar kan vi utföra följande kommando för att skapa SSH-nycklar baserade på RSA på 4096 bitar, även om du också kan skapa SSH-nycklar baserade på elliptiska kurvor som ger oss snabbare anslutningstider.

ssh-keygen -t rsa -b 4096

Vi rekommenderar att du gör det med ED25519, som är den mest använda och säkraste:

ssh-keygen -t ed25519

I guiden för att generera dessa nycklar kommer den att placera oss där vi vill spara den, senare måste vi skicka nyckeln till SSH-servern där vi ska ansluta. Om vi ​​har använt kitt för att generera SSH-nycklarna måste du göra det för hand, om du är på en Linux-dator eller med Windows WSL kan du köra detta kommando:

ssh-copy-id användare@server_IP

Den offentliga nyckeln kopieras automatiskt och aktiverar autentisering med endast offentlig nyckel i SSH-serverns konfigurationsfil:

PubkeyAuthentication ja

När denna process är klar bör vi kunna logga in på den här datorn utan att ange lösenordet:

ssh användare@ip

Kom ihåg att sätta direktivet “PasswordAuthentication no” för att inte tillåta åtkomst vía användarnamn och lösenord, annars kommer SSH-servern att tillåta åt båda hållen.

Konfigurera SSH-klienten på Windows

Programmet som vi ska använda är Putty, det är ett Windows-program, men i Linux fungerar det perfekt med hjälp av WINE-verktyget (verifierat). Men om du använder Linux är det bättre att använda kommandot ssh direkt för att utföra denna konfiguration, det är mycket enklare än i Windows.

Du kan ladda ner Putty från dess officiell hemsida. Det är inte nödvändigt att installera det eftersom det är ett bärbart program, vi öppnar Putty och vi har följande skärm:

Låt oss gå till SSH/Tunnling som vi ser i fångsten. I Källport vi lägger hamnen som vi ska använda för tunneln (till exempel 8081), destination vi lämnar det tomt och i alternativen nedan lägger vi in ​​det Dynamisk och i BIL. Och sedan väljer vi ADD (för att lägga till konfigurationen).

Därefter ansluter vi till SSH-servern normalt med Putty, i avsnittet sessioner.

Och vi gör SSH-anslutningen, på bilden kan du se SSH-servern för min enrutador med Tomato RAF.

Vi får inte röra något annat, bara lämna anslutningen öppen och inte stänga programmet, jag upprepar att hela denna process är användbar i Windows och Linux med WINE. Nu fortsätter vi med att konfigurera Mozilla firefox.

Konfigurera webbläsaren Mozilla firefox Mozilla firefox för proxyn

Vi ska ALTERNATIV, AVANCERAD, RUTNÄT och klicka på MILJÖ.

I följande bild konfigurerar vi användningen av proxyn.

Manuell proxykonfiguration, SOCKS-server: 127.0.0.1 och den port 8081 (den vi satte tidigare), väljer vi SOCKS v5som du kan se i bilden.

Vi klickar på acceptera och vi går till webbläsarens huvudskärm, vi öppnar vilken webbplats som helst och vi kommer att bläddra igenom vår SSH-server. Om vi ​​kommer åt en lokal IP-adress kommer den att fungera utan problem:

Du kan använda vilken tjänst som helst för att titta på din offentliga IP och du kommer att se att du har samma som SSH-servern.

Konfigurera SSH-klienten på Linux (vía konsol)

Om Linux-användare vill spara Puttys konfiguration, skriv bara det här kommandot i konsolen och stäng det inte:

ssh -D 8081 -p 22 användare@public_ip

  • 8081 = port att använda i tunneln
  • 22 = ssh serverport, om vi använder port 22 är det inte nödvändigt att sätta -p 22 eftersom port 22 är estándar.
  • användare = serveranvändare för inloggning
  • public_ip = IP-adress, domän eller dynamisk värd.

Frågor och svar

Fråga: Om SSH-servern går ner eller vi stänger ssh-klienten av misstag, kommer vi att lämnas oskyddade utan att inse det?

  • Svar: Nej, eftersom Mozilla firefox kommer att ge ett felmeddelande om att proxyservern inte svarar och den kommer inte att kunna ladda någon webb.

Fråga: Vilket är säkrare, det här eller att skapa ett VPN som det i manualen?

  • Svar: VPN eftersom det krypterar absolut allt när du ändrar routing av utrustningen, till en början kan det verka tyngre, men när du har VPN konfigurerat är det väldigt bekvämt att dubbelklicka och det är det.

Vi hoppas att du med denna handledning kan navigera säkert genom att göra en SSH-tunnel mot din NAS, enrutador eller annan server där du har SSH.

Vi hoppas att du gillade vår artikel SSH Tunneling: Manuell för att skapa en SSH-tunnel
och allt som har med saker att göra inom teknikvärlden, mobiltelefoner och den tekniska världen.

 SSH Tunneling: Manuell för att skapa en SSH-tunnel
  SSH Tunneling: Manuell för att skapa en SSH-tunnel
  SSH Tunneling: Manuell för att skapa en SSH-tunnel

Intressanta saker att veta innebörden: APP

Här lämnar vi också ämnen relaterade till:Teknologi