web-dev-qa-db-fra.com

Comment puis-je canaliser tout le trafic de mon réseau via SSH?

Chaque fois que j'utilise Internet depuis un emplacement non sécurisé (tel qu'un réseau wifi public), j'aime utiliser un tunnel SSH (ssh -D port Host) pour éviter que mon trafic ne soit reniflé. Malheureusement, de nombreuses applications 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 all le trafic réseau à partir de mon ordinateur, mais je ne sais absolument pas comment faire. Toute aide serait grandement appréciée.

111
Guest

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 tunnelera tout votre trafic TCP automatiquement pour vous. Vous pouvez ajouter l'argument --dns pour qu'il tunnelise également votre trafic DNS. Python doit uniquement être installé sur le serveur distant.

Si vous souhaitez uniquement canaliser des programmes spécifiques, je vous recommande proxychains .

Une fois installé, démarrez votre proxy ssh socks comme suit:

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

Cela lancera un proxy "SOCKS" à l’écoute sur <port local>.

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

Enfin, démarrez votre programme que vous voulez utiliser comme proxy:

proxychains <program name>

Ça devrait marcher. Cependant, quelques programmes auront du mal à travailler avec les chaînes proxy. N'oubliez pas non plus 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.

Remarque supplémentaire sur les navigateurs Web. S'ils prennent en charge les proxy socks, vous n'avez rien d'autre à faire pour les amener à 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 de proxy.

EDIT 3/29/16

Étant donné que ce billet continue de recevoir des 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 sous OSX. Pour Linux ou OSX, je recommande vivement de mettre à niveau vers un fork toujours maintenu: proxychains-ng: https://github.com/rofl0r/proxychains-ng

En plus de fonctionner sous Linux et OSX, il est facile à compiler et supporte beaucoup mieux le tunneling DNS.

Je devrais également mentionner une autre option, qui est les chaussettes rouges. Cela fonctionne de manière similaire à proxychains (-ng) et est probablement aussi dans votre référentiel dist: https://github.com/darkk/redsocks

56
shellster

man ssh donne un exemple de cela. 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 installée, il vous suffira d'en faire la route par défaut, ce qui est une question différente.

48
PriceChild

Recherchez l'option "Tunnel" dans ssh. Cela crée un périphérique de tunnel auquel vous pouvez attribuer une adresse IP, puis vous modifiez la route par défaut pour utiliser ce tunnel.

6
Peter Eisentraut

J'ai développé un logiciel qui vous permet de transférer tout TCP et éventuellement 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.

4
Ambroz Bizjak