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

Comment puis-je faire passer tout le trafic de mon réseau par le tunnel SSH ?

Chaque fois que j'utilise l'internet depuis un endroit non sécurisé (comme le wifi public), j'aime utiliser un tunnel ssh (ssh -D port host) pour m'assurer que mon trafic ne peut pas être reniflé. Malheureusement, il semble y avoir de nombreuses applications qui ne permettent pas de spécifier un proxy (Flash en est un exemple majeur).

Il semble qu'il devrait y avoir un moyen d'utiliser un tunnel pour tous le trafic réseau de mon ordinateur, mais je ne sais absolument pas comment faire. Toute aide serait grandement appréciée.

Réponses (7)

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

Pour faire ce que vous voulez, je vous recommande sshuttle .

Vous l'utilisez comme ceci :

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

Il tunnelisera tout votre trafic TCP automatiquement pour vous. Vous pouvez ajouter l'argument --dns pour qu'il tunnelise également votre trafic DNS. Le serveur distant n'a besoin que d'avoir Python installé.

Si vous voulez seulement faire passer des programmes spécifiques par le tunnel, je vous recommande proxychains .

Une fois qu'il est installé, démarrez votre proxy ssh socks comme ceci :

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

Ceci lancera un proxy “SOCKS” en écoute sur <le port local>.

Puis éditez /etc/proxychains.conf pour qu'il pointe sur le même port que <le port local>.

Enfin, lancez votre programme que vous voulez proxy-ed comme ça :

proxychains <program name>

Ça devrait marcher. Cependant, quelques programmes auront du mal à fonctionner avec les chaînes de proxy. Gardez également à l'esprit qu'avec Firefox, vous devez modifier des éléments supplémentaires sous about:config pour le forcer à effectuer des recherches DNS via le proxy au lieu de le contourner.

Comme note supplémentaire, sur les navigateurs web. S'ils supportent les socks proxies, vous n'avez pas besoin de faire quoi que ce soit de plus pour les faire utiliser le tunnel ssh mentionné ci-dessus, il suffit d'entrer 127.0.0.1 pour le serveur proxy SOCKS et le <port local > pour le port proxy.

EDIT 3/29/16

Puisque ce post voit encore quelques votes positifs, j'ai pensé le mettre à jour. Proxychains est toujours dans la plupart des dépôts Linux et fonctionne toujours sous Linux. Cependant, le projet est effectivement abandonné et ne fonctionne pas sur OSX. Pour Linux ou OSX, je recommande fortement de mettre à jour un fork toujours maintenu : proxychains-ng : https://github.com/rofl0r/proxychains-ng

En plus de fonctionner à la fois sous Linux et sous OSX, il est facile à compiler et offre un bien meilleur support pour le tunneling DNS.

Je devrais également mentionner une autre option, qui est redsocks. Elle fonctionne de la même manière que les proxychains(-ng) et est probablement aussi dans votre répertoire de distribution : https://github.com/darkk/redsocks

EDIT 11/27/19 Si vous optez pour les proxychains, veuillez utiliser proxychains-ng. Il y a quelques corrections de bogues graves par rapport à la version précédente, comme https://github.com/rofl0r/proxychains-ng/issues/292

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

man ssh en donne un exemple précis. Un vpn basé sur ssh :

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).

Une fois cette nouvelle interface mise en place, il suffit d'en faire la route par défaut, ce qui est une autre question.

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

Cherchez l'option “Tunnel” dans ssh. Cela crée un dispositif de tunnel auquel vous pouvez attribuer une adresse IP, puis vous changez l'itinéraire par défaut pour utiliser ce tunnel.

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

J'ai développé un logiciel qui vous permet de transférer tous les TCP et éventuellement les UDP via un proxy SOCKS5, à l'échelle du système. http://code.google.com/p/badvpn/wiki/tun2socks

Il peut même être installé sur un routeur pour transférer toutes les connexions des ordinateurs du réseau local.

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

RÉSEAUX PRIVÉS VIRTUELS À BASE DE SSH ssh contient un support pour le tunnellisation de réseaux privés virtuels (VPN) à l'aide du pseudo-dispositif de réseau tun(4), permettant de joindre deux réseaux en toute sécurité. L'option de configuration sshd_config(5) PermitTunnel contrôle si le serveur prend en charge cette fonctionnalité, et à quel niveau (couche 2 ou 3 traf- fic).

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

Je voulais juste préciser que (ssh -D port host) n'est pas un moyen sûr à 100% pour ne pas être reniflé. L'ajout de (ssh -D -c port hôte blowfish) serait un meilleur choix car vous êtes au moins en train d'ajouter le cryptage à votre session. Vous pouvez ajouter d'autres options, mais il est assez facile de taper “man ssh” dans votre terminal ou dans Google pour obtenir une liste complète.

L'option que je pense que vous recherchez est la mise en place d'un VPN (Virtual Private Network)

Jetez un coup d'œil à cet article pour comprendre la différence entre les deux SSH vs. VPN ) ou une bonne version résumée , avant de vous attaquer à la mise en place de votre propre VPN. Si vous décidez d'opter pour le VPN, je vous recommande OpenVPN , sa gratuité et sa documentation et son assistance.

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

Utilisez ces exemples :

  • Transférer le port 80 d'un hôte distant vers 8888 sur votre hôte local

  • Transférer le port 80 de votre hôte local vers 8888 sur un hôte distant

Santé ! :)