While I enjoy using the SSH Tunnels to encrypt traffic out of the random local networks that I may be sitting on, sometimes there is a need to establish a more permanent proxy server. For instance, if you don’t have a means to use an SSH client or you have several machines that you would like to service without the need to establish dedicated SSH tunnels/forwards for each machine (administrative nightmare).
I chose Squid for just this function. It was extremely easy to setup and has worked like a charm! Below are some of the basic steps for setting up and using your Squid proxy.
Install Squid:
Gentoo:
#> emerge squid
Red Hat/CentOS:
#> yum install squid
Ubuntu/Debian:
#> apt-get install squid
OpenBSD:
#> export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/
#> pkg_add squid
Basic Configuration for Transparent Proxy:
#> vi /etc/squid/squid.conf
Look for the sections listed below and modify accordingly. This is a sample of my ACLs and configurations outside of some of the defaults.
#/etc/squid/squid.conf
acl all src 0.0.0.0/0.0.0.0
acl trusted_hosts 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl Safe_ports port 21 # ftp
acl CONNECT method CONNECT
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow trusted_hosts
http_access deny all
# Listening port (default 3128)
http_port 3128
# Visible Hostname (may not be needed but doesn’t hurt)
visible_hostname yourserverhostname
This is the basic configuration that should get you going. More advanced configuration options will be coming soon.
Start up Squid:
#> /etc/init.d/squid start
Set Squid to start on-boot (optional)
Gentoo:
#> rc-update add squid default
Red Hat/CentOS:
#> chkconfig squid on
Ubuntu/Debian:
#> update-rc.d squid defaults
OpenBSD:
#> vi /etc/rc.local
Code coming soon…
Configure your Browser:
This is an example Firefox setup. Preferences –> Advanced –> Network –> Connection –> Settings. Select ‘Manual proxy configuration:’ Set the HTTP Proxy: value to your Squid server’s IP (public or private depending on how you are going to use it and based on the ACLs above). Then select ‘Use this proxy server for all protocols’ if you want to go ahead and use this same proxy for all connections. Setup any exceptions to not proxy (i.e. – locally connected servers). Here’s a screen shot of my configuration.

SSL Configuration:
Coming soon…
Advanced Configurations:
Coming soon…