How to install and configure Squid proxy on your CentOS VPS.

Leave reply

how-to-install-and-configure-squid-proxy-on-your-centos- vpsThere are a more reasons for using proxy, but we are going to focus on web content filtering and/or anonymous surfing. A proxy – proxy server actually represents another machine through which internet requests are processed, or simply an intermediary between my machine and the Internet. When using proxy server, my computer sends the requests to the proxy server, the requests are being processed and I am being delivered the content I was looking form.

So, let’s see few simple steps on how to install Squid, the most popular proxy server out there on your CentOS VPS. As for the next part, we will see some configuring options.

First, of course, make sure your system is up-to-date:

# yum update -y

Then we can get straight on to installing squid:

# yum -y install squid

And enabling it on system startup:

# chkconfig squid on

Now let’s create the default configuration:

# vim /etc/squid/squid.conf

acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          
acl Safe_ports port 21          
acl Safe_ports port 443         
acl Safe_ports port 70          
acl Safe_ports port 210         
acl Safe_ports port 1025-65535  
acl Safe_ports port 280         
acl Safe_ports port 488         
acl Safe_ports port 591         
acl Safe_ports port 777         
acl CONNECT method CONNECT

# Recommended minimum Access Permission configuration:
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on “localhost” is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 3128

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

Add the following anonymous settings lines in your configuration files to use Squid undetected:

# vim /etc/squid/squid.conf

via off
forwarded_for off

request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

And that’s it as far as the installation and the initial configuration goes. In our next post we’ll take a look at more detailed (and also browser) configuration. Thanks for reading!

Of course you don’t have to do any of this if you use one of our Linux VPS services, in which case you can simply ask our expert Linux admins to install Squid proxy for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

Leave a Reply