It is a common problem for businesses, schools, and wifi hotspots to have overly restrictive web browsing content filters. You also have to think about security. If you are using any kind of a network, it is trivial for someone to tap into the connection to record your passwords and banking information. While SSL has mitigated this to some extent, many websites are not properly configured to encrypt passwords. If you use the same password on more than one website, chances are that at some point in time, the password will be sent over the network in the clear. If you use webmail of some sort, it is possible that someone can read and a perhaps even access your account.
There are a lot of different ways to secure your connection. My personal favorite way is to use a SSH tunnel, because I know it is extremely secure. SSH also has an option to compress data, which can improve the speed that web pages load in your browser.
The first program you need is called PuTTY. This is a free SSH client for Windows. Download Putty, start it, and click on Connection->SSH->Tunnels. Fill out the source port and destination boxes and click add. Your screen should look like this…

Adding a tunnel in Putty
You should also go to Connection->SSH and checkmark the Enable compression box. This is not required, but it will create a small boost in web page download speed.
Go back to Session in Putty and you will see a box that reads Host Name. Here you have to put in the hostname of a Linux server you have access to.
Where can you get a Linux server? The easiest way is to just install it on your home PC, and log in to your home server from work. If you are inexperienced with Linux, I strongly recommend you install it inside a virtual machine rather than wiping your hard drive and replacing Windows. A good beginner’s setup is VMware workstation with Fedora or CentOS installed as a VM. You then have to open port 22 in your Cable/DSL router and have it forwarded to the new virtual machine. Since there are about ten thousand different variables in setting up a home Linux box, I’m not even going to try to explain it here. Another route if you find this too difficult is to just buy a SSH account from a hosting company. However, you will need permission to run a web proxy on the Linux server.
That brings us to the next step – setting up Squid on Linux. Squid is a very popular web proxy. The only other proxy I’ve used is Polipo, which I found to be unreliable. Here I will describe the process to setup Squid on CentOS, Fedora, or Red Hat Linux (they are all the same thing, just with different versions of software).
- Open a terminal window or SSH to the Linux server. Use sudo or login to your server as “root”.
- Type:
id — it should read uid=0.
- Type:
yum install -y squid
- Type:
chkconfig squid on
- Type:
service squid start
- Type:
ps axww | grep squid — you should see something like “squid -f /etc/squid/squid.conf” if it is running correctly.
You will notice that I did not bother to configure Squid. The default CentOS configuration was fine for me. If you want better performance, you can tune it by adding a disk cache and other fun stuff, but here I am just focusing on getting the basics working. Key lines you want to be sure are in the /etc/squid.conf file are:
acl localhost src 127.0.0.1/32 ::1
http_access allow localhost
http_port 3128
Those allow access to the local server and open port 3128 to listen for connections. They are already configured that way by default on my system, but if you are using a different distribution you might have to enter them yourself.
Test that squid is working by using telnet on the Linux box: telnet localhost 3128 If you see the error “Connection refused” then either Squid is not running, there is a firewall enabled on your Linux server, or it is running but not listening on the right port. You can break out of telnet by typing ctrl+] and typing close at the prompt.
Now you are done with the difficult part. There is only one more thing you have to do — set up a proxy connection in your web browser. Here I am using Firefox with the Foxyproxy plugin. You don’t need Firefox or the plugin… you could even use Internet Explorer. The goal here is just to have your browser using an HTTP proxy of 127.0.0.1 port 3128. However I find that the Foxyproxy is the best to use.
With Foxyproxy you can easily enable and disable the proxy with just two clicks. Why would you want to do that? Because it will look suspicious to the Network Admin if you are always browsing through a proxy. When they monitor your connection, it will appear that you never connect to any web server. That isn’t likely for any modern office worker / student. What I recommend is to leave the proxy off unless you need it. This makes the proxy less obvious to a Network Snooper. I usually leave mine off unless I am visiting the websites of my bank, credit card company, stock broker, or webmail. It is also a good idea to enable the proxy when you are screwing around but are supposed to be working. Sites like Craigslist, Facebook, Twitter, and Ebay are frowned upon by some companies.
To configure Foxyproxy, install it like any other Firefox plugin, then right-click on its icon. Go to Options->Add a new proxy and in the Proxy details tab, Host or IP address, type 127.0.0.1. In port, type 3128. Under the General tab, ensure that the checkbox for performing DNS lookups through the proxy is selected. Here is a screenshot of my setup.

Foxyproxy General Tab

Foxyproxy Proxy Details Tab
Your settings should be the same as mine – compare the screenshots closely. Once you have this setup, right click on the Foxyproxy icon to verify that you are using the new proxy.
Now for the final step! Go back to your Putty SSH client and enter the external address of your Linux server. If you don’t know your external address, go to www.whatismyip.com whenever you are at home or where ever your Linux server is located. If you don’t have physical access to the Linux server, you can also find it from the Linux command line by typing: lynx http://www.whatismyip.com (if you receive an error about Lynx not being found, you might have to install it via Yum/Apt-get).
Next, click Open in Putty. A black box should appear with a prompt for your Linux password. Enter your password and you will see the Linux prompt. You must leave this window open whenever you are using the proxy, otherwise it won’t work. In your web browser, go to www.whatismyip.com. You should see a big message that reads “Possible proxy detected.” If you see that, congratulations, you’ve broken through to the other side!!!
What if Putty says connection refused or just hangs and doesn’t open a Linux window? This means that a firewall is blocking your outgoing TCP port 22 connections or your home DSL/cable router is not forwarding properly. One trick you can try is to run your Linux SSH daemon on port 80, but that is beyond this tutorial.
This is just one method of circumventing the thought police. If you can’t get it to work, don’t despair. There are many other methods of achieving the same result, just using different software than SSH. Search around. In the worst case scenario, you can get a cellular card for your laptop. This is the most expensive way, but it is also the safest.