2009-10-29 00:51:34 +0000 2009-10-29 00:51:34 +0000
120
120

Hoe kan ik al mijn netwerkverkeer via SSH laten lopen?

Wanneer ik het internet gebruik vanaf een onveilige locatie (zoals openbare wifi) gebruik ik graag een ssh tunnel (ssh -D port host) om er zeker van te zijn dat mijn verkeer niet kan worden gesniffeld. Helaas lijken er veel applicaties te zijn die geen mogelijkheid bieden om een proxy op te geven (Flash is een belangrijk voorbeeld).

Het voelt alsof er een manier zou moeten zijn om een tunnel te gebruiken voor alle netwerkverkeer vanaf mijn computer, maar ik weet totaal niet hoe ik dit moet doen. Alle hulp zou zeer gewaardeerd worden.

Antwoorden (7)

65
65
65
2014-05-23 16:08:57 +0000

Om te doen wat u wilt, adviseer ik sshuttle .

Je gebruikt het als volgt:

./sshuttle -r username@sshserver 0.0.0.0/0 -vv

Het zal al je TCP verkeer automatisch voor je tunnelen. Je kunt het --dns argument toevoegen om ook je DNS verkeer te laten tunnelen. De server op afstand hoeft alleen maar Python geïnstalleerd te hebben.

Als je alleen specifieke programma’s wilt tunnelen, zou ik proxychains aanraden.

Zodra het geïnstalleerd is, start je je ssh socks proxy als volgt:

ssh -fNTD 127.0.0.1:<local port> username@sshserver

Dit start een “SOCKS” proxy die luistert op <local port>.

Bewerk dan /etc/proxychains.conf om naar dezelfde poort te wijzen als <lokale poort>.

Start tenslotte het programma dat je als proxy wilt gebruiken als volgt:

proxychains <program name>

Het zou gewoon moeten werken. Echter, een paar programma’s zullen problemen hebben met het werken met Proxy Ketens. Houd ook in gedachten dat je bij Firefox extra items onder about:config moet wijzigen om het te dwingen DNS lookups via de proxy te doen in plaats van deze te omzeilen.

Als extra opmerking, over web browsers. Als ze Sokken proxy’s ondersteunen, hoeft u niets extra’s te doen om ze de bovengenoemde Sokken tunnel te laten gebruiken, voer gewoon 127.0.0.1 in voor de Sokken proxy server en de <local port> voor de proxy poort.

EDIT 3/29/16

Aangezien dit bericht nog steeds enkele upvotes ziet, dacht ik dat ik het zou updaten. Proxychains staat nog steeds in de meeste Linux repos en werkt nog steeds op Linux. Het project is echter effectief verlaten en werkt niet op OSX. Voor zowel Linux als OSX, raad ik ten zeerste aan om te upgraden naar een nog steeds onderhouden fork: proxychains-ng: https://github.com/rofl0r/proxychains-ng

Behalve dat het zowel in Linux als in OSX werkt, is het gemakkelijk te compileren, en heeft het ook veel betere ondersteuning voor DNS tunneling.

Ik zou ook nog een andere optie moeten noemen, namelijk redsocks. Het werkt ongeveer hetzelfde als proxychains(-ng) en staat waarschijnlijk ook in uw dist repo: https://github.com/darkk/redsocks

EDIT 11/27/19 Als je de proxychains route neemt, gebruik dan alsjeblieft proxychains-ng. Er zijn enkele serieuze bug fixes ten opzichte van de legacy versie, zoals: https://github.com/rofl0r/proxychains-ng/issues/292

50
50
50
2011-07-18 10:24:01 +0000

man ssh geeft een voorbeeld van precies dit. Een ssh gebaseerde vpn:

SSH-BASED VIRTUAL PRIVATE NETWORKS
     ssh contains support for Virtual Private Network (VPN) tunnelling using
     the tun(4) network pseudo-device, allowing two networks to be joined
     securely. The sshd_config(5) configuration option PermitTunnel controls
     whether the server supports this, and at what level (layer 2 or 3 traf-
     fic).

     The following example would connect client network 10.0.50.0/24 with
     remote network 10.0.99.0/24, provided that the SSH server running on the
     gateway to the remote network, at 192.168.1.15, allows it:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252

snip

Since a SSH-based setup entails a fair amount of overhead, it may be more
     suited to temporary setups, such as for wireless VPNs. More permanent
     VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).

Als je die nieuwe interface eenmaal in de lucht hebt, hoef je hem alleen nog maar de default route te maken, wat een andere vraag is.

6
6
6
2009-11-01 17:40:29 +0000

Zoek naar de “Tunnel” optie in ssh. Dit maakt een tunnelapparaat aan waaraan je een IP-adres kunt toekennen, en dan verander je de standaardroute om die tunnel te gebruiken.

4
4
4
2011-07-18 08:55:38 +0000

Ik heb software ontwikkeld waarmee je alle TCP en optioneel UDP kunt doorsturen via een SOCKS5 proxy, in het hele systeem. http://code.google.com/p/badvpn/wiki/tun2socks

Het kan zelfs op een router geïnstalleerd worden om alle verbindingen van computers op het LAN door te sturen.

0
0
0
2013-03-12 22:57:21 +0000

SSH-BASEED VIRTUAL PRIVATE NETWORKS ssh bevat ondersteuning voor Virtueel Privaat Netwerk (VPN) tunnelen met behulp van het tun(4) netwerk pseudo-apparaat, waardoor twee netwerken veilig verbonden kunnen worden. De configuratie-optie PermitTunnel(5) van sshd bepaalt of de server dit ondersteunt, en op welk niveau (laag 2 of 3 verkeer).

The following example would connect client network 10.0.50.0/24 with
 remote network 10.0.99.0/24 using a point-to-point connection from
 10.1.1.1 to 10.1.1.2, provided that the SSH server running on the gateway
 to the remote network, at 192.168.1.15, allows it.

 On the client:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
       # route add 10.0.99.0/24 10.1.1.2

 On the server:

       # ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
       # route add 10.0.50.0/24 10.1.1.1

 Client access may be more finely tuned via the /root/.ssh/authorized_keys
 file (see below) and the PermitRootLogin server option. The following
 entry would permit connections on tun(4) device 1 from user “jane” and on
 tun device 2 from user “john”, if PermitRootLogin is set to
 “forced-commands-only”:

   tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
   tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john

 Since an SSH-based setup entails a fair amount of overhead, it may be
 more suited to temporary setups, such as for wireless VPNs. More perma‐
 nent VPNs are better provided by tools such as ipsecctl(8) and
 isakmpd(8).
-2
-2
-2
2009-10-29 01:43:30 +0000

Ik wil even duidelijk maken dat (ssh -D port host) geen 100% veilige manier is om verkeer niet te laten sniffen. Toevoegen van (ssh -D -c blowfish port host) zou een betere keuze zijn omdat je tenminste encryptie toevoegt aan je sessie. Er zijn meer opties die je zou kunnen toevoegen, maar het is gemakkelijk genoeg om “man ssh” in je terminal te typen of Google voor een complete lijst.

De optie waar je volgens mij naar op zoek bent is het opzetten van een VPN (Virtueel Privé Netwerk)

Kijk eens naar dit artikel om het verschil tussen de twee te begrijpen SSH vs. VPN ) of een goede samengevatte versie , voordat je begint met het opzetten van je eigen VPN. Als u besluit de VPN-route te volgen, raad ik OpenVPN aan, het is gratis en er is veel documentatie en ondersteuning.

-3
-3
-3
2009-11-01 17:47:59 +0000

Gebruik deze voorbeelden:

  • Forward poort 80 van een remote host naar 8888 op je localhost

  • Forward poort 80 van jelocalhost naar 8888 op een remote host

Proost! :)