Like last week’s How to Lose your Job with SSH, Part 1, a less dramatic title for this would be Dynamic Port Forwarding with SSH, but that’s dreadfully dull.
Many corporations try to tightly secure their network. Connections to the outside world are strictly limited. If you have a single open TCP/IP port to the outside world, however, you can leverage this into blanket Internet access by using your SSH client as a SOCKS proxy. This is called dynamic forwarding.
SOCKS is a generic TCP/IP proxy. SOCKS tunnels arbitrary protocols, as long as the client program supports SOCKS. Many clients, including the major Web browsers, do.
To do this, you would SSH from your client on the protected network to a server on the public Internet. The client opens a SOCKS proxy on a TCP port on the local machine. When a client connects to this proxy, the traffic is forwarded across the Internet to the SSH server. The SSH server processes the request and feeds the data back to you. It’s not a terribly fast proxy, but it is encrypted and it will bypass the corporate firewall and Web proxies.
Use the -D flag to tell the OpenSSH client to use dynamic port forwarding. (You can do the same thing with PuTTY, but that’s a separate walk-through.)
$ ssh -D localaddress:localport hostname
If you don’t specify a local IP, the client automatically binds to 127.0.0.1.
Here, I open a dynamic proxy on port 9999 to the server pride.blackhelicopters.org
$ ssh -D 9999 pride.blackhelicopters.org
Leaving the SSH session up, now go to the Web browser on the local machine. Somewhere in the browser preferences you’ll find a place for proxy servers. Tell your browser it has a proxy at 127.0.0.1 on port 9999. Save the settings and start browsing the Internet. Your Web browsing will be slow, but it’ll get you on the Internet.
If I list a network-facing IP on my client, anyone who can connect to that port on the client can use my proxy.
$ ssh -D 10.10.10.105:9999 pride.blackhelicopters.org
This is, of course, a violation of the security policy at these security-sensitive companies. Doing it will get you fired.
As a network administrator responsible for such an environment, what can you do about this?
Most of these solutions require the network administrator to know what happens on his network. You must have basic network awareness, in advance, or you’ll never find these people.
And if you’re an end-user who creates his own SOCKS proxy in such an environment, gets caught, and gets fired for it, do let me know. I can always use a good laugh at someone else’s expense.
I use ssh forwarding on my laptop in any network to secure data passed through WiFi. VPN is another solution. Admins who block VPN, SSH, Tor, etc are evil. Do no do this, please! Thank you.
A brief reminder, for SSH tunnel users : do not forget to also tunnel your DNS traffic …