Setting Up Your Own Squid Proxy

squid tutorial 2
  • 11 March, 2018

Squid is an open-sourced web proxy cache server under GNU General Public License 3 (GPL 3) that can be utilized in various ways like:

  • Provide proxy and cache services for network protocols like File Transfer Protocol (FTP) and Hyper Text Transport Protocol (HTTP).
  • Filter traffic and network protocols.
  • Cache DNS lookups.
  • Fasten the loading of various websites.

Used by a large number of internet providers in the world, Squid can run on a host of operating systems. In this article, you'll learn how to set up the Squid proxy server so that you can be able to create your own proxies.

Step 1: Getting Your Server Ready

Connect to your Ubuntu server and use your Sudo or Root User credentials to log in to your system.

ssh root@your_server_ip

The next step is to create an alternative user account that has to be associated with a reduced scope of influence.

# adduser jake

The account password will be required at this stage and a few other questions will be asked. Additional information will be required but this part is optional.

Next, let this user enable root user privileges thereby adding it to the sudoers' group.

# usermod -aG sudo jake

With superuser privileges, you can now be able to run commands using sudo commands.

After doing this, update your system software for security patches and new version updates by making use of the command below.

# sudo apt-get update && sudo apt-get -y upgrade

You can then proceed to the next stage as soon as your system has all the updates and security patches.

Step 2: Installing Squid

The command below should be run to install squid on your system as depicted.

squid tutorial 1

# sudo apt-get install squid

To continue installing the squid package, type ‘Y’ for yes and press ‘Enter’.

Step 3: Configuring Your Squid Proxy Server

Squid's default configuration file is under ‘/etc/squid/squid.conf’ where some configuration directives have to be followed through so that it can affect Squid's behavior.

Before editing the configuration file, it is preferable to backup the original file so it can be possible to revert any changes that go wrong.

# cp /etc/squid/squid.conf /etc/squid/

The next step is to enable access to HTTP's proxy server from all IP addresses. This can be done by editing the ‘http_access’ directive.

http_access allow all

After saving and closing the configuration file, restart the squid server service so that the changes can take effect.

Step 4: Making Use Of Squid As An HTTP Proxy

To add a new ACL to the configuration file, open it on any editor.

# vim /etc/squid/squid.conf

acl k_vm src  # Your Servers IP  http_access allow k_vm

You can always replace “k_vm” and “” with your own IP and Hostname.

Use ‘:wq!’ to close the configuration file and use the command below to restart the squid service.

# systemctl restart squid

squid tutorial 2

Step 5: Basic User And Password Authentication

We'll use “ncsa_auth” for this exercise.

To add the following line, open the squid configuration file

# vim /etc/squid/squid.conf

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd

auth_param basic realm proxy

acl authenticated proxy_auth REQUIRED

http_access allow authenticated

After saving and closing the file, run the command below to create an empty file that would be used to store squid credentials.

#touch /etc/squid/passwd

The next command will be used to create a password that will be used to access the squid proxy server.

# htpasswd -c /etc/squid/passwd jake

Restart your squid service for it to take effect.

# systemctl restart squid

squid tutorial 3

The username and password will be used to authenticate a pop up that will show on your browser after entering the IP address of your squid proxy server.

Step 6: IP Whitelisting From Authentication

To do this, we need to configure ACLs that match the important IPs and use them with http_access directive. To allow an IP address connect to the Squid proxy, open the squid configuration file and add the following line

# vim /etc/squid/squid.conf

# Allowed clients  acl white_list src xx.xx.xx.xx  http_access allow white_list  http_access deny all

After saving and closing the file, add the following lines in ‘squid.conf’.

acl allowed_ips src “/etc/squid/allowed_ips.txt”

http_access allow allowed_ips

After saving and closing the file, restart the squid service to make the whitelisted IPs work.

# systemctl restart squid

 login squid


This article should be helpful to people looking to set up Squid proxy server and at the end of this, I hope everyone will be able to effectively use Squid for caching.

No comment yet, add your voice below!

Add a Comment

Your email address will not be published. Required fields are marked *

Comment *

Name *
Email *