I did a pretty major overhaul on this post due to inaccurate information and a more simplistic method. You can find the original here.
Originally I wrote the first version of this post to bypass school filters through a self-maintained proxy server.
The school year is beginning anew, and as a few of the commentors on my original post mentioned, my first method does not provide for authentication or security.
So I decided to provide security by tunneling HTTP over SSH for security.
If you don't know anything about tunneling protocols, essentially the delivery protocol (SSH) encapsulates its payload (HTTP).
SSH carries HTTP over a network that censors HTTP packets, that's how we'll be bypassing censorship.
The reason I chose SSH is because SSH has an option that allows your SSH server to act as a SOCKS proxy server while still providing SSH style encryption.
This works really well if you're sitting on a network that's censored or being snooped. You essentially connect to the SOCKS server hosted on your home computer, and your home computer makes the request to the web server, then returns the reply in an encrypted packet.
Anyone between YOU and your home computer can NOT snoop onto your traffic. But keep in mind, anyone between your home computer and the web server can.
Port Forwarding
Port Forwarding is a technique that is going to allow computers from the internet to access computers in your local area network (your server running SOCKS/SSH).
Most likely, the way your network is set up, you'll simply need to go into your router's interface (the one on your servers network) and forward the ports for an SSH server. Port forwarding is different for most routers, so take a look at this.
OpenSSH
OpenSSH is an awesome set of programs created by the OpenBSD project that facilitates communication via SSH.
You can download it from their website.
The installation for it can be a little bit problematic on Windows, but following these instructions everything went well for me.
You can start your SSH server as Windows service by typing net start opensshd and net stop accordingly.
PuTTY
To connect to your SSH server from your client, you're going to need a piece of software.
I recommend either PuTTY or WinSCP, mainly because OpenSSH has made sure these pieces of software are fully compatible with OpenSSH.
In this tutorial, I'm using PuTTY. The configuration is as follows:
Host Name: Your Server's External IP (e.g. 1.2.3.4)
Port: 22 (the default port for SSH, the port you forwarded)
Connection -> SSH -> Tunnels
Source port: 1080* (number of your choosing)
Make sure Dynamic is checked and click Add
You can save these settings as a profile, and then click open.
You'll be prompted for a username and password. This will be the username and password for whichever user account you'd like to use running on your sever.
* You can choose any port as long as it isn't being used by other services. I'd use something 1024. For this I used 1080 since 1080 is the port for SOCKS.
Implementation
When you checked "Dynamic" in PuTTY's settings section, you used the -D parameter with the OpenSSH server, telling the server to act as a SOCKS proxy. Therefore, once you're authenticated and connected, you can use the server.
Most applications have an area in their settings panel for proxies, specifically SOCKS proxies.
You can do a quick Google search to find the method for, say, changing your proxy settings on Google Chrome.
The IP you will use is going to be either "localhost" or "127.0.0.1", your loopback address. The port will be 1080 or whichever port you previously selected.
Results 1 to 1 of 1
- 28 Jul. 2013 10:04pm #1
Tunneling SOCKS over SSH for a scure home proxy [2]
Last edited by Isonyx; 19 Aug. 2013 at 07:33am.
I don't get tired.