Question Comment puis-je transférer tout mon trafic réseau via SSH?


Lorsque j'utilise Internet depuis un endroit non sécurisé (tel que le wifi public), j'aime utiliser un tunnel ssh (ssh -D port host) pour que mon trafic ne puisse 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).

On a l'impression qu'il devrait y avoir un moyen d'utiliser un tunnel pour tout le trafic réseau de mon ordinateur, mais je suis complètement ignorant comment faire cela. Toute aide serait grandement appréciée.


103
2017-10-29 00:51


origine


Bien sûr, vous ne pouvez pas littéralement passer par TOUS votre trafic via ssh, car cela signifierait un tunneling via ssh, mais nous savions ce que vous vouliez dire. :) - CarlF
C'est une bonne idée, mais vous êtes uniquement protégé entre votre ordinateur et votre ordinateur d'extrémité SSH. après cela, votre trafic est en clair (sauf si protégé autrement, par exemple SSL). accordée, il est beaucoup plus probable d'être sur un fil, mais quand même ... vous ne pouvez pas vraiment faire confiance aux fils que vous ne contrôlez pas. - quack quixote
Mais quand vous êtes sur Internet, vous êtes en sécurité avec des milliards de paquets, non? Lorsque vous vous connectez à un réseau Wi-Fi public, vous êtes l’une des trois connexions possibles, vous pouvez être identifié personnellement, etc. - endolith


Réponses:


Pour faire ce que tu veux, je recommande sshuttle.

Vous l'utilisez comme ceci:

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

Il tunnelera automatiquement tout votre trafic TCP pour vous. Vous pouvez ajouter le --dns argument pour le faire tunnel aussi votre trafic DNS. Le serveur distant doit uniquement avoir installé Python.

Si vous voulez seulement tunneler des programmes spécifiques, je recommanderais proxychains.

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

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

Cela démarrera un proxy "SOCKS" écoutant sur <port local>.

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

Enfin, démarrez votre programme comme vous le souhaitez:

proxychains <program name>

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

En outre, sur les navigateurs Web. S'ils prennent en charge les proxys 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> du port proxy.

EDIT 29/2/16

Étant donné que cet article continue à recevoir des commentaires, je pensais le mettre à jour. Proxychains est toujours dans la plupart des repos Linux et fonctionne toujours sous Linux. Cependant, le projet est effectivement abandonné et ne fonctionne pas sous OSX. Pour Linux ou OSX, je vous recommande vivement de passer à un fork toujours maintenu: proxychains-ng: https://github.com/rofl0r/proxychains-ng

En plus de travailler 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 redsocks. Il fonctionne de manière similaire à proxychains (-ng) et est également probable dans votre dist repo: https://github.com/darkk/redsocks


48
2018-05-23 16:08





man ssh donne un exemple de cela exactement. 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

~~ couper ~~

     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 que vous avez cette nouvelle interface, vous devez simplement en faire la route par défaut, ce qui est une question différente.


44
2017-07-18 10:24



Pourriez-vous expliquer un peu plus? La commande ifconfig crée une nouvelle interface nommée tun0, non? Ou tun0 est-il créé par ssh et simplement configuré par ifconfig? Peut-être ajouter un exemple pertinent à la question? - Nobody


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.


7
2017-11-01 17:40





J'ai développé un logiciel qui vous permet de transférer tous les protocoles 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.


3
2017-07-18 08:55





Je voulais juste clarifier que (l'hôte de port ssh -D) n'est pas un moyen 100% sécurisé pour que le trafic ne soit pas sniffé. L'ajout (hôte de port ssh -D -c blowfish) serait un meilleur choix car vous ajoutez au moins le cryptage à votre session. Il y a plus d'options que vous pourriez ajouter, mais il est assez simple de taper "man ssh" dans votre terminal ou 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)

Regardez cet article pour comprendre la différence entre les deux (SSH contre VPN) ou un bon version résumée, avant de vous lancer dans la création de votre propre VPN. Si vous décidez d'aller sur la route VPN, je vous recommande OpenVPN, sa documentation gratuite et son support.


0
2017-10-29 01:43



mauvais conseil. "blowfish" est un chiffrement SSH-1; il est rapide, pensé sûr (à partir de 1999: unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1 ), mais reste. vous voulez probablement ssh -2 -C -D [...] (force SSH2, utilise la compression) et laisse tomber le -c. selon mon système man ssh la liste de chiffrement dans SSH2 par défaut à aes128-cbc,3des-cbc,blowfish-cbc,[etc]. mon point est, si vous demandez -c blowfish vous pourriez vous retrouver avec SSH1, qui est beaucoup moins sécurisé que SSH2. - quack quixote
Certes, mais le Jeremy avait l'impression que la connexion était sécurisée avec juste -D 8080, j'ai simplement déclaré que c'était mieux que ce qu'il utilisait. Vous faites un point valide et c'est pourquoi je mentionne le manuel pour plus d'options. - ricbax
Peut-être devriez-vous changer votre réponse, car cela est utile autrement. - endolith
J'ai oublié cette question, n'utilisez pas ce site régulièrement. Merci pour la clarification ... J'ai eu la forte impression que SSH était sécurisé par défaut. - user7301
WTF n'est pas SSH utilisant le chiffrement par défaut? - LatinSuD


RÉSEAUX PRIVÉS VIRTUELS BASÉS SUR SSH      ssh contient la prise en charge du tunneling VPN (Virtual Private Network) en utilisant      le pseudo-périphérique du réseau tun (4), permettant de joindre deux réseaux      en toute sécurité. L'option de configuration sshd_config (5) permet les contrôles PermitTunnel      si le serveur prend cela en charge et à quel niveau (tra fi      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
2018-03-12 22:57



veuillez ajouter une source pour vos informations. note: c'est une vieille question. - Lorenzo Von Matterhorn


Utilisez ces exemples:

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

    ssh -fnN -L8888: localhost: 80 utilisateur @ serveur

    Utilisez-le pour accéder aux services sur un hôte distant uniquement disponibles

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

    ssh -fnN -R8888: localhost: 80 utilisateur @ serveur

    Utilisez-le pour autoriser les utilisateurs à accéder à vos services: serveur Web ou autre.

À votre santé! :)


-3
2017-11-01 17:47



Bon commentaire, mais pas du tout lié à ce dont nous parlons ici. L'inverse de ssh permet à un SERVEUR de demander à un CLIENT d'acheminer UN port de trafic vers lui. Plus de configuration serait nécessaire pour acheminer ce trafic vers Internet. Vous devrez également configurer un tunnel SSH pour chaque port. ET cela doit être initié à partir du serveur, pas du client - ce qui pourquoi le feriez-vous à moins d'y être obligé? - Beachhouse